专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

Oracle12c RMAN实战 oracle 12c inmemory

ins518 2024-10-17 13:10:27 技术文章 10 ℃ 0 评论

对全部生产库都应进行定时备份,RAC进入RMAN的账户和命令,数据备份和归档备份只需要在一台服务器上做即可

  • 第一步export ORACLE_SID=当前数据库实例
  • 第二步 RMAN target /

查看RMAN配置信息

show all;

SQL下执行语句,查询RMAN中的非默认值

select * from v$rman_configuration;  

具体配置如下:

1、configure retention policy to redundancy 1;
舍弃备份原则,共三种,分别是:
(1)CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
保持所有足够的备份,可以将数据库系统恢复到最近七天内的任意时刻。任何超过最近七天的数据库备份将被标记为obsolete。
(2)CONFIGURE RETENTION POLICY TO REDUNDANCY 5;
保持可以恢复的最新的5份数据库备份,任何超过最新5份的备份都将被标记为redundancy。一般采用的方法,默认值为1,可以设置为5。
(3)CONFIGURE RETENTION POLICY TO NONE;
不需要保持策略,clear将恢复回默认的保持策略。
 
2、CONFIGURE BACKUP OPTIMIZATION OFF;
默认为关闭,如果打开,rman将对备份的数据文件及归档等文件进行一种优化的算法。
 
3、Configure default device type to disk;
默认值是硬盘,是指定所有I/O操作的设备类型是硬盘或者磁带(SBT)。
 
4、CONFIGURE CONTROLFILE AUTOBACKUP OFF;
强制数据库在备份文件或者执行改变数据库结构的命令之后将控制文件自动备份,默认值为关闭。这样在控制文件和catalog丢失后,控制文件仍然可以恢复。
 
5、CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F';
配置控制文件的备份路径和备份格式
 
6、CONFIGURE DEVICE TYPE DISK PARALLELISM 1;
配置数据库设备类型的并行度,默认为1。
 
7.CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
配置每次备份的copy数量。
 
8、CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
配置归档日志存放的设备类型。
 
9、configure maxsetsize 大小;
配置备份集的最大尺寸,默认值是unlimited,单位bytes,K,M,G;
 
10、CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'C:ORACLE…SNCFTEST.ORA';
配置控制文件的快照文件的存放路径和文件名,这个快照文件是在备份期间产生的,用于控制文件的读一致性。
 
11、CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'C:...%d_DB_%u_%s_%p';
配置备份文件的备份路径和备份格式。
 
12、CONFIGURE CHANNEL DISK CLEAR;
用于清除上面的信道配置。
 
13、CONFIGURE EXCLUDE FOR TABLESPACE [CLEAR];
不备份指定的表空间到备份集中,对只读表空间是非常有用的。
 
14、configure channel device type disk format 'e:\backupb%d_db_%u';
将备份文件存储到e:\backupb,后面的%d_db_%u是存储格式。
 
15、configure controlfile autobackup format for device type disk to 'e:\backupcontrol%F';
指定control file存储在另一个路径:e:\backupcontrol,后面的%F是存储格式。
  • 第三步

操作完成后退出RMAN命令

1. RMAN 参数配置

注意:需要在RMAN下执行以下语句

开启控件文件自动备份:

CONFIGURE CONTROLFILE AUTOBACKUP ON;

启用备份优化

CONFIGURE BACKUP OPTIMIZATION ON;

2. RMAN备份规则

对数据库进行三种类型的备份:

  1. 数据库全备:每周日进行全量备份
  2. 数据库增量备份:每周一至周六进行增量备份
  3. 归档日志备份:每两个小时进行一次,删除已备份的文件

备份日志查看,查找关键字 databak arvebak内容

cat /var/log/cron

3. RMAN备份脚本文件

通过vi命令在指定的目录下创建相应的sh文件,建议地址(/home/oracle)下,以及可执行权限

3.1 创建文件

cd /home/oracle
vi databak.sh
拷贝相应的备份内容
cd /home/oracle
vi arvebak.sh
拷贝相应的备份内容

3.2 授权执行文件

