Differences between revisions 6 and 7
Revision 6 as of 2023-04-12 07:09:14
Size: 9174
Editor: localhost
Comment:
Revision 7 as of 2023-04-12 07:14:20
Size: 9174
Editor: localhost
Comment:
Deletions are marked like this. Additions are marked like this.
Line 92: Line 92:
restore controlfile from '/ctrl_dGZDB_uq21on8da_s19266_p1_t1133224362'; ## 修改为实际的控制文件 restore controlfile from '/ctrl_dGZDB_u6i1pcafa_s19666_p1_t1133914602'; ## 修改为实际的控制文件

Describe 首頁/work/QH-gzdb-Restore here.

gzdb RAC数据库恢复至单机

环境信息

  • NBU Server : nbu-wg.qhlhfund.com
  • 源主机: 10.0.10.111 / GZDB RAC (RHEL6.5, Oracle database 11.2.0.4)
  • 目标主机: 10.0.8.13 / RHEL6.5, Oracle database 11.2.0.4)
  • DBID=3049006903

注:DBID提前记录并修改为对应值

环境准备

列出备份集

登录NBU Server目标主机, 列出备份集, 找到对应的控制文件

/usr/openv/netbackup/bin/bplist -C GZDB_3049006903 -t 4 -R -l / | head -30

编辑pfile文件以适用单机环境

  • SSH 使用oracle用户登录目标主机10.0.8.13

cd $ORACLE_HOME/dbs/

vi init$ORACLE_SID.ora

gzdb.__db_cache_size=15367929856
gzdb.__java_pool_size=469762048
gzdb.__large_pool_size=536870912
gzdb.__oracle_base='/u01/oracle/app'#ORACLE_BASE set from environment
gzdb.__pga_aggregate_target=8246337208
gzdb.__sga_target=19241453486
gzdb.__shared_io_pool_size=0
gzdb.__shared_pool_size=3704253440
gzdb.__streams_pool_size=67108864
*.audit_file_dest='/u01/oracle/app/admin/gzdb/adump'
*.audit_sys_operations=TRUE
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/data/gzdb/controlfile/current1','/log/gzdb/controlfile/current2'
*.db_block_size=8192
*.db_domain=''
*.db_name='gzdb'
*.db_recovery_file_dest_size=96636764160
*.db_recovery_file_dest='/log/gzdb/archivelog'
*.diagnostic_dest='/u01/oracle/app'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=gzdbXDB)'
*.log_archive_format='gzdb_%t_%s_%r.dbf'
*.log_archive_max_processes=30
*.open_cursors=300
*.processes=300
*.remote_login_passwordfile='exclusive'
*.resource_limit=TRUE
*.session_cached_cursors=500
*.sessions=335
*.sga_max_size=21990232555
gzdb.undo_tablespace='UNDOTBS1'
*.undo_retention=14400

创建orapwd文件

  • SSH 使用oracle用户登录目标主机10.0.8.13

cd $ORACLE_HOME/dbs/

orapwd file=orapw$ORACLE_SID entries=10

创建相关目录

  • SSH 使用oracle用户登录目标主机10.0.8.13

mkdir -pv /u01/oracle/app/admin/gzdb/adump

mkdir -pv /log/gzdb/{controlfile,archivelog}

mkdir -pv /data/gzdb/{datafile,onlinelog,controlfile}

迁移实施

如无特别说明, 以下迁移实施的操作都是在目标主机完成的.

即: 通过SSH客户端并使用oracle用户登录目标主机10.0.8.13

恢复 controlfile

rman target / nocatalog <<"EOF"
spool log to Restore-Controlfile.log
SET DBID=3049006903
startup nomount;
RUN {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
send 'NB_ORA_CLIENT=GZDB_3049006903';
send 'NB_ORA_SERV=nbu-wg.qhlhfund.com';
restore controlfile from '/ctrl_dGZDB_u6i1pcafa_s19666_p1_t1133914602'; ## 修改为实际的控制文件
ALTER DATABASE MOUNT;
RELEASE CHANNEL ch00;
}
spool log off
EOF

生成rman set newname脚本

方法一

$ sqlplus / as sysdba

SQL> select 'set newname for datafile '||t.file_id||' to '||'''/data/gzdb/datafile/' ||replace(t.file_name,'+DATA/gzdb/datafile','')||''';' from dba_data_files t order by t.file_id;

SQL> select 'set newname for tempfile '||t.file#||' to '||'''/data/gzdb/datafile/' ||replace(t.name,'+DATA/gzdb/datafile','')||''';' from v$tempfile t order by t.file#

方法二

在rman中运行 report schema, 提取其结果并使用awk&sed等命令生成.

查看备份的归档

RMAN> list backup of archivelog all;

List of Archived Logs in backup set 9
Thrd Seq     Low SCN    Low Time  Next SCN   Next Time
---- ------- ---------- --------- ---------- ---------
1    56      214541     01-FEB-21 226238     01-FEB-21
1    57      226238     01-FEB-21 226240     01-FEB-21
1    58      226240     01-FEB-21 233107     12-FEB-21
2    1       186185     28-JAN-21 225714     01-FEB-21
2    2       225714     01-FEB-21 226037     01-FEB-21
2    3       226037     01-FEB-21 233110     12-FEB-21

