ITPub博客

首页 > 数据库 > Oracle > rman:HA 同构异机恢复

rman:HA 同构异机恢复

原创 Oracle 作者:ludal 时间:2010-08-24 01:56:59 0 删除 编辑

步骤一:备份

备份机

10.150.224.6

备份目录

/backup

/backup/oracle

备份类型

全备

操作记录:

1.在9i上执行备份脚本hot.sh,

脚本内容:

====================================================

#!/bin/sh

# ---------------------------------------------------------------------------

# Determine the user which is executing this script.

# ---------------------------------------------------------------------------

CUSER=`id |cut -d"(" -f2 | cut -d ")" -f1`

# ---------------------------------------------------------------------------

# Put output in .out. Change as desired.

# Note: output directory requires write permission.

# ---------------------------------------------------------------------------

RMAN_LOG_FILE=${0}.out

# ---------------------------------------------------------------------------

# You may want to delete the output file so that backup information does

# not accumulate. If not, delete the following lines.

# ---------------------------------------------------------------------------

if [ -f "$RMAN_LOG_FILE" ]

then

rm -f "$RMAN_LOG_FILE"

fi

# -----------------------------------------------------------------

# Initialize the log file.

# -----------------------------------------------------------------

echo >> $RMAN_LOG_FILE

chmod 666 $RMAN_LOG_FILE

# ---------------------------------------------------------------------------

# Log the start of this script.

# ---------------------------------------------------------------------------

echo Script $0 >> $RMAN_LOG_FILE

echo ==== started on `date` ==== >> $RMAN_LOG_FILE

echo >> $RMAN_LOG_FILE

# ---------------------------------------------------------------------------

# Replace /db/oracle/product/ora81, below, with the Oracle home path.

# ---------------------------------------------------------------------------

ORACLE_HOME=/u01/prod/proddb

export ORACLE_HOME

# ---------------------------------------------------------------------------

# Replace ora81, below, with the Oracle SID of the target database.

# ---------------------------------------------------------------------------

ORACLE_SID=prod

export ORACLE_SID

# ---------------------------------------------------------------------------

# Replace ora81, below, with the Oracle DBA user id (account).

# ---------------------------------------------------------------------------

ORACLE_USER=oraprod

# ---------------------------------------------------------------------------

# Set the target connect string.

# Replace "sys/manager", below, with the target connect string.

# ---------------------------------------------------------------------------

TARGET_CONNECT_STR=sys/sys@orcl

# ---------------------------------------------------------------------------

# Set the Oracle Recovery Manager name.

# ---------------------------------------------------------------------------

RMAN=$ORACLE_HOME/bin/rman

# ---------------------------------------------------------------------------

# Print out the value of the variables set by this script.

# ---------------------------------------------------------------------------

echo >> $RMAN_LOG_FILE

echo "RMAN: $RMAN" >> $RMAN_LOG_FILE

echo "ORACLE_SID: $ORACLE_SID" >> $RMAN_LOG_FILE

echo "ORACLE_USER: $ORACLE_USER" >> $RMAN_LOG_FILE

echo "ORACLE_HOME: $ORACLE_HOME" >> $RMAN_LOG_FILE

echo >> $RMAN_LOG_FILE

echo "ORACLE_FULL: $ORACLE_FULL" >> $RMAN_LOG_FILE

echo "ORACLE_INCR: $ORACLE_INCR" >> $RMAN_LOG_FILE

# ---------------------------------------------------------------------------

# NOTE: This script assumes that the database is properly opened. If desired,

# this would be the place to verify that.

# ---------------------------------------------------------------------------

echo >> $RMAN_LOG_FILE

if [ "$ORACLE_FULL" = "1" ]

then

echo "Full backup requested" >> $RMAN_LOG_FILE

BACKUP_TYPE="INCREMENTAL LEVEL=0"

elif [ "$ORACLE_INCR" = "1" ]

then

echo "Differential incremental backup requested" >> $RMAN_LOG_FILE

BACKUP_TYPE="INCREMENTAL LEVEL=1"

elif [ "$BACKUP_TYPE" = "" ]

then

echo "Default - Full backup requested" >> $RMAN_LOG_FILE

BACKUP_TYPE="INCREMENTAL LEVEL=0"

fi

# ---------------------------------------------------------------------------

CMD_STR="

ORACLE_HOME=$ORACLE_HOME

export ORACLE_HOME

ORACLE_SID=$ORACLE_SID

export ORACLE_SID

