前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【DB笔试面试737】在Oracle中,将单实例备份集恢复为rac数据库的步骤有哪些?

【DB笔试面试737】在Oracle中,将单实例备份集恢复为rac数据库的步骤有哪些?

作者头像
小麦苗DBA宝典
发布2020-02-24 09:50:39
1.1K0
发布2020-02-24 09:50:39
举报

题目部分

在Oracle中,将单实例备份集恢复为rac数据库的步骤有哪些?

答案部分

将单实例备份集恢复为rac数据库的过程基本上就是先将备份集恢复为单实例的数据库,然后再将数据库转换为RAC库。

数据库的备份可以使用如下的脚本:

代码语言:javascript
复制
run
{
 allocate channel c1 type disk;
 allocate channel c2 type disk;
 backup database format  '/home/oracle/rman_back/full_%n_%T_%t_%s_%p.bak'; 
 sql 'alter system archive log current';
 backup archivelog all format '/home/oracle/rman_back/arch_%d_%T_%s_%p.bak' delete input;
 backup current controlfile format '/home/oracle/rman_back/ctl_%d_%T_%s_%p.bak';
 release channel c1;
 release channel c2;
}

将单实例备份集恢复为rac数据库常用的命令如下所示:

代码语言:javascript
复制
ORACLE_SID=lhrdb
ORACLE_SID=lhrrac21

mkdir +DATA/lhrrac2/
startup nomount
restore spfile to '+DATA/lhrrac2/spfilelhrrac2.ora' from  '/home/oracle/rman_back/full_LHRDBxxx_20180711_981220001_4_1.bak';

/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initlhrrac21.ora
SPFILE='+DATA/lhrrac2/spfilelhrrac2.ora'

echo "SPFILE='+DATA/lhrrac2/spfilelhrrac2.ora'" > /u01/app/oracle/product/11.2.0/dbhome_1/dbs/initlhrrac22.ora


create pfile='/tmp/a.txt' from spfile;
*.audit_file_dest='/u01/app/oracle/admin/lhrdb/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='+DATA','+FRA'
*.db_block_size=8192
*.db_domain=''
*.db_name='lhrdb'
*.db_recovery_file_dest='+FRA'
*.db_recovery_file_dest_size=4322230272
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=lhrdbXDB)'
*.memory_target=415236096
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'

create spfile='+DATA/lhrrac2/spfilelhrrac2.ora' from pfile='/tmp/b.txt';

startup nomount force;
restore controlfile   from '/home/oracle/rman_back/ctl_LHRDB_20180711_7_1.bak';
alter database mount;

set line 9999 pagesize 9999
col FILE_NAME format a60
select 'datafile' file_type, file#,name FILE_NAME,status,enabled from v$datafile
union all
select 'tempfile',file#,name FILE_NAME,status,enabled from v$tempfile
union all
select 'logfile',group# file#,member FILE_NAME,status,'' from v$logfile
union all
select 'controlfile', to_number('') ,name FILE_NAME,status,'' from v$controlfile;


set pagesize  200 linesize 200
select 'set newname for datafile ' || a.FILE# || ' to "' || a.NAME || '";' from v$datafile a
union all
select 'set newname for tempfile ' || a.FILE# || ' to "' || a.NAME || '";' from v$tempfile a
union all 
SELECT 'SQL "ALTER DATABASE RENAME FILE ''''' || a.MEMBER || '''''  to  ''''' || a.MEMBER || ''''' ";' FROM v$logfile a;



set pagesize  200 linesize 200
select 'set newname for datafile ' || a.FILE# || ' to "+DATA";' from v$datafile a
union all
select 'set newname for tempfile ' || a.FILE# || ' to "+DATA";' from v$tempfile a
union all 
SELECT 'SQL "ALTER DATABASE RENAME FILE ''''' || a.MEMBER || '''''  to  ''''+DATA'''' ";' FROM v$logfile a;


set newname for datafile 1 to "+DATA";
set newname for datafile 2 to "+DATA";
set newname for datafile 3 to "+DATA";
set newname for datafile 4 to "+DATA";
set newname for datafile 5 to "+DATA";
set newname for tempfile 1 to "+DATA";
SQL "ALTER DATABASE RENAME FILE ''/u01/app/oracle/oradata/lhrdb/redo03.log''  to  ''+DATA'' ";
SQL "ALTER DATABASE RENAME FILE ''/u01/app/oracle/oradata/lhrdb/redo02.log''  to  ''+DATA'' ";
SQL "ALTER DATABASE RENAME FILE ''/u01/app/oracle/oradata/lhrdb/redo01.log''  to  ''+DATA'' ";



run { 
    ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
    set newname for datafile 1 to "+DATA";
    set newname for datafile 2 to "+DATA";
    set newname for datafile 3 to "+DATA";
    set newname for datafile 4 to "+DATA";
    set newname for datafile 5 to "+DATA";
    set newname for tempfile 1 to "+DATA";
    SQL "ALTER DATABASE RENAME FILE ''/u01/app/oracle/oradata/lhrdb/redo03.log''  to  ''+DATA'' ";
    SQL "ALTER DATABASE RENAME FILE ''/u01/app/oracle/oradata/lhrdb/redo02.log''  to  ''+DATA'' ";
    SQL "ALTER DATABASE RENAME FILE ''/u01/app/oracle/oradata/lhrdb/redo01.log''  to  ''+DATA'' ";
    restore database; 
    SWITCH DATAFILE ALL;
    SWITCH TEMPFILE ALL; 
    release channel c1;
 }

list backupset of archivelog all;
RUN{ 
set until sequence 6;  
recover database; 
}

alter database open resetlogs;

以上步骤执行完后依然是一个单实例的数据库,因此需要将数据库转换为RAC库。需要修改集群参数,redo和undo的相关内容:

代码语言:javascript
复制
select * from v$option where parameter = 'Real Application Clusters';

--集群参数
alter system set cluster_database=true scope=spfile; 
alter system set cluster_database_instances=2 scope=spfile;

alter system set instance_number=1 scope=spfile sid='lhrrac21'; 
alter system set instance_number=2 scope=spfile sid='lhrrac22'; 

--redo
select THREAD# ,STATUS from v$thread;
alter system set thread=1 scope=spfile sid='lhrrac21'; 
alter system set thread=2 scope=spfile sid='lhrrac22'; 
alter database add logfile thread 2 group 4 '+FRA' size 50M;
alter database add logfile thread 2 group 5 '+FRA' size 50M;
alter database add logfile thread 2 group 6 '+FRA' size 50M;

col instance format a20
select thread#,instance,status,enabled from v$thread;
alter database enable thread 2 ; 


--undo
create undo tablespace undotbs2 datafile '+DATA' SIZE 50m;
alter system set undo_tablespace='undotbs1' scope=spfile sid='lhrrac21'; 
alter system set undo_tablespace='undotbs2' scope=spfile sid='lhrrac22'; 
show spparameter undo


srvctl remove db -d lhrdb -f
srvctl add database -d lhrdb -o $ORACLE_HOME -p +DATA/lhrrac2/spfilelhrrac2.ora
srvctl config database -d lhrdb 
srvctl add instance -d lhrdb -i lhrrac21 -n raclhr-11gR2-N1
srvctl add instance -d lhrdb -i lhrrac22 -n raclhr-11gR2-N2
srvctl config database -d lhrdb 
srvctl start db -d lhrdb

---重建集群相关的视图
@$ORACLE_HOME/rdbms/admin/catclust.sql

& 说明:

有关将单实例备份集恢复为rac数据库的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-1682250/。

本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DB宝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档