ITPub博客

首页 > 数据库 > Oracle > Data Guard维护篇(二)

Data Guard维护篇(二)

原创 Oracle 作者:静以致远√团团 时间:2014-03-03 09:39:18 0 删除 编辑

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的值置为AUTOstadnby数据库)

 

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:进程名称,如ARCHFRSMRPO

CLIENT_P:对应的primary数据库的进程名称

SEQUENCE#:归档序号

STATUS:进程状态,对应的有以下几个值:

 

ALLOCATED:准备连接primary数据库

ATTACHED:正在连接primary数据库

CONNECTED:已经连接到primary数据库

IDLE:空闲中

RECEIVING:归档文件接收中

OPENING:归档文件处理中

CLOSING:归档文件已经处理完毕,结尾中

WRITINGREDO数据库写向归档文件中

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博客 ” ,链接:http://blog.itpub.net/29320885/viewspace-1098361/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 从物理DG到逻辑DG
请登录后发表评论 登录
全部评论
每个人都有梦想,去实现吧!

注册时间:2013-11-14

  • 博文量
    164
  • 访问量
    2103650