$RMAN target $TARGET_CONNECT_STR nocatalog msglog $RMAN_LOG_FILE append << EOF

RUN {

ALLOCATE CHANNEL ch00 TYPE DISK;

ALLOCATE CHANNEL ch01 TYPE DISK;

BACKUP

$BACKUP_TYPE

SKIP INACCESSIBLE

TAG hot_db_bk_level0

FILESPERSET 5

# recommended format

FORMAT '/db/scripts/backup/bk_%s_%p_%t'

DATABASE diskartio=0;

sql 'alter system archive log current';

RELEASE CHANNEL ch00;

RELEASE CHANNEL ch01;

# ---------------------------------------------------------------------------

# backup all archive logs

ALLOCATE CHANNEL ch00 TYPE DISK;

ALLOCATE CHANNEL ch01 TYPE DISK;

BACKUP

filesperset 20

FORMAT '/db/scripts/backup/al_%s_%p_%t'

ARCHIVELOG ALL DELETE INPUT;

RELEASE CHANNEL ch00;

RELEASE CHANNEL ch01;

# ---------------------------------------------------------------------------

ALLOCATE CHANNEL ch00 TYPE DISK;

BACKUP

# recommended format

FORMAT '/db/scripts/backup/cntrl_%s_%p_%t'

CURRENT CONTROLFILE;

RELEASE CHANNEL ch00;

}

EOF

"

# Initiate the command string

if [ "$CUSER" = "root" ]

then

su - $ORACLE_USER -c "$CMD_STR" >> $RMAN_LOG_FILE

RSTAT=$?

else

/usr/bin/sh -c "$CMD_STR" >> $RMAN_LOG_FILE

RSTAT=$?

fi

# ---------------------------------------------------------------------------

if [ "$RSTAT" = "0" ]

then

LOGMSG="ended successfully"

else

LOGMSG="ended in error"

fi

echo >> $RMAN_LOG_FILE

echo Script $0 >> $RMAN_LOG_FILE

echo ==== $LOGMSG on `date` ==== >> $RMAN_LOG_FILE

echo >> $RMAN_LOG_FILE

exit $RSTAT

====================================================

2..配置控制文件自动备份,并指定备份目标目录/backup

RMAN > configure controlfile autobackup on;

RMAN > configure controlfile autobackup format for device type disk to ‘/backup/%F’;

3.将备份的文件FTP到7号机,存放在7号机的/backup目录下。

步骤二:恢复

目标机

10.150.224.7

Oracle版本

Oracle 9i

恢复类型

异机恢复

操作步骤

登录rman,并启动至nomount

RMAN > startup nomount;

2. 从/backup恢复控制文件

RMAN > restore controlfile from ‘/backup/ c-89683826-20100720-01';

3. 将生产数据库对应的文件目录,将其恢复到7号机的文件目录

根据10.150.224.6机上的数据文件信息将7号机的文件对应到相应的目录

脚本:

Run

