- 数据库定时备份
2.1、备份方式
采用RMAN和EXPDP两种备份方式,在现有NGINX服务器新建备份目录,作为备份硬盘,进行在定时本地备份。
2.2、方式优点
- 如果我们把数据库备份到安装数据库的服务器上,这样做的风险还是很大,因为有时候数据库损坏的原因就是安装数据库的服务器或者虚拟机损坏引起的。
- 采用RMAN和EXPDP两种方式同时备份,可以有效的规避因数据库损坏造成数据丢失,无法恢复的情况。
2.3、备份方案
RMAN备份方式采用增量备份方式,在占用最小的空间的情况下保持数据的完整性。
EXPDP备份采用设置定时任务每晚12点执行数据库全量备份,并对备份定期删除,对已备份文件进行压缩处理减少磁盘空间占用,只保留最近3天备份数据。
2.4、备份配置
由实施工程师,进行配置(参考附件1)。
- 归档日志定时删除
3.1、删除方式
采用定时任务方式对归档日志删除。
3.2、删除方案
设置定时任务每七天执行一次,只保留最近七天归档日志文件。
3.3、删除配置
由实施工程师,进行配置(参考附件2)。
附件1:
1、 Linux本地备份
1.1、登陆数据库服务-切换到oracle
-
-
- su - oracle
-
1.2、创建备份文件夹
-
-
- 进入/home/oracle/database目录:cd /home/oracle/database
- 创建备份文件夹:mkdir dpdump
-
1.3、备份数据库用户授权
-
-
- 进入SQL plus:sqlplus / as sysdba
- 创建逻辑目录:
-
create directory dbback as '/home/oracle/database/dpdump'
-
-
- 给数据库用户授权,备份哪个数据库就给哪个数据库授权
-
grant read,write on directory dbback to usr_xsfw;
-
-
- 退出SQL PLUS
-
1.4、手动备份
Expdp XXX@SID schemas=XXX directory=dbback dumpfile=XXX_`date +%Y%m%d%H%M%S`.dmp logfile=XXX_`date +%Y%m%d%H%M%S`.log
解析:
Expdb : oracle 备份工具命令
XXX@XXX : 数据库名+实例名
XXX : 用户名 这里不将密码写进去,是为了防止别人通过查看历史命令看到密码,造成安全隐患
dumpfile :备份数据库文件名
`date +%Y%m%d%H%M%S` :命名时加上系统时间
logfile :日志文件名
2、定时任务备份
-
-
- 创建脚本:vi backup.sh
-
#!/bin/bash
#:本脚本自动备份15天的数据库,每次备份完成后,删除15天之前的数据。
# su - oracle
# echo $ORACLE_HOME
export ORACLE_BASE=/opt
export ORACLE_HOME=/opt/oracle/product/XXXX/dbhome_1
export ORACLE_SID=ORCL
export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
#oracle字符集
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
#获取当前时间,格式:20220311
DATE=$(date +%Y%m%d)
#获取15天之前的时间,格式:20220311
DATE_RM=$(date -d "15 days ago" +%Y%m%d)
#设置备份目录,
export DIR=/home/oracle/backup
echo $DIR
#创建日期目录
mkdir $DIR/$DATE
#开始备份,此处采用exp方式导出
echo 'Oracle backup...'
exp usr_xsfw/xxxxx@ORCL file=$DIR/$DATE'/usr_xsfw_'$DATE'.dmp'log=$DIR/$DATE'/usr_xsfw_log_'$DATE'.log'
echo 'Oracle backup successfully.'
echo 'remove...'
rm -rf $DIR/$DATE_RM
echo 'remove successsfully.'
-
-
- 赋权:chmod 777 ./bak.sh
- 添加定时任务:crontab -e
-
#每天24点半执行一次
30 0 * * * /home/backup/backup.sh
附件2:
1、归档日志删除
归档日志是一个被写满日志信息的联机日志文件成员的副本。这个文件不是数据库的的必要文件(可选)。但该文件被认为是联机日志文件的一个离线副本。这就意味着该文件对备份恢复而言,起着关键的作用。利用归档日志,可以实现:
- 数据库的恢复;
- 建立备份数据库(standby database) ;
- 借助 LogMiner 工具可以分析数据库的历史操作信息;
1.1、 Oracle RMAN 删除方法
- 设置环境变量 ORACLE_SID :export ORACLE_SID=urpdb1
- 进入 RMAN 环境:rman target /
- 执行删除:
RMAN> crosscheck archivelog all; --check 归档日志;
RMAN> delete noprompt archivelog all completed before 'sysdate -3';--删除归档日志,仅保留最近3天日志; 如果需要保留更多的天数,那么将数字 3 改为需要保留的天数;
1.2、 操作系统删除方法
有些时候,由于空间耗尽,导致数据库连 RMAN 环境都无法进去,或者数据库已经 Hang起,此时 就无法通过 RMAN 方式执行归档日志的手工删除了。这时需要使用操作系统的命令,先将归档日志进行系统级别的删除。
- 检查归档日志存放路径:show parameter log_archive_dest_1
- 系统删除归档日志:根据上述查询的归档日志存放路径,采用系统命令进入该目录,通过系统命令 rm 执行归档日志的手工删除。
- 通过 RMAN 执行删除:
$ rman target / ;
RMAN> crosscheck archivelog all; --check 归档日志;
RMAN> DELETE noprompt expired ARCHIVELOG ALL; --清空控制文件中关于已通过操作系统命令删 除的归档日志信息;
- 执行数据库备份:在执行数据库的归档日志进行手工删除之后,尽可能调用备份脚本,执行数据库的完整备份。