配置DataGaurd(ORACLE DG)

配置网络连通

vi /etc/hosts

主机创建/查看归档目录,创建备库在线日志目录

mkdir /u02/oradata/ann01/archive_log
mkdir /u02/oradata/ann01/standby

在备机上创建相关目录(保证如下几项与主库一致)

mkdir $ORACLE_BASE/admin
mkdir $ORACLE_BASE/admin/ann01
mkdir $ORACLE_BASE/admin/ann01/{a,b,c,u,dp}dump(此项11G有所不同)
mkdir /u02/oradata/ann01
mkdir /u02/oradata/ann01/archive_log
mkdir /u02/oradata/ann01/standby

修改主库为归档模式

shutdown immediate;
startup mount;
alter database archivelog;
alter database open;

修改主库的force logging设置

alter database force logging;

在主库上添加standby log

alter database add standby logfile group 11('/u02/oradata/ann01/standby/sta_redo11.log') size 50M; 
alter database add standby logfile group 12('/u02/oradata/ann01/standby/sta_redo12.log') size 50M; 
alter database add standby logfile group 13('/u02/oradata/ann01/standby/sta_redo13.log') size 50M; 
alter database add standby logfile group 14('/u02/oradata/ann01/standby/sta_redo14.log') size 50M; 

修改主库的参数文件

create pfile from spfile;

在pfile中添加:

db_unique_name=ann01_01
log_archive_config='DG_CONFIG=(ann01_01,ann01_02)'
log_archive_dest_1='LOCATION=/u02/oradata/ann01/archive_log VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ann01_01'
log_archive_dest_2='SERVICE=ann01_02 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ann01_02'
fal_server=ann01_02
fal_client=ann01_01
standby_file_management='AUTO'

创建spfile

create spfile from pfile;

启动主库并创建备库的控制文件

alter database create standby controlfile as '/u02/oradata/ann01/standby/sta.ctl';

修改主库和备库的监听和服务名配置,关闭主库,停止主库监听

shutdown immediate;
lsnrctl stop;

编辑listener.ora,改为:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = linux_v1.com)(port = 1521))
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle

编辑tnsnames.ora,改为:

ANN01_01 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.159.2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ann01_01.com)
    )
  )

ANN01_02 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.159.3)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ann01_02.com)
    )
  )

启动主库监听

lsnrctl start

停止备库监听

lsnrctl stop

修改备库监听listener.ora和tnsnames.ora
listener.ora修改为:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = linux_v2.com)(port = 1521))
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle

tnsnames.ora修改为:

ANN01_02 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = linux_v2.com)(port = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ann01_02.com)
    )
  )

ANN01_01 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = linux_v1.com)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ann01_01.com)
    )
  )

启动备库监听

lsnrctl start

启动主库,用netmgr在主机和备机上测试主库的orcl1服务是否正常,正常后关闭主库;

关闭主库,在主库上创建数据库密码文件并复制到备机的$ORACLE_HOME/dbs目录下,在备机上进行还原操作

shutdown immediate;
orapwd file=$ORACLE_HOME/dbs/orapwann01 password=123456 entries=3;
scp orapwann01 192.168.159.3:$ORACLE_HOME/dbs/

复制参数文件,控制文件(/u02/oradata/ann01/standby/sta.ctl),数据文件至备机;

添加standby log,此处因前面主库是先添加备库日志组再备份控制文件,故此处只需将主库的备库日志组拷贝到备库相关目录即可。


启动备库,修改备库到standby状态

startup nomount;
alter database mount standby database;

打开备库至只读状态

alter database open read only;

应用或者取消应用日志

alter database recover managed standby database disconnect from session;
alter database recover managed standby database cancel;

检查有效性

select open_mode,database_role,switchover_status,protection_mode,protection_level from v$database;
select sequence#,name,applied from v$archived_log order by sequence#;
select dest_id,status,destination,error from v$archive_dest;
select status,type,database_mode,destination,db_unique_name,recovery_mode from v$archive_dest_status;
select timestamp,message from v$dataguard_status;
select process,status,thread#,sequence#,client_pid from v$managed_standby;
心有猛虎,细嗅蔷薇。
原文地址:https://www.cnblogs.com/assassinann/p/DataGuard.html