知识库

标准化实施手册及常见错误


Linux系统安装Oracle

<p>[TOC]</p> <h3>安装包下载地址:[点击下载oracle](<a href="http://101.69.243.254:5010/share/N96RROHH">http://101.69.243.254:5010/share/N96RROHH</a> &quot;点击下载oracle安装包&quot;)</h3> <h3>1. 检查服务器是否已安装Oracle</h3> <ul> <li><strong>查看安装的主目录和环境变量</strong> <pre><code class="language-shell">echo $ORACLE_HOME env | grep ORA</code></pre> <p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/88095e0927d84853c0778d34407730be" alt="" /> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/0587b1e1b63a98ae2d89316fd1abe128" alt="" /></p></li> <li><strong>查看实例名</strong> <pre><code class="language-shell">su - oracle sqlplus / as sysdba SQL&amp;gt; select instance_name from v$instance;</code></pre> <p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/ebc7ab040f702f9b63e323579762f230" alt="" /></p></li> <li><strong>查看oracle启动的后台进程</strong> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/404e623740a189681b30f24c24bd78ea" alt="" /></li> <li><strong>关闭服务</strong> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/bc5e7903b37d8a781063eedd7901da22" alt="" /></li> <li><strong>再次查看oracle启动的后台进程,可以看到已经没有了</strong> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/13d683205dd2245edd03f52d06c8b283" alt="" /></li> <li><strong>查看监听lsnrctl status</strong> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/8ab7071356e07cd1166bfbf836217a75" alt="" /></li> <li><strong>停止监听lsnrctl stop</strong> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/81906dfbbe601c3e9a7af72ac3ad484a" alt="" /></li> <li><strong>删除$ORACLE_BASE目录下的子目录及文件</strong> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/a71ccb7d4c86bb6bfb0f7db97208942f" alt="" /></li> <li><strong>删除/usr/local/bin下的三个文件:dbhome,oraenv,coraenv</strong> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/eb6eb24ababc016dbdc3a637ffa25fa1" alt="" /></li> <li><strong>删除/etc下的两个文件:oratab和oralnst.loc</strong> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/7b7d5ffc731620c3b0c5f535178e67f0" alt="" /></li> <li><strong>删除/opt目录的ORCLfmap子目录</strong> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/9d10d18406104c6e6ca46964836bca04" alt="" /></li> <li><strong>删除建立的用户及组oinstall 和dba(若要重新安装可以不删除)</strong> <pre><code class="language-shell">userdel –r oracle groupdel oinstall groupdel dba groupdel oper</code></pre></li> </ul> <h3>2.安装环境设置</h3> <h4>2.1修改hosts文件</h4> <p>修改hosts文件保持ip与主机名对应。(如果服务器涉及到堡垒机主机名的话,不建议修改,可用hostname查看当前主机名)</p> <pre><code class="language-shell">vim /etc/hosts vim /etc/hostname shutdown -r now # 服务器主机名修改后必须重启才能生效</code></pre> <p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/8de8e037c4c68ea1ef1ef81bb010a932" alt="" /> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/0db81160f206351ae086a70370952d3c" alt="" /> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/725913e7672d28c43c3b61b095164d5b" alt="" /></p> <p><code>注:重启之后,hosts文件若生效主机名则会更改为oracle,若不生效,则后面修改db_install.rsp文件的时候需要注意,ORACLE_HOSTNAME的值必须为命令hostname查询出的主机名</code></p> <h4>2.2关闭Selinux</h4> <pre><code class="language-shell">sed -i '7s/enforcing/disabled/' /etc/selinux/config setenforce 0 getenvorce # 查看当前selinux模式</code></pre> <p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/a0a2a2dec6d583fb92b27ad722eba11b" alt="" /></p> <h4>2.3防火墙开放 1521 端口</h4> <pre><code class="language-shell"># Centos 6防火墙iptables: yum install -y iptables-services vim /etc/sysconfig/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 1521 -j ACCEPT systemctl enable iptables # CentOS 7防火墙firewalld firewall-cmd --state # 查看防火墙状态 firewall-cmd --zone=public --add-port=1521/tcp --permanent # 永久开启1521端口 firewall-cmd --reload # 更新防火墙规则</code></pre> <h4>2.4安装软件包</h4> <p>如安装之后监听启动不了,重新逐个去安装依赖</p> <pre><code class="language-shell">yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat unixODBC unixODBC</code></pre> <h4>2.5创建用户组与用户</h4> <pre><code class="language-shell"># 创建用户组oinstall,dba,oper groupadd oinstall groupadd dba groupadd oper # 创建用户oracle并创建密码 useradd -g oinstall -G dba,oper oracle # 修改用户密码 passwd oracle</code></pre> <h4>2.6修改kernel内核</h4> <pre><code class="language-java">vim /etc/sysctl.conf kernel.shmmni=4096 #这个内核参数用于设置系统范围内共享内存段的最大数量,该参数的默认值是 4096,通常不需要更改。 kernel.shmmax=2147483648 #该参数定义了共享内存段的最大尺寸(以字节为单位),缺省为32M,对于oracle来说,该缺省值太低了,通常将其设置为2G。 kernel.shmall=2097152 #该参数表示系统一次可以使用的共享内存总量(以页为单位),缺省值就是2097152,通常不需要修改。 kernel.sem=250 32000 100 128 fs.aio-max-nr=1048576 fs.file-max=65536 #设置最大打开文件数 net.ipv4.ip_local_port_range=9000 65500 #可使用的IPv4端口范围 net.core.rmem_default=262144 net.core.rmem_max=4194304 net.core.wmem_default=262144 net.core.wmem_max=1048586 sysctl -p # 使改动立即生效</code></pre> <p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/3145f460d62a221bd95ee612118dd594" alt="" /></p> <h4>2.7修改系统资源限制</h4> <pre><code class="language-java">vim /etc/security/limits.conf oracle soft nproc 20470 oracle hard nproc 16384 oracle soft nofile 10240 oracle hard nofile 65536 oracle soft stack 10240</code></pre> <h4>2.8修用户验证选项,关联设置</h4> <pre><code class="language-shell">vim /etc/pam.d/login #根据最后一条session规则的注释,应该加在最后一条规则之前 session required /lib64/security/pam_limits.so session required pam_limits.so</code></pre> <p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/188a6e082bd56144732affbef50609be" alt="" /></p> <h4>2.9创建安装目录与目录权限</h4> <pre><code class="language-shell">mkdir -p /risen/soft/database/oracle/product/11.2.0 # 安装目录 mkdir /risen/soft/database/oracle/oradata # 数据存储目录 mkdir /risen/soft/database/oracle/inventory # 清单目录 mkdir /risen/soft/database/oracle/fast_recovery_area # 恢复目录 chown -R oracle.oinstall /risen/soft/database/oracle # 递归修改目录归属 chmod -R 755 /risen/soft/database/oracle # 递归修改目录及文件权限</code></pre> <p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/8b51af901978a70c20e5c8d24cfc0daa" alt="" /></p> <h3>3.安装Oracle Database</h3> <p>上传安装文件至/home目录下并解压,解压后都在生成的database目录下,若没有安装unzip则执行yum -y install unzip zip安装</p> <pre><code class="language-shell">unzip p13390677_112040_Linux-x86-64_2of7.zip unzip p13390677_112040_Linux-x86-64_1of7.zip</code></pre> <h4>3.1准备Oracle安装应答模版文件</h4> <pre><code class="language-shell">cp -a /home/database/response/* /risen/soft/database/oracle/ chown -R oracle.oinstall /risen/soft/database/oracle chmod 755 /risen/soft/database/oracle/*.rsp # 给Oracle下后缀为rsp的文件设置权限</code></pre> <h4>3.2修改 db_install.rsp 的内容</h4> <pre><code class="language-java">su - oracle cd /risen/soft/database/oracle/ vim db_install.rsp</code></pre> <ul> <li><strong>编辑文件修改内容如下</strong></li> </ul> <pre><code class="language-java"># 安装类型,只装数据库软件 oracle.install.option=INSTALL_DB_SWONLY # 主机名称(命令hostname查询) ORACLE_HOSTNAME=oracle # 安装组 UNIX_GROUP_NAME=oinstall # INVENTORY目录(**不填就是默认值,因个人创建安装目录而定) INVENTORY_LOCATION=/risen/soft/database/oracle/inventory # 选择语言 SELECTED_LANGUAGES=en,zh_CN # oracle_home路径根据目录情况注意修改 ORACLE_HOME=/risen/soft/database/oracle/product/11.2.0 # oracle_base 注意修改 ORACLE_BASE=/risen/soft/database/oracle # oracle版本 oracle.install.db.InstallEdition=EE # 自定义安装,否,使用默认组件 oracle.install.db.EEOptionsSelection=false # dba用户组 oracle.install.db.DBA_GROUP=dba # oper用户组 oracle.install.db.OPER_GROUP=dba # 注意此参数,设定一定要为true DECLINE_SECURITY_UPDATES=true</code></pre> <h4>3.3设置Oracle用户环境变量</h4> <pre><code class="language-shell">su - oracle vim ~/.bash_profile</code></pre> <ul> <li><strong>添加内容如下</strong></li> </ul> <pre><code class="language-shell">export ORACLE_BASE=/risen/soft/database/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0 export ORACLE_SID=orcl export ORACLE_OWNER=oracle export NLS_LANG=american_america.AL32UTF8 export LANG=en_US.UTF-8 PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/lib:$ORACLE_HOME/bin export PATH source .bash_profile # 每次重启以后都要重新执行,单次有效</code></pre> <h4>3.4在Oracle用户下开始安装</h4> <pre><code class="language-shell">cd /home/database ./runInstaller -silent -ignorePrereq -responseFile /risen/soft/database/oracle/db_install.rsp</code></pre> <p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/f3380f1183636821980542cfe9157e4c" alt="" /> 安装时间较长,请耐心等待,出现以下内容代表安装成功 &lt;img src=&quot;<a href="https://gitee.com/xiehzijun/risen/raw/master/img/image-20210517203045063.png&quot">https://gitee.com/xiehzijun/risen/raw/master/img/image-20210517203045063.png&quot</a>; alt=&quot;image-20210517203045063&quot; style=&quot;zoom:50%;&quot; /&gt;</p> <pre><code class="language-shell">exit # 根据提示需要退回root用户执行 /risen/soft/database/oracle/inventory/orainstRoot.sh /risen/soft/database/oracle/product/11.2.0/root.sh</code></pre> <p>注意:重新安装oracle时,没有orainstRoot.sh文件 原因:没删除/etc/oraInst.loc文件 解决步骤:删除/etc/oraInst.loc文件,将新建目录下的文件全部清空,重新依次操作执行。</p> <h4>3.5以静默方式配置监听</h4> <pre><code class="language-shell">su - oracle netca /silent /responseFile /risen/soft/database/oracle/netca.rsp</code></pre> <p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/80b7339c573eb9836c31752e5da12d96" alt="" /> 成功运行后,在/risen/soft/database/oracle/product/11.2.0/network/admin/中生成listener.ora和sqlnet.ora;通过netstat命令可以查看1521端口正在监听</p> <pre><code class="language-shell">netstat -tnulp |grep 1521</code></pre> <p>&lt;img src=&quot;<a href="https://gitee.com/xiehzijun/risen/raw/master/img/image-20210517203648174.png&quot">https://gitee.com/xiehzijun/risen/raw/master/img/image-20210517203648174.png&quot</a>; alt=&quot;image-20210517203648174&quot; style=&quot;zoom:50%;&quot; /&gt;</p> <h4>3.6进行静默建立新库和实例</h4> <pre><code class="language-shell">vim /risen/soft/database/oracle/dbca.rsp #编辑文件修改如下内容 GDBNAME = &amp;quot;orcl&amp;quot; SID = &amp;quot;orcl&amp;quot; SYSPASSWORD = &amp;quot;Risen@2021&amp;quot; SYSTEMPASSWORD = &amp;quot;Risen@2021&amp;quot; SYSMANPASSWORD = &amp;quot;Risen@2021&amp;quot; DBSNMPPASSWORD = &amp;quot;Risen@2021&amp;quot; DATAFILEDESTINATION = /risen/soft/database/oracle/oradata/ # 数据目录 RECOVERYAREADESTINATION = /risen/soft/database/oracle/fast_recovery_area # 恢复目录 CHARACTERSET = &amp;quot;AL32UTF8&amp;quot; TOTALMEMORY = &amp;quot;6533&amp;quot;</code></pre> <p>开始静默安装</p> <pre><code class="language-shell">dbca -silent -responseFile /risen/soft/database/oracle/dbca.rsp</code></pre> <p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/09466a9e02e139f6b30b5580fdc32758" alt="" /></p> <pre><code class="language-shell">lsnrctl status #查看状态 lsnrctl start #启动监听 lsnrctl stop #停止监听 lsnrctl relo1ad #重启监听</code></pre> <p>&lt;img src=&quot;<a href="https://gitee.com/xiehzijun/risen/raw/master/img/image-20210705093646542.png&quot">https://gitee.com/xiehzijun/risen/raw/master/img/image-20210705093646542.png&quot</a>; alt=&quot;image-20210705093646542&quot; style=&quot;zoom:50%;&quot; /&gt; 静默安装常见问题 :<a href="https://www.cnblogs.com/bayolante/p/10417286.html">https://www.cnblogs.com/bayolante/p/10417286.html</a></p> <h3>4.登陆查看实例状态</h3> <pre><code class="language-shell">sqlplus / as sysdba select status from v$instance;</code></pre> <p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/940dedb4ffd549d21831546577d374a3" alt="" /> Oracle 11g不能导出空表,设置deferred_segment_creation 参数:禁用&quot;段推迟创建&quot;(也就是直接创建segment),无论是空表还是非空表,都分配segment: 在sqlplus中,执行如下命令 <code>alter system set deferred_segment_creation=false;</code> 查看 <code>show parameter deferred_segment_creation;</code> 注意:该值设置后只对后面新增的表产生作用,对之前建立的空表(已经存在的)不起作用,仍不能导出。并且要重新启动数据库,让参数生效。</p> <h3>5.Oracle数据库启动&amp;关闭</h3> <pre><code class="language-shell">用oracle用户执行sqlplus / as sysdba连接oracle #分步启动: STARTUP NOMOUNT; # 启动实例 ALTER DATABASE MOUNT; ALTER DATABASE OPEN; # 打开数据库 startup; # 直接启动 SHUTDOWN IMMEDIATE; # 关闭数据库 select* from v$version; # 查看数据库版本</code></pre> <h3>6.Oracle创建测试表空间&amp;测试用户</h3> <pre><code class="language-shell"># 创建名为RISEN_TEXT的表空间 create tablespace RISEN_TEXT logging datafile'/risen/soft/database/oracle/oradata/orcl/RISEN_TEXT.dbf' size 1024m autoextend on next 100m maxsize 10240m extent management local; # 创建库用户 create user RISEN_TEXT identified by RISEN_test@2021 default tablespace RISEN_TEXT; #创建名为RISEN_TEXT密码RISEN_test@2021关联RISEN_TEXT库的用户 # 赋予用户权限 grant dba to RISEN_TEXT; # 不建议给普通用户授予DBA权限,若无此权限工具登录提示缺乏创建会话权限;拒绝登录 # 查看所有拥有dba权限的用户 select * from dba_role_privs where granted_role='DBA'; # 取消用户dba权限(取消后必须重新授予用户创建session会话权限,否则无法正常登录使用) revoke dba from RISEN_TEXT; # 授予用户创建session会话权限 grant create session to RISEN_TEXT;</code></pre> <h3>7.查询归档模式是否开启</h3> <p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/4f5c6a954f43f3990f6971c7534d6477" alt="" /></p> <pre><code class="language-shell">archive log list; # 查询归档模式是否开启,Disabled/Enabled sqlplus / as sysdba登录执行: shutdown immediate; #关闭数据库 startup mount; #开启数据库至mount状态 修改数据库模式: alter database noarchivelog; #关闭归档模式 alter database archivelog; #开启归档模式 show parameter recovery; #当前归档日志目录 alter system set db_recovery_file_dest='/risen/soft/database/oracle/fast_recovery_area' scope=spfile; #更改归档日志目录 alter system set db_recovery_file_dest_size=10G scope=spfile; #更改归档日志目录大小(根据磁盘内存调整) alter database open; #打开数据库</code></pre> <h3>8.定时清理归档日志</h3> <pre><code class="language-shell">切换用户 su - oracle cd /risen/data/sh #存放脚本的路径(根备份脚本呢放在一起) vi del_arch.sh #创建清理脚本</code></pre> <ul> <li>添加如下内容</li> </ul> <pre><code class="language-shell">#!/bin/bash echo &amp;quot;----------------------------------------`date`---------------------------------------&amp;quot; source ~/.bash_profile rman target / &amp;gt;&amp;gt; /risen/data/sh/del_archive.log &amp;lt;&amp;lt;EOF # 记录日志del_archive.log 后期检查是否执行成功 crosscheck archivelog all; # 把无效的expired的archivelog标出来 delete noprompt expired archivelog all; # 直接全部删除过期的归档日志 delete noprompt archivelog all completed before 'sysdate-7'; # 直接删除七天前所有的归档日志 exit EOF echo -e &amp;quot;\n&amp;quot; echo &amp;quot;------------------------------------ FINISHED ------------------------------------&amp;quot;</code></pre> <ul> <li>设置定时任务</li> </ul> <pre><code class="language-shell">chmod +x del_arch.sh #授权脚本执行权限 crontab -e #设置定时任务 00 1 * * * sh /risen/data/sh/del_arc.sh # 每日1点执行</code></pre> <h3>9.客户端连接测试</h3> <p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/68cdec29d1cd7822ecfcad88c982caef" alt="" /></p> <h3>10.设置开机启动</h3> <pre><code class="language-shell"># 修改dbstart vim /risen/soft/database/oracle/product/11.2.0/bin/dbstart ORACLE_HOME_LISTNER=$ORACLE_HOME # 修改dbshut vim /risen/soft/database/oracle/product/11.2.0/bin/dbshut ORACLE_HOME_LISTNER=$ORACLE_HOME # 修改oratab vim /etc/oratab orcl:/risen/soft/database/oracle/product/11.2.0:Y</code></pre> <ul> <li>创建启动文件</li> </ul> <pre><code class="language-shell">vim /etc/init.d/oracle</code></pre> <ul> <li>添加如下内容</li> </ul> <pre><code class="language-shell">#!/bin/sh # chkconfig: 345 61 61 # description: Oracle 11g R2 AutoRun Servimces # /etc/init.d/oracle # # Run-level Startup script for the Oracle Instance, Listener, and # Web Interface export ORACLE_BASE=/risen/soft/database/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0 export ORACLE_SID=orcl export ORACLE_UNQNAME=$ORACLE_SID export PATH=$ORACLE_HOME/bin:/user/sbin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH ORA_OWNR=&amp;quot;oracle&amp;quot; # if the executables do not exist -- display error if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ] then echo &amp;quot;Oracle startup: cannot start&amp;quot; exit 1 fi # depending on parameter -- startup, shutdown, restart # of the instance and listener or usage display case &amp;quot;$1&amp;quot; in start) # Oracle listener and instance startup su $ORA_OWNR -lc $ORACLE_HOME/bin/dbstart echo &amp;quot;Oracle Start Succesful!OK.&amp;quot; ;; stop) # Oracle listener and instance shutdown su $ORA_OWNR -lc $ORACLE_HOME/bin/dbshut echo &amp;quot;Oracle Stop Succesful!OK.&amp;quot; ;; reload|restart) $0 stop $0 start ;; *) echo $&amp;quot;Usage: 'basename $0' {start|stop|reload|reload}&amp;quot; exit 1 esac exit 0</code></pre> <ul> <li>给启动文件设置权限</li> </ul> <pre><code class="language-shell">chmod +x /etc/init.d/oracle chkconfig --add oracle chkconfig oracle on systemctl status/start/stop oracle.service</code></pre> <h3>11.备份&amp;还原</h3> <p>导出dmp:</p> <pre><code class="language-shell">exp 用户名/密码@ip:1521/ORCL owner=导出用户 file=F:\backup.dmp</code></pre> <p>导入dmp:</p> <pre><code class="language-shell">imp 用户名@ip:1521/ORCL file=D:\backup.dmp fromuser=导出用户 touser=导入指定用户;</code></pre> <h3>12.开启自动备份策略</h3> <p><a href="http://101.69.243.254:5010/share/vqMGRMM0/%E6%95%B0%E6%8D%AE%E5%BA%93/oracle">http://101.69.243.254:5010/share/vqMGRMM0/%E6%95%B0%E6%8D%AE%E5%BA%93/oracle</a></p> <pre><code class="language-shell">mkdir -p /risen/soft/database/oracle/databak vim oracle.sh</code></pre> <ul> <li>定时脚本内容</li> </ul> <p>修改环境变量oracle_base,oracle_home为当前oracle安装目录,oracle_sid,nls_lang与静默安装中文件dbca.rsp设置的值一样,修改用户名,密码,模式名,ip地址(若本地备份则不需要修改),oracle端口(默认为1521),备份文件的保留时间,备份文件夹(需自行创建)</p> <pre><code class="language-shell">#!/bin/sh #环境变量 export ORACLE_BASE=/risen/soft/database/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/ export ORACLE_SID=orcl export PATH=$ORACLE_HOME/bin:$HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export LANG=en_US.UTF-8 export NLS_LANG=&amp;quot;AMERICAN_AMERICA&amp;quot;.AL32UTF8 #用户名 user=orcl #密码 passwd=orcl #实例名 Instance=orcl #ip地址 ip=127.0.0.1 #oracle端口 port=1521 #保留天数 days=7 #备份文件夹 bakdir=/risen/soft/database/oracle/databak #备份失败输出日志 errordir=$bakdir/errorlog #备份数据库文件前缀 orowner=DB_$Instance #备份文件全称 bakdata=$orowner&amp;quot;_&amp;quot;$(date +%Y%m%d).dmp #备份日志全称 baklog=$orowner&amp;quot;_&amp;quot;$(date +%Y%m%d).log [ -d ${bakdir} ] || mkdir -p ${bakdir} cd $bakdir [ -d ${errordir} ] || mkdir -p ${errordir} exp $user/$passwd@$ip:$port/$Instance grants=y file=$bakdir/$bakdata log=$bakdir/$baklog owner=$user &amp;gt;&amp;gt; /dev/null 2&amp;gt;&amp;amp;1 if [ $? -eq 0 ];then echo &amp;quot;备份用户$user 成功&amp;quot; else echo &amp;quot;备份用户$user 失败,请到目录$bakdir 下查看日志&amp;quot; mv $bakdir/$baklog $errordir exit fi tar -zcvf $bakdata.tar.gz $bakdata &amp;amp;&amp;amp; rm -f $bakdata &amp;gt;&amp;gt; /dev/null 2&amp;gt;&amp;amp;1 tar -zcvf $baklog.tar.gz $baklog &amp;amp;&amp;amp; rm -f $baklog &amp;gt;&amp;gt; /dev/null 2&amp;gt;&amp;amp;1 find $bakdir -type f -name &amp;quot;*.tar.gz&amp;quot; -mtime +$days -exec rm -rf {} \; &amp;gt;&amp;gt; /dev/null 2&amp;gt;&amp;amp;1 </code></pre> <ul> <li>设置定时任务</li> </ul> <pre><code class="language-shell">chmod +x oracle.sh ./oracle.sh #手动执行一次备份看看是否成功 crontab -e 00 23 * * * /bin/bash /risen/data/sh/oracle.sh #设置定时备份,每天晚十一点执行备份</code></pre>

页面列表

ITEM_HTML