Welcome 微信登录

首页 / 数据库 / MySQL / 使用手工方法Clone异名数据库实验

搭建数据库Clone对象是我们经常遇到的日常运维需求。在实际开发测试过程中,经常需要快速拷贝一份包含业务数据的数据库环境。之前,我们已经介绍过如果使用RMAN Duplicate功能进行相关操作。本篇一起来讨论如何使用传统的SQL Plus工具进行创建克隆数据库。
 推荐阅读:RMAN 配置归档日志删除策略 http://www.linuxidc.com/Linux/2013-11/92670.htmOracle基础教程之通过RMAN复制数据库 http://www.linuxidc.com/Linux/2013-07/87072.htmRMAN备份策略制定参考内容 http://www.linuxidc.com/Linux/2013-03/81695.htmRMAN备份学习笔记 http://www.linuxidc.com/Linux/2013-03/81892.htmOracle数据库备份加密 RMAN加密 http://www.linuxidc.com/Linux/2013-03/80729.htm 1、环境介绍和实验目标我们选择Oracle 11gR2进行测试,运行操作系统为Linux 5.3。SQL> select * from v$version; BANNER----------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - ProductionPL/SQL Release 11.2.0.3.0 - ProductionCORE 11.2.0.3.0 ProductionTNS for Linux: Version 11.2.0.3.0 - ProductionNLSRTL Version 11.2.0.3.0 - Production 数据库实例名为ora11g,相关环境变量如下: [oracle@SimpleLinux ~]$ env | grep ORAORACLE_SID=ora11gORACLE_BASE=/u01/appORACLE_HOME=/u01/app/oracle 数据库参数文件、控制文件、数据文件均遵守OFA规范,文件名称策略为OMF。实验目标是建立数据库ora11cl,内容和ora11g完全相同(clone)。但是数据库名称要求不同。由于环境原因,笔者采用相同host进行文件复制,如果是不同host克隆数据库,操作完全相同。注意:异地克隆数据库,最好Oracle软件版本或者补丁完全相同。这样做可以防止由于版本原因造成的异常。
 
 2、原理分析和准备Oracle数据库运行三大文件:数据文件、控制文件和日志文件(online+archived)。需要进行数据库复制要将实现:参数文件启动一个全新的实例,采用一个新的实例名;控制文件重建并且识别日志和数据文件;如果不完全关闭情况下,还要考虑归档日志的应用补全。
 
一般情况下,如果是完全关闭数据库,我们是可以避免归档日志apply过程的。使用pfile可以实现新数据库实例的创建。在进入nomount之后,可以尝试重新建立control file,来修改置换文件头的各种信息。
 
确定当前控制文件目录:SQL> select name from v$controlfile;NAME--------------------------------------------------------------------------------
 
/u01/app/oradata/ORA11G/controlfile/o1_mf_92t72zkf_.ctl/u01/app/fast_recovery_area/ORA11G/controlfile/o1_mf_92t72zyj_.ctl 如果新数据库依然遵守OFA策略,对应的ORA11CL目录需要创建,包括数据目录和日志目录。准备cp命令脚本。  SQL> select "cp "||file_name||" "||replace(file_name,"ORA11G","ORA11CL") from dba_data_files;
 
cp /u01/app/oradata/ORA11G/datafile/o1_mf_users_92t6zl83_.dbf /u01/app/oradata/ORA11CL/datafile/o1_mf_users_92t6zl83_.dbf
 
cp /u01/app/oradata/ORA11G/datafile/o1_mf_undotbs1_92t6zl6d_.dbf /u01/app/oradata/ORA11CL/datafile/o1_mf_undotbs1_92t6zl6d_.dbf
 
cp /u01/app/oradata/ORA11G/datafile/o1_mf_sysaux_92t6zl5k_.dbf /u01/app/oradata/ORA11CL/datafile/o1_mf_sysaux_92t6zl5k_.dbf
 
cp /u01/app/oradata/ORA11G/datafile/o1_mf_system_92t6zl2m_.dbf /u01/app/oradata/ORA11CL/datafile/o1_mf_system_92t6zl2m_.dbf
 
cp /u01/app/oradata/ORA11G/datafile/o1_mf_example_92t74b1f_.dbf /u01/app/oradata/ORA11CL/datafile/o1_mf_example_92t74b1f_.dbf
 
cp /u01/app/oradata/ORA11G/datafile/o1_mf_trcatbl_96mlzz0j_.dbf /u01/app/oradata/ORA11CL/datafile/o1_mf_trcatbl_96mlzz0j_.dbf
 
cp /u01/app/oradata/ORA11G/datafile/o1_mf_testtbl_9j2sxn9r_.dbf /u01/app/oradata/ORA11CL/datafile/o1_mf_testtbl_9j2sxn9r_.dbf
 
cp /u01/app/oradata/ORA11G/datafile/o1_mf_awp_9khloyod_.dbf /u01/app/oradata/ORA11CLO/datafile/o1_mf_awp_9khloyod_.dbf
 
 8 rows selected 控制文件dump备份有很多方法,因为本次试验希望使用Create control file的策略,所以备份到平面flat text文件。 SQL> set heading on;SQL> select value from v$diag_info where name="Default Trace File";VALUE----------------------------------------------/u01/app/diag/rdbms/ora11g/ora11g/trace/ora11g_ora_3577.trc SQL> alter database backup controlfile to trace;Database altered 打开trace文件,定位了脚本位置,选择resetlogs模式创建。  STARTUP NOMOUNTCREATE CONTROLFILE REUSE DATABASE "ORA11G" RESETLOGS  ARCHIVELOG    MAXLOGFILES 16    MAXLOGMEMBERS 3    MAXDATAFILES 100    MAXINSTANCES 8    MAXLOGHISTORY 1248LOGFILE  GROUP 1 (    "/u01/app/oradata/ORA11G/onlinelog/o1_mf_1_94hvy8pw_.log",    "/u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_1_94hvy9kk_.log"  ) SIZE 50M BLOCKSIZE 512,  GROUP 2 (    "/u01/app/oradata/ORA11G/onlinelog/o1_mf_2_94hvyc26_.log",    "/u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_2_94hvydb6_.log"  ) SIZE 50M BLOCKSIZE 512,  GROUP 3 (    "/u01/app/oradata/ORA11G/onlinelog/o1_mf_3_94hvyfvx_.log",    "/u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_3_94hvyh9v_.log"  ) SIZE 50M BLOCKSIZE 512-- STANDBY LOGFILEDATAFILE  "/u01/app/oradata/ORA11G/datafile/o1_mf_system_92t6zl2m_.dbf",  "/u01/app/oradata/ORA11G/datafile/o1_mf_sysaux_92t6zl5k_.dbf",  "/u01/app/oradata/ORA11G/datafile/o1_mf_undotbs1_92t6zl6d_.dbf",  "/u01/app/oradata/ORA11G/datafile/o1_mf_users_92t6zl83_.dbf",  "/u01/app/oradata/ORA11G/datafile/o1_mf_example_92t74b1f_.dbf",  "/u01/app/oradata/ORA11G/datafile/o1_mf_trcatbl_96mlzz0j_.dbf",  "/u01/app/oradata/ORA11G/datafile/o1_mf_testtbl_9j2sxn9r_.dbf",  "/u01/app/oradata/ORA11G/datafile/o1_mf_awp_9khloyod_.dbf"CHARACTER SET AL32UTF8; 两个地方需要修改,一个是online group信息。因为我们是完全关闭数据库,不会有启动之后实例恢复步骤。而且OMF策略的一些文件在一些版本下是不能指定,所以为避免麻烦,删除掉日志文件信息,让Oracle执行过程中重新创建日志。另一个改动是数据文件的目录信息,将其中的ORA11G替换为ORA11CL。
 
  STARTUP NOMOUNTCREATE CONTROLFILE SET DATABASE "ORA11CL" RESETLOGS  ARCHIVELOG    MAXLOGFILES 16    MAXLOGMEMBERS 3    MAXDATAFILES 100    MAXINSTANCES 8    MAXLOGHISTORY 1248LOGFILE  GROUP 1 SIZE 50M BLOCKSIZE 512,  GROUP 2 SIZE 50M BLOCKSIZE 512,  GROUP 3 SIZE 50M BLOCKSIZE 512-- STANDBY LOGFILEDATAFILE  "/u01/app/oradata/ORA11CL/datafile/o1_mf_system_92t6zl2m_.dbf",  "/u01/app/oradata/ORA11CL/datafile/o1_mf_sysaux_92t6zl5k_.dbf",  "/u01/app/oradata/ORA11CL/datafile/o1_mf_undotbs1_92t6zl6d_.dbf",  "/u01/app/oradata/ORA11CL/datafile/o1_mf_users_92t6zl83_.dbf",  "/u01/app/oradata/ORA11CL/datafile/o1_mf_example_92t74b1f_.dbf",  "/u01/app/oradata/ORA11CL/datafile/o1_mf_trcatbl_96mlzz0j_.dbf",  "/u01/app/oradata/ORA11CL/datafile/o1_mf_testtbl_9j2sxn9r_.dbf",  "/u01/app/oradata/ORA11CL/datafile/o1_mf_awp_9khloyod_.dbf"CHARACTER SET AL32UTF8; 此外,我们注意在脚本中没有temp tablespace的信息。在trace文件中,我们看到Oracle可以在open reset之后创建表空间。当然,原始Trace文件中包括临时文件的名称信息,笔者也将其删除,促使Oracle自动创建。
 
 ALTER DATABASE OPEN RESETLOGS; ALTER TABLESPACE TEMP ADD TEMPFILE SIZE 481296384  AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
 
ALTER TABLESPACE TEMPTEST ADD TEMPFILE SIZE 1024M AUTOEXTEND OFF;ALTER TABLESPACE TEMPTEST ADD TEMPFILE SIZE 525328384  AUTOEXTEND OFF;ALTER TABLESPACE AWP_TEMP ADD TEMPFILE SIZE 1024M AUTOEXTEND ON NEXT 104857600  MAXSIZE 32767M;
 
 最后是参数文件准备,可以使用ora11g作为范本进行改写。 SQL> create pfile from spfile;File created. [oracle@SimpleLinux dbs]$ ls -l | grep init-rw-r--r-- 1 oracle oinstall    2851 May 15  2009 init.ora-rw-r--r-- 1 oracle oinstall    1070 Mar 10 11:17 initora11g.ora 修改其中内容,主要是数据库名称,控制文件参数control_files要进行屏蔽。对应所有与ora11g有关目录需要进行改写。 ora11cl.__db_cache_size=71303168ora11cl.__java_pool_size=20971520ora11cl.__large_pool_size=4194304ora11cl.__oracle_base="/u01/app"#ORACLE_BASE set from environmentora11cl.__pga_aggregate_target=113246208ora11cl.__sga_target=264241152ora11cl.__shared_io_pool_size=0ora11cl.__shared_pool_size=150994944ora11cl.__streams_pool_size=8388608*.audit_file_dest="/u01/app/admin/ora11cl/adump"*.audit_trail="db"*.compatible="11.2.0.0.0"#*.control_files="/u01/app/oradata/ORA11CL/controlfile/o1_mf_92t72zkf_.ctl","/u01/app/fast_recovery_area/ORA11CL/controlfile/o1_mf_92t72zyj_.ctl"
 
*.db_block_size=8192*.db_create_file_dest="/u01/app/oradata"*.db_domain=""*.db_name="ora11cl"*.db_recovery_file_dest="/u01/app/fast_recovery_area"*.db_recovery_file_dest_size=10737418240*.diagnostic_dest="/u01/app"*.dispatchers="(PROTOCOL=TCP) (SERVICE=ora11cloneXDB)"*.log_checkpoints_to_alert=TRUE*.memory_max_target=360m*.memory_target=360m*.open_cursors=300*.processes=150*.remote_login_passwordfile="EXCLUSIVE"*.undo_retention=300*.undo_tablespace="UNDOTBS1"*.use_large_pages="true" 保存为initora11clone.ora文件。 [oracle@SimpleLinux dbs]$ ls -l | grep init-rw-r--r-- 1 oracle oinstall    2851 May 15  2009 init.ora-rw-r--r-- 1 oracle oinstall    1127 Mar 10 11:49 initora11clone.ora-rw-r--r-- 1 oracle oinstall    1070 Mar 10 11:17 initora11g.ora 目录创建,依据前面定位的目录信息,手工创建文件系统目录。 [root@SimpleLinux ~]# mkdir -p /u01/app/admin/ora11cl/adump[root@SimpleLinux ~]# mkdir -p /u01/app/fast_recovery_area/ORA11CL/controlfile/[root@SimpleLinux ~]# mkdir -p /u01/app/oradata/ORA11CL/datafile[root@SimpleLinux ~]# mkdir -p /u01/app/oradata/ORA11CL/onlinelog/[root@SimpleLinux ~]# mkdir -p /u01/app/fast_recovery_area/ORA11CL/onlinelog/[root@SimpleLinux ~]# cd /u01[root@SimpleLinux u01]# chown -R oracle:oinstall /u01 更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2014-05/101154p2.htm
  • 1
  • 2
  • 下一页
监听器listener.ora中HOST参数配置使用Smitty进行AIX上Logical Volume创建拓展相关资讯      RMAN  Clone异名数据库 
  • RMAN故障一例(归档的备份,从不  (今 20:42)
  • RMAN的FORMATA格式说明  (03月10日)
  • Oracle 11g RMAN复制数据库的测试  (01月19日)
  • RMAN数据库迁移  (05月22日)
  • 使用RMAN复制恢复开发库环境  (02月17日)
  • Oracle 11g RMAN跨平台传输表空间  (01月19日)
本文评论 查看全部评论 (0)
表情: 姓名: 字数