利用RMAN IMAGE COPY,启动新的数据库
admin
2023-04-22 01:03:01
0

    通过IMAGE COPY技术,可以得到一个数据库的完整副本,快速打开数据库,避免数据库还原和恢复的漫长时间。下面是利用IMAGE COPY进行一个数据库完整恢复的案例。由于该测试是在同一台数据库主机上面进行,因此需要注意ORACLE_SID环境变量,以及相关路径下的文件不能被覆盖。


--1. 创建DB 0级 IMAGE COPY 备份

[oracle@sqlaudit ~]$ rman target /
RMAN> BACKUP AS COPY INCREMENTAL LEVEL 0 TAG 'SRCDB-IMAGE' DATABASE FORMAT '/oradata/srcdb_img/SRCDB-LVL0-%U';


--2. 创建测试数据

[oracle@sqlaudit ~]$ sqlplus / as sysdba
SQL> create table scott.test_backup  
  2  as
  3  select rownum rn from dual connect by rownum <= 1000000;


--3. 创建DB 1级 IMAGE COPY 备份

RMAN> BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF TAG 'SRCDB-IMAGE' DATABASE FORMAT '/oradata/srcdb_img/SRCDB-LVL1-%U' PLUS ARCHIVELOG;

Starting backup at 2018-01-31 07:48:41
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=2 RECID=1 STAMP=961989888
input archived log thread=1 sequence=3 RECID=2 STAMP=966842424
input archived log thread=1 sequence=4 RECID=3 STAMP=966842833
input archived log thread=1 sequence=5 RECID=4 STAMP=966842838
input archived log thread=1 sequence=6 RECID=5 STAMP=966842911
input archived log thread=1 sequence=7 RECID=6 STAMP=966842915
input archived log thread=1 sequence=8 RECID=7 STAMP=966844055
input archived log thread=1 sequence=9 RECID=8 STAMP=966844059
input archived log thread=1 sequence=10 RECID=9 STAMP=966844121
channel ORA_DISK_1: starting piece 1 at 2018-01-31 07:48:42
channel ORA_DISK_1: finished piece 1 at 2018-01-31 07:48:43
piece handle=/oracle/app/oracle/product/11.2.0.4/db_1/dbs/12sq1nmp_1_1 tag=SRCDB-IMAGE comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 2018-01-31 07:48:43
Starting backup at 2018-01-31 07:48:43
using channel ORA_DISK_1
channel ORA_DISK_1: starting incremental level 1 datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/oracle/app/oracle/oradata/srcdb/system01.dbf
input datafile file number=00002 name=/oracle/app/oracle/oradata/srcdb/sysaux01.dbf
input datafile file number=00005 name=/oracle/app/oracle/oradata/srcdb/ggtbs01.dbf
input datafile file number=00003 name=/oracle/app/oracle/oradata/srcdb/undotbs01.dbf
input datafile file number=00004 name=/oracle/app/oracle/oradata/srcdb/users01.dbf
channel ORA_DISK_1: starting piece 1 at 2018-01-31 07:48:43
channel ORA_DISK_1: finished piece 1 at 2018-01-31 07:48:44
piece handle=/oradata/srcdb_img/SRCDB-LVL1-13sq1nmr_1_1 tag=SRCDB-IMAGE comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting incremental level 1 datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 2018-01-31 07:48:45
channel ORA_DISK_1: finished piece 1 at 2018-01-31 07:48:46
piece handle=/oradata/srcdb_img/SRCDB-LVL1-14sq1nms_1_1 tag=SRCDB-IMAGE comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 2018-01-31 07:48:46
Starting backup at 2018-01-31 07:48:46
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=11 RECID=10 STAMP=966844126
channel ORA_DISK_1: starting piece 1 at 2018-01-31 07:48:46
channel ORA_DISK_1: finished piece 1 at 2018-01-31 07:48:47
piece handle=/oracle/app/oracle/product/11.2.0.4/db_1/dbs/15sq1nmu_1_1 tag=SRCDB-IMAGE comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 2018-01-31 07:48:47


--4. 对 DB 0级 IMAGE COPY 备份进行恢复操作

RMAN> RECOVER COPY OF DATABASE WITH TAG 'SRCDB-IMAGE';

