Oracle 11g Data Guard 使用duplicate from active database
用这种方式来搭建DataGuard ,主库的停机时间很少,只需要重启一下,使参数生效。也可以用这种方法进行数据迁移。
本文出自:http://www.solgle.com/news/216.html
Oracle 11G DataGuard 部署文档
A:运行环境
操作系统:Oracle Enterprise Linux 6.5 (x64)
Oracle Version:11.2.0.4(x64)
B:搭建步骤
一:配置主库
1:设置主库归档模式
SQL>Alter database archivelog;
查看数据库归档情况
SQL> archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 538
下一个存档日志序列 540
当前日志序列 540
SQL>
2:设置主库强制归档force logging;
操作如下
SQL> alter database force logging;
数据库已更改。
查看数据库归档情况
SQL> select log_mode,force_logging from v$database;
LOG_MODE FORCE_
------------------------ ------
ARCHIVELOG YES
二:配置Oracle NET
1:配置listener.ora (注:最好是静态注册)
[oracle@localhost admin]$vi listener.ora
# listener.ora Network Configuration File: /u01/app/product/11.2.0/dbname_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=solgle)
(ORACLE_HOME=/u01/app/product/11.2.0/dbname_1)
(SID_NAME=solgle)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.16.3.5)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app
2:配置tnsnames.ora
[oracle@localhost admin]$ vi tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/product/11.2.0/dbname_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
#主库
OS_solgle =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.16.3.5)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = solgle)
)
)
#备库
SD_solgle =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.16.3.6)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = solgle)
)
)
三:配置Oracle参数
1:创建pfile
SQL> create pfile='hao123.ora' from spfile;
文件已创建。
SQL>
2:配置pfile
[oracle@localhost admin]$ cd /u01/app/product/11.2.0/dbname_1/dbs/
[oracle@localhost dbs]$ vi hao123.ora
solgle.__db_cache_size=243269632
solgle.__java_pool_size=4194304
solgle.__large_pool_size=8388608
solgle.__oracle_base='/u01/app'#ORACLE_BASE set from environment
solgle.__pga_aggregate_target=360710144
solgle.__sga_target=671088640
solgle.__shared_io_pool_size=0
solgle.__shared_pool_size=394264576
solgle.__streams_pool_size=8388608
*.audit_file_dest='/u01/app/admin/solgle/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u01/data/solgle/control01.ctl','/u01/app/fast_recovery_area/solgle/control02.ctl'
*.cursor_sharing='FORCE'
*.db_block_size=8192
*.db_domain=''
*.db_name='solgle'
*.db_recovery_file_dest='/u01/data/bak_data'
*.db_recovery_file_dest_size=16106127360
*.diagnostic_dest='/u01/app'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=solgleXDB)'
*.memory_target=1028653056
*.open_cursors=300
*.optimizer_mode='FIRST_ROWS_1000'
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
*.db_unique_name='os_solgle'
*.log_archive_config='dg_config=(os_solgle,sd_solgle)'
*.log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST valid_for=(all_logfiles,all_roles) db_unique_name=os_solgle'
*.log_archive_dest_2='service=sd_solgle reopen=120 lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=sd_solgle'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.standby_file_managment='auto'
*.fal_server='sd_solgle'
*.fal_client='os_solgle'
3:关闭数据库,创建spfile 用于启动数据库
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> create spfile from pfile='hao123.ora';
文件已创建。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 1027182592 bytes
Fixed Size 2259680 bytes
Variable Size 645924128 bytes
Database Buffers 373293056 bytes
Redo Buffers 5705728 bytes
数据库装载完毕。
数据库已经打开。
四:备库配置
1:配置listener.ora为静态
[oracle@sd1 admin]$ vi listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =192.16.3.6)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=solgle)
(ORACLE_HOME=/u01/app/product/11.2.0/dbname_1)
(SID_NAME=solgle)
)
)
2:配置tnsnames.ora,让其跟主库互连互通
[oracle@sd1 admin]$ vi tnsnames.ora
SD_solgle =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.16.3.6)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = solgle)
)
)
OS_solgle =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.16.3.5)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = solgle)
)
)
五:配置系统参数
1:创建pfile,用于生成spfile
SQL> create pfile='hao123.ora' from spfile;
文件已创建。
SQL>
2:修改pfile参数
[oracle@sd1 dbs]$ cd /u01/app/product/11.2.0/dbname_1/dbs/
[oracle@sd1 dbs]$ vi hao123.ora
solgle.__db_cache_size=419430400
solgle.__java_pool_size=16777216
solgle.__large_pool_size=33554432
solgle.__oracle_base='/u01/app'#ORACLE_BASE set from environment
solgle.__pga_aggregate_target=503316480
solgle.__sga_target=754974720
solgle.__shared_io_pool_size=0
solgle.__shared_pool_size=268435456
solgle.__streams_pool_size=0
*.audit_file_dest='/u01/app/admin/solgle/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u01/data/solgle/control01.ctl','/u01/app/fast_recovery_area/solgle/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='solgle'
*.db_recovery_file_dest='/u01/bak_data'
*.db_recovery_file_dest_size=16106127360
*.diagnostic_dest='/u01/app'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=solgleXDB)'
*.memory_target=1244659712
*.open_cursors=300
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=335
*.undo_tablespace='UNDOTBS1'
*.db_unique_name='sd_solgle'
*.log_archive_config='dg_config=(os_solgle,sd_solgle)'
*.log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST valid_for=(all_logfiles,all_roles) db_unique_name=sd_solgle'
*.log_archive_dest_2='service=os_solgle reopen=120 lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=os_solgle'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.standby_file_management='auto'
*.fal_server='os_solgle'
*.fal_client='sd_solgle'
注:如果两库的路径发生变化,则用下面的参数定义方式切换,如果路径相同,则duplicate时需要加参数nofilenamecheck
*.log_file_name_convert=’/u01/app/old_path_data’,’/u01/app/new_path_data’
*.db_file_name_convert=’/u01/app/old_path_log’,’/u01/app/new_path_log’
3:关闭数据库,生成spfile文件用于启动到nomount
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> create spfile from pfile='hao123.ora';
文件已创建。
SQL> startup nomount;
ORACLE 例程已经启动。
Total System Global Area 1252663296 bytes
Fixed Size 2252824 bytes
Variable Size 838864872 bytes
Database Buffers 402653184 bytes
Redo Buffers 8892416 bytes
4:配置好hosts,加入主库及备库的名称(两台服务器,均需要配置)
[oracle@ps1 dbs]$ vi /etc/hosts
127.0.0.1 ps1 localhost localhost.localdomain localhost4 localhost4.localdomain4
192.16.3.5 ps1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.16.3.6 sd1
5:复制密码文件,让两库密码一致,否则会出现错误:ora-16191
[oracle@sd1 dbs]$ scp ps1:/u01/app/product/11.2.0/dbname_1/dbs/orapwsolgle /u01/app/product/11.2.0/dbname_1/dbs/
The authenticity of host 'ps1 (192.16.3.5)' can't be established.
RSA key fingerprint is a0:69:e1:a2:9c:fe:71:a3:a6:2a:45:f4:f6:74:a7:69.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ps1,192.16.3.5' (RSA) to the list of known hosts.
oracle@ps1's password:
orapwsolgle 100% 1536 1.5KB/s 00:00
六:使用Rman duplicate复制数据库
1:执行rman
rman target=sys/********@os_solgle nocatalog auxiliary=sys/********@sd_solgle
恢复管理器: Release 11.2.0.1.0 - Production on 星期四 9月 4 17:05:36 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到目标数据库: solgle (DBID=1370340464)
使用目标数据库控制文件替代恢复目录
已连接到辅助数据库: solgle (未装载)
RMAN> duplicate target database for standby from active database nofilenamecheck;
(注:保持两边数据文件目录路径一致,则加上nofilenamecheck)
启动 Duplicate Db 于 04-9月 -14
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: SID=19 设备类型=DISK
内存脚本的内容:
{
backup as copy reuse
targetfile '/u01/app/product/11.2.0/dbname_1/dbs/orapwsolgle' auxiliary form
……
……
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
启动 backup 于 04-9月 -14
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00011 名称=/u01/data/user_data/p7_data001.dbf
输出文件名=/u01/data/user_data/p7_data001.dbf 标记=TAG20140904T172632
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:01:35
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00025 名称=/u01/data/user_data/p21_data001.dbf
输出文件名=/u01/data/user_data/p21_data001.dbf 标记=TAG20140904T172632
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:01:36
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00010 名称=/u01/data/user_data/p6_data001.dbf
输出文件名=/u01/data/user_data/p6_data001.dbf 标记=TAG20140904T172632
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:01:36
……
……
数据文件 28 已转换成数据文件副本
输入数据文件副本 RECID=29 STAMP=857410812 文件名=/u01/data/user_data/EML_RECEIVE
_P1_01.dbf
数据文件 29 已转换成数据文件副本
输入数据文件副本 RECID=30 STAMP=857410812 文件名=/u01/data/user_data/EML_RECEIVE
_P2_01.dbf
数据文件 30 已转换成数据文件副本
输入数据文件副本 RECID=31 STAMP=857410812 文件名=/u01/data/user_data/EML_RECEIVE
_P3_01.dbf
数据文件 31 已转换成数据文件副本
输入数据文件副本 RECID=32 STAMP=857410812 文件名=/u01/data/user_data/EML_RECEIVE
_P4_01.dbf
数据文件 32 已转换成数据文件副本
输入数据文件副本 RECID=33 STAMP=857410812 文件名=/u01/data/user_data/EML_RECEIVE
_P5_01.dbf
数据文件 33 已转换成数据文件副本
输入数据文件副本 RECID=34 STAMP=857410812 文件名=/u01/data/user_data/EML_RECEIVE
_P6_01.dbf
数据文件 34 已转换成数据文件副本
输入数据文件副本 RECID=35 STAMP=857410812 文件名=/u01/data/user_data/user_data00
2.dbf
完成 Duplicate Db 于 04-9月 -14
RMAN>
七:后续配置
1:sqlplus连接上备库,查看数据库状态
SQL> select open_mode,log_mode from v$database;
OPEN_MODE LOG_MODE
---------------------------------------- ------------------------
MOUNTED ARCHIVELOG
2:启动同步进程
SQL> alter database recover managed standby database disconnect from session;
数据库已更改。
(该步就已经完成了主要配置,但是备库不提供数据查询访问)
八:重新配置real-time apply,让备份库可读
1:增加standby log,得先取消当前进程
SQL> alter database recover managed standby database cancel;
数据库已更改。
2:增加standby log (注:相应目录请先创建)
SQL> alter database add standby logfile '/u01/data/standby_redo/stdredo01.log' s
ize 50m;
数据库已更改。
SQL> alter database add standby logfile '/u01/data/standby_redo/stdredo02.log' s
ize 50m;
数据库已更改。
SQL> alter database add standby logfile '/u01/data/standby_redo/stdredo03.log' s
ize 50m;
数据库已更改。
SQL> alter database add standby logfile '/u01/data/standby_redo/stdredo04.log' s
ize 50m;
数据库已更改。
(注:该步骤,主库也添加,主库不需要取消什么,直接添加就可以了)
3:打开备库
SQL> alter database open;
数据库已更改。
SQL> alter database recover managed standby database using current logfile disco
nnect;
数据库已更改。
4:查询验证
SQL> select open_mode,log_mode from v$database;
OPEN_MODE LOG_MODE
---------------------------------------- ------------------------
READ ONLY WITH APPLY ARCHIVELOG
SQL>
5:查看日志,验证数据同步
SQL> select * from v$dataguard_status order by timestamp desc;
……
补充手动故障转移测试