{

set newname for datafile '/u01/prod/proddata/system01.dbf' to

'/u03/prod/proddata/system01.dbf';

set newname for datafile '/u01/prod/proddata/system02.dbf' to

'/u03/prod/proddata/system02.dbf';

set newname for datafile '/u01/prod/proddata/system03.dbf' to

'/u03/prod/proddata/system03.dbf';

set newname for datafile '/u01/prod/proddata/system04.dbf' to

'/u03/prod/proddata/system04.dbf';

set newname for datafile '/u01/prod/proddata/system05.dbf' to

'/u03/prod/proddata/system05.dbf';

set newname for datafile '/u01/prod/proddata/system06.dbf' to

'/u03/prod/proddata/system06.dbf';

set newname for datafile '/u01/prod/proddata/system07.dbf' to

'/u03/prod/proddata/system07.dbf';

set newname for datafile '/u01/prod/proddata/system08.dbf' to

'/u03/prod/proddata/system08.dbf';

set newname for datafile '/u01/prod/proddata/system09.dbf' to

'/u03/prod/proddata/system09.dbf';

set newname for datafile '/u01/prod/proddata/system10.dbf' to

'/u03/prod/proddata/system10.dbf';

set newname for datafile '/u01/prod/proddata/system11.dbf' to

'/u03/prod/proddata/system11.dbf';

set newname for datafile '/u01/prod/proddata/undo01.dbf' to

'/u03/prod/proddata/undo01.dbf';

set newname for datafile '/u01/prod/proddata/a_archive01.dbf' to

'/u03/prod/proddata/a_archive01.dbf';

set newname for datafile '/u01/prod/proddata/a_int01.dbf' to

'/u03/prod/proddata/a_int01.dbf';

set newname for datafile '/u01/prod/proddata/a_media01.dbf' to

'/u03/prod/proddata/a_media01.dbf';

set newname for datafile '/u01/prod/proddata/a_nolog01.dbf' to

'/u03/prod/proddata/a_nolog01.dbf';

set newname for datafile '/u01/prod/proddata/a_queue01.dbf' to

'/u03/prod/proddata/a_queue01.dbf';

set newname for datafile '/u01/prod/proddata/a_queue02.dbf' to

'/u03/prod/proddata/a_queue02.dbf';

set newname for datafile '/u01/prod/proddata/a_ref01.dbf' to

'/u03/prod/proddata/a_ref01.dbf';

set newname for datafile '/u01/prod/proddata/a_ref02.dbf' to

'/u03/prod/proddata/a_ref02.dbf';

set newname for datafile '/u01/prod/proddata/a_summ01.dbf' to

'/u03/prod/proddata/a_summ01.dbf';

set newname for datafile '/u01/prod/proddata/a_txn_data01.dbf' to

'/u03/prod/proddata/a_txn_data01.dbf';

set newname for datafile '/u01/prod/proddata/a_txn_data02.dbf' to

'/u03/prod/proddata/a_txn_data02.dbf';

set newname for datafile '/u01/prod/proddata/a_txn_data03.dbf' to

'/u03/prod/proddata/a_txn_data03.dbf';

set newname for datafile '/u01/prod/proddata/a_txn_ind01.dbf' to

'/u03/prod/proddata/a_txn_ind01.dbf';

set newname for datafile '/u01/prod/proddata/a_txn_ind02.dbf' to

'/u03/prod/proddata/a_txn_ind02.dbf';

set newname for datafile '/u01/prod/proddata/a_txn_ind03.dbf' to

'/u03/prod/proddata/a_txn_ind03.dbf';

set newname for datafile '/u01/prod/proddata/a_txn_ind04.dbf' to

'/u03/prod/proddata/a_txn_ind04.dbf';

set newname for datafile '/u01/prod/proddata/a_txn_ind05.dbf' to

'/u03/prod/proddata/a_txn_ind05.dbf';

set newname for datafile '/u01/prod/proddata/ctxd01.dbf' to

'/u03/prod/proddata/ctxd01.dbf';

set newname for datafile '/u01/prod/proddata/odm.dbf' to

'/u03/prod/proddata/odm.dbf';

set newname for datafile '/u01/prod/proddata/olap.dbf' to

'/u03/prod/proddata/olap.dbf';

set newname for datafile '/u01/prod/proddata/owad01.dbf' to

'/u03/prod/proddata/owad01.dbf';

set newname for datafile '/u01/prod/proddata/portal01.dbf' to

'/u03/prod/proddata/portal01.dbf';

set newname for datafile '/u01/prod/proddata/xzrpt.dbf' to

'/u03/prod/proddata/xzrpt.dbf';

restore database;

switch datafile all;

}

4.plsql下,执行

SQL > select member from v$logfile;

在7号机上的plsql下根据6号机的查询结果,修改联机日志和名称,目的是防止在Open resetlogs时报错

SQL > alter database rename file '/u01/prod/proddata/log01a.dbf' to

'/u03/prod/proddata/log01a.dbf';

SQL > alter database rename file '/u01/prod/proddata/log01b.dbf' to

'/u03/prod/proddata/log01b.dbf';

SQL > alter database rename file '/u01/prod/proddata/log02a.dbf' to

'/u03/prod/proddata/log02a.dbf';

SQL > alter database rename file '/u01/prod/proddata/log02b.dbf' to

'/u03/prod/proddata/log02b.dbf';

-------------------------------

5.在rman下

RMAN > list backup of archivelog all;

根据sequence以及thread指定恢复到thread 1 sequence 21857

(只有一组在线联机重做日志)

RMAN > run {

set until sequence 21857 thread 1;

recover database;}

或者回到RMAN直接执行

RMAN > recover database;

6.后续操作:

重建临时表空间

SQL > create temporary tablespace temp1 temfile '/u03/prod/proddata/temp1’ size 100m;

SQL > alter database default temporary tablespace temp1;

SQL > drop database temp including contents and datafiles;

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24487368/viewspace-1037278/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-12-14

  • 博文量
    44
  • 访问量
    427857