chmod +x /home/oralce/databak.sh
chmod +x /home/oralce/arvebak.sh
权限查看(可以查看文件或者文件夹)
ls -l /home/oralce/databak.sh
ls -l /home/oralce/arvebak.sh

手动执行脚本(oracle账户下)对应定时脚本0周天备份 1非周天备份/home/oralce/databak.sh 0/1

4. RMAN 定时任务部署

RMAN 定时任务采用cron 设置,一般是在Oracle用户下设置。如下示例:

[oracle@SG-SR-RAC-02 ~]$ crontab -l
10 22 * * 0             /home/oracle/scripts/probasic/databak.sh 0    
10 22 * * 1,2,3,4,5,6   /home/oracle/scripts/probasic/databak.sh 1
10 0-23/2 * * *       /home/oracle/scripts/probasic/arvebak.sh

格式:分-时-日-月-周 *代表全部

0/1 命令文本代表策略 0全备份 1增量备份

0代表星期天

1,2,3,4,5,6代表星期一到星期六

0-23/2代表每隔2个小时

crontab -e 编辑定时任务

5. RMAN备份配置

配置位置:/u01/app/oracle/product/12.2.0/db/network/admin/tnsname.ora文件

RAC1和RAC2上都可以做,也可以只在备份的服务器上做

注意:实例名称和备份中一致 HOST配置当前机器的IP 实例保持一致


6. Appendix【附件】

Appendix 1 —数据库全备与增量备份脚本样例

注意点

  1. ORACLE_SID数据库实例
配置环境对应的数据库实例 比如:实例名当前RAC机器上的实例名 单机就是具体的实例名
  1. ORACLE_BASE实例基地址
在ORACLE账户下执行
env | grep ORACLE 
查看SID BASE HOME
env | grep SID
查看SID
一般oracle RAC路径是 /u01/app/oracle
  1. ORACLE_HOME实例全地址
一般oracle RAC路径是后面的db根据具体地址调整 /u01/app/oracle/product/12.2.0/db
  1. NLS_LANG语言环境命令
sqlplus / as sysdba
show parameter NLS_LANG
  1. BACKUP_PATH备份路径
创建脚本对应目录名称以及给oracle账户授权
[root@rac741 ~]# mkdir -p /data/rmanbackup/probasic
[root@rac741 ~]# chown oracle:oinstall /data/rmanbackup/probasic
archive log list 找到存储的盘信息
  1. 备份使用权限高的用户
sys或者system+密码+实例(rac1上的实例名)
sys/angola2019@PRO_BASIC2

以下脚本中的环境变量与目录等参数,需要按实际情况修改。

#!/bin/bash   
export ORACLE_SID=实例名
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db
export ORACLE_TERM=xterm
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export PATH=.:$PATH:$HOME/bin:$ORACLE_HOME/bin
  

LEVEL=$@    
DATE=`date +%w`    
DATE_2=`date +%Y%m%d`    
BACKUP_PATH="/data/rmanbackup/probasic"    
BIN=$ORACLE_HOME/bin