获取 until sequence + 1

set until sequence 59 thread 1;

目标主机-还原&恢复验证(仅验证,可选)

主要作用为验证恢复是否可用,恢复时间预估等,执行以下脚本

rman target / nocatalog <<"EOF"
spool log to Restore_preview_validate.log
RUN {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
ALLOCATE CHANNEL ch02 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
ALLOCATE CHANNEL ch03 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
ALLOCATE CHANNEL ch04 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
ALLOCATE CHANNEL ch05 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
send 'NB_ORA_CLIENT=GZDB_3049006903';
send 'NB_ORA_SERV=nbu-wg.qhlhfund.com';
set until sequence 27731 thread 1;
#set newname for datafile 1 to '/data/gzdb/datafile/system.282.884706407';
#set newname for tempfile 1 to '/data/gzdb/datafile/temp01.dbf';
restore database preview;
restore database validate;
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
RELEASE CHANNEL ch02;
RELEASE CHANNEL ch03;
RELEASE CHANNEL ch04;
RELEASE CHANNEL ch05;
}
spool log off
EOF

restore database

rman target / nocatalog <<"EOF"
spool log to Restore.log
RUN {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
ALLOCATE CHANNEL ch02 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
ALLOCATE CHANNEL ch03 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
ALLOCATE CHANNEL ch04 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
ALLOCATE CHANNEL ch05 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
send 'NB_ORA_CLIENT=GZDB_3049006903';
send 'NB_ORA_SERV=nbu-wg.qhlhfund.com';
set until sequence 27731 thread 1;
#set newname for datafile 15 to '/data/gzdb/datafile/fundsirm.385.1126003991';
#set newname for tempfile 1 to '/data/gzdb/datafile/temp01.dbf';
restore database;
switch datafile all;
switch tempfile all;
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
RELEASE CHANNEL ch02;
RELEASE CHANNEL ch03;
RELEASE CHANNEL ch04;
RELEASE CHANNEL ch05;
}
spool log off
EOF

rename the online redolog files

SQL> select member from v$logfile;

SQL> select 'alter database rename file '||''''||t.member||''||''' to '||'''/data/gzdb/onlinelog' ||replace(t.member,'+DATA/gzdb/onlinelog','')||''';' from v$logfile t order by t.group#;

SQL> alter database rename file '/<old_path>/redo01.log' to '/<new_path>/redo01.log';

示例

alter database rename file '+DATA/gzdb/onlinelog/group_5.290.884706935' to '/data/gzdb/onlinelog/redolog9.log';

手动copy asm磁盘中的归档日志至目标主机(可选)

* SSH 使用grid用户登录源主机10.0.10.111 ASM copy archivelog FROM ASM to LOCAL

mkdir /backup/$(date +%F)

chown grid:oinstall /backup/$(date +%F)

for i in $(asmcmd ls RECO/GZDB/ARCHIVELOG/$(date +%F)); do

  • asmcmd cp +RECO/GZDB/ARCHIVELOG/$(date +%F)/$i /backup/$(date +%F)

done

scp -r /backup/$(date +%F) oracle@10.0.8.13:/backup/$(date +%F)

recover database

rman target / nocatalog <<"EOF"
spool log to Recover.log
RUN {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
send 'NB_ORA_CLIENT=GZDB_3049006903';
send 'NB_ORA_SERV=nbu-wg.qhlhfund.com';
recover database;
RELEASE CHANNEL ch00;
}
spool log off
EOF

* 恢复新的归档 rman target /

catalog start with '/backup/$(date +%F)';
crosscheck backupset;
recover database;

查看并修复遇到的问题.

直到没有报错, 则执行下一步.

打开数据库

目标主机-打开数据库

alter database open resetlogs;
  • 关闭并重新打开数据库验证(可选)
  • SQL> shutdown immediate

  • SQL> startup

Troubleshooting

recover database until sequence

预期的sequence缺少, 忽略之

RMAN> recover database until sequence XXX

清除在线日志

SQL> select THREAD#, STATUS, ENABLED from v$thread;

SQL> select group# from v$log where THREAD#=2;

SQL> alter database drop logfile group 10;

SQL> select THREAD#, STATUS, ENABLED from v$thread;

Parameters

su - oracle

sqlplus / as sysdba

#  processes=x sessions=x*1.1+5 transactions=sessions*1.1

select name, value from v$parameter where name in ('sessions','processes','transactions');

alter system set processes=300 scope=spfile;
alter system set sessions=335 scope=spfile;
alter system set transactions=368 scope=spfile;


alter system set sga_max_size=18G  scope=spfile;
alter system set sga_target=18G  scope=spfile;
alter system set pga_aggregate_target=7G scope=spfile;

shutdown immediate
startup

首頁/work/QH-gzdb-Restore (last edited 2023-04-15 05:35:10 by localhost)