首页 > 数据库 > Oracle > DataGuard创建实验
1、 验证主数据库是否处于归档模式
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 36
Next log sequence to archive 38
Current log sequence 38
2、 将primary 数据库置为FORCE LOGGING 模式
SQL> alter database force logging;
Database altered.
3、 创建Standby数据库控制文件
SQL> alter database create standby controlfile as '/oracle/app/oracle/oradata/db/controlbk01.ctl';
Database altered.
SQL> alter database create standby controlfile as '/oracle/app/oracle/oradata/db/controlbk02.ctl';
Database altered.
SQL> alter database create standby controlfile as '/oracle/app/oracle/oradata/db/controlbk03.ctl';
Database altered.
4、 准备Primary数据库的初始化参数文件
SQL> create pfile='$ORACLE_HOME/dbs/initdb.ora' from spfile;
File created.
在initdb.ora中添加如下内容
DB_UNIQUE_NAME=db
LOG_ARCHIVE_CONFIG='DG_CONFIG=(db,dbdg)'
LOG_ARCHIVE_DEST_1='LOCATION=/oracle/app/oracle/flash_recovery_area/DB/archivelog/
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=db'
LOG_ARCHIVE_DEST_2='SERVICE=dbdg LGWR ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=dbdg'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
#--------for standby role switch
FAL_SERVER=db
FAL_CLIENT=dbdg
DB_FILE_NAME_CONVERT='/oracle/app/oracle/oradata/dbdg','/oracle/app/oracle/oradata/db'
LOG_FILE_NAME_CONVERT='/oracle/app/oracle/oradata/dbdg','/oracle/app/oracle/oradata/db'
STANDBY_FILE_MANAGEMENT=AUTO
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> create spfile from pfile='$ORACLE_HOME/dbs/initdb.ora';
File created.
5、 注意需要复制所有数据文件,备份的控制文件及客户端初始化参数文件
6、
1、 创建相关目录
[root@OraLinuxAux admin]# mkdir /oracle/app/oracle/admin/dbdg
[root@OraLinuxAux admin]# mkdir /oracle/app/oracle/admin/dbdg/adump
[root@OraLinuxAux admin]# mkdir /oracle/app/oracle/admin/dbdg/bdump
[root@OraLinuxAux admin]# mkdir /oracle/app/oracle/admin/dbdg/cdump
[root@OraLinuxAux admin]# mkdir /oracle/app/oracle/admin/dbdg/dpdump
[root@OraLinuxAux admin]# mkdir /oracle/app/oracle/admin/dbdg/pfile
[root@OraLinuxAux admin]# mkdir /oracle/app/oracle/admin/dbdg/udump
[root@OraLinuxAux oradata]# mkdir /oracle/app/oracle/oradata/dbdg
2、 创建Standby数据库实例
[oracle@OraLinuxAux ~]$ orapwd file='$ORACLE_HOME/dbs/orapwdbdg' password=sys entries=30 force=y
3、 准备Standby数据库的初始化参数文件
在initdbdg.ora中添加如下内容
db_unique_name=dbdg
LOG_ARCHIVE_CONFIG='DG_CONFIG=(db,dbdg)'
DB_FILE_NAME_CONVERT='/oracle/app/oracle/oradata/db','/oracle/app/oracle/oradata/dbdg'
LOG_FILE_NAME_CONVERT='/oracle/app/oracle/oradata/db','/oracle/app/oracle/oradata/dbdg'
LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc
LOG_ARCHIVE_DEST_1='LOCATION=/oracle/app/oracle/flash_recovery_area/DBDG/archivelog/
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dbdg'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
#---下列参数用于角色切换
LOG_ARCHIVE_DEST_2='SERVICE=db LGWR ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=db'
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
FAL_SERVER=db
FAL_CLIENT=dbdg
STANDBY_FILE_MANAGEMENT=AUTO
//注意,其中的DB_NAME应和Primary数据库的相同
SQL> create spfile from pfile='$ORACLE_HOME/dbs/initdbdg.ora';
File created.
4、 启动Standby数据库到mount状态
SQL> alter database mount;
Database altered.
5、 启动redo应用
SQL> alter database recover managed standby database disconnect from session;
Database altered.
6、 查看同步情况
连接到Primary数据库
SQL> show parameter instance_name;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string db
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
44
连接到Standby数据库
SQL> show parameter instance_name;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string dbdg
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
结束!
实验倒是完成了,但是不知最后一步的两个select结果不一样呢?希望能尽快找到原因。
[@more@]来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/14338195/viewspace-1052848/ ,如需转载,请注明出处,否则将追究法律责任。