DG实施文档及遇到问题处理方法
2017-12-07 09:11
239 查看
一:primary服务器
1:主库上开启Forced Logging
查看是否开始force loggin
SQL> SELECT FORCE_LOGGING FROM V$DATABASE;
FORCE_LOG
---------
NO
SQL> alter database force logging;
Database altered.
2:在备库上创建密码文件,这里直接从主库复制到备库
[oracle@wilson ~]$ scp $ORACLE_HOME/dbs/orapwwilson 192.168.227.30:/u01/app/oracle/product/10.2.0/db_1/dbs
oracle@192.168.227.30's password:
orapwwilson 100% 1536 1.5KB/s 00:00
3:主库上配置Standby Redo Log
1.原则
1).standby redo log的文件大小与primary 数据库online redo log 文件大小相同
2).standby redo log日志文件组的个数依照下面的原则进行计算
Standby redo log组数公式>=(每个instance日志组个数+1)*instance个数
例如在我的环境中,只有一个节点,这个节点有三组redo,所以
Standby redo log组数公式>=(3+1)*1 == 4
所以需要创建4组Standby redo log
3).每一日志组为了安全起见,可以包含多个成员文件
SQL> select member from v$logfile;
MEMBER
---------------------------------------
/oradata/orcldb/redo03.log
/oradata/orcldb/redo02.log
/oradata/orcldb/redo01.log
SQL> !du -sh /oradata/orcldb/redo01.log
51M /oradata/orcldb/redo01.log
SQL> alter database add standby logfile group 4
'/oradata/standby/standby04.log' size 50M;
Database altered.
SQL> ALTER DATABASE DROP STANDBY LOGFILE GROUP 4;删除standby logfile group
alter database add standby logfile group 4 '/oradata/standby/standby04.log' size 51M;
alter database add standby logfile group 5 '/oradata/standby/standby05.log' size 51M;
alter database add standby logfile group 6 '/oradata/standby/standby06.log' size 51M;
alter database add standby logfile group 7 '/oradata/standby/standby07.log' size 51M;
SQL> SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;
GROUP# THREAD# SEQUENCE# ARC STATUS
---------- ---------- ---------- --- ----------
4 0 0 YES UNASSIGNED
5 0 0 YES UNASSIGNED
6 0 0 YES UNASSIGNED
4.修改主库的初始化参数
SQL> show parameter db_name;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string orcldb
--alter system set db_unique_name=orcldb scope=spfile;
startup force
SQL> alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcldb,standby)';
System altered.
SQL> alter system set log_archive_dest_1='LOCATION=/arch valid_for=(all_logfiles,all_roles) db_unique_name=orcldb' scope=spfile;
System altered.
SQL> alter system set log_archive_dest_2='service=standby lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=standby' scope=spfile;
System altered.
SQL> alter system set log_archive_dest_state_1=enable;
System altered.
SQL> alter system set log_archive_dest_state_2=enable;
System altered.
ALTER SYSTEM SET log_archive_dest_state_2='DEFER'SCOPE=BOTH;
ALTER SYSTEM SET log_archive_dest_state_2='ENABLE'SCOPE=BOTH;
SQL> alter system set log_archive_format='%t_%s_%r.arc' scope=spfile;
System altered.
#SQL> alter system set LOG_FILE_NAME_CONVERT='/u01/app/oracle/wilson','/u01/app/oracle/wilson','/u01/app/oracle/wilson/standby','/u01/app/oracle/wilson/standby' scope=spfile;
System altered.
alter system set LOG_FILE_NAME_CONVERT='' scope=spfile;
SQL> show parameter remote_login;
NAME TYPE VALUE
------------------------------------ ----------- ---------
remote_login_passwordfile string EXCLUSIVE
SQL> alter system set log_archive_max_processes=30;
System altered.
SQL> alter system set fal_server=standby;
System altered.
SQL> alter system set fal_client=orcldb;
System altered.
SQL> alter system set standby_file_management=auto;
System altered.
SQL> !mkdir -p /arch
SQL> shutdown immediate;
SQL> startup
5:
--配置主备库的监听和网络服务名:
主库:
listener.ora:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcldb)
(ORACLE_HOME = /oracle/app/oracle/product/11.2.0/db_1)
(SID_NAME = orcldb)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.5.81.17)(PORT = 1521))
)
ADR_BASE_LISTENER = /u01/app/oracle
ORCLDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.5.81.17)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcldb)
)
)
STANDBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.5.81.18)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = STANDBY)
)
)
备库:
listener.ora:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcldb)
(ORACLE_HOME = oracle/
111d7
app/oracle/product/11.2.0/db_1)
(SID_NAME = standby)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.5.81.18)(PORT = 1521))
)
ADR_BASE_LISTENER = /u01/app/oracle
ORCLDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.5.81.17)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcldb)
)
)
STANDBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.5.81.18)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = STANDBY)
)
)
配置主库的tnsnames.ora文件,备库需要同样的操作
[oracle@wilson ~]$ cat $ORACLE_HOME/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
orcldb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.168.2)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcldb)
)
)
standby =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.168.158)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = STANDBY)
)
)
测试tns在彼此之间互通,关闭防火墙
service iptables status
service iptables stop
6:在主库上准备备库需要的pfile和数据库备份文件,控制文件等
[oracle@wilson ~]$ mkdir -p /arch/backup
SQL> create pfile='/arch/backup/initorcldb.ora' from spfile;
File created.
[oracle@wilson ~]$ rman target /
RMAN> backup tag 'dg_20170906' format '/arch/backup/dg_%U' incremental level 0 database plus archivelog;
RMAN> backup format '/arch/backup/controlfile_%U' current controlfile for standby;
二:standby服务器
1:设置oracle_sid,配置tnsnames.ora
[oracle@wilson ~]$ export ORACLE_SID=standby
[oracle@wilson ~]$ cat $ORACLE_HOME/network/admin/tnsnames.ora
orcldb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.168.2)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcldb)
)
)
standby =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.168.158)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = STANDBY)
)
)
2:在备库上复制主库备份出来的备份文件,并准备相关的目录
[oracle@wilson ~]$ mkdir -p /u01/backup/
[oracle@wilson ~]$ scp -rp 10.10.168.2:/u01/backup/* /u01/backup/
[oracle@wilson ~]$ cp /u01/backup/initwilson.ora $ORACLE_HOME/dbs
注意修改 *.db_unique_name='standby' 千万注意修改正确,和那个ORACLE_SID可以保持一致,还有tnsnames.ora里面的serivice_name保持一致
[oracle@wilson ~]$ grep 'fal_' $ORACLE_HOME/dbs/initstandby.ora
grep 'fal_' $ORACLE_HOME/dbs/initstandby.ora
*.fal_client='STANDBY'
*.fal_server='PRIMARY'
[oracle@wilson ~]$ grep 'log_archive_dest_' $ORACLE_HOME/dbs/initwilson.ora
grep 'log_archive_dest_' $ORACLE_HOME/dbs/initstandby.ora
*.log_archive_dest_1='LOCATION=/home/oracle/arch valid_for=(all_logfiles,all_roles) db_unique_name=standby'
*.log_archive_dest_2='service=orcldb lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=orcldb'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE
[oracle@wilson ~]$ mkdir -p /u01/arch/wilson
[oracle@wilson ~]$ mkdir -p /u01/app/oracle/admin/wilson/{adump,bdump,cdump,dpdump,udump,pfile}
[oracle@wilson ~]$ mkdir -p /u01/app/oracle/oradata/orastrac
[oracle@wilson ~]$ mkdir -p /u01/app/oracle/fast_recovery_area
alter system set LOG_FILE_NAME_CONVERT='/u01/app/oracle/wilson','/u01/app/oracle/wilson','/u01/app/oracle/wilson/standby','/u01/app/oracle/wilson/standby' scope=spfile;
/u01/app/oracle/wilson/redo01.log
/u01/app/oracle/wilson/redo02.log
/u01/app/oracle/wilson/redo03.log
/u01/app/oracle/wilson/standby/standby04.log
/u01/app/oracle/wilson/standby/standby05.log
/u01/app/oracle/wilson/standby/standby06.log
/u01/app/oracle/wilson/standby/standby07.log
3:将备库启动到mount状态
[oracle@wilson ~]$ sqlplus /nolog
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
4:使用rman对备库进行恢复
[oracle@wilson ~]$ rman target sys/oracle#123@ORCLDB auxiliary /
Recovery Manager: Release 10.2.0.1.0 - Production on Thu Sep 15 16:08:34 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: orcldb (DBID=4071883054)
connected to auxiliary database: orcldb (not mounted)
RMAN> duplicate target database for standby nofilenamecheck;
5: 将备库置于应用redolog模式
[oracle@wilson ~]$ sqlplus /nolog
SQL> conn /as sysdba
Connected.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/arch/wilson
Oldest online log sequence 47
Next log sequence to archive 49
Current log sequence 49
SQL> alter database recover managed standby database disconnect from session;
Database altered.
SQL> select SEQUENCE#,FIRST_TIME,NEXT_TIME,APPLIED from v$archived_log;
SEQUENCE# FIRST_TIME NEXT_TIME APP
---------- ------------------- ------------------- ---
47 2011-09-09:10:56:31 2011-09-09:10:57:51 YES
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/u01/app/oracle/flash_recovery_area/STANDBY/onlinelog/o1_mf_3_773dso2v_.log
/u01/app/oracle/flash_recovery_area/STANDBY/onlinelog/o1_mf_2_773dsmpk_.log
/u01/app/oracle/flash_recovery_area/STANDBY/onlinelog/o1_mf_1_773dsl9v_.log
可以在主库上进行日志切换,加快备库应用日志的速度!
[oracle@wilson ~]$ sqlplus /nolog
SQL> conn /as sysdba
Connected.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/arch/wilson
Oldest online log sequence 47
Next log sequence to archive 49
Current log sequence 49
SQL> alter system switch logfile;
System altered.
SQL> alter system switch logfile;
System altered.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/arch/wilson
Oldest online log sequence 48
Next log sequence to archive 50
Current log sequence 50
备库上再次查询:
SQL> select SEQUENCE#,FIRST_TIME,NEXT_TIME,APPLIED from v$archived_log;
SEQUENCE# FIRST_TIME NEXT_TIME APP
---------- ------------------- ------------------- ---
47 2011-09-09:10:56:31 2011-09-09:10:57:51 YES
49 2011-09-09:10:57:54 2011-09-09:11:21:25 YES
48 2011-09-09:10:57:51 2011-09-09:10:57:54 YES
SQL> select name,database_role from v$database;
NAME DATABASE_ROLE
--------- ----------------
wilson PHYSICAL STANDBY
三:测试
1.在主库上创建表空间,建表
SQL> select name,database_role from v$database;
NAME DATABASE_ROLE
--------- ----------------
wilson PRIMARY
create tablespace dg_test1 datafile
'/u01/app/oracle/wilson/dg_test1.dbf'
size 10M autoextend off;
Tablespace created.
CREATE USER dgtest1 IDENTIFIED BY dgtest1 DEFAULT TABLESPACE dg_test1;
grant CONNECT,RESOURCE to dgtest1;
SQL> create table dg03 as select * from scott.emp;
Table created
SQL> alter system switch logfile;
System altered.
2.备库应用日志后以只读方式打开查看数据
SQL> alter database recover managed standby database cancel;
Database altered
SQL> alter database open read only;
Database altered.
SQL> select type from dg03 where rownum <= 3;
TYPE
------------
PACKAGE
PACKAGE
PACKAGE
SQL> select count(*) from dg03;
COUNT(*)
----------
292428
3:从新将备库置于应用日志模式
[oracle@wilson ~]$ sqlplus /nolog
SQL> conn /as sysdba
Connected.
SQL> shutdown immediate;
SQL> startup nomount;
SQL> alter database mount standby database;
Database altered.
SQL> alter database recover managed standby database disconnect from session;
Database altered.
FAL[client, MRP0]: Error 12154 connecting to WILSON for fetching gap sequence
因为
SQL> select dest_name,error,status from v$archive_dest;
DEST_NAME ERROR STATUS
-------------------- -------------------- ---------------------------
LOG_ARCHIVE_DEST_1 VALID
LOG_ARCHIVE_DEST_2 ORA-16057: server DISABLED
not in Data Guard
configuration
col DEST_NAME for a30
col ERROR for a60
col STATUS for a20
set line 200
SQL> select dest_name,error,status from v$archive_dest;
DEST_NAME ERROR STATUS
------------------------------ ------------------------------------------------------------ --------------------
LOG_ARCHIVE_DEST_1 VALID
LOG_ARCHIVE_DEST_2 VALID--表示ok
1:主库上开启Forced Logging
查看是否开始force loggin
SQL> SELECT FORCE_LOGGING FROM V$DATABASE;
FORCE_LOG
---------
NO
SQL> alter database force logging;
Database altered.
2:在备库上创建密码文件,这里直接从主库复制到备库
[oracle@wilson ~]$ scp $ORACLE_HOME/dbs/orapwwilson 192.168.227.30:/u01/app/oracle/product/10.2.0/db_1/dbs
oracle@192.168.227.30's password:
orapwwilson 100% 1536 1.5KB/s 00:00
3:主库上配置Standby Redo Log
1.原则
1).standby redo log的文件大小与primary 数据库online redo log 文件大小相同
2).standby redo log日志文件组的个数依照下面的原则进行计算
Standby redo log组数公式>=(每个instance日志组个数+1)*instance个数
例如在我的环境中,只有一个节点,这个节点有三组redo,所以
Standby redo log组数公式>=(3+1)*1 == 4
所以需要创建4组Standby redo log
3).每一日志组为了安全起见,可以包含多个成员文件
SQL> select member from v$logfile;
MEMBER
---------------------------------------
/oradata/orcldb/redo03.log
/oradata/orcldb/redo02.log
/oradata/orcldb/redo01.log
SQL> !du -sh /oradata/orcldb/redo01.log
51M /oradata/orcldb/redo01.log
SQL> alter database add standby logfile group 4
'/oradata/standby/standby04.log' size 50M;
Database altered.
SQL> ALTER DATABASE DROP STANDBY LOGFILE GROUP 4;删除standby logfile group
alter database add standby logfile group 4 '/oradata/standby/standby04.log' size 51M;
alter database add standby logfile group 5 '/oradata/standby/standby05.log' size 51M;
alter database add standby logfile group 6 '/oradata/standby/standby06.log' size 51M;
alter database add standby logfile group 7 '/oradata/standby/standby07.log' size 51M;
SQL> SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;
GROUP# THREAD# SEQUENCE# ARC STATUS
---------- ---------- ---------- --- ----------
4 0 0 YES UNASSIGNED
5 0 0 YES UNASSIGNED
6 0 0 YES UNASSIGNED
4.修改主库的初始化参数
SQL> show parameter db_name;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string orcldb
--alter system set db_unique_name=orcldb scope=spfile;
startup force
SQL> alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcldb,standby)';
System altered.
SQL> alter system set log_archive_dest_1='LOCATION=/arch valid_for=(all_logfiles,all_roles) db_unique_name=orcldb' scope=spfile;
System altered.
SQL> alter system set log_archive_dest_2='service=standby lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=standby' scope=spfile;
System altered.
SQL> alter system set log_archive_dest_state_1=enable;
System altered.
SQL> alter system set log_archive_dest_state_2=enable;
System altered.
ALTER SYSTEM SET log_archive_dest_state_2='DEFER'SCOPE=BOTH;
ALTER SYSTEM SET log_archive_dest_state_2='ENABLE'SCOPE=BOTH;
SQL> alter system set log_archive_format='%t_%s_%r.arc' scope=spfile;
System altered.
#SQL> alter system set LOG_FILE_NAME_CONVERT='/u01/app/oracle/wilson','/u01/app/oracle/wilson','/u01/app/oracle/wilson/standby','/u01/app/oracle/wilson/standby' scope=spfile;
System altered.
alter system set LOG_FILE_NAME_CONVERT='' scope=spfile;
SQL> show parameter remote_login;
NAME TYPE VALUE
------------------------------------ ----------- ---------
remote_login_passwordfile string EXCLUSIVE
SQL> alter system set log_archive_max_processes=30;
System altered.
SQL> alter system set fal_server=standby;
System altered.
SQL> alter system set fal_client=orcldb;
System altered.
SQL> alter system set standby_file_management=auto;
System altered.
SQL> !mkdir -p /arch
SQL> shutdown immediate;
SQL> startup
5:
--配置主备库的监听和网络服务名:
主库:
listener.ora:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcldb)
(ORACLE_HOME = /oracle/app/oracle/product/11.2.0/db_1)
(SID_NAME = orcldb)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.5.81.17)(PORT = 1521))
)
ADR_BASE_LISTENER = /u01/app/oracle
ORCLDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.5.81.17)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcldb)
)
)
STANDBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.5.81.18)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = STANDBY)
)
)
备库:
listener.ora:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcldb)
(ORACLE_HOME = oracle/
111d7
app/oracle/product/11.2.0/db_1)
(SID_NAME = standby)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.5.81.18)(PORT = 1521))
)
ADR_BASE_LISTENER = /u01/app/oracle
ORCLDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.5.81.17)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcldb)
)
)
STANDBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.5.81.18)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = STANDBY)
)
)
配置主库的tnsnames.ora文件,备库需要同样的操作
[oracle@wilson ~]$ cat $ORACLE_HOME/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
orcldb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.168.2)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcldb)
)
)
standby =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.168.158)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = STANDBY)
)
)
测试tns在彼此之间互通,关闭防火墙
service iptables status
service iptables stop
6:在主库上准备备库需要的pfile和数据库备份文件,控制文件等
[oracle@wilson ~]$ mkdir -p /arch/backup
SQL> create pfile='/arch/backup/initorcldb.ora' from spfile;
File created.
[oracle@wilson ~]$ rman target /
RMAN> backup tag 'dg_20170906' format '/arch/backup/dg_%U' incremental level 0 database plus archivelog;
RMAN> backup format '/arch/backup/controlfile_%U' current controlfile for standby;
二:standby服务器
1:设置oracle_sid,配置tnsnames.ora
[oracle@wilson ~]$ export ORACLE_SID=standby
[oracle@wilson ~]$ cat $ORACLE_HOME/network/admin/tnsnames.ora
orcldb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.168.2)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcldb)
)
)
standby =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.168.158)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = STANDBY)
)
)
2:在备库上复制主库备份出来的备份文件,并准备相关的目录
[oracle@wilson ~]$ mkdir -p /u01/backup/
[oracle@wilson ~]$ scp -rp 10.10.168.2:/u01/backup/* /u01/backup/
[oracle@wilson ~]$ cp /u01/backup/initwilson.ora $ORACLE_HOME/dbs
注意修改 *.db_unique_name='standby' 千万注意修改正确,和那个ORACLE_SID可以保持一致,还有tnsnames.ora里面的serivice_name保持一致
[oracle@wilson ~]$ grep 'fal_' $ORACLE_HOME/dbs/initstandby.ora
grep 'fal_' $ORACLE_HOME/dbs/initstandby.ora
*.fal_client='STANDBY'
*.fal_server='PRIMARY'
[oracle@wilson ~]$ grep 'log_archive_dest_' $ORACLE_HOME/dbs/initwilson.ora
grep 'log_archive_dest_' $ORACLE_HOME/dbs/initstandby.ora
*.log_archive_dest_1='LOCATION=/home/oracle/arch valid_for=(all_logfiles,all_roles) db_unique_name=standby'
*.log_archive_dest_2='service=orcldb lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=orcldb'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE
[oracle@wilson ~]$ mkdir -p /u01/arch/wilson
[oracle@wilson ~]$ mkdir -p /u01/app/oracle/admin/wilson/{adump,bdump,cdump,dpdump,udump,pfile}
[oracle@wilson ~]$ mkdir -p /u01/app/oracle/oradata/orastrac
[oracle@wilson ~]$ mkdir -p /u01/app/oracle/fast_recovery_area
alter system set LOG_FILE_NAME_CONVERT='/u01/app/oracle/wilson','/u01/app/oracle/wilson','/u01/app/oracle/wilson/standby','/u01/app/oracle/wilson/standby' scope=spfile;
/u01/app/oracle/wilson/redo01.log
/u01/app/oracle/wilson/redo02.log
/u01/app/oracle/wilson/redo03.log
/u01/app/oracle/wilson/standby/standby04.log
/u01/app/oracle/wilson/standby/standby05.log
/u01/app/oracle/wilson/standby/standby06.log
/u01/app/oracle/wilson/standby/standby07.log
3:将备库启动到mount状态
[oracle@wilson ~]$ sqlplus /nolog
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
4:使用rman对备库进行恢复
[oracle@wilson ~]$ rman target sys/oracle#123@ORCLDB auxiliary /
Recovery Manager: Release 10.2.0.1.0 - Production on Thu Sep 15 16:08:34 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: orcldb (DBID=4071883054)
connected to auxiliary database: orcldb (not mounted)
RMAN> duplicate target database for standby nofilenamecheck;
5: 将备库置于应用redolog模式
[oracle@wilson ~]$ sqlplus /nolog
SQL> conn /as sysdba
Connected.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/arch/wilson
Oldest online log sequence 47
Next log sequence to archive 49
Current log sequence 49
SQL> alter database recover managed standby database disconnect from session;
Database altered.
SQL> select SEQUENCE#,FIRST_TIME,NEXT_TIME,APPLIED from v$archived_log;
SEQUENCE# FIRST_TIME NEXT_TIME APP
---------- ------------------- ------------------- ---
47 2011-09-09:10:56:31 2011-09-09:10:57:51 YES
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/u01/app/oracle/flash_recovery_area/STANDBY/onlinelog/o1_mf_3_773dso2v_.log
/u01/app/oracle/flash_recovery_area/STANDBY/onlinelog/o1_mf_2_773dsmpk_.log
/u01/app/oracle/flash_recovery_area/STANDBY/onlinelog/o1_mf_1_773dsl9v_.log
可以在主库上进行日志切换,加快备库应用日志的速度!
[oracle@wilson ~]$ sqlplus /nolog
SQL> conn /as sysdba
Connected.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/arch/wilson
Oldest online log sequence 47
Next log sequence to archive 49
Current log sequence 49
SQL> alter system switch logfile;
System altered.
SQL> alter system switch logfile;
System altered.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/arch/wilson
Oldest online log sequence 48
Next log sequence to archive 50
Current log sequence 50
备库上再次查询:
SQL> select SEQUENCE#,FIRST_TIME,NEXT_TIME,APPLIED from v$archived_log;
SEQUENCE# FIRST_TIME NEXT_TIME APP
---------- ------------------- ------------------- ---
47 2011-09-09:10:56:31 2011-09-09:10:57:51 YES
49 2011-09-09:10:57:54 2011-09-09:11:21:25 YES
48 2011-09-09:10:57:51 2011-09-09:10:57:54 YES
SQL> select name,database_role from v$database;
NAME DATABASE_ROLE
--------- ----------------
wilson PHYSICAL STANDBY
三:测试
1.在主库上创建表空间,建表
SQL> select name,database_role from v$database;
NAME DATABASE_ROLE
--------- ----------------
wilson PRIMARY
create tablespace dg_test1 datafile
'/u01/app/oracle/wilson/dg_test1.dbf'
size 10M autoextend off;
Tablespace created.
CREATE USER dgtest1 IDENTIFIED BY dgtest1 DEFAULT TABLESPACE dg_test1;
grant CONNECT,RESOURCE to dgtest1;
SQL> create table dg03 as select * from scott.emp;
Table created
SQL> alter system switch logfile;
System altered.
2.备库应用日志后以只读方式打开查看数据
SQL> alter database recover managed standby database cancel;
Database altered
SQL> alter database open read only;
Database altered.
SQL> select type from dg03 where rownum <= 3;
TYPE
------------
PACKAGE
PACKAGE
PACKAGE
SQL> select count(*) from dg03;
COUNT(*)
----------
292428
3:从新将备库置于应用日志模式
[oracle@wilson ~]$ sqlplus /nolog
SQL> conn /as sysdba
Connected.
SQL> shutdown immediate;
SQL> startup nomount;
SQL> alter database mount standby database;
Database altered.
SQL> alter database recover managed standby database disconnect from session;
Database altered.
FAL[client, MRP0]: Error 12154 connecting to WILSON for fetching gap sequence
因为
SQL> select dest_name,error,status from v$archive_dest;
DEST_NAME ERROR STATUS
-------------------- -------------------- ---------------------------
LOG_ARCHIVE_DEST_1 VALID
LOG_ARCHIVE_DEST_2 ORA-16057: server DISABLED
not in Data Guard
configuration
col DEST_NAME for a30
col ERROR for a60
col STATUS for a20
set line 200
SQL> select dest_name,error,status from v$archive_dest;
DEST_NAME ERROR STATUS
------------------------------ ------------------------------------------------------------ --------------------
LOG_ARCHIVE_DEST_1 VALID
LOG_ARCHIVE_DEST_2 VALID--表示ok
相关文章推荐
- 事务处理是在数据处理时经常遇到的问题,经常用到的方法有以下3种总结整理如下
- 调研中经常遇到的问题及处理方法
- 【技术文档】开发一个人力资源管理系统遇到的问题及解决的方法
- PB11 WebService 安装时遇到的问题处理方法
- Oracle非默认监听的处理会遇到的问题以及处理方法
- “Microsoft Office Word 遇到问题需要关闭。我们对此引起的不便表示抱歉”处理方法之一
- sqlite3 jdbc、c接口、python接口处理中文时遇到的问题及其解决方法
- 记一次处理 list 的 remove 方法遇到的问题
- 通过Fuel 7.0安装OpenStack Kilo遇到的问题及处理的方法
- phongap+ jquery + asp.net +android,我把我遇到的问题和处理方法的连接总结一下
- 使用pip安装tensorflow 0.80,python 使用tensorflow 0.80遇到的问题及处理方法
- 最近遇到在xp下不能安装mdac2.7问题的处理方法。
- 关于VS2013 MFC单文档菜单项设置复选框的出现的问题以及处理方法
- VM虚拟机装系统时遇到 units specified don't exist 的问题处理方法
- c# 安装包制作 可能遇到的问题及处理方法
- 使用uiautomator时遇到问题的处理方法
- jQuery中getScript方法引入外部js文件,乱码处理(自己遇到的问题)
- 我在网页设计中遇到的一些问题以及处理方法整理
- swfupload使用中遇到问题处理方法
- 【技术文档】开发一个人力资源管理系统遇到的问题及解决的方法