首页 > 数据库 > Oracle > Data Guard维护篇(二)
Data Guard维护篇(二)
1、创建表空间或者数据文件
先看搭建Data Guard时的两个参数:
DB_FILE_NAME_CONVERT = ’file1’, ‘file2’
LOG_FILE_NAME_CONVERT = ‘file1’, ‘file2’
以上两个参数的作用相似,即primary数据库和standby数据库的数据文件或者日志文件的路径可以不相同,通过该参数实现自动装换,file1为转换前文件名,file2为转换后文件名
STANDBY_FILE_MANAGEMENT=AUTO/MANUAL
该参数作用是设置在数据库数据文件发生修改时,standby数据库数据文件相应的管理方式,AUTO为自动管理,MANNUAL则是需要手动管理
通过测试来了解一下:
首先将STANDBY_FILE_MANAGEMENT的值置为AUTO(stadnby数据库)
standby > alter system set standby_file_management = auto;
System altered.
standby > show parameter standby_file_management;
NAME TYPE VALUE
--------------------------------------------- --------------- ---------------
standby_file_management string AUTO
primary数据库创建一个新的表空间
primary > create tablespace DG_TEST datafile '/u01/app/oracle/oradata/orcl/dg_test01.dbf' size 10m;
Tablespace created.
primary > col file_name for a45
primary > col tablespace_name for a20
primary > /
FILE_NAME TABLESPACE_NAME
--------------------------------------------- - -------------------
/u01/app/oracle/oradata/orcl/users01.dbf USERS
/u01/app/oracle/oradata/orcl/sysaux01.dbf SYSAUX
/u01/app/oracle/oradata/orcl/undotbs01.dbf UNDOTBS1
/u01/app/oracle/oradata/orcl/system01.dbf SYSTEM
/u01/app/oracle/oradata/orcl/example01.dbf EXAMPLE
/u01/app/oracle/oradata/orcl/dg_test01.dbf DG_TEST
手动切换一下日志
primary > alter system switch logfile;
System altered.
standby数据库执行REDO应用并查看一下是数据文件信息
standby > alter database recover managed standby database disconnect from session;
Database altered.
standby > alter database recover managed standby database cancel;
Database altered.
standby > col file_name for a45
standby > col tablespace_name for a20
standby > select file_name,tablespace_name from dba_data_files;
FILE_NAME TABLESPACE_NAME
--------------------------------------------- --------------------
/u01/app/oracle/oradata/orcl_s/users01.dbf USERS
/u01/app/oracle/oradata/orcl_s/sysaux01.dbf SYSAUX
/u01/app/oracle/oradata/orcl_s/undotbs01.dbf UNDOTBS1
/u01/app/oracle/oradata/orcl_s/system01.dbf SYSTEM
/u01/app/oracle/oradata/orcl_s/example01.dbf EXAMPLE
/u01/app/oracle/oradata/orcl_s/dg_test01.dbf DG_TEST
此时会发现,在primary数据库创建的表空间,已经在standby数据库体现出来,并且根据DB_FILE_CONVERZT参数的设置,将新的数据文件创建在了一个standby指定的路径下
将STANDBY_FILE_MANAGEMENT参数设置为MANUAL
standby > alter system set standby_file_management = manual;
System altered.
standby> show parameter standby_file_management;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
standby_file_management string MANUAL
primary数据库添加一个新的数据文件
primary > alter tablespace DG_TEST add datafile '/u01/app/oracle/oradata/orcl/dg_test02.dbf' size 10m;
Tablespace altered.
primary > alter system switch logfile;
System altered.
standby 数据库再次查看结果
standby > select status from v$instance;
STATUS
------------
MOUNTED
standby > alter database recover managed standby database disconnect from session;
Database altered.
此时如果取消REDO应用会报错,原因是REDO中指定的新添加的数据文件在standby数据库中没有自动创建
SQL> alter database recover managed standby database cancel;
alter database recover managed standby database cancel
*
ERROR at line 1:
ORA-16136: Managed Standby Recovery not active
SQL> col name for a45
SQL> col file# for 999999
SQL> select name,file# from v$datafile;
NAME FILE#
--------------------------------------------- -------
/u01/app/oracle/oradata/orcl_s/system01.dbf 1
/u01/app/oracle/oradata/orcl_s/undotbs01.dbf 2
/u01/app/oracle/oradata/orcl_s/sysaux01.dbf 3
/u01/app/oracle/oradata/orcl_s/users01.dbf 4
/u01/app/oracle/oradata/orcl_s/example01.dbf 5
/u01/app/oracle/oradata/orcl_s/dg_test01.dbf 6
/u01/app/oracle/10.2.0/db_1/dbs/UNNAMED00007 7
7 rows selected
可以看到,这里虽然也多出了一个数据文件,但明显跟我们新添加的数据文件不匹配,这时就需要DBA介入了,修改一下该数据文件的路径
standby > alter database create datafile '/u01/app/oracle/10.2.0/db_1/dbs/UNNAMED00007' as '/u01/app/oracle/oradata/orcl_s/dg_test021.dbf';
Database altered.
再次启动REDO应用并打开数据库查看结果
standby > alter database recover managed standby database disconnect;
Database altered.
standby > alter database recover managed standby database cancel;
Database altered.
standby > alter database open;
Database altered.
standby > col tablespace_name for a20
standby > col file_name for a45
standby > select tablespace_name,file_name from dba_data_files;
TABLESPACE_NAME FILE_NAME
-------------------- ---------------------------------------------
USERS /u01/app/oracle/oradata/orcl_s/users01.dbf
SYSAUX /u01/app/oracle/oradata/orcl_s/sysaux01.dbf
UNDOTBS1 /u01/app/oracle/oradata/orcl_s/undotbs01.dbf
SYSTEM /u01/app/oracle/oradata/orcl_s/system01.dbf
EXAMPLE /u01/app/oracle/oradata/orcl_s/example01.dbf
DG_TEST /u01/app/oracle/oradata/orcl_s/dg_test01.dbf
DG_TEST /u01/app/oracle/oradata/orcl_s/dg_test021.dbf
7 rows selected.
2、删除表空间(在删除表空间时也是同样的效果)
在参数STANDBY_FILE_MANAGEMENT设置为AUTO的时候无需人为的进行管理,与添加datafile一致,但是当该参数设置为MANUAL时,有一点需要注意:
设置standby数据库STANDBY_FILE_MANAGEMENT参数为MANUAL
SQL> alter system set standby_file_management=manual;
System altered.
SQL> show parameter standby_file_management
NAME TYPE VALUE
------------------------------------ ----------- ---------------- --------------
standby_file_management string MANUAL
primary数据库删除一个数据文件
SQL> alter tablespace dg_test drop datafile '/u01/app/oracle/oradata/orcl/dg_test02.dbf';
SQL> alter system switch logfile;
System altered.
primary启动REDO,接收数据
SQL> alter database recover managed standby database disconnect from session;
Database altered.
SQL> alter database recover managed standby database cancel;
Database altered.
SQL> alter database open;
Database altered.
SQL> select file_name,tablespace_name from dba_data_files;
FILE_NAME TABLESPACE_NAME
--------------------------------------------- --------------------
/u01/app/oracle/oradata/orcl_s/users01.dbf USERS
/u01/app/oracle/oradata/orcl_s/sysaux01.dbf SYSAUX
/u01/app/oracle/oradata/orcl_s/undotbs01.dbf UNDOTBS1
/u01/app/oracle/oradata/orcl_s/system01.dbf SYSTEM
/u01/app/oracle/oradata/orcl_s/example01.dbf EXAMPLE
/u01/app/oracle/oradata/orcl_s/dg_test01.dbf DG_TEST
表面上dg_test02.dbf数据文件已经被删除,可是在操作系统中并未真正删除该数据文件
SQL> !ls /u01/app/oracle/oradata/orcl_s/
dg_test01.dbf orcl2control01.ctl redo01.log sysaux01.dbf undotbs01.dbf
dg_test02.dbf orcl2control02.ctl redo02.log system01.dbf users01.dbf
example01.dbf orcl2control03.ctl redo03.log temp01.dbf
还需手动去删除废弃的数据文件
SQL> !rm -rf /u01/app/oracle/oradata/orcl_s/dg_test02.dbf
3、重命名数据文件
重命名数据文件时,不管STANDBY_FILE_MANGEMENT的值设置AUTO或者是MANUAL,都需要DBA手动的去在DG环境中进行修改
standby > show parameter standby_file_management;
NAME TYPE VALUE
------------------------------------ ----------- -----------------
standby_file_management string AUTO
主库重命名数据文件
primary > alter tablespace DG_TEST offline;
Tablespace altered.
primary > ! mv /u01/app/oracle/oradata/orcl/dg_test_01.dbf /u01/app/oracle/oradata/orcl/dg_test_02.dbf
primary > alter tablespace DG_TEST rename datafile '/u01/app/oracle/oradata/orcl/dg_test_01.dbf' to '/u01/app/oracle/oradata/orcl/dg_test_02.dbf';
Tablespace altered.
primary > alter tablespace DG_TEST online;
Tablespace altered.
primary > select name from v$datafile;
NAME
----------------------------------------------------
/u01/app/oracle/oradata/orcl/system01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/users01.dbf
/u01/app/oracle/oradata/orcl/example01.dbf
/u01/app/oracle/oradata/orcl/dg_test_02.dbf
6 rows selected.
primary > alter system switch logfile;
System altered.
standby数据库查看是否有变化
standby > alter database recover managed standby database disconnect from session;
Database altered.
standby > alter database recover managed standby database cancel;
Database altered.
standby > alter database open;
Database altered.
standby > select file_name,tablespace_name from dba_data_files;
FILE_NAME TABLESPACE_NAME
--------------------------------------------- --------------------
/u01/app/oracle/oradata/orcl_s/users01.dbf USERS
/u01/app/oracle/oradata/orcl_s/sysaux01.dbf SYSAUX
/u01/app/oracle/oradata/orcl_s/undotbs01.dbf UNDOTBS1
/u01/app/oracle/oradata/orcl_s/system01.dbf SYSTEM
/u01/app/oracle/oradata/orcl_s/example01.dbf EXAMPLE
/u01/app/oracle/oradata/orcl_s/dg_test_01.dbf DG_TEST
6 rows selected.
从上面的结果来看,即使是STANDBY_FILE_MANAGEMENT参数设置为AUTO,对数据文件的修改也无法体现到standby数据库
手工在standby数据库对数据文件再次重命名(standby数据库无需将表空间置为offline)
standby > ! mv /u01/app/oracle/oradata/orcl_s/dg_test_01.dbf /u01/app/oracle/oradata/orcl_s/dg_test_02.dbf
standby > alter database rename file '/u01/app/oracle/oradata/orcl_s/dg_test_01.dbf' to '/u01/app/oracle/oradata/orcl_s/dg_test_02.dbf';
alter database rename file '/u01/app/oracle/oradata/orcl_s/dg_test_01.dbf' to '/u01/app/oracle/oradata/orcl_s/dg_test_02.dbf'
*
ERROR at line 1:
ORA-01511: error in renaming log/data files
ORA-01275: Operation RENAME is not allowed if standby file management is
automatic.
在STANDBY_FILE_MANGEMENT参数设置为AUTO时不允许去重命名文件,将该参数的值改为MANUAL即可
standby > alter system set standby_file_management=manual;
System alter
standby > alter database rename file '/u01/app/oracle/oradata/orcl_s/dg_test_01.dbf' to '/u01/app/oracle/oradata/orcl_s/dg_test_02.dbf';
Database altered.
standby > alter database recover managed standby database disconnect from session;
Database altered.
standby > alter database recover managed standby database cancel;
Database altered.
standby > alter database open;
Database altered.
standby > select file_name,tablespace_name from dba_data_files;
FILE_NAME TABLESPACE_NAME
--------------------------------------------- --------------------
/u01/app/oracle/oradata/orcl_s/users01.dbf USERS
/u01/app/oracle/oradata/orcl_s/sysaux01.dbf SYSAUX
/u01/app/oracle/oradata/orcl_s/undotbs01.dbf UNDOTBS1
/u01/app/oracle/oradata/orcl_s/system01.dbf SYSTEM
/u01/app/oracle/oradata/orcl_s/example01.dbf EXAMPLE
/u01/app/oracle/oradata/orcl_s/dg_test_02.dbf DG_TEST
6 rows selected.
数据文件已经重命名我们想要的结果
4、DG的监控
primary > select PROCESS,CLIENT_PROCESS,SEQUENCE#,STATUS from v$managed_standby;
PROCESS CLIENT_P SEQUENCE# STATUS
--------- -------- ---------- ------------
ARCH ARCH 50 CLOSING
ARCH ARCH 50 CLOSING
v$managed_standby视图用于显示standby数据库相关进程的当前状态,以上是常用的几个进程,其中:
PROCESS:进程名称,如ARCH,FRS,MRPO等
CLIENT_P:对应的primary数据库的进程名称
SEQUENCE#:归档序号
STATUS:进程状态,对应的有以下几个值:
ALLOCATED:准备连接primary数据库
ATTACHED:正在连接primary数据库
CONNECTED:已经连接到primary数据库
IDLE:空闲中
RECEIVING:归档文件接收中
OPENING:归档文件处理中
CLOSING:归档文件已经处理完毕,结尾中
WRITING:REDO数据库写向归档文件中
WAIT_FOR_LOG:等待新的REDO数据中
WAIT_FOR_GAP:归档有中断,正在等待中断部分的REDO数据
APPLYING_LOG:应用REDO数据中
查看REDO应用进程
primary > select DEST_NAME,DB_UNIQUE_NAME,ARCHIVED_THREAD#,ARCHIVED_SEQ#,APPLIED_THREAD#,APPLIED_SEQ# from v$archive_dest_status where status='VALID';
检查归档文件信息
primary > select NAME,CREATOR,SEQUENCE#,COMPLETION_TIME from v$archived_log;
NAME CREATOR SEQUENCE# COMPLETIO
---------------------------------------- ------- ---------- ---------
orcl_s.2_tns ARCH 46 03-MAR-14
/u01/arch/1_47_840520047.dbf ARCH 47 03-MAR-14
orcl_s.2_tns ARCH 47 03-MAR-14
/u01/arch/1_48_840520047.dbf ARCH 48 03-MAR-14
orcl_s.2_tns ARCH 48 03-MAR-14
/u01/arch/1_49_840520047.dbf ARCH 49 03-MAR-14
orcl_s.2_tns ARCH 49 03-MAR-14
/u01/arch/1_50_840520047.dbf ARCH 50 03-MAR-14
orcl_s.2_tns ARCH 50 03-MAR-14
物理standby通过V$LOG_HISTORY视图查看归档历史
standby > select FIRST_TIME,FIRST_CHANGE#,NEXT_CHANGE#,SEQUENCE# from v$log_history;
FIRST_TIM FIRST_CHANGE# NEXT_CHANGE# SEQUENCE#
--------- ------------- ------------ ----------
26-FEB-14 446075 474322 1
26-FEB-14 474322 506399 2
26-FEB-14 506399 530816 3
26-FEB-14 530816 570738 4
27-FEB-14 570738 574176 5
27-FEB-14 574176 616246 6
28-FEB-14 616246 648807 7
28-FEB-14 648807 649453 8
28-FEB-14 649453 650960 9
28-FEB-14 650960 652228 10
28-FEB-14 652228 672928 11
查询当前数据库的信息
primary > select DB_UNIQUE_NAME,DATABASE_ROLE,OPEN_MODE,PROTECTION_MODE,PROTECTION_LEVEL,SWITCHOVER_STATUS from v$database;
查看当前REDO应用和REDO传输状态
standby > select process,status,thread#,sequence#,block#,blocks from v$managed_standby;
PROCESS STATUS THREAD# SEQUENCE# BLOCK# BLOCKS
--------- ------------ ---------- ---------- ---------- ----------
ARCH CONNECTED 0 0 0 0
ARCH CONNECTED 0 0 0 0
RFS IDLE 0 0 0 0
查看是否启用的实时应用
primary > select RECOVERY_MODE from v$archive_dest_status where DEST_ID=2;
RECOVERY_MODE
-----------------------
UNKNOWN
查看DATA GUARD时间
primary > select MESSAGE from v$dataguard_status;
MESSAGE
-------------------------------------------------------------------------------------------------------------------
ARC0: Archival started
ARC1: Archival started
ARC1: Becoming the 'no FAL' ARCH
ARC1: Becoming the 'no SRL' ARCH
ARC2: Archival started
ARC0: Becoming the heartbeat ARCH
ARCH: Possible network disconnect with primary database
ARCH shutting down
ARC2: Archival stopped
ARC0: Attempting destination LOG_ARCHIVE_DEST_2 network reconnect (3113)
ARC0: Destination LOG_ARCHIVE_DEST_2 network reconnect abandoned
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29320885/viewspace-1098361/ ,如需转载,请注明出处,否则将追究法律责任。