Oracle备份与恢复系列(四)复制数据库 使用原有的控制文件

克隆Open状态下的PRACTICE数据库

实验目的:在源数据库PRACTICEopen状态下,用alter tablespace .. begin backup 的方式备份全库。 用该备份在一台新的数据库服务器上恢复,验证备份的有效性。为了操作简便,克隆数据库端采用了dbca创建数据库,用源数据库的备份来覆盖所有文件,执行恢复操作来完成此次克隆。
源数据库:  192.168.1.20
克隆数据库:192.168.1.21

此次试验分为5个步骤

1 准备克隆数据库
2 备份打开的PRACTICE数据库
3 从源库复制备份到克隆库
4 恢复克隆的数据库
5 打开克隆的数据库

step1 准备克隆数据库

在克隆数据库主机上创建数据文件、归档日志、备份文件目录
mkdir /oradata
mkdir /archive
mkdir /backup
chown oracle:oinstall /oradata
chown oracle:oinstall /archive
chown oracle:oinstall /backup

dbca建库

step2 备份Open状态下的PRACTICE数据库

该脚本是在源数据库open状态下执行alter tablespace begin backup方式进行的。
@/backup/scripts/open_backup.sql

脚本如下
vi /backup/scripts/open_backup.sql

set feedback off
set pagesize 0
set heading off
set verify off
set linesize 100
set trimspool on
define dir = '/backup/open_backup'
define fil = '/backup/scripts/open_backup_commands.sql'
define spo = '&dir/open_backup_output.lst'
set serveroutput on
spool &fil
prompt spool &spo
prompt archive log list;;
prompt alter system switch logfile;;
prompt alter system archive log all;;
DECLARE
rem不备份临时表空间
CURSOR cur_tablespace IS
  SELECT tablespace_name
    FROM dba_tablespaces where tablespace_name<>'TEMP';

CURSOR cur_datafile (tn VARCHAR) IS
  SELECT file_name
    FROM dba_data_files
   WHERE tablespace_name = tn;
BEGIN
  FOR ct IN cur_tablespace LOOP
    dbms_output.put_line ('alter tablespace '||ct.tablespace_name||' begin backup;');
    FOR cd IN cur_datafile (ct.tablespace_name) LOOP
       dbms_output.put_line ('host cp '||cd.file_name||' &dir');
    END LOOP;
    dbms_output.put_line ('alter tablespace '||ct.tablespace_name||' end backup;');
  END LOOP;
END;
/
prompt alter system switch log file;;
rem 注意此处只备份了一个控制文件,需要手工复制一份到快速恢复区/u01/app/oracle/fast_recovery_area/PRACTICE
prompt alter database backup controlfile to '&dir./control01.ctl' REUSE;; 
prompt archive log list;;
prompt spool off
spool off;
@&fil


step3 从源库复制备份到克隆库

在源数据库端root用户下执行以下复制操作
复制spfile文件
scp /u01/app/oracle/product/11.2.0/db_1/dbs/spfilePRACTICE.ora 192.168.1.21:/u01/app/oracle/product/11.2.0/db_1/dbs/
复制数据文件、控制文件
scp /backup/open_backup/* 192.168.1.21:/backup/
复制归档日志文件
scp -r /archive/ 192.168.1.21:/

在克隆数据库端修改组属
chown oracle:oinstall /u01/app/oracle/product/11.2.0/db_1/dbs/spfilePRACTICE.ora
chown oracle:oinstall /oradata
chown oracle:oinstall /archive

在克隆数据库端复制一份拷贝过来的控制文件到闪回区
cp /backup/control01.ctl /u01/app/oracle/fast_recovery_area/PRACTICE/control02.ctl

step4 恢复克隆的数据库

recover database until cancel using backup control file;

ORA-00279: change 1304004 generated at 08/02/2014 10:52:46 needed for thread 1
ORA-00289: suggestion : /archive/1_2_854446453.arc
ORA-00280: change 1304004 for thread 1 is in sequence #2

Specify log: {=suggested | filename | AUTO | CANCEL}

ORA-00279: change 1304100 generated at 08/02/2014 10:53:08 needed for thread 1
ORA-00289: suggestion : /archive/1_3_854446453.arc
ORA-00280: change 1304100 for thread 1 is in sequence #3
ORA-00278: log file '/archive/1_2_854446453.arc' no longer needed for this
recovery

Specify log: {=suggested | filename | AUTO | CANCEL}

ORA-00279: change 1304837 generated at 08/02/2014 11:03:41 needed for thread 1
ORA-00289: suggestion : /archive/1_4_854446453.arc
ORA-00280: change 1304837 for thread 1 is in sequence #4
ORA-00278: log file '/archive/1_3_854446453.arc' no longer needed for this
recovery

Specify log: {=suggested | filename | AUTO | CANCEL}

Log applied.
Media recovery complete.
SYS@PRACTICE >
SYS@PRACTICE >
SYS@PRACTICE >alter database open resetlogs;


step5 打开克隆的数据库
alter database open resetlogs;

由于dbca建库包含了temp01.dbf临时表空间文件,所以不需要再次添加了。

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

转载于:http://blog.itpub.net/29047826/viewspace-1244325/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值