Starting recover at 2018-01-31 07:48:57
using channel ORA_DISK_1
channel ORA_DISK_1: starting incremental datafile backup set restore
channel ORA_DISK_1: specifying datafile copies to recover
recovering datafile copy file number=00001 name=/oradata/srcdb_img/SRCDB-LVL0-data_D-SRCDB_I-595837900_TS-SYSTEM_FNO-1_0nsq1niv
recovering datafile copy file number=00002 name=/oradata/srcdb_img/SRCDB-LVL0-data_D-SRCDB_I-595837900_TS-SYSAUX_FNO-2_0osq1nj2
recovering datafile copy file number=00003 name=/oradata/srcdb_img/SRCDB-LVL0-data_D-SRCDB_I-595837900_TS-UNDOTBS1_FNO-3_0qsq1njk
recovering datafile copy file number=00004 name=/oradata/srcdb_img/SRCDB-LVL0-data_D-SRCDB_I-595837900_TS-USERS_FNO-4_0rsq1njl
recovering datafile copy file number=00005 name=/oradata/srcdb_img/SRCDB-LVL0-data_D-SRCDB_I-595837900_TS-GGTBS_FNO-5_0psq1njh
channel ORA_DISK_1: reading from backup piece /oradata/srcdb_img/SRCDB-LVL1-0vsq1nko_1_1
channel ORA_DISK_1: piece handle=/oradata/srcdb_img/SRCDB-LVL1-0vsq1nko_1_1 tag=SRCDB-IMAGE
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting incremental datafile backup set restore
channel ORA_DISK_1: specifying datafile copies to recover
recovering datafile copy file number=00001 name=/oradata/srcdb_img/SRCDB-LVL0-data_D-SRCDB_I-595837900_TS-SYSTEM_FNO-1_0nsq1niv
recovering datafile copy file number=00002 name=/oradata/srcdb_img/SRCDB-LVL0-data_D-SRCDB_I-595837900_TS-SYSAUX_FNO-2_0osq1nj2
recovering datafile copy file number=00003 name=/oradata/srcdb_img/SRCDB-LVL0-data_D-SRCDB_I-595837900_TS-UNDOTBS1_FNO-3_0qsq1njk
recovering datafile copy file number=00004 name=/oradata/srcdb_img/SRCDB-LVL0-data_D-SRCDB_I-595837900_TS-USERS_FNO-4_0rsq1njl
recovering datafile copy file number=00005 name=/oradata/srcdb_img/SRCDB-LVL0-data_D-SRCDB_I-595837900_TS-GGTBS_FNO-5_0psq1njh
channel ORA_DISK_1: reading from backup piece /oradata/srcdb_img/SRCDB-LVL1-13sq1nmr_1_1
channel ORA_DISK_1: piece handle=/oradata/srcdb_img/SRCDB-LVL1-13sq1nmr_1_1 tag=SRCDB-IMAGE
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
Finished recover at 2018-01-31 07:48:59


--5. 源库执行备份控制文件操作,获取日志中的信息

SQL> alter database backup controlfile to trace;
--    Set #1. NORESETLOGS case
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "SRCDB" NORESETLOGS FORCE LOGGING ARCHIVELOG
......
;


--6. 创建新的对象,用于后续完全恢复时进行稽核

SQL> create table scott.test22 (id number);
SQL> alter system switch logfile;
SQL> shutdown immediate;


--7. 创建 IMAGE COPY 数据库所需的参数文件(参数文件中的db_name不能修改,audit_file_dest与control_files路径要进行调整)

[oracle@sqlaudit ~]$ cd $ORACLE_HOME/dbs
[oracle@sqlaudit dbs]$ cp orapwsrcdb orapwsrcdbnew
[oracle@sqlaudit dbs]$ strings spfilesrcdb.ora > initsrcdbnew.ora
[oracle@sqlaudit dbs]$ cat initsrcdbnew.ora | grep '/oracle/'
*.audit_file_dest='/oracle/app/oracle/admin/srcdbnew/adump'
*.control_files='/oradata/srcdb_img/control01.ctl','/oradata/srcdb_img/control02.ctl'
[oracle@sqlaudit dbs]$ mkdir -p /oracle/app/oracle/admin/srcdbnew/adump

--8. 启动数据库实例

[oracle@sqlaudit dbs]$ export ORACLE_SID=srcdbnew
[oracle@sqlaudit dbs]$ sqlplus / as sysdba
SQL> startup nomount;


--9. 复制在线日志文件到新目录用于完全恢复

[oracle@sqlaudit archive]$ cp /oracle/app/oracle/oradata/srcdb/redo01.log /oradata/srcdb_img/redo01.log
[oracle@sqlaudit archive]$ cp /oracle/app/oracle/oradata/srcdb/redo02.log /oradata/srcdb_img/redo02.log
[oracle@sqlaudit archive]$ cp /oracle/app/oracle/oradata/srcdb/redo03.log /oradata/srcdb_img/redo03.log


--10. 重建控制文件

