设为首页 收藏本站
查看: 323|回复: 0

[经验分享] Oracle Active Database Duplication

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-10-23 10:01:31 | 显示全部楼层 |阅读模式
Active Database Duplication


简介
---------
Active database duplication功能是从11g开始引入的一个新功能,它是对比以前版本中的基于备份集的复制数据库功能。

下面简单的回顾一下关于ORACLE Duplicate Database功能,Duplicate database可以按照用途分为2种,一种是duplicate database,第二种是duplicate standby database,本文主要介绍duplicate database功能,会在以后介绍duplicate standby database。

Duplicate Database又可以按照复制数据的来源不同分为2种方式:Active Database Duplication(从正在运行的数据库上复制数据)和Backup-based duplication(基于备份集的数据复制)

1. Backup-based duplication 又分为下面3中形式:
o 复制的过程不连接到源数据库,RMAN从Catalog 数据库取得备份信息。

o 复制的过程不连接到源数据库,也不连接到Catalog数据库,RMAN从已有的备份集取得备份信息。

o 复制的过程连接到源数据库,RMAN从源数据库的控制文件取得备份信息。

2. Active Database Duplication
这种复制数据库要求源数据库是open状态或者mount状态,复制的过程一定要连接到源数据库,RMAN直接从源库复制数据库到Duplication服务器,这种方式不需要提前备份源库。

Duplicate Database 特点
------------------------
1. 复制的Database会自动分配一个新的DBID,与源数据库的DBID不同,这样Duplicate数据库和源库可以注册到同一个catalog 数据库。
如果使用操作系统的命令来做异机复制恢复的话,新创建的数据库和源库是相同的DBID。

2. 复制的数据库可以是源库的一个完全镜像,也可以是源库的一个子集。

3. 复制的数据库和源库必须是相同的操作系统平台,我们认为同平台下的32-bit 和 64-bit是同一个平台,例如Linux IA (32-bit) 和Linux IA (64-bit),认为是相同的平台,可以实施duplicate 功能,但是最后一定要运行下面的脚本来转换PL/SQL:
ORACLE_HOME/rdbms/admin/utlirp.sql

Active Database Duplication 和 Backup-based duplication对比
-------------------------------------------------------------
Active database duplication 直接复制源数据库,通过网络传输数据库到复制服务器,因此复制时对源库有一定的压力,而且数据传输时对网络条件要求较高。

Backup-based duplication :需要提前备份数据库,磁盘空间大小能够满足备份的需要。




Active Database Duplication 原理
-------------------------------------
1. 手动创建一个临时的pfile文件,pfile文件至少包括一个参数DB_NAME,然后启动到nomount状态。
2. RMAN从源库拷贝spfile文件到复制数据库上,并且修改spfile的名字。
3. RMAN从源库拷贝最新的control file到复制数据库,并且mount 复制数据库。
4. RMAN从源库拷贝datafile和必要的归档日志到复制数据库。
5. RMAN执行不完全的恢复。
6. RMAN创建新的control file,并且设置新的DBID。
7. 以RESETLOGS方式打开复制的database。



如果使用spfile,那么在pfile文件里只需要设置一个DB_NAME参数,其他参数会在duplicate 命令中自己设置。

如果使用pfile,那么需要设置如下参数:

<1> DB_NAME

<2> CONTROL_FILES

<3> DB_BLOCK_SIZE   

<4> DB_FILE_NAME_CONVERT

<5> LOG_FILE_NAME_CONVERT

<6> DB_RECOVERY_FILE_DEST



在Auxiliary库创建Password File 文件

对于Backup-based duplication,Password File 不是必须的,但是对于Active Database Duplication,Password File是必须的。
因为Active Database Duplication 使用相同的SYSDBA 密码直接连接到auxiliary 库。所以,确保target 和Auxiliary库的SYSDBA 密码一样很重要。



当然,我们也可以在duplicate 命令中加上PASSWORD FILE 选项(也是默认值), 这样RMAN 在copy 的时候也会从target 库把密码文件copy过来,
如果auxiliary库上已经存在了Password file,那么该操作会重写那个文件。

如:

RMAN> DUPLICATE TARGET DATABASE TO Dave

2> FROM ACTIVE DATABASE

3> NOFILENAMECHECK

4> PASSWORD FILE

5> SPFILE;




实验步骤:
源库:10.6.0.207   test
目标库:10.6.0.179   aaa(本来想用test,但是在rman 那步骤会报错)


准备工作
1.config tnsnames.ora
2.create password file
3.mkdir necessary folder
4.create spfile to startup nomount
5.config duplicate database listener.ora
6.duplicate a database



RMAN> duplicate target database to newdb
      from active database
      db_file_name_convert '/nf/','/duptest/'
      spfile
        parameter_value_convert '/db/','/newdb/'
      set log_file_name_convert '/db/','/newdb/'
     
     
     


1.源库上创建pfile并且SCP到目标库上   
SQL> create pfile='/tmp/pfile20151022.ora' from spfile;

scp /tmp/pfile20151022.ora oracle@10.6.0.179:/u01/app/oracle/12.1.0.1/db_1/dbs/inittest.ora



目标库上


SQL> select name  from v$datafile;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/test/system01.dbf
/u01/app/oracle/oradata/test/sysaux01.dbf
/u01/app/oracle/oradata/test/undotbs01.dbf
/u01/app/oracle/oradata/test/users01.dbf
/u01/app/oracle/oradata/test/qwerty.dbf
/u01/app/oracle/oradata/test/testbig.dbf
/u01/app/oracle/oradata/test/data_01.dbf
/u01/app/oracle/oradata/test/cai.dbf




SQL> select MEMBER from v$logfile;

MEMBER
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/test/redo01.log
/u01/app/oracle/oradata/test/redo02.log
/u01/app/oracle/oradata/test/redo03.log


配置好源库的linstener.ora

[oracle@test admin]$ cat listener.ora
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = test)
      (ORACLE_HOME = /u01/app/oracle/12.1.0.1/db_1)
      (SID_NAME = test)
    )
  )

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = test)(PORT = 1521))
  )



配置好源库上的tnsname.ora
[oracle@test admin]$ cat tnsnames.ora
test =
   (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.6.0.207)(PORT = 1521))
   (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = test)
    )
   )
   
test2 =
   (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.6.0.179)(PORT = 1521))
   (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = test)
    )
   )









因为源库跟目标库数据文件,日志文件,控制文件放的位置都不一样,所以要修改目标库上的pfile,
增加db_file_name_convert和log_file_name_convert


在目标库上修改pfile

vi /u01/app/oracle/12.1.0.1/db_1/dbs/inittest.ora

修改controlfile路径

增加
db_file_name_convert='/u01/app/oracle/oradata/test','/u01/app/oracle/oradata/test/datafile'
log_file_name_convert='/u01/app/oracle/oradata/test','/u01/app/oracle/oradata/test/onlinelog'




配置好目标库上的listener.ora
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = test)
      (ORACLE_HOME = /u01/app/oracle/12.1.0.1/db_1)
      (SID_NAME = test)
    )
  )

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.6.0.179)(PORT = 1521))
  )





   
   

配置好目标库上的tnsname.ora
[oracle@test admin]$ cat tnsnames.ora
test =
   (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.6.0.207)(PORT = 1521))
   (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = test)
    )
   )
   
test2 =
   (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.6.0.179)(PORT = 1521))
   (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = test)
    )
   )








rman target sys/123456@test auxiliary sys/123456@test2
   
   
   
--rman这里对test字符有限制,加上单引号后解决问题


RMAN> duplicate target database to 'test' from active database;

Starting Duplicate Db at 22-OCT-15
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=12 device type=DISK
current log archived

contents of Memory Script:
{
   sql clone "create spfile from memory";
}
executing Memory Script

sql statement: create spfile from memory

contents of Memory Script:
{
   shutdown clone immediate;
   startup clone nomount;
}
executing Memory Script

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     838860800 bytes
.....

datafile 2 switched to datafile copy
input datafile copy RECID=1 STAMP=893782472 file name=/u01/app/oracle/oradata/test/datafile/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=2 STAMP=893782472 file name=/u01/app/oracle/oradata/test/datafile/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=3 STAMP=893782472 file name=/u01/app/oracle/oradata/test/datafile/users01.dbf

contents of Memory Script:
{
   Alter clone database open resetlogs;
}
executing Memory Script

database opened
Cannot remove created server parameter file
Finished Duplicate Db at 22-OCT-15

RMAN> exit



以上就是Active Database Duplication测试过程

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-129862-1-1.html 上篇帖子: oracle无法执行delete等命令 下篇帖子: Oracle 数据迁移
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表