前期准备
在源库备份的时候,可以产生一个checkpoint,触发写数据库文件,并记录当前checkpoint
alter system checkpoint;
select t.CHECKPOINT_CHANGE#,t.CURRENT_SCN from v$database t;
recover database until time "to_date('2015-12-04 06:41:11','yyyy-mm-dd hh24:mi:ss')";
recover database until scn 11490541742112;
大体步骤:
(1)恢复spfile
(2)恢复控制文件
(3)restore数据库文件
(4)recover数据库
开始恢复
安装一个数据库名称一样的数据库
(也可以不安装数据库,但要手工创建参数文件里的一些目录)
删掉新数据库的文件(datafile、logfile、cronfile)
删掉spfile文件
ASMCMD> cd DATAFILE
ASMCMD> rm ./*
spfile +DATA/mm100/spfilemm100.ora
create spfile='/home/oracle/spfilemm100.ora' from pfile='$ORACLE_HOME/dbs/initmm1001.ora'
恢复spfile
restore spfile to '$ORACLE_HOME/dbs/spfilebiostime1.ora' from '/u02/backup/lev"2"_mm100x_101763_1_20151204';
shutdown immediate
创建pfile
export ORACLE_SID=mm1001
Create pfile='$ORACLE_HOME/dbs/initbiostime1.ora' from spfile='$ORACLE_HOME/dbs/spfilebiostime1.ora';
修改pfile(如果安装了个一样名称的数据库,可以使用当前pfile,只修改控制文件路径)
vim $ORACLE_HOME/dbs/initmm1001.ora
mm1001.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
mm1002.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
*.audit_file_dest='/u01/app/oracle/admin/mm100/adump'
*.db_file_name_convert='/u01/app/oracle/oradata/mm100/','+DATA/mm100/datafile/'
*.diagnostic_dest='/u01/app/oracle'
*.log_archive_dest_1='location=/u02/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=mm100'
*.log_file_name_convert='/u02/archivelog','/u02/archivelog'
.remote_listener='bstrac-scan:1521'
*.control_files='+DATA/mm100/controlfile/current.01','+DATA/mm100/controlfile/current.02'
删除*.log_archive_start=TRUE (废弃参数)
以pfile启动数据库
startup nomount pfile='$ORACLE_HOME/dbs/initmm1001.ora'
恢复控制文件
rman target /
restore controlfile to '+DATA/mm100/controlfile/current.01' from '/u02/backup/lev"2"_mm100x_101762_1_20151204';
restore controlfile to '+DATA/mm100/controlfile/current.02' from '/u02/backup/lev"2"_mm100x_101762_1_20151204';
启动数据库
startup mount
注册备份目录下所有备份文件:
catalog start with '/u02/backup/';
#注册单个备份文件:
CATALOG backuppiece '/u02/rman_backup/ctlmm100x_101926_1_20151222';
如果恢复的目标数据库路径不同,需要转换路径
select '"'||FILE#||'","'||name||'"' from v$datafile;
恢复数据库(目标路径不同)
run
{
set newname for datafile 1 to "/u01/app/oracle/oradata/biostime/datafile/system.293.882705495";
set newname for datafile 2 to "/u01/app/oracle/oradata/biostime/datafile/sysaux.294.882705495";
set newname for datafile 3 to "/u01/app/oracle/oradata/biostime/datafile/undotbs1.295.882705497"
restore database;
switch datafile all;
}
恢复数据库(目标路径相同)
restore database;
复制归档日志
cp /u02/backup/bst/arc799866443_1* /u02/archivelog/
cp ../backup/bst/arc799866443_2_143* /u02/archivelog/
scp /u02/backup/bst/arc799866443_2_143* s009pm:/u02/archivelog/
RAC2:
scp $ORACLE_HOME/dbs/initmm1001.ora s009pm:$ORACLE_HOME/dbs/initmm1002.ora
startup nomount pfile='$ORACLE_HOME/dbs/initmm1002.ora'
show parameter control
alter database mount;
#注册归档日志
catalog start with '/u02/rman_backup/arch/';
recover database until scn 11492757742007;
Run
{
Set until time "to_date('2015-12-22 07:30:00','yyyy-mm-dd hh24:mi:ss')";
Restore database;
Recover database;
}
#注册归档日志备份集
CATALOG backuppiece '/u02/rman_backup/tlmm100x_101926_1_20151222';
#注册归档日志文件
CATALOG archivelog '/u02/rman_backup/arch/arc799866443_1_179460.arc';
CATALOG archivelog '/u02/rman_backup/arch/arc799866443_1_179461.arc';
CATALOG archivelog '/u02/rman_backup/arch/arc799866443_1_179462.arc';
Run
{
Set until time "to_date('2015-12-22 08:00:00','yyyy-mm-dd hh24:mi:ss')";
Recover database;
}
遇到的问题
问题:
RMAN> alter database open RESETLOGS;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 12/24/2015 16:26:33
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 537919488 bytes disk space from 53687091200 limit
解决办法:
alter system set db_recovery_file_dest_size =200g scope=both;
[grid@s008pm: ~]$ asmcmd
ASMCMD> cd +DATA/mm100/onlinelog/
ASMCMD> ls
group_1.261.898898995
group_1.652.899310391
group_2.262.898898995
group_3.265.898899113
group_4.266.898899113
select group#,bytes/1024/1024||'M',status from v$log;
shutdown immediate
startup mount
alter database open resetlogs;
alter database clear logfile group 1;
alter database clear logfile group 2;
alter database clear logfile group 3;
alter database clear logfile group 4;
alter database clear logfile group 5;
alter database clear logfile group 6;
升级数据库
(根据实际需要)
由于源数据库是11.2.0.3的版本,而新数据库是11.2.0.4的版本,因此需要升级
(rac1 rac2)
ALTER SYSTEM SET CLUSTER_DATABASE=FALSE scope=spfile ;
SHUTDOWN IMMEDIATE;
startup UPGRADE;
在其中一个节点执行:
@?/rdbms/admin/utlu112i.sql
@?/rdbms/admin/catupgrd.sql
@?/rdbms/admin/utlu112s.sql
@?/rdbms/admin/catuppst.sql
@?/rdbms/admin/utlrp
ALTER SYSTEM SET CLUSTER_DATABASE=TRUE scope=spfile ;
srvctl stop database -d [db_name]
srvctl stop asm -n [node_name]
crsctl stop crs
/etc/init.d/init.crs stop
RAC的停止和启动
停止RAC:
emctl stop dbconsole
srvctl stop instance -d mm100 -i mm1001
srvctl stop instance -d mm100 -i mm1002
srvctl stop database -d mm100
srvctl stop asm -n s008pm
srvctl stop asm -n s009pm
srvctl stop nodeapps -n s008pm
srvctl stop nodeapps -n s009pm
启动RAC:
和上面的步骤正好相反即
srvctl start nodeapps -n s008pm
srvctl start nodeapps -n s009pm
srvctl start asm -n s008pm
srvctl start asm -n s009pm
srvctl start instance -d mm100 -i mm1001
srvctl start instance -d mm100 -i mm1002
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10995764/viewspace-2124889/ ,如需转载,请注明出处,否则将追究法律责任。