ORACLE12C_DG配置 主库:orcl 备库:orclbk
1、/etc/hosts配置
172.16.140.3 node1 172.16.140.4 node2
2、主库force logging
SQL> select name,open_mode from v$pdbs; SQL> alter database force logging; SQL> select force_logging from v$database;
FORCE_LOGGING
YES
3、主库添加standby redo logfile(连接到CDB$ROOT中执行) SQL> show con_name;
CON_NAME
CDB$ROOT SQL> select group#, members, bytes from v$log;
GROUP# MEMBERS BYTES
1 1 209715200
2 1 209715200
3 1 209715200
SQL> select member from v$logfile;
MEMBER
/u01/app/oracle/oradata/orcl/redo01.log /u01/app/oracle/oradata/orcl/redo02.log /u01/app/oracle/oradata/orcl/redo03.log
添加4(3+1)个standby logfile SQL> alter database add standby logfile '/u01/app/oracle/oradata/orcl/standby_redo01.log' size 200m; SQL> alter database add standby logfile '/u01/app/oracle/oradata/orcl/standby_redo02.log' size 200m; SQL> alter database add standby logfile '/u01/app/oracle/oradata/orcl/standby_redo03.log' size 200m; SQL> alter database add standby logfile '/u01/app/oracle/oradata/orcl/standby_redo04.log' size 200m;
4、配置tnsnames.ora 主库: LISTENER_ORCL = (ADDRESS = (PROTOCOL = TCP)(HOST = node1)(PORT = 1521))
orcl = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = node1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )
orclbk = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = node2)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orclbk) ) )
orclpdb = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = node1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orclpdb) ) )
备库: LISTENER_ORCL = (ADDRESS = (PROTOCOL = TCP)(HOST = node2)(PORT = 1521))
orcl = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = node1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )
orclbk = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = node2)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orclbk) ) )
orclpdb = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = node2)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orclpdb) ) )
5、修改主备库的参数文件: 主库操作: SQL> create pfile from spfile;
修改后的pfile orcl.__data_transfer_cache_size=0 orcl.__db_cache_size=1459617792 orcl.__inmemory_ext_roarea=0 orcl.__inmemory_ext_rwarea=0 orcl.__java_pool_size=16777216 orcl.__large_pool_size=33554432 orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment orcl.__pga_aggregate_target=687865856 orcl.__sga_target=2046820352 orcl.__shared_io_pool_size=100663296 orcl.__shared_pool_size=419430400 orcl.streams_pool_size=0 *.undo_autotune=FALSE *.archive_lag_target=0 *.audit_file_dest='/u01/app/oracle/admin/orcl/adump' *.audit_trail='none' *.compatible='12.2.0' *.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl' *.data_guard_sync_latency=0 *.db_block_size=8192 *.db_file_name_convert='/u01/app/oracle/oradata/orclbk','/u01/app/oracle/oradata/orcl' *.db_name='orcl' *.db_unique_name='orcl' *.dg_broker_start=TRUE *.diagnostic_dest='/u01/app/oracle' *.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)' *.enable_pluggable_database=true *.fal_client='orcl' *.fal_server='' *.local_listener='LISTENER_ORCL' *.log_archive_config='dg_config=(orcl,orclbk)' *.log_archive_dest_1='location=/u01/arch valid_for=(all_logfiles,all_roles) db_unique_name=orcl' *.log_archive_dest_2='service="orclbk"','ASYNC NOAFFIRM delay=0 optional compression=disable max_failure=0 max_connections=1 reopen=300 db_unique_name="orclbk" net_timeout=30','valid_for=(online_logfile,all_roles)' *.log_archive_dest_state_1='ENABLE' *.log_archive_dest_state_2='ENABLE' *.log_archive_format='orcl%t%s%r.arc' *.log_archive_max_processes=4 *.log_archive_min_succeed_dest=1 orcl.log_archive_trace=0 *.log_file_name_convert='/u01/app/oracle/oradata/orclbk','/u01/app/oracle/oradata/orcl' *.nls_language='AMERICAN' *.nls_territory='AMERICA' *.open_cursors=1500 *.pga_aggregate_target=650m *.processes=300 *.remote_login_passwordfile='EXCLUSIVE' *.resource_limit=TRUE *.session_cached_cursors=1500 *.sga_target=1948m *.standby_file_management='AUTO' *.undo_retention=7200 *.undo_tablespace='UNDOTBS1'
改动的部分: *.undo_autotune=FALSE *.db_file_name_convert='/u01/app/oracle/oradata/orclbk','/u01/app/oracle/oradata/orcl' *.db_name='orcl' *.db_unique_name='orcl' *.dg_broker_start=TRUE *.fal_client='orcl' *.fal_server='' *.log_archive_config='dg_config=(orcl,orclbk)' *.log_archive_dest_1='location=/u01/arch valid_for=(all_logfiles,all_roles) db_unique_name=orcl' *.log_archive_dest_2='service="orclbk"','ASYNC NOAFFIRM delay=0 optional compression=disable max_failure=0 max_connections=1 reopen=300 db_unique_name="orclbk" net_timeout=30','valid_for=(online_logfile,all_roles)' *.log_archive_dest_state_1='ENABLE' *.log_archive_dest_state_2='ENABLE' *.log_archive_format='orcl%t_%s_%r.arc' *.log_file_name_convert='/u01/app/oracle/oradata/orclbk','/u01/app/oracle/oradata/orcl' *.standby_file_management='AUTO'
备库的参数文件改动后如下:
orclbk.__data_transfer_cache_size=0 orclbk.__db_cache_size=1560281088 orclbk.__inmemory_ext_roarea=0 orclbk.__inmemory_ext_rwarea=0 orclbk.__java_pool_size=16777216 orclbk.__large_pool_size=33554432 orclbk.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment orclbk.__pga_aggregate_target=687865856 orclbk.__sga_target=2046820352 orclbk._shared_io_pool_size=0 orclbk.shared_pool_size=419430400 orclbk.streams_pool_size=0 *.undo_autotune=FALSE *.archive_lag_target=0 *.audit_file_dest='/u01/app/oracle/admin/orclbk/adump' *.audit_trail='none' *.compatible='12.2.0' *.control_files='/u01/app/oracle/oradata/orclbk/control01.ctl','/u01/app/oracle/oradata/orclbk/control02.ctl'#Restore Controlfile *.data_guard_sync_latency=0 *.db_block_size=8192 *.db_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/orclbk' *.db_name='orcl' *.db_unique_name='orclbk' *.dg_broker_start=TRUE *.diagnostic_dest='/u01/app/oracle' *.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)' *.enable_pluggable_database=true *.fal_client='orclbk' *.fal_server='ORCL' *.log_archive_config='dg_config=(orclbk,orcl)' *.log_archive_dest_1='location=/u01/arch valid_for=(all_logfiles,all_roles) db_unique_name=orclbk' *.log_archive_dest_2='' *.log_archive_dest_state_1='ENABLE' *.log_archive_dest_state_2='ENABLE' *.log_archive_format='orclbk%t%s%r.arc' orclbk.log_archive_format='orclbk%t%s%r.arc' *.log_archive_max_processes=4 *.log_archive_min_succeed_dest=1 orcl.log_archive_trace=0 orclbk.log_archive_trace=0 *.log_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/orclbk' *.nls_language='AMERICAN' *.nls_territory='AMERICA' *.open_cursors=1500 *.pga_aggregate_target=650m *.processes=300 *.remote_login_passwordfile='EXCLUSIVE' *.resource_limit=TRUE *.session_cached_cursors=1500 *.sga_target=1948m *.standby_file_management='AUTO' *.undo_retention=7200 *.undo_tablespace='UNDOTBS1'
主要的改动部分如下: *._undo_autotune=FALSE *.audit_trail='none' *.db_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/orclbk' *.db_name='orcl' *.db_unique_name='orclbk' *.enable_pluggable_database=true *.fal_client='orclbk' *.fal_server='ORCL' *.log_archive_config='dg_config=(orclbk,orcl)' *.log_archive_dest_1='location=/u01/arch valid_for=(all_logfiles,all_roles) db_unique_name=orclbk' *.log_archive_dest_2='' *.log_archive_dest_state_1='ENABLE' *.log_archive_dest_state_2='ENABLE' *.log_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/orclbk'
6、备份源端数据库,将备份文件传到目标端 RMAN> run{ allocate channel c1 type disk; allocate channel c2 type disk; backup filesperset 2 database format '/home/oracle/db_backup/full_%d_%T_%s_%p'; sql 'alter system archive log current'; sql 'alter system archive log current'; sql 'alter system archive log current'; backup archivelog all format '/home/oracle/db_backup/arch_%d_%T_%s_%p' delete input; backup current controlfile format '/home/oracle/db_backup/ctl_%d_%T_%s_%p'; }
cd /home/oracle/db_backup/ scp * node2:/home/oracle/db_backup
7、源端生成备库的控制文件,并传到目标端 SQL> alter database create standby controlfile as '/home/oracle/db_backup/ctl'; cd /home/oracle/db_backup scp ctl node2:/home/oracle/db_backup
8、备库恢复 SQL> startup nomount; RMAN> restore controlfile from '/home/oracle/db_backup/ctl'; SQL> alter database mount standby database; RMAN> restore database; SQL> alter database recover managed standby database using current logfile disconnect from session;
ADG 1、查看备库openmode SQL> select open_mode from v$database; --MOUNTED 2、取消备库自动恢复 SQL> alter database recover managed standby database cancel; SQL> alter database open; SQL> select open_mode from v$database; --此时为READ ONLY 3、read only下备库恢复 SQL> alter database recover managed standby database using current logfile disconnect; SQL> select open_mode from v$database; --此时为READ ONLY WITH APPLY
DG_BROKER
--在主备库同时执行
--启动dg_broker alter system set dg_broker_start=true sid='*';
--配置监听 主库: LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = node1)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) )
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/12.2.0/db_1)
(SID_NAME = orcl)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl_DGMGRL)
(ORACLE_HOME = /u01/app/oracle/product/12.2.0/db_1)
(SID_NAME = orcl)
)
)
ADR_BASE_LISTENER = /u01/app/oracle
备库: LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = node2)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) )
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/12.2.0/db_1)
(SID_NAME = orcl)
)
(SID_DESC =
(GLOBAL_DBNAME = orclbk_DGMGRL)
(ORACLE_HOME = /u01/app/oracle/product/12.2.0/db_1)
(SID_NAME = orclbk)
)
)
ADR_BASE_LISTENER = /u01/app/oracle
--连接dg_broker进行配置 连接测试: $ dgmgrl DGMGRL> connect sysdg@orcl DGMGRL> connect sysdg@orclbk
测试是否能连上,如果连不上可能是sysdg用户被锁定,给一个密码并解锁
--在主库配置 DGMGRL> connect sysdg
DGMGRL> create configuration 'orcl_dg' as primary database is 'orcl' connect identifier is 'orcl'; show configuration;
--说明: orcl_dg是配置名称,可以随便填。 primary database is 'orcl' orcl是db_unique_name connect identifier is 'orcl' orcl是tnsname.ora连接到主库的net service name
--添加备库: add database 'orclbk' as connect identifier is orclbk maintained as physical; --说明: add database 'orclbk': orclbk是 db_unique_name as connect identifier is orclbk: orclbk是tnsnames.ora的service name
--查看配置 show configuration;
--启用配置 enable configuration;
--查看库 show database orcl;
show database orclbk;
--切换测试 switchover to orclbk;
switchover to orcl;