DG部署要素
归档配置
#确认是否开启归档
archive log list;
#是否开启强制日志
SELECT force_logging FROM v$database;
#开启归档并配置强制记录日志
shutdown immediate;
Startup mount;
alter database archivelog;
Alter database force logging;
Alter database open;
#切换归档
alter system switch logfile;
#查看归档情况
select group#,member from v$logfile order by group#;
监听配置
listener.ora
#如果多个静态监听,加SID_DESC即可
cat /u01/app/oracle/product/11.2.0/network/admin/listener.ora
E:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
-------------------------------------------------------------------------------------------------------------------
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0)
(SID_NAME = orcl)
)
)
LISTENER=
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
)
)
)
tnsname.ora
#添加如下项,主备都要
cat /u01/app/oracle/product/11.2.0/network/admin/listener.ora
E:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
-------------------------------------------------------------------------------------------------------------------
zky =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.3)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = zky)
)
)
zkydg =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.4)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = zkydg)
)
)
重启监听
lsnrctl stop
lsnrctl start
sqlnet.ora
可选配置,如果有出现连不上库可以修改
cat /u01/app/oracle/product/11.2.0/network/admin/sqlnet.ora
E:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\sqlnet.ora
-------------------------------------------------------------------------------------------------------------------
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
adr_base = /u01/app/oracle
密码文件
记得不同环境目录不一样win(database) linnux(dbs)
-------------------------------------------------------------------------------------------------------------------
orapwd file=e:\app\Administrator\product\11.1.0\dbhome_1\database\PWDzky.ora password=oracle entries=10
日志文件
--查看日志情况
set linesize 200 pagesize 200
set
col MEMBER format a100
select * from v$log;
select * from v$standby_log;
select * from v$logfile order by GROUP#,MEMBER;
--主库处理日志用
alter database add standby logfile group 11 ('/u01/app/oracle/oradata/zky/stand01.log') size 2G;
alter database add standby logfile group 12 ('/u01/app/oracle/oradata/zky/stand01.log') size 2G;
alter database add standby logfile group 13 ('/u01/app/oracle/oradata/zky/stand01.log') size 2G;
--备库修改日志用
alter database recover managed standby database cancel;
alter system set standby_file_management='MANUAL' scope=both;
alter database add logfile group 1 ('/u01/app/oracle/oradata/zky/redo01.log') size 2G reuse;
alter database add logfile group 2 ('/u01/app/oracle/oradata/zky/redo02.log') size 2G reuse;
alter database add logfile group 3 ('/u01/app/oracle/oradata/zky/redo03.log') size 2G reuse;
alter database clear logfile group 5;
alter database drop logfile group 5;
alter database add standby logfile group 11 ('/u01/app/oracle/oradata/zky/stand01.log') size 2G;
alter database add standby logfile group 12 ('/u01/app/oracle/oradata/zky/stand01.log') size 2G;
alter database add standby logfile group 13 ('/u01/app/oracle/oradata/zky/stand01.log') size 2G;
alter system set standby_file_management='AUTO' scope=both;
alter database recover managed standby database using current logfile disconnect from session;
DG参数
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(zky,zkydg)' scope=both;
alter system set LOG_ARCHIVE_DEST_1='LOCATION=E:/u01/archive/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=zky' scope=both;
alter system set LOG_ARCHIVE_DEST_2= 'service=zkydg lgwr async VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLES) DB_UNIQUE_NAME=zkydg' scope=both;
alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE scope=both;
alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=both;
alter system set FAL_SERVER='orcl_s' scope=both;
alter system set DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/zky/','/u01/app/oracle/oradata/zky/' scope=spfile;
alter system set LOG_FILE_NAME_CONVERT='/u01/archive/','/u01/archive/' scope=spfile;
alter system set STANDBY_FILE_MANAGEMENT=AUTO scope=both;
alter system set FAL_SERVER='zhankdg' scope=both;
create pfile='/u01/zky.txt' from spfile;
备库目录确认
mkdir D:\app\Administrator\flash_recovery_area
mkdir D:\app\Administrator\flash_recovery_area\zky
mkdir D:\app\Administrator\oradata
mkdir D:\app\Administrator\oradata\zky
Duplicate拉库
#手动处理
rman target sys/oracle@zky auxiliary sys/oracle@zkydg
duplicate target database for standby from active database nofilenamecheck;
#后台挂的跑
vi /home/oracle/dg.sh
-----------------------------------------------------------------------------------------------
#!/bin/sh
source /home/oracle/.bash_profile
$ORACLE_HOME/bin/rman log=/home/oracle/adg_center_`date +%Y-%m-%d`.log append <<EOF
connect target sys/manager@zky;
connect auxiliary sys/manager@zkydg;
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
allocate auxiliary channel c5 device type disk;
allocate auxiliary channel c6 device type disk;
allocate auxiliary channel c7 device type disk;
allocate auxiliary channel c8 device type disk;
duplicate target database for standby from active database nofilenamecheck;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
release channel c5;
release channel c6;
release channel c7;
release channel c8;
}
EOF
chmod u+x /home/oracle/dg.sh
nohup /home/oracle/dg.sh &
常用运维操作
重启备库
alter database recover managed standby database cancel;
shutdown immediate
startup nomount;
alter database mount standby database;
alter database open read only;
alter database recover managed standby database using current logfile disconnect from session;
alter database recover managed standby database disconnect from session;
主备切换
Data Guard 角色转换
├── Switchover (计划内切换)
└── Failover (故障转移)
├── 使用 RECOVER MANAGED STANDBY DATABASE FINISH [FORCE] (推荐方式)
└── 使用 ACTIVATE STANDBY DATABASE (传统但官方认可的方式)
两种Failover的区别对比
|