CREATE CONTROLFILE REUSE DATABASE "SRCDB" NORESETLOGS
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/oradata/srcdb_img/redo01.log'  SIZE 50M BLOCKSIZE 512,
  GROUP 2 '/oradata/srcdb_img/redo02.log'  SIZE 50M BLOCKSIZE 512,
  GROUP 3 '/oradata/srcdb_img/redo03.log'  SIZE 50M BLOCKSIZE 512
DATAFILE
  '/oradata/srcdb_img/SRCDB-LVL0-data_D-SRCDB_I-595837900_TS-SYSTEM_FNO-1_0nsq1niv',
  '/oradata/srcdb_img/SRCDB-LVL0-data_D-SRCDB_I-595837900_TS-SYSAUX_FNO-2_0osq1nj2',
  '/oradata/srcdb_img/SRCDB-LVL0-data_D-SRCDB_I-595837900_TS-UNDOTBS1_FNO-3_0qsq1njk',
  '/oradata/srcdb_img/SRCDB-LVL0-data_D-SRCDB_I-595837900_TS-USERS_FNO-4_0rsq1njl',
  '/oradata/srcdb_img/SRCDB-LVL0-data_D-SRCDB_I-595837900_TS-GGTBS_FNO-5_0psq1njh'
CHARACTER SET WE8MSWIN1252
;
SQL> SELECT NAME FROM V$DATAFILE;


--11. 源库检查检查需要注册的日志文件

[oracle@sqlaudit dbs]$ export ORACLE_SID=srcdb
SQL> startup mount;
RMAN> list backup of archivelog all;
BS Key  Size      Device Type Elapsed Time Completion Time    
------- ---------- ----------- ------------ -------------------
19      3.50K      DISK        00:00:00    2018-01-31 07:48:46
        BP Key: 19  Status: AVAILABLE  Compressed: NO  Tag: SRCDB-IMAGE
        Piece Name: /oracle/app/oracle/product/11.2.0.4/db_1/dbs/15sq1nmu_1_1
  List of Archived Logs in backup set 19
  Thrd Seq    Low SCN    Low Time            Next SCN  Next Time
  ---- ------- ---------- ------------------- ---------- ---------
  1    11      969636    2018-01-31 07:48:41 969648    2018-01-31 07:48:46


--12. 新库注册源库的日志文件

SQL> ALTER DATABASE REGISTER LOGFILE '/oracle/archive/1_11_961988430.dbf';
SQL> ALTER DATABASE REGISTER LOGFILE '/oracle/archive/1_12_961988430.dbf';
SQL> ALTER DATABASE REGISTER LOGFILE '/oracle/archive/1_13_961988430.dbf';
SQL> ALTER DATABASE REGISTER LOGFILE '/oracle/archive/1_14_961988430.dbf';
SQL> RECOVER DATABASE;
SQL> ALTER DATABASE OPEN;


--13. 创建新的临时文件

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/oradata/srcdb_img/temp01.dbf' SIZE 100M AUTOEXTEND OFF;


相关内容

热门资讯

珠海冠宇获得发明专利授权:“一... 证券之星消息,根据天眼查APP数据显示珠海冠宇(688772)新获得一项发明专利授权,专利名为“一种...
大华申请数据写入方法专利,提高... 国家知识产权局信息显示,浙江大华技术股份有限公司申请一项名为“数据写入方法、电子设备及计算机可读存储...
现在,赖清德更焦虑了 执笔/月半刀&宝刀刀&胡一刀5月13日,美国总统特朗普将开启访华行程。外界高度关注此次会晤中双方将如...
燃气发电与电池储能相结合,成为... 来源:市场资讯 (来源:i商周) 孟菲斯一座xAI数据中心的燃气轮机 人工智能的用电飙升,让数据中心...
景嘉微:JM11性能大幅提升,... 有投资者在互动平台向景嘉微提问:“董秘您好!关注到近期有用户反馈公司JM11显卡推出了适配windo...
原创 v... 影像的发展进一步推动,不少品牌推出了专业影像手机,拥有2亿像素摄像头、色彩还原摄像头、影像芯片、影像...
荣耀首款自研耳夹式耳机官宣即将... 快科技5月13日消息,日前,荣耀首席营销官关海涛宣布,荣耀全场景团队自研首款耳夹式耳机马上上市,并称...
谷歌推出Googlebooks... IT之家 5 月 13 日消息,2026 年 I/O 开发者大会下周(5 月 19~20 日)召开之...
自控所推动GNC专业智能化升级 来源:滚动播报 (来源:中国航空报) 本报讯 5月6日,航空工业自控所召开 GNC+AI关键技术研发...
华电电力申请数据库访问方法专利... 国家知识产权局信息显示,华电电力科学研究院有限公司申请一项名为“数据库访问方法、装置、设备及介质”的...