怎么在Linux中使用Oracle设置定时任务备份数据库

怎么在Linux中使用Oracle设置定时任务备份数据库?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

10年的南票网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整南票建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“南票网站设计”,“南票网站推广”以来,每个客户项目都认真落实执行。

1、查看数据库的字符集

数据库的字符集必须和Linux下设置的环境变量一致,不然会有乱码。

以下两个sql语句都可以查到:

select*fromnls_database_parameterstwheret.parameter='NLS_CHARACTERSET';select*fromv$nls_parameterswhereparameter='NLS_CHARACTERSET';

查询结果为:NLS_CHARACTERSET AL32UTF8

2、用oracle用户登录oracle服务器,创建相关的目录

创建备份数据的目录 mkdir -p /home/oracle/dbbak/data

创建备份脚本目录 mkdir -p /home/oracle/dbbak/shell

创建导出数据日志目录 mkdir /home/oracle/dbbak/log

3、在脚本目录下创建脚本文件

vi/home/oracle/dbbak/shell/dbbak.sh

脚本中内容:

#[plain]viewplaincopy#!/bin/shexportORACLE_BASE=/u01/app/oracleexportORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1exportORACLE_SID=orclexportPATH=$PATH:$HOME/bin:$ORACLE_HOME/binexportDATA_DIR=/home/oracle/dbbak/dataexportLOGS_DIR=/home/oracle/dbbak/logexportDELTIME=`date-d"30daysago"+%Y%m%d`exportBAKUPTIME=`date+%Y%m%d%H%M%S`exportNLS_LANG=AMERICAN_AMERICA.AL32UTF8mkdir-p$DATA_DIRmkdir-p$LOGS_DIRecho"Startingbakup..."echo"Bakupfilepath$DATA_DIR/$BAKUPTIME.dmp"expuser/pwd@orclfile=$DATA_DIR/orcl$BAKUPTIME.dmplog=$LOGS_DIR/orcl$BAKUPTIME.logecho"Deletethefilebakupbefore30days...filepath:$DATA_DIR/orcl$DELTIME*.dmp"rm-rf$DATA_DIR/orcl$DELTIME*.dmprm-rf$LOGS_DIR/orcl$DELTIME*.logecho"Deletethefilebakupsuccessfully."echo"Bakupcompleted."

根据自己的需要修改相关内容:

exportDELTIME=`date-d"30daysago"+%Y%m%d`配置保留数据的时间,这里是保留30天,根据自己需要和服务器的存储空间进行相应的修改即可;exportNLS_LANG=AMERICAN_AMERICA.AL32UTF8字符编码格式,需跟第一步查询中结果保持一致;expDISPLAY/DISPLAY@orclfile=$DATA_DIR/orcl$BAKUPTIME.dmplog=$LOGS_DIR/orcl$BAKUPTIME.log

导出语句,全表导出,可以根据需要修改,exp 用户名/密码@SID file=dmp文件全路径 log=日志文件全路径

4、修改脚本文件的执行权限

chmod 777 dbbak.sh

测试是否可以执行:./ dbbak.sh

Export terminated successfully without warnings.表示导出没有问题,如果有问题,解决

5、添加定时任务

在Oracle用户下

crontab –e

插入:59 23 * * * /home/oracle/dbbak/shell/dbbak.sh

表示每天的23点59分执行脚本

重启crond:

service crond restart

6、导入dmp文件

导入前需删除相应用户下的所有表,避免导入后表数据出现问题:

sqlplususer/pwd//用户名密码登录数据库SQL>SELECT'droptable'||table_name||';'FROMUSER_TABLESORDERBYTABLE_NAME;

然后执行查询出来的结果

执行此行,避免表字段注释乱码 :

exportNLS_LANG=AMERICAN_AMERICA.AL32UTF8;导入数据:impDISPLAY/DISPLAYfile=/home/oracle/dbbak/data/orcl20191121113703.dmpfromuser=DISPLAYtouser=DISPLAYignore=y;//ignore=y忽略错误,继续执行

看完上述内容,你们掌握怎么在Linux中使用Oracle设置定时任务备份数据库的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注箭头云行业资讯频道,感谢各位的阅读!


分享文章:怎么在Linux中使用Oracle设置定时任务备份数据库
标题路径:http://scyanting.com/article/cpgcjp.html