利用RMAN IMAGE COPY,启动新的数据库

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

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

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

--2. 创建测试数据

[[email protected] ~]$ 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路径要进行调整)

[[email protected] ~]$ cd $ORACLE_HOME/dbs
[[email protected] dbs]$ cp orapwsrcdb orapwsrcdbnew
[[email protected] dbs]$ strings spfilesrcdb.ora > initsrcdbnew.ora
[[email protected] 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'
[[email protected] dbs]$ mkdir -p /oracle/app/oracle/admin/srcdbnew/adump

--8. 启动数据库实例

[[email protected] dbs]$ export ORACLE_SID=srcdbnew
[[email protected] dbs]$ sqlplus / as sysdba
SQL> startup nomount;

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

[[email protected] archive]$ cp /oracle/app/oracle/oradata/srcdb/redo01.log /oradata/srcdb_img/redo01.log
[[email protected] archive]$ cp /oracle/app/oracle/oradata/srcdb/redo02.log /oradata/srcdb_img/redo02.log
[[email protected] 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. 源库检查检查需要注册的日志文件

[[email protected] 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;

原文地址:http://blog.51cto.com/recyclebin/2067411

时间: 2024-10-09 05:41:55

利用RMAN IMAGE COPY,启动新的数据库的相关文章

利用rman duplicate重建oracle dataguard standby数据库

问题背景 适用情况: 操作系统: redhat 6.5 数据库: oracle 11g r2 问题描述: failover后原主库无法恢复和启动或者丢失主备关系 优点 不需要对primary数据库停机 执行简单 实施前准备工作 1.测试dumplicate 2.测试环境数据库利用dumplicate重建stanby数据库 实施步骤 备份新主库 注意备份脚本,应该备份到服务器的本地磁盘而不是带库. rman_backup.sh备份本地脚本: #!/bin/sh #oracle environmen

使用rman本机复制新数据库

使用rman复制数据库 原数据库sid orcl  复制新的数据库sid为 nylg 1.创建复制备份数据库的参数文件 在原数据库创建pfile create pfile from spfile; 然后复制pfile参数文件 [[email protected] dbs]$ pwd /u01/app/oracle/product/11.2/dbs [[email protected] dbs]$ cp initorcl.ora initnylg.ora 修改orcl数据库名改为nylg vi i

利用rman自动备份转储spfile

[情景简介] 生产环境丢失了服务器的参数文件,rman已开启自动备份设置. [操作过程简述] ----启动rman $rman target / ----检查rman设置 RMAN> show all; ----配置一遍rman自动备份控制文件,模拟初次设置rman自动备份控制文件 RMAN>CONFIGURE CONTROLFILEAUTOBACKUP ON; RMAN>CONFIGURE CONTROLFILEAUTOBACKUP FORMAT FOR DEVICE TYPE DIS

ORACLE RMAN备份及还原 RMAN可以进行增量备份:数据库,表空间,数据文件

ORACLE RMAN备份及还原 RMAN可以进行增量备份:数据库,表空间,数据文件 只有使用过的block可以被备份成backup set 表空间与数据文件对应关系:dba_data_files / v$datafile_header 在noarchivelog模式下,可以使用RMAN备份read-only和offline的表空间 ORACLE RMAN停机备份: 备份 RMAN连接上ORACLE,WINDOWS下在命令模式下 RMAN TARGET / 连接本地数据库用的是本地认证模式.RM

LinuxCentOS中使用SQL*Plus启动和关闭数据库

启动和关闭数据库的常用工具有三个 一.SQL*Plus 在SQL*Plus环境中,用户以SYSDBA身份连接到Oracle后,可以通过命令行方式启动或关闭数据库. 二.OEM(企业管理器) 利用OEM数据库控制台,可以完成数据库的启动与关闭操作. 三.RMAN 在Recovery Manager(RMAN)环境中可以通过命令行方式启动或关闭数据库. 一般来说我们使用的都是SQL*Plus来启动和关闭数据库 1.启动数据库: [[email protected] etc]$ sqlplus /no

Swift轻松入门——基本语法介绍和详细地Demo讲解(利用WebView打开百度、新浪等网页)

本文主要分为两个部分,第一部分介绍Swift的基本语法,第二部分讲解一个利用WebView来打开百度.sina等网页的小demo,如果对swift的语法不感兴趣的同学可以直接跳到第二部分来感受下Swift的魅力-(本文的demo源码已上传至github:https://github.com/iOSGeek0829/XSurfing) 一.Swift常用语法 Swift是Apple去年推出的一门新的语言,基于C和Objective-C,而没有C的一些兼容约束,它采用了安全的编程模式和添加现代的功能

李克强:在量子通信等重点领域启动新的科技项目

李克强:在量子通信等重点领域启动新的科技项目 李克强主持召开国务院常务会议 国务院总理李克强7月20日主持召开国务院常务会议,通过“十三五”国家科技创新专项规划,以创新型国家建设引领和支撑升级发展:部署推进互联网+物流,降低企业成本便利群众生活:通过<国务院及其各部门任命的国家工作人员宪法宣誓组织办法>. 会议指出,创新是引领发展的第一动力.为进一步落实全国科技创新大会精神,依据国家“十三五”规划纲要,对未来五年科技创新进行系统谋划和前瞻布局,是实施创新驱动发展战略.建设创新型国家的重大举措,

生产环境提升rman备份速度----启动块跟踪

[环境] AIX(5300-08).oracle10g(10.2.0.1.0-64bit) [目标] 由于生产环境数据量较大,欲加快rman备份的速度 [方法] 启动块跟踪 [操作] SQL> alter database enable block changetracking using file '/home/oracle/block.trc'; Database altered. SQL> select filename fromv$block_change_tracking; FILE

总结了一下网上MySQL 5.6.26 利用tar.gz包安装的MysSQL数据库会遇到的问题

总结了一下网上MySQL 5.6.26 利用tar.gz包安装的MysSQL数据库会遇到的问题     安装包: Linux Generic mysql-5.6.26-linux-glibc2.5-x86_64.tar.gz 安装环境: CentOS 7 这个数据库照理说应该没什么难度,但是还是纠结了两天.中文乱码问题,数据库服务restart报缺失.pid文件问题.处理过程在这里做个小的总结,以便以后工作中需要方便查阅. 1.创建mysql组和mysql用户: [[email protecte