if [ $# != 1 ]; then   
echo "usage: rman_bak.sh n    
where n is the rman backup level(Only 0,1 is permitted)."    
exit 1    
fi

if [ $@ -ne 0 -a $@ -ne 1 ]; then   
echo "usage: rman_bak.sh n    
where n is the rman backup level(Only 0,1 is permitted)."    
exit 2    
fi

if [[ $LEVEL = 0 ]]; then   
$BIN/rman log $BACKUP_PATH/data.$ORACLE_SID.$LEVEL.$DATE_2.log <<EOF
connect target
run{   
allocate channel c2 device type disk connect '管理员账户/管理员密码@实例名';  
crosscheck backupset of database;    
backup incremental level $LEVEL database;    
backup spfile tag='spfile';    
backup current controlfile tag='control';    
delete noprompt expired backupset of database;    
delete noprompt obsolete device type disk;    
release channel c2;    
}    
exit;    
EOF

else

$BIN/rman log $BACKUP_PATH/logs/data.$ORACLE_SID.$LEVEL.$DATE_2.log <<EOF
connect target
run{   
allocate channel c2 device type disk connect '管理员账户/管理员密码@实例名';  
crosscheck backupset of database ;    
backup incremental level $LEVEL database;    
backup spfile tag='spfile';    
backup current controlfile tag='control';    
delete noprompt expired backupset of database ;    
delete noprompt obsolete ;    
release channel c2;    
}

exit;   
EOF

fi

Appendix 2—数据库归档日志备份脚本样例

注意点

  1. ORACLE_SID数据库实例
配置环境对应的数据库实例 比如:实例名
  1. ORACLE_BASE实例基地址
一般oracle RAC路径是 /u01/app/oracle
  1. ORACLE_HOME实例全地址
一般oracle RAC路径是后面的db根据具体地址调整 /u01/app/oracle/product/12.2.0/db
  1. NLS_LANG语言环境命令
sqlplus / as sysdba
show parameter NLS_LANG
  1. BACKUP_PATH备份路径
备注:这里是本地备份策略位置(/home/oracle)不要弄错
  1. 备份使用权限高的用户
sys或者system+密码+实例(rac1上的实例名)
管理账户名/管理账户密码@实例名

以下脚本中的环境变量与目录等参数,需要按实际情况修改。

#!/bin/bash   
export ORACLE_SID=实例名
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db
export ORACLE_TERM=xterm
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export PATH=.:$PATH:$HOME/bin:$ORACLE_HOME/bin
  

LEVEL=$@    
DATE=`date +%w`    
DATE_2=`date +%Y%m%d`    
BACKUP_PATH="/home/oracle"    
BIN=$ORACLE_HOME/bin


$BIN/rman log $BACKUP_PATH/logs/arve.$ORACLE_SID.$DATE_2.log <<EOF
connect target
run{    
allocate channel c2 device type disk connect '管理账户名/管理账户密码@实例';  
crosscheck backupset of archivelog all;    
backup archivelog all;    
backup spfile tag='spfile';
backup current controlfile tag='control';
release channel c2;
report obsolete;
delete noprompt expired backupset of archivelog all;    
delete noprompt obsolete device type disk;
delete noprompt archivelog all completed before 'sysdate-7'; 
}

exit;   
EOF

6. 取消定时任务

注释定时任务文件中的命令即可

[oracle@SG-SR-RAC-02 ~]$ crontab -e
# 10 22 * * 0             /home/oracle/scripts/probasic/databak.sh 0    
# 10 22 * * 1,2,3,4,5,6   /home/oracle/scripts/probasic/databak.sh 1
# 10 0-23/2 * * *       /home/oracle/scripts/probasic/arvebak.sh

7. 命令支持

开启归档日志

RAC1和RAC2同时以下操作

su - oracle
export ORACLE_SID=当前实例
echo $ORACLE_SID
sqlplus /nolog
conn 账户/密码 as sysdba;
archive log list
shutdown immediate

RAC1操作

startup mount;
alter database archivelog;
alter database open;
archive log list

RAC2操作

startup;
archive log list

RMAN操作

su - oracle
export ORACLE_SID=当前实例
echo $ORACLE_SID

rman在oracle账户首先在对应的实例然后下输入rman target /数据库手动备份

backup database;

归档手动备份

backup archivelog all;

backupset列表查看

list backup;
list backup of database;
list backup of archivelog all;
list backup summary;
简述可用的备份(TY: B代表备份, LV: F代表全备fullbackup, A表示 Archivelog, 0,1,2 表示备份级别, S表示状态, A表示available可用, X表示expried过期)。

根据序列删除backupset中的内容

delete backupset 序列号;

ASMCMD操作

asmcmd在oracle账户下输入asmcmd

ls
cd 实例名ASM对应网盘名称(实例名称)
ls
cd backupset;(RMAN的数据备份和归档备份位置)
cd ..
cd archivelog;(归档日志位置)

注意

  • 所有的删除动作在数据备份和归档备份后操作,建议删除有完整备份之前的内容
  • asmcmd下archivelog下的文件还是需要手动维护的建议删除参考上面第一条

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表