Oracle11g dataguard部署实验

一、参数设置

系统环境:
数据库:oracle11gr2
主库安装了数据库实例,备库没有安装数据库实例。
本次实验,主备库物理路径保持一致。

DG参数设置:

HOSTNAME IP SERVICE_NAME DB_UNIQUE_NAME INSTANCE_NAME SERVICE_NAME TNSNAME
dg1 192.168.0.105 dg1 dg1 dg1 dg1 dg1
dg2 192.168.0.106 dg2 dg2 dg2 dg2 dg2

二、开始

前提:

1、检查force_logging 和 日志归档是否开启

#1、检查force_logging
SQL> select force_logging from v$database;
# 结果为NO时,手动开启
SQL> ALTER DATABASE FORCE LOGGING;
#2、检查归档
SQL> archive log list;
#未开启时,手动开启
SQL> shutdown immediate
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;

2、修改参数文件

SQL> create pfile from spfile;
SQL> exit
$ vim $ORACLE_HOME/dbs/initdg1.ora
################
#在文件中添加一下内容
DB_UNIQUE_NAME='dg1'
LOG_ARCHIVE_CONFIG='DG_CONFIG=(dg1,dg2)'
LOG_ARCHIVE_DEST_2='SERVICE=dg2 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dg2'
FAL_SERVER=dg2
FAL_CLIENT=dg1
LOG_ARCHIVE_DEST_STATE_2=ENABLE
DB_FILE_NAME_CONVERT='dg2','dg1'
LOG_FILE_NAME_CONVERT='dg2','dg1'
STANDBY_FILE_MANAGEMENT=AUTO
###

3、使用新的spfile启动数据库

$ sqlplus / as sysdba
SQL> SHUTDOWN IMMEDIATE
SQL> create spfile from pfile;
SQL> startup mount
# 为备机创建一个控制文件
SQL> alter database create standby controlfile as '/tmp/control01.ctl';
SQL> exit

4、开始冷备,将主库的相关文件传输到备库

$ cd $ORACLE_HOME/dbs
# 传输密码文件和参数文件
$ scp orapwdg1 initdg1.ora dg2:/home/oracle/dg2
# 传输控制文件
$ scp /tmp/control01.ctl dg2:/home/oracle/dg2
# 传输所有的数据文件
$ cd $ORACLE_BASE/oradata/dg1/
$ scp *.log *.dbf dg2:/home/oracle/dg2

5、进入到备库,对传输过来的文件进行修改

$ cd /home/oracle/dg2
# 1、复制一份控制文件(控制文件必须要有两个)
$ cp control01.ctl control02.ctl
# 2、修改密码文件名
$ mv orapwdg1 orapwdg2

# 3、修改参数文件
$ vi initdg1.ora
################
#将原文件中新增的主库参数删除,添加以下内容
DB_UNIQUE_NAME='dg2'
audit_file_dest='/u01/app/oracle/admin/dg2/adump'
control_files='/u01/app/oracle/oradata/dg2/control01.ctl','/u01/app/oracle/oradata/dg2/control02.ctl'
LOG_ARCHIVE_CONFIG='DG_CONFIG=(dg2,dg1)'
FAL_SERVER=dg1
FAL_CLIENT=dg2
LOG_ARCHIVE_DEST_2='SERVICE=dg1 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dg2'
LOG_ARCHIVE_DEST_STATE_2=ENABLE
DB_FILE_NAME_CONVERT='dg1','dg2'
LOG_FILE_NAME_CONVERT='dg1','dg2'
STANDBY_FILE_MANAGEMENT=AUTO
###

# 4、修改参数文件名
$ mv initdg1.ora initdg2.ora

# 5、创建相关文件路径
$ mkdir -p $ORACLE_BASE/oradata/dg2
$ mkdir -p /u01/app/oracle/admin/dg2/adump

# 6、将相关文件转移到对应目录下面
$ mv initdg2.ora orapwdg2 $ORACLE_HOME/dbs
$ mv * $ORACLE_BASE/oradata/dg2

6、启动备库

# 如果备库还没配置监听和tns,可以直接将主库的配置文件传输到备库,修改其中的配置即可,在主库中的操作如下:
$ cd $ORACLE_HOME/network/admin
$ scp tnsnames.ora dg2:$ORACLE_HOME/network/admin
$ scp listener.ora dg2:$ORACLE_HOME/network/admin
# 在备库中,启动备库
$ sqlplus / as sysdba
SQL> create spfile from pfile;
SQL> startup mount

7、将主库打开数据库

$ sqlplus / as sysdba
SQL> alter database open;

# 主库上创建standby 日志
SQL> alter database add standby logfile group 4 '$ORACLE_BASE/oradata/dg1/redo04.log' size 50M;
SQL> alter database add standby logfile group 5 '$ORACLE_BASE/oradata/dg1/redo05.log' size 50M;
SQL> alter database add standby logfile group 6 '$ORACLE_BASE/oradata/dg1/redo06.log' size 50M;

# 备库上也创建standby 日志
SQL> alter database add standby logfile group 4 '$ORACLE_BASE/oradata/dg2/redo04.log' size 50M;
SQL> alter database add standby logfile group 5 '$ORACLE_BASE/oradata/dg2/redo05.log' size 50M;
SQL> alter database add standby logfile group 6 '$ORACLE_BASE/oradata/dg2/redo06.log' size 50M;

8、检查一下当前状态

#1、检查数据库状态
# 备库中查询
SQL>  select database_role,open_mode from v$database;

DATABASE_ROLE    OPEN_MODE
---------------- --------------------
PHYSICAL STANDBY MOUNTED
# 上述状态显示为物理备库,mount状态

# 主库中查询
SQL>  select database_role,open_mode from v$database;

DATABASE_ROLE    OPEN_MODE
---------------- --------------------
PRIMARY          READ WRITE

# 上述状态显示为主库,可读写状态

9、验证相关操作

# 1、查看日志应用情况,主备库都可使用。
# 正常情况下,主库中查询会同一条sequence#显示两条记录,一条为NO,一条为YES,而备库中只会查询出一条sequence#记录。
SQL> select sequence#,applied from v$archived_log;                
# 当查询到applied 状态为NO时,在备库中执行以下语句,使其应用日志:
SQL> alter database recover managed standby database disconnect from session;

# 主库中查看最近日志条数
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/app/oracle/product/11.2.0/db_1/dbs/arch
Oldest online log sequence     5
Next log sequence to archive   7
Current log sequence           7

# 在主库中手动进行日志切换,验证同步情况方式:
SQL> alter system switch logfile;

作者:likaifei

出处:https://www.cnblogs.com/likaifei/p/16707118.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   adai_kfl  阅读(163)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示