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 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了