环境介绍:
备份是:11.2.0.1 rac中的rman备份
目标:利用rac的rman备份创建单实例数据库,用于测试
准备条件:
1、在单机创建数据库,要求数据库名和原库名一样,最后可以使用nid进行修改dbid和dbname
2、默认控制文件不在RMAN备份集中,需要从RMAN备份日志中去到具体存放位置
3、只有全库不行,还需要归档日志备份
第一步:创建数据库dbca
第二步:启动数据库到mount状态下
startup nomount;
第三步:根据RMAN日志查找spfile文件位置(该文件和控制文件备份在一起)
restore spfile to pfile '/u01/app/oracle/11.2.0/db_1/dbs/initarchboss.ora' from '/rmanback/s_873899508.281.873899517';
第四步:修改初始化参数,只保留如下内容
*.audit_file_dest='/u01/app/oracle/admin/archboss/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/app/oracle/oradata/archboss/control01.dbf','/u01/app/oracle/oradata/archboss/control02.dbf'
*.db_block_size=8192
*.db_domain=''
*.db_files=500
*.db_name='archboss'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=archbossXDB)'
*.memory_target=817889280
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='exclusive'
*.undo_tablespace='UNDOTBS1'
*.log_archive_dest_1='LOCATION=/u01/arch' --添加归档目录
*.log_archive_format='%t_%s_%r.dbf' --添加归档目录格式
第五步:生成spfile文件
shutdown immediate;
create spfile from pfile;
startup nomount
第六步:恢复控制文件
rman target /
restore controlfile from '/rmanback/s_873899508.281.873899517'
mount database;
第七步:将备份集注册进控制文件里
catalog start with '/rmanback/';
第八步:确认数据文件路径(源库执行)
set pagesize 9999
col NAME for a65
select file#,name from v$datafile;
1 +DATA/devdb/datafile/system.256.835141391
2 +DATA/devdb/datafile/sysaux.257.835141395
3 +DATA/devdb/datafile/undotbs1.258.835141395
4 +DATA/devdb/datafile/users.259.835141397
5 +DATA/devdb/datafile/undotbs2.264.835142223
RUN {
SET NEWNAME FOR DATAFILE 1 to '/u01/app/oracle/oradata/archboss/system01.dbf';
SET NEWNAME FOR DATAFILE 2 to '/u01/app/oracle/oradata/archboss/sysaux01.dbf';
SET NEWNAME FOR DATAFILE 3 to '/u01/app/oracle/oradata/archboss/undotbs1.dbf';
SET NEWNAME FOR DATAFILE 4 to '/u01/app/oracle/oradata/archboss/users01.dbf';
SET NEWNAME FOR DATAFILE 5 to '/u01/app/oracle/oradata/archboss/undotbs2.dbf';
RESTORE DATABASE;
SWITCH DATAFILE ALL; --将数据文件信息更新到控制文件
}
--注意,tempfile需要后期单独创建,此处不会处理tempfile
第九步:修改联机日志文件的路径
col MEMBER for a65
select member from v$logfile
alter database rename file '+DATA/devdb/onlinelog/group_2.270.848066901' to '/u01/app/oracle/oradata/archboss/redo2_1.log';
alter database rename file '+FLASH/devdb/onlinelog/group_2.270.848066901' to '/u01/app/oracle/oradata/archboss/redo2_2.log';
alter database rename file '+DATA/devdb/onlinelog/group_1.261.835141813' to '/u01/app/oracle/oradata/archboss/redo1_1.log';
alter database rename file '+FLASH/devdb/onlinelog/group_1.257.835141821' to '/u01/app/oracle/oradata/archboss/redo1_2.log';
alter database rename file '+DATA/devdb/onlinelog/group_3.265.835142349' to '/u01/app/oracle/oradata/archboss/redo3_1.log';
alter database rename file '+FLASH/devdb/onlinelog/group_3.259.835142355' to '/u01/app/oracle/oradata/archboss/redo3_2.log';
alter database rename file '+DATA/devdb/onlinelog/group_4.266.835142359' to '/u01/app/oracle/oradata/archboss/redo4_1.log';
alter database rename file '+FLASH/devdb/onlinelog/group_4.260.835142367' to '/u01/app/oracle/oradata/archboss/redo4_2.log';
alter database rename file '+DATA/devdb/onlinelog/group_5.268.848057681' to '/u01/app/oracle/oradata/archboss/redo5_1.log';
alter database rename file '+FLASH/devdb/onlinelog/group_5.261.848057683' to '/u01/app/oracle/oradata/archboss/redo5_2.log';
alter database rename file '+DATA/devdb/onlinelog/group_6.269.848066571' to '/u01/app/oracle/oradata/archboss/redo6_1.log';
alter database rename file '+FLASH/devdb/onlinelog/group_6.265.848066573' to '/u01/app/oracle/oradata/archboss/redo6_2.log';
alter database rename file '+DATA/devdb/onlinelog/group_7.271.848070189' to '/u01/app/oracle/oradata/archboss/redo7_1.log';
alter database rename file '+FLASH/devdb/onlinelog/group_7.275.848070191' to '/u01/app/oracle/oradata/archboss/redo7_2.log';
alter database rename file '+DATA/devdb/onlinelog/group_8.272.848070209' to '/u01/app/oracle/oradata/archboss/redo8_1.log';
alter database rename file '+FLASH/devdb/onlinelog/group_8.276.848070211' to '/u01/app/oracle/oradata/archboss/redo8_2.log';
联机日志文件修改之后查看
SQL> set pagesize 9999
SQL> select member from v$logfile;
第十步:恢复数据库
rman target /
recover database;
第十一步:resetlogs打开数据库(此问题是因为没有归档日志造成的,需要提供归档日志)
ORA-01152: file 2 was not restored from a sufficiently old backup
ORA-01110: data file 2: '/u01/app/oracle/oradata/archboss/sysaux01.dbf'
RMAN> alter database open resetlogs;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 03/09/2015 18:05:44
ORA-38856: cannot mark instance UNNAMED_INSTANCE_2 (redo thread 2) as enabled
退出RMAN环境,
sqlplus / as sysdba
ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 10 '/u01/app/oracle/oradata/archboss/redo_t2_log3.log' SIZE 10M REUSE,GROUP 11 '/u01/app/oracle/oradata/archboss/redo_t2_log4.log' SIZE 10M REUSE;
alter database open resetlogs;
--禁用thread 2
alter database disable thread 2;
第十二步:创建临时表空间
create temporary tablespace temp01 tempfile '/u01/app/oracle/oradata/temp01.dbf' size 10M;
第十三步:修改DBID和DBNAME
nid 命令到执行的最后会关闭数据库,如果有session 连接,就会阻止这个操作,修改dbid就会被挂死。如果中断这个操作。修改就会失败,数据库就不能mount。需要恢复。
注意一点,修改DB_NAME 之前,要将spfile 创建成pfile,因为修改dbname之后,原来的参数文件就没用了。所以要保证最新的参数。 还有修改DB_NAME的值为最新值。 修改完之后,然后用这个新参数启动DB,另外还需注意,nid命令到执行的最后会关闭数据库,如果有session连接,就会阻止这个操作,修改dbid就会被挂死,如果中断这个操作,修改就会失败,数据库就不能mount,需要恢复,因此修改前要关闭所有连接会话
nid target=sys/system dbname=boss --修改DBID和DBNAME
nid target=sys/system --只修改DBID
分享: