Oracle环境:Oracle 11gR2 配置步骤:
一、配置rman自动备份: 1、打开归档模式并修改归档路径:
具体步骤参考以下链接: 关于Oracle归档模式
归档模式配置结果如下:
2、创建本地rman备份存储目录: 1 2 3 4 5 6 7 8 mkdir /rmanbak cd /rmanbak mkdir datafile mkdir controlfile mkdir log chown -R oracle:oinstall datafile chown -R oracle:oinstall controlfile chown -R oracle:oinstall log
3、配置rman备份参数: rman配置 1 2 3 4 5 6 [oracle@ora11g]$ rman target/ RMAN> show all; --如果配置不对,输入以下命令变更状态 CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/rmanbak/controlfile/%F';
备份数据文件 1 RMAN> backup database format '/rmanbak/datafile/data_%U.dbf';
备份控制文件 1 RMAN> backup current controlfile format '/rmanbak/controlfile/control_%f.dbf';
完备脚本(待调整)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #!/bin/bash export ORACLE_SID=ora11g export ORACLE_BASE=/oracle/app/oracle export ORACLE_HOME=/oracle/app/oracle/product/11.2.0/db_1 $ORACLE_HOME/bin/rman target / << EOF run{ allocate channel c1 type disk; allocate channel c2 type disk; allocate channel c3 type disk; allocate channel c4 type disk; allocate channel c5 type disk; crosscheck archivelog all; backup as compressed backupset database format '/rmanbak/datafile/full_dbbackup_%T_%d_%U'; sql 'alter system archive log current'; backup as compressed backupset filesperset 10 format '/rmanbak/datafile/Arch_%d_%T_%s.bak' archivelog all; delete noprompt obsolete; release channel c1; release channel c2; release channel c3; release channel c4; release channel c5; } EOF
备份参数文件(数据迁移到新服务器中) 源库查看参数文件路径 1 2 SQL> show parameter spfile; --查看可得到路径:/oracle/app/oracle/product/11.2.0/db_1/dbs/spfileora11g.ora
确认目标库是否有源库参数文件的路径,没有则需创建 1 2 3 4 5 cd /oracle/app/oracle/product/11.2.0/db_1/dbs #关闭目标库 sqlplus / as sysdba SQL> shutdown immediate
关于参数文件
init.ora (只要这个参数文件在,下面两个就在,这三个文件是一致的) spfileora11g.ora (二进制,需要用命令修改) pfile.ora (文本,直接修改)
如果要数据库迁移到另一个服务器上的数据库中,需要目标库中删除 init.ora 和 spfileora11g.ora 这俩参数文件 然后cp 源库中的这俩文件到目标库中
1 2 3 4 5 6 7 8 --删除目标库中的参数文件 rm init.ora spfileora11g.ora --拷贝源库参数文件到目标库中 scp /oracle/app/oracle/product/11.2.0/db_1/dbs/init.ora 目标ip://oracle/app/oracle/product/11.2.0/db_1/dbs scp /oracle/app/oracle/product/11.2.0/db_1/dbs/spfileora11g.ora 目标ip://oracle/app/oracle/product/11.2.0/db_1/dbs
查看下目标库中有没有cat spfileora11g.ora里这三个参数目录, 如果没有查询到,需要在目标库中新建
1 2 3 4 5 6 7 8 9 --审计目录 *.audit_file_dest='/oracle/app/oracle/admin/ora11g/adump' --控制文件目录 *.control_files='/oradata/ora11g/coCC")"ntrol01.ctl','/oradata/ora11g/control02.ctl' --安装文件目录 *.diagnostic_dest='/oracle/app/oracle' --删除目标库中的数据文件及目录 cd $ORACLE_BASE 类似于这个文件目录 /oradata/ora11g
修改目标库的 .bash_profile 文件和源库的一致
1 2 3 4 5 6 archive log list; 查看归档目录 --删除目标库中的归档文件 然后从源库的归档目录中 复制 到目标库的归档目录中 cd rmanback/datafile 复制到目标库中
备份恢复 1 2 3 4 5 6 7 8 9 10 11 sqlplus / as sysdba 启动到nomount状态,确认参数文件里目录是否都存在 startup nomount; --RMAN恢复控制文件 oracle$ rman target/ RMAN> restore controlfiles from '/rmanback/datafile/要恢复的控制文件.dbf' --rman中启动数据库状态到mount状态 RMAN> sql 'alter database mount'; RMAN> restore database;
查看下快速恢复区/审计目录/数据文件目录,这三个目录有没有,没有一定要创建下
1 RMAN> crosscheck archivelog all; --校验检查控制文件和实际物理文件的区别
如果归档文件校验有问题,将有问题的文件注册下 如果报错,那么要手动的将截止日期作为结束点,需要手动下操作就行,归档就结束了
1 2 3 4 5 6 7 8 ORACLE开库 RMAN> sql 'alter database open RESETLOGS' 恢复后再确认下 select status from v$instance; select table_name from user_tables;