Oracle 11g 使用duplicate from active database 创建物理ADG
1、概述:
之前使用冷备的方式搭建了一个物理ADG环境,但是由于冷备需要停库。因此在一些大型库上使用这种技术就不怎么实用了,而使用duplicatefrom active database则必免了这种情况,它只需要短暂的重启库让主库参数文件生效,就能完成ADG的搭建。
2、环境说明
Oracle:11.2.0.1.0
OS:redhat 5.7
Primary IP:192.168.2.111/24
Hostname:dba1.test.com
DB_NAME=ora11g
Standby IP:192.168.2.112/24
Hostname:dba2.test.com
DB_NAME=ora11g
3、操作步骤:
3.1. Primary 端操作:
3.1.1. 设置归档模式
SQL> archive log list;
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> archive log list;
3.1.2. Primary 设置force logging
SQL> alterdatabase force logging;
SQL> selectforce_logging from v$database;
FORCE_LOG
---------
YES
3.1.3. 配置Oracle Net(主、从上修改)
注意:在Primary库和Standby都需要修改,可以将primary的listener.ora\tnsname.ora拷贝到standby上在做相应修改,如IP地址。修改完后重启listener。
主库:
Listener.ora
[oracle@dba1admin]$ cat listener.ora
# listener.oraNetwork Configuration File:/u01/oracle/product/11.2.0/network/admin/listener.ora
# Generated byOracle configuration tools.
-- 配置静态注册
SID_LIST_LISTENER=
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ora11g)
(ORACLE_HOME =/u01/oracle/product/11.2.0)
(SID_NAME = ora11g)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.2.111)(PORT = 1521))
)
)
ADR_BASE_LISTENER= /u01/oracle
tnsname.ora
[oracle@dba1admin]$ cat tnsnames.ora
# tnsnames.oraNetwork Configuration File:/u01/oracle/product/11.2.0/network/admin/tnsnames.ora
# Generated byOracle configuration tools.
ORA11G_DBA1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.111)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora11g)
)
)
ORA11G_DBA2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.2.112)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora11g)
)
)
[oracle@dba2admin]$ tnsping ora11g_dba2
[oracle@dba2admin]$ tnsping ora11g_dba1
3.1.4. 添加data guard 参数
创建pfile
[oracle@dba1~]$ sqlplus / as sysdba
SYS@ora11g>create pfile from spfile;
[oracle@dba1~]$ cd $ORACLE_HOME/dbs
修改参数文件
[oracle@dba1dbs]$ vim initora11g.ora
ora11g.__db_cache_size=75497472
ora11g.__java_pool_size=4194304
ora11g.__large_pool_size=4194304
ora11g.__oracle_base='/u01/oracle'#ORACLE_BASEset from environment
ora11g.__db_cache_size=75497472
ora11g.__java_pool_size=4194304
ora11g.__large_pool_size=4194304
ora11g.__oracle_base='/u01/oracle'#ORACLE_BASEset from environment
ora11g.__pga_aggregate_target=146800640
ora11g.__sga_target=222298112
ora11g.__shared_io_pool_size=0
ora11g.__shared_pool_size=125829120
ora11g.__streams_pool_size=4194304
*.audit_file_dest='/u01/oracle/admin/ora11g/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/oradata/ora11g/control01.ctl','/u01/oracle/flash_recovery_area/ora11g/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_recovery_file_dest='/u01/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=4039114752
*.diagnostic_dest='/u01/oracle'
*.dispatchers='(PROTOCOL=TCP)(SERVICE=ora11gXDB)'
*.log_archive_format='%t_%s_%r.dbf'
*.memory_target=367001600
*.nls_language='SIMPLIFIEDCHINESE'
*.nls_territory='CHINA'
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=170
*.undo_tablespace='UNDOTBS1'
--添加如下参数,上面如有重复的参数删除
*.db_name='ora11g'
*.db_unique_name='primary'
*.log_archive_config='dg_config=(primary,standby)'
*.log_archive_dest_1='location=/orachivelogvalid_for=(all_logfiles,all_roles) db_unique_name=primary'
--注意:ora11g_db1/ora11g_db2为TNS文件中的network service name
*.log_archive_dest_2='service=ora11g_dba2reopen=120 lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=standby'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.standby_file_management='auto'
--注意:如果将这个文件拷贝到standby库,要改成fal_server=’ora11g_dba1’,fal_client=’ora11g_dba2’,这两个值写错了将导致不能传输日志。
*.fal_server='ora11g_dba2'
*.fal_client='ora11g_dba1'
注意:
在Oracle 11g的Data Guard中,standby_archive_dest参数已经被取消了。
Standby库归档文件的存放位置规则如下:
(1)当LOG_ARCHIVE_DEST_n设置了valid_for=(all_logfiles,all_roles),那么在不定义standby_archive_dest参数时,Oracle就会选择LOG_ARCHIVE_DEST_n参数作为归档目标。
(2)如果在第一步设置的同时,又独立设置LOG_ARCHIVE_DEST_n参数为valid_for=(standby_logfile,*) 属性,那么当compatible参数大于10.0的时候,会自动的选择任意一个LOG_ARCHIVE_DEST_n的值。
(3)如果LOG_ARCHIVE_DEST_n没有设置的话,默认位置是:
$ORACLE_HOME/dbs.
不过valid_for参数的默认值就是all_logfiles和all_roles.所以只要设置了本地的归档位置,远程的归档文件也会放到这个目录下面。
3.1.5. 用新pfile重启主库
SYS@ora11g>shut immediate;
Database closed.
Databasedismounted.
ORACLE instanceshut down.
SYS@ora11g>create spfile from pfile='?/dbs/initora11g.ora';
3.2. Standby 端设置:
3.2.1. 创建相关目录结构
--这里创建的目录和primary库相同,如不同要在参数文件里转换一下。
--如果没有创建以下目录,在使用sqlplus / as sysdba时会报错:
[oracle@dba2bin]$ sqlplus / as sysdba
SQL*Plus:Release 11.2.0.1.0 Production on Fri Feb 22 13:12:17 2013
Copyright(c) 1982, 2009, Oracle. All rightsreserved.
ERROR:
ORA-09925:??????????
LinuxError: 2: No such file or directory
Additionalinformation: 9925
ORA-01075:??????
[oracle@dba2admin]$ pwd
/u01/oracle/admin
[oracle@dba2admin]$ mkdir ora11g/adump ora11g/dpdump ora11g/pfile -p
[root@dba2 /]$mkdir /oradata/ora11g -p
[root@dba2 /]$chown oracle.oinstall /oradata -R
[oracle@dba2flash_recovery_area]$ pwd
/u01/oracle/flash_recovery_area
[oracle@dba2flash_recovery_area]$ mkdir ora11g
3.2.1. 创建standby的口令文件
[oracle@dba2 /]$orapwd file=?/dbs/orapwora11g password=oracle entries=10 force=y ignorecase=Y
3.2.3. 创建standby的初始化参数:
[oracle@dba1 dbs]$scp initora11g.ora 192.168.2.112:$ORACLE_HOME/dbs/
[oracle@dba2 dbs]$vim initora11g.ora
ora11g.__db_cache_size=75497472
ora11g.__java_pool_size=4194304
ora11g.__large_pool_size=4194304
ora11g.__oracle_base='/u01/oracle'#ORACLE_BASEset from environment
ora11g.__pga_aggregate_target=146800640
ora11g.__streams_pool_size=4194304
*.audit_file_dest='/u01/oracle/admin/ora11g/adump'
*.db_recovery_file_dest='/u01/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=4039114752
*.diagnostic_dest='/u01/oracle'
*.dispatchers='(PROTOCOL=TCP)(SERVICE=ora11gXDB)'
*.log_archive_format='%t_%s_%r.dbf'
*.nls_language='SIMPLIFIEDCHINESE'
*.remote_login_passwordfile='EXCLUSIVE'
--添加如下参数,ora11g_dba1为tnsname.ora中的网络名,上面如有重复的参数删除
*.log_archive_config='dg_config=(primary,standby)'
*.log_archive_dest_2='service=ora11g_dba1reopen=120 lgwr async valid_for=(online_logfiles,primary_role)
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.standby_file_management='auto'
*.log_file_name_convert=’primary路径’,’standby路径’
*.db_file_name_convert=’primary路径’,’standby路径’
3.2.4. 用pfile 将standby 启动到nomount状态:
[oracle@dba2dbs]$ sqlplus / as sysdba
idle> startupnomount pfile='?/dbs/initora11g.ora';
3.2.5. 开始duplicate
[oracle@dba2dbs]$ rman target sys/oracle@ora11g_dba1 auxiliarysys/oracle@ora11g_dba2
Recovery Manager:Release 11.2.0.1.0 - Production on Fri Feb 22 13:38:00 2013
Copyright (c)1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected totarget database: ORA11G (DBID=4173278619)
connected toauxiliary database: ORA11G (not mounted)
RMAN> duplicate target database for standby from active databasenofilenamecheck;
StartingDuplicate Db at 22-FEB-13
using targetdatabase control file instead of recovery catalog
allocatedchannel: ORA_AUX_DISK_1
channelORA_AUX_DISK_1: SID=20 device type=DISK
targetfile '/u01/oracle/product/11.2.0/dbs/orapwora11g' auxiliary format
'/u01/oracle/product/11.2.0/dbs/orapwora11g' ;
channel ORA_DISK_1:SID=41 device type=DISK
backup as copy current controlfile forstandby auxiliary format '/oradata/ora11g/control01.ctl';
restore clone controlfile to '/u01/oracle/flash_recovery_area/ora11g/control02.ctl'from
'/oradata/ora11g/control01.ctl';
channelORA_DISK_1: starting datafile copy
channelORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
channelORA_AUX_DISK_1: copied control file copy
--将备库启动到mount standby standby database
sql clone 'alter database mount standbydatabase';
sql statement:alter database mount standby database
"/oradata/ora11g/system01.dbf";
"/oradata/ora11g/sysaux01.dbf";
"/oradata/ora11g/undotbs01.dbf";
"/oradata/ora11g/users01.dbf";
"/oradata/ora11g/system01.dbf" datafile
"/oradata/ora11g/sysaux01.dbf" datafile
"/oradata/ora11g/undotbs01.dbf" datafile
"/oradata/ora11g/users01.dbf" ;
sql 'alter system archive log current';
renamed tempfile1 to /oradata/ora11g/temp01.dbf in control file
--开始copy datafile,如果数据文件比较大,这里会比较慢
channelORA_DISK_1: starting datafile copy
input datafilefile number=00001 name=/oradata/ora11g/system01.dbf
output filename=/oradata/ora11g/system01.dbf tag=TAG20130222T134011
channelORA_DISK_1: datafile copy complete, elapsed time: 00:02:10
channelORA_DISK_1: starting datafile copy
input datafilefile number=00002 name=/oradata/ora11g/sysaux01.dbf
output filename=/oradata/ora11g/sysaux01.dbf tag=TAG20130222T134011
channelORA_DISK_1: datafile copy complete, elapsed time: 00:01:38
channelORA_DISK_1: starting datafile copy
input datafilefile number=00003 name=/oradata/ora11g/undotbs01.dbf
output filename=/oradata/ora11g/undotbs01.dbf tag=TAG20130222T134011
channel ORA_DISK_1:datafile copy complete, elapsed time: 00:00:27
channelORA_DISK_1: starting datafile copy
input datafilefile number=00004 name=/oradata/ora11g/users01.dbf
output filename=/oradata/ora11g/users01.dbf tag=TAG20130222T134011
channelORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
sql statement:alter system archive log current
datafile 1switched to datafile copy
input datafilecopy RECID=1 STAMP=808062273 file name=/oradata/ora11g/system01.dbf
datafile 2switched to datafile copy
input datafilecopy RECID=2 STAMP=808062273 file name=/oradata/ora11g/sysaux01.dbf
datafile 3switched to datafile copy
input datafilecopy RECID=3 STAMP=808062273 file name=/oradata/ora11g/undotbs01.dbf
datafile 4switched to datafile copy
input datafilecopy RECID=4 STAMP=808062273 file name=/oradata/ora11g/users01.dbf
FinishedDuplicate Db at 22-FEB-13
Duplicate不会将primary上的temp表空间复制到standby库上,但是在将standby库启动到open时会自动创建,standby库上的redo log oracle也将会重新创建。
SYS@ora11g>host ls -l /oradata/ora11g/temp01.dbf
ls:/oradata/ora11g/temp01.dbf: 没有那个文件或目录
SYS@ora11g>select * from v$logfile;
GROUP#STATUS TYPE MEMBER IS_REC
-------------------- -------------- --------------------------------------------- ------
3 ONLINE /u01/oracle/flash_recovery_area/STANDBY/onlin YES
2 ONLINE /u01/oracle/flash_recovery_area/STANDBY/onlin YES
1 ONLINE /u01/oracle/flash_recovery_area/STANDBY/onlin YES
3.2.6 注意事项
如果使用的是非catalog,在rman 连接时,加上nocatalog关键字,如:
[oracle@dba2 dbs]$ rman targetsys/oracle@ora11g_dba1 auxiliary sys/oracle@ora11g_dba2 nocatalog
connectedto target database: DG(DBID=1679060044)
usingtarget databasecontrol file instead of recovery catalog
connectedto auxiliary database: DG (notmounted)
RMAN-05501:aborting duplication of targetdatabase
3.3. 建立完adg后续 工作
3.3.1. 创建备库spfile,并用spfile启库:
SYS@ora11g> create spfile from pfile;
SYS@ora11g> alter database mount standby database;
注: 除了adg 功能需要的相关参数,其它参数和主库参数文件最好一致。
3.3.2. 启用MRP进程
复制结束后的Standby 只启动到mount standby 的状态。并没有启动MRP的应用归档程序。所以这个时候查询主备库,归档是不同步的。需要手动的启动MRP进程。
SQL> alterdatabase recover managed standby database disconnect from session;
3.3.4. 备库Standby redo log 问题:
--没有standby redo log ,启用时实应用日志会报以下错
alter databaserecover managed standby database using current logfile disconnect from session
ORA-38500: USINGCURRENT LOGFILE option not available without standby redo logs
3.3.5 如何计算standby redo log数量
Standby redo log日志文件组的个数依照下面的原则进行计算
Standby redo log组数公式>=(每个instance日志组个数+1)*instance个数
Standby redo log组数公式>=(3+1)*2 = 8
3.3.6. 在备库添加standby redo log:
SYS@ora11g>alter database add standby logfile
2 group 4 ('/oradata/ora11g/dglog04.log') size 50m,
3 group 5 ('/oradata/ora11g/dglog05.log') size 50m,
4 group 6 ('/oradata/ora11g/dglog06.log') size 50m,
5 group 7 ('/oradata/ora11g/dglog07.log') size 50m,
6 group 8 ('/oradata/ora11g/dglog08.log') size 50m,
7 group 9 ('/oradata/ora11g/dglog09.log') size 50m,
8 group 10 ('/oradata/ora11g/dglog10.log') size 50m,
9 group 11 ('/oradata/ora11g/dglog11.log') size 50m;
alter databaseadd standby logfile
ORA-01156:recovery or flashback in progress may need access to files*
--在备库添加standby redo log需要先停MRP
alterdatabase add standby logfile
group 4('/oradata/ora11g/dglog04.log') size 50m,
group 5('/oradata/ora11g/dglog05.log') size 50m,
group 6('/oradata/ora11g/dglog06.log') size 50m,
group 7('/oradata/ora11g/dglog07.log') size 50m,
group 8('/oradata/ora11g/dglog08.log') size 50m,
group 9('/oradata/ora11g/dglog09.log') size 50m,
group 10('/oradata/ora11g/dglog10.log') size 50m,
group 11('/oradata/ora11g/dglog11.log') size 50m;
3.3.7. 在主库也添加一下standby redo log
alterdatabase add standby logfile
group 4('/oradata/ora11g/dglog04.log') size 50m,
group 5('/oradata/ora11g/dglog05.log') size 50m,
group 6('/oradata/ora11g/dglog06.log') size 50m,
group 7('/oradata/ora11g/dglog07.log') size 50m,
group 8('/oradata/ora11g/dglog08.log') size 50m,
group 9('/oradata/ora11g/dglog09.log') size 50m,
group 10('/oradata/ora11g/dglog10.log') size 50m,
group 11('/oradata/ora11g/dglog11.log') size 50m;
3.3.8. 启用real-time apply,从而实现real-timequery:
SQL> alterdatabase recover managed standby database cancel;
SYS@ora11g> alterdatabase open;
3.3.9. 验证real-time apply 和real-timequery:
SQL> createtable fengg(id number,name varchar2(30));
SQL> insertinto fengg values(1,'fengg');
SQL> selectopen_mode from v$database;
SYS@ora11g> select * from fengg;
------------------------------------------------------------
SYS@ora11g> select sequence#,applied from v$archived_log;
14YES --备库上的standbyredo log是否被应用
4、小结:
通过几天反复的实验,终于完成了整个实验,也遇到一些问题在这里总结一下:
1),Vmware的快照功能为了省了不少时间,不然搭建实验环境很浪费时间。
2),网络连接文件listener.ora/tnsname.ora非常的敏感,因此最好少改动这个文件,并做好备份,在需要时直接复制备份文件。
3),ADG的参数文件中的参数一定要严格按照官方文档操作并了解相关参数的用途。
4),备库上的fal_server、fal_client的参数千万不要写错,否则备库不能接收日志。
参考来自:http://blog.csdn.net/tianlesoftware/article/details/6232292
=======================================================================
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任! 谢谢合作!
QQ: 164798858@qq.com
Sina: weibo.com/kaijunfeng
Yahoo: fffygapl@yahoo.com.cn
Oracle 11g 使用duplicate from active database 创建物理ADG相关推荐
- Oracle 11g Data Guard 使用duplicate from active database 创建 standby database
用这种方式来搭建DG ,主库的停机时间很少,只需要重启一下,使参数生效.也可以用这种方法进行DB迁移.DG搭建好,然后把备库激活就可以了. 这样整个迁移中宕机时间也比较短. Oracle 11g的py ...
- oracle copy database,oracle 11g duplicate from active database 复制数据库(二)
下面介绍将数据库复制到远程主机相同目录结构的操作步骤 1.创建辅助实例的密码文件(这里辅助实例名为dup) ,在目的主机上为辅助实例创建密码文件可以有以下选项: .手动创建密码文件,对于duplica ...
- mysql2ora datacopy,Oracle 11gR2 使用 RMAN duplicate from active database 复制数据库
我们看一个完整的复制示例: Target DB: IP: 192.168.2.42 SID:orcl Auxiliary: IP:192.168.2.43 SID:orcl 我这里复制的目录相同. 如 ...
- Duplicate复制数据库并创建物理StandBy(spfile+不同实例名+不同路径)
过程和Duplicate复制数据库并创建物理StandBy类似,只是不需要重启数据库. 目的:创建standby,不重启源数据库 1设定环境如下: Primary数据库 IP 172.17.22.16 ...
- oracle 11g duplicate active database 建立物理DG
环境: primary: OS: Red Hat Enterprise 5.8 IP: 10.131.119.118 DBVersion: 11.2.0.3.0 db_name: orcl db_un ...
- 通过RMAN克隆11g数据库(基于active database)
11g的RMAN duplicate 可以通过Active databaseduplicate和Backup-based duplicate两种方法实现.这里的测试使用的是Active databas ...
- oracle utl_smtp,Oracle 11g 环境下,利用utl_smtp创建发送邮件的存储过程
网上太多发邮件储存过程,我就不转发了,弄个简单的作为示例: create or replace procedure Send_mail(mail_body varchar2) is smtp_conn ...
- oracle 11g安装时设密码 database control,安装oracle 11g 保护Database Control时出错,Database Control已在非安全模式下启动...
错误解决: 打开cmd C:\Users\lin>emctl status dbconsole Environment variable ORACLE_UNQNAME not defined. ...
- Oracle 11gR2 使用 RMAN duplicate from active database 复制数据库
在Oracle10g下,我们可以使用RMANduplicate命令创建一个具有不同DBID的复制库.到了Oracle11gR2,RMAN的duplicate有2种方法实现: 1.Activedatab ...
最新文章
- 激光+视觉+IMU+GPS如何做融合?
- 关于XAMPP环境配置
- 11 Python - dict
- 前端协商缓存强缓存如何使用_前端强缓存和协商缓存
- WTM框架使用技巧之:CI/DI(持续集成/持续部署)
- python canny检测_【数字图像分析】基于Python实现 Canny Edge Detection(Canny 边缘检测算法)...
- 吞吐性能翻倍!搭载了第三代Tensor Core的A100是怎么做到的?
- 7.jenkins 发布邮件
- Atitit object 和class的理解 目录 1.1. 发现很多Object的方法都是相同的,他们被重复地放在一个个对象当中,太浪费了。	1 1.2. 那我们怎么把这些Object给创建起来
- 一起学习荷花定律/金蝉定律和竹子定律
- 计算机最最最底层的工作原理是怎么运行的
- 《缠中说禅108课》28:下一目标:摧毁基金
- 央企招聘:中国航空油料集团2023公开招聘
- NAACL最佳方法论文 | 课本上的A*搜索算法可以提升文本生成效果!
- 微信隐藏功能系列:微信亲属卡怎么用?只需要3步
- HC05蓝牙模块与手机APP连接
- 安装postgis,使用postgis导入shapefile的步骤总结
- Linux核心命令汇总(思维导图+实例讲解)
- 计算机音乐锦鲤抄,锦鲤抄 MIDI File Download :: MidiShow
- 软件开发模型/原型法/瀑布模型/螺旋模型
热门文章
- Windows定时脚本
- 学习Linux命令(31)
- MAC怎么获取文件路径 MAC获取文件路径的四种方法
- 题解 P3353 【在你窗外闪耀的星星】
- 浅入爱上区块链【三】积分和数字货币
- typescript error TS2322: Type ‘Timeout‘ is not assignable to type ‘number‘.
- GMT UTC CST ISO 夏令时 时间戳
- 数据采集无线网服务器软件,振弦式无线数据采集器 无线自动化采集系统
- leetcode 1399 数位和简单题目
- IDEA+Java+Servlet+JSP+Mysql实现Web停车场管理系统【建议收藏】