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

[经验分享] Oracle Active Database Duplication-Sysdba

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2018-9-9 07:15:37 | 显示全部楼层 |阅读模式
  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,那么需要设置如下参数:
   DB_NAME
   CONTROL_FILES
   DB_BLOCK_SIZE
   DB_FILE_NAME_CONVERT
   LOG_FILE_NAME_CONVERT
   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:
  {

  >  }
  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-568392-1-1.html 上篇帖子: oracle LPAD和RPAD函数简介 下篇帖子: Oracle闪回技术(笔记)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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