oracle怎么判断主库还是备库,Oracle10G Dataguard 多个备库 - 主库和物理备库的切换...

三、新建主库(主机vmone)

3.1 准备主库初始化参数

$ vi $ORACLE_HOME/dbs/init$ORACLE_SID.ora

#以下为建库必需参数

control_files='/orahome/oradata/WENDING/control01.ctl','/orahome/oradata/WENDING/control02.ctl','/orahome/oradata/WENDING/control03.ctl'

db_block_size = 8192

db_name = ORCLDB

db_unique_name = WENDING

sga_max_size = 256M

sga_target = 256M

undo_management = AUTO

undo_tablespace = UNDOTBS1

#以下为一般建库需设置的参数,不设置就采用默认值

audit_file_dest = /u01/app/oracle/admin/WENDING/adump

background_dump_dest = /u01/app/oracle/admin/WENDING/bdump

core_dump_dest = /u01/app/oracle/admin/WENDING/cdump

user_dump_dest = /u01/app/oracle/admin/WENDING/udump

db_domain = LK

db_recovery_file_dest=/orahome/flash_recovery_area

db_recovery_file_dest_size=2G

job_queue_processes = 10

log_archive_format = 'log_%t_%s_%r.arc'

open_cursors = 1500

processes = 500

undo_retention = 10800

audit_sys_operations = TRUE #如果需要开通审计功能需设置

audit_trail = os #这里注意,如果将来会转换成物理备库,这里就不能设置db,否则将来物理备库没法打开read only模式

#以下为建备库必需的设置,每增加一个备库,就在log_archive_config里增加备库的db_unique_name,并后续增设一个log_archive_dest_x参数

remote_login_passwordfile='EXCLUSIVE'

log_archive_config='DG_CONFIG=(WENDING,PHYSTDBY,LOGSTDBY)'

log_archive_dest_1='LOCATION=/orahome/arch/WENDING VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=WENDING'

log_archive_dest_state_1='ENABLE'

3.2 建立密码文件,一定是要用格式orapw

$ orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=iamwangnc force=y

3.3 建spfile,启动实例并开始建库

$ sqlplus '/as sysdba'

SQL> create spfile from pfile='$ORACLE_HOME/dbs/init$ORACLE_SID.ora';

SQL> startup nomount

SQL> create database ORCLDB controlfile reuse

character set ZHS16GBK national character set AL16UTF16

logfile group 1 ('/orahome/oradata/WENDING/redo1.log') size 50M reuse,

group 2 ('/orahome/oradata/WENDING/redo2.log') size 50M reuse,

group 3 ('/orahome/oradata/WENDING/redo3.log') size 50M reuse

datafile '/orahome/oradata/WENDING/system.dbf' size 500M reuse autoextend on next 10M maxsize unlimited extent management local

sysaux datafile '/orahome/oradata/WENDING/sysaux.dbf' size 100M autoextend on next 10M maxsize unlimited

default temporary tablespace temp tempfile '/orahome/oradata/WENDING/temp01.dbf' size 100M reuse autoextend on next 10M maxsize unlimited

undo tablespace undotbs1 datafile '/orahome/oradata/WENDING/undotbs1.dbf' size 100M reuse autoextend on next 10M maxsize unlimited

user sys identified by "iamwangnc" user system identified by "iamwangnc";

3.4 运行数据字典脚本,其中catalog.sql和catproc.sql是必需的,其它可选

SQL> spool /orahome/cat.log

SQL> @?/rdbms/admin/catalog.sql   (建数据字典视图)

SQL> @?/rdbms/admin/catproc.sql   (建存储过程包)

SQL> @?/rdbms/admin/catblock.sql (建锁相关的几个视图)

SQL> @?/rdbms/admin/catoctk.sql   (建密码工具包dbms_crypto_toolkit)

SQL> @?/rdbms/admin/owminst.plb   (建工作空间管理相关对象,如dmbs_wm)

SQL> spool off

3.5 新建sqlplus属性和帮助、USERS表空间、EM资料库

SQL> connect system/iamwangnc

SQL> @?/sqlplus/admin/pupbld.sql

SQL> @?/sqlplus/admin/help/hlpbld.sql helpus.sql

SQL> connect /as sysdba

SQL> CREATE TABLESPACE USERS LOGGING DATAFILE '/orahome/oradata/WENDING/users01.dbf' SIZE 100M REUSE AUTOEXTEND ON NEXT 10m MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

SQL> ALTER DATABASE DEFAULT TABLESPACE USERS;

建立和配置EM资料库(可选):

SQL> @?/sysman/admin/emdrep/sql/emreposcre /u01/app/oracle/product/10.2.0/db_1 SYSMAN iamwangnc TEMP ON;

3.6. 最后修改为归档模式并重启

SQL> shutdown immediate;

SQL> connect /as sysdba

SQL> startup mount;

SQL> alter database archivelog;

SQL> alter database open;

重新编译所有失效过程:

SQL> execute utl_recomp.recomp_serial();

配置EM(可选):

SQL> alter user SYSMAN identified by "iamwangnc" account unlock;

SQL> alter user DBSNMP identified by "iamwangnc" account unlock;

SQL> exit

$ emca -config dbcontrol db -silent -DB_UNIQUE_NAME WENDING -PORT 1521 -EM_HOME /u01/app/oracle/product/10.2.0/db_1 -LISTENER LISTENER -SERVICE_NAME WENDING.LK -SYS_PWD iamwangnc -SID WENDING -ORACLE_HOME /u01/app/oracle/product/10.2.0/db_1 -DBSNMP_PWD iamwangnc -HOST game -LISTENER_OH /u01/app/oracle/product/10.2.0/db_1 -LOG_FILE /u01/app/oracle/product/10.2.0/db_1/log/emConfig.log -SYSMAN_PWD iamwangnc

到此建库完毕!

3.6 查询主库信息

$ sqlplus '/as sysdba'

SQL> select name,database_role,db_unique_name,open_mode,protection_mode,protection_level,switchover_status,supplemental_log_data_pk,supplemental_log_data_ui from v$database;

NAME     DATABASE_ROLE    DB_UNIQUE_NAME                 OPEN_MODE PROTECTION_MODE      PROTECTION_LEVEL     SWITCHOVER_STATUS    SUP SUP

-------- ---------------- ------------------------------ ---------- -------------------- -------------------- -------------------- --- ---

ORCLDB   PRIMARY          WENDING                        READ WRITE MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE SESSIONS ACTIVE      NO NO

SQL> archive log list;

数据库日志模式            存档模式

自动存档             启用

存档终点            /orahome/arch/WENDING

最早的联机日志序列     10

下一个存档日志序列   12

当前日志序列           12

四、主库准备工作(主机vmone)

4.1 Enable force logging

$ sqlplus '/as sysdba'

SQL> alter database force logging;

SQL> exit

4.2 启动监听

$ lsnrctl start

$ tnsping db_wending

4.3 备份主库并建立备库控制文件

11g里可用rman直接在远程复制一个数据库,无需备份和恢复。

$ rman target /

RMAN> backup full database format '/orahome/backup/dbfull_%T_%s_%p.bak';

--RMAN> backup archivelog all format '/orahome/backup/arch_%T_%s_%p.bak';

RMAN> exit

$ sqlplus '/as sysdba'

SQL> alter database create standby controlfile as '/orahome/backup/control01.ctl' reuse;

SQL> exit

为安全起见,控制文件一般设置三份:

$ cp /orahome/backup/control01.ctl /orahome/backup/control02.ctl

$ cp /orahome/backup/control01.ctl /orahome/backup/control03.ctl

注意:建备库控制文件前产生的归档文件后续不会传送给备库,这是正常的。

4.4 为备库准备参数文件

$ sqlplus '/as sysdba'

SQL> create pfile = '/orahome/backup/initPHYSTDBY.ora' from spfile;

SQL> create pfile = '/orahome/backup/initLOGSTDBY.ora' from spfile;

4.5 修改物理备库一参数文件

注意路径信息,红色表示要注意修改的地方。

$ vi /orahome/backup/initPHYSTDBY.ora

#以下为建库必需参数

*.control_files='/orahome/oradata/PHYSTDBY/control01.ctl','/orahome/oradata/PHYSTDBY/control02.ctl','/orahome/oradata/PHYSTDBY/control03.ctl'

*.db_block_size=8192

*.db_name='ORCLDB'

*.db_unique_name='PHYSTDBY'

*.sga_max_size=320M

*.sga_target=320M

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS1'

#以下为一般建库需设置的参数,不设置就采用默认值

*.audit_file_dest='/u01/app/oracle/admin/PHYSTDBY/adump'

*.background_dump_dest='/u01/app/oracle/admin/PHYSTDBY/bdump'

*.core_dump_dest='/u01/app/oracle/admin/PHYSTDBY/cdump'

*.user_dump_dest='/u01/app/oracle/admin/PHYSTDBY/udump'

*.db_recovery_file_dest='/orahome/flash_recovery_area'

*.db_recovery_file_dest_size=2G

*.db_domain='LK'

*.job_queue_processes=10

*.open_cursors=1500

*.processes=500

*.remote_login_passwordfile='EXCLUSIVE'

*.log_archive_config='DG_CONFIG=(WENDING,PHYSTDBY,LOGSTDBY)'

*.log_archive_dest_1='LOCATION=/orahome/arch/PHYSTDBY VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PHYSTDBY'

*.log_archive_dest_state_1='ENABLE'

*.log_archive_format='log_%t_%s_%r.arc'

*.undo_retention=10800

#以下是作为备库需增加的参数

*.fal_client='db_phystdby'

*.fal_server='db_wending'

*.db_file_name_convert='WENDING','PHYSTDBY'

*.log_file_name_convert='WENDING','PHYSTDBY'

*.standby_file_management='AUTO'

参数说明:

fal_client/server='tnsnames.ora中配置的网络服务名,即网络连接串'

db/log_file_name_convert='主库数据或日志文件目录1','备库数据或日志文件目录1','主库数据或日志文件目录2','备库数据或日志文件目录2'...可以只设置相异部分

standby_file_management='AUTO' 自动同步主库上新建的数据文件到备库,但主库增删logfile或rename datafile会有限制。

compatible='10.2.0.4.0' 备库该参数需大于或等于主库该参数,一般用默认即可,如果要做切换,那主备库的该参数必需一样。

4.6 修改逻辑备库二参数文件

注意路径信息,其实现在还当作物理备库来做,后续会转为逻辑备库,修改的地方同上,红色表示要注意修改的地方。

$ vi /orahome/backup/initLOGSTDBY.ora

#以下为建库必需参数

*.control_files='/orahome/oradata/LOGSTDBY/control01.ctl','/orahome/oradata/LOGSTDBY/control02.ctl','/orahome/oradata/LOGSTDBY/control03.ctl'

*.db_block_size=8192

*.db_name='ORCLDB'

*.db_unique_name='LOGSTDBY'

*.sga_max_size=320M

*.sga_target=320M

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS1'

#以下为一般建库需设置的参数,不设置就采用默认值

*.audit_file_dest='/u01/app/oracle/admin/LOGSTDBY/adump'

*.background_dump_dest='/u01/app/oracle/admin/LOGSTDBY/bdump'

*.core_dump_dest='/u01/app/oracle/admin/LOGSTDBY/cdump'

*.user_dump_dest='/u01/app/oracle/admin/LOGSTDBY/udump'

*.db_recovery_file_dest='/orahome/flash_recovery_area'

*.db_recovery_file_dest_size=2G

*.db_domain='LK'

*.job_queue_processes=10

*.open_cursors=1500

*.processes=500

*.remote_login_passwordfile='EXCLUSIVE'

*.log_archive_config='DG_CONFIG=(WENDING,PHYSTDBY,LOGSTDBY)'

*.log_archive_dest_1='LOCATION=/orahome/arch/LOGSTDBY VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=LOGSTDBY'

*.log_archive_dest_state_1='ENABLE'

*.log_archive_format='log_%t_%s_%r.arc'

*.undo_retention=10800

#以下是作为备库需增加的参数

*.fal_client='db_logstdby'

*.fal_server='db_wending'

*.db_file_name_convert='WENDING','LOGSTDBY'

*.log_file_name_convert='WENDING','LOGSTDBY'

*.standby_file_management='AUTO'

4.8 拷贝上面生成的文件backup_*.bak、control0*.ctl、init*.ora到备机对应目录下

注意rman备份的文件在主备机上目录/orahome/backup/要一致,如果是NFS就更好,无需传送;如果备机上实在无该目录,可以通过link方式实现。

$ scp /orahome/backup/*.bak vmtwo:/orahome/backup/

$ scp /orahome/backup/initPHYSTDBY.ora vmtwo:/orahome/backup/

$ scp /orahome/backup/*.ctl vmtwo:/orahome/oradata/PHYSTDBY/

$ scp /orahome/backup/*.bak vmthree:/orahome/backup/

$ scp /orahome/backup/initLOGSTDBY.ora vmthree:/orahome/backup/

$ scp /orahome/backup/*.ctl vmthree:/orahome/oradata/LOGSTDBY/

五、建立物理备库一(主机vmtwo)

5.1 建立密码文件

格式一定是要用orapw,密码和主库一样。

$ $ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=iamwangnc force=y

5.2 在备库上建spfile并启动备库

$ sqlplus '/as sysdba'

SQL> create spfile from pfile='/orahome/backup/initPHYSTDBY.ora';

SQL> startup nomount;

SQL> alter database mount standby database;

SQL> exit

5.3 备库做rman恢复

11g里可用rman直接在远程复制一个数据库,无需备份和恢复。

$ rman target /

RMAN> restore database;

RMAN> exit

5.4 启动监听并确保在主备库间能互相tnsping通

$ lsnrctl start

$ tnsping db_wending

$ tnsping db_phystdby

$ lsnrctl status (确保备库监听PHYSTDBY实例成功)

主库(vmone):

$ tnsping db_phystdby

$ tnsping db_wending

$ lsnrctl status (确保主库监听WENDING实例成功)

5.6 主库增加归档目的地参数并归档测试(vmone)

$ sqlplus '/as sysdba'

SQL> alter system set log_archive_dest_2='SERVICE=db_phystdby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PHYSTDBY' scope=both;

SQL> alter system set log_archive_dest_state_2='ENABLE' scope=both;

SQL> alter system archive log current;

5.7 在备库上检查日志是否都从主库传送过来并启动redo apply

SQL> host ls -l /orahome/arch/LOGSTDBY

此时会发现主库建备库控制文件前产生的归档文件未传送过来,这是正常的。

如果归档日志一个都没传送过来,则在主库上检查归档目的地是否有错(vmone):

SQL> select dest_id,dest_name,error from v$archive_dest;

如果日志能成功传送,则在备库上开始应用日志(vmtwo):

SQL> recover managed standby database disconnect;

此时备库的alert日志文件可能会有如下错误信息:

ORA-00313: open failed for members of log group 3 of thread 1

ORA-00312: online log 3 thread 1: '/orahome/oradata/LOGSTDBY/redo3.log'

ORA-27037: unable to obtain file status

不用管,只看后面的归档文件是否成功完成了媒体恢复。

5.8 查询备库信息

SQL> select name,database_role,db_unique_name,open_mode,protection_mode,protection_level,switchover_status,supplemental_log_data_pk,supplemental_log_data_ui from v$database;

NAME     DATABASE_ROLE    DB_UNIQUE_NAME                 OPEN_MODE PROTECTION_MODE      PROTECTION_LEVEL     SWITCHOVER_STATUS    SUP SUP

-------- ---------------- ------------------------------ ---------- -------------------- -------------------- -------------------- --- ---

ORCLDB   PHYSICAL STANDBY PHYSTDBY                       MOUNTED    MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE NOT ALLOWED          NO NO

查询日志应用情况(或者查看alert日志文件):

SQL> SELECT name, applied, REGISTRAR, CREATOR, THREAD#, SEQUENCE#, FIRST_CHANGE#, NEXT_CHANGE#, first_time, next_time FROM V$ARCHIVED_LOG order by SEQUENCE#;

查看备库日志信息:

SQL> select * from v$dataguard_status;

到此物理备库创建完毕!

六、建立物理备库二(主机vmthree)

6.1 建立密码文件

格式一定是要用orapw,密码和主库一样。

$ $ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=iamwangnc force=y

6.2 在备库上建spfile并启动备库

$ sqlplus '/as sysdba'

SQL> create spfile from pfile='/orahome/backup/initLOGSTDBY.ora';

SQL> startup nomount;

SQL> alter database mount standby database;

SQL> exit

6.3 备库做rman恢复

11g里可用rman直接在远程复制一个数据库,无需备份和恢复。

$ rman target /

RMAN> restore database;

RMAN> exit

6.4 启动监听并确保在主备库间能互相tnsping通

$ lsnrctl start

$ tnsping db_wending

$ tnsping db_logstdby

$ lsnrctl status (确保备库监听LOGSTDBY实例成功)

主库(vmone):

$ tnsping db_logstdby

$ tnsping db_wending

$ lsnrctl status (确保主库监听WENDING实例成功)

6.6 主库增加归档目的地参数并归档测试(vmone)

$ sqlplus '/as sysdba'

SQL> alter system set log_archive_dest_3='SERVICE=db_logstdby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=LOGSTDBY' scope=both;

SQL> alter system set log_archive_dest_state_3='ENABLE' scope=both;

SQL> alter system archive log current;

6.7 在备库上检查日志是否都从主库传送过来并启动redo apply

SQL> host ls -l /orahome/arch/LOGSTDBY

此时会发现主库建备库控制文件前产生的归档文件未传送过来,这是正常的。

如果归档日志一个都没传送过来,则在主库上检查归档目的地设置是否有错(vmone):

SQL> select dest_id,dest_name,error from v$archive_dest;

如果日志能成功传送,则在备库上开始应用日志(vmthree):

SQL> recover managed standby database disconnect;

此时备库的alert日志文件可能会有如下错误信息:

ORA-00313: open failed for members of log group 3 of thread 1

ORA-00312: online log 3 thread 1: '/orahome/oradata/LOGSTDBY/redo3.log'

ORA-27037: unable to obtain file status

不用管,只看后面的归档文件是否成功完成了媒体恢复。

6.8 查询备库信息

SQL> select name,database_role,db_unique_name,open_mode,protection_mode,protection_level,switchover_status,supplemental_log_data_pk,supplemental_log_data_ui from v$database;

NAME     DATABASE_ROLE    DB_UNIQUE_NAME                 OPEN_MODE PROTECTION_MODE      PROTECTION_LEVEL     SWITCHOVER_STATUS    SUP SUP

-------- ---------------- ------------------------------ ---------- -------------------- -------------------- -------------------- --- ---

ORCLDB   PHYSICAL STANDBY LOGSTDBY                       MOUNTED    MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE NOT ALLOWED          NO NO

查询日志应用情况(或者查看alert日志文件):

SQL> SELECT name, applied, REGISTRAR, CREATOR, THREAD#, SEQUENCE#, FIRST_CHANGE#, NEXT_CHANGE#, first_time, next_time FROM V$ARCHIVED_LOG order by SEQUENCE#;

查看备库日志信息:

SQL> select * from v$dataguard_status;

到此物理备库创建完毕!

七、物理备库数据同步测试

7.1 新建表空间测试

主库(vmone):

$ sqlplus '/as sysdba'

SQL> create tablespace ts_test datafile '/orahome/oradata/WENDING/ts_test.dbf' size 100m reuse;

SQL> alter system archive log current;

SQL> select * from v$dbfile;

FILE# NAME

---------- ----------------------------------------

1 /orahome/oradata/WENDING/system.dbf

2 /orahome/oradata/WENDING/undotbs1.dbf

3 /orahome/oradata/WENDING/sysaux.dbf

4 /orahome/oradata/WENDING/users01.dbf

5 /orahome/oradata/WENDING/ts_test.dbf

备库恢复需要点时间,通过查看备库alert日志文件,确认完成了媒体恢复后,检查备库是否也建立了同样的数据文件。

物理备库库一(vmtwo):

$ sqlplus '/as sysdba'

SQL> select * from v$dbfile;

FILE# NAME

---------- ------------------------------------------------------------

1 /orahome/oradata/PHYSTDBY/system.dbf

2 /orahome/oradata/PHYSTDBY/undotbs1.dbf

3 /orahome/oradata/PHYSTDBY/sysaux.dbf

4 /orahome/oradata/PHYSTDBY/users01.dbf

5 /orahome/oradata/PHYSTDBY/ts_test.dbf

物理备库库二(vmthree):

$ sqlplus '/as sysdba'

SQL> select * from v$dbfile;

FILE# NAME

---------- ------------------------------------------------------------

1 /orahome/oradata/LOGSTDBY/system.dbf

2 /orahome/oradata/LOGSTDBY/undotbs1.dbf

3 /orahome/oradata/LOGSTDBY/sysaux.dbf

4 /orahome/oradata/LOGSTDBY/users01.dbf

5 /orahome/oradata/LOGSTDBY/ts_test.dbf

可以看到对应的数据文件都建立了,且自动转换到了对应的位置。

7.2 新建数据库用户和表测试

主库(vmone):

$ sqlplus '/as sysdba'

SQL> create user u_test identified by iamwangnc default tablespace ts_test;

SQL> grant dba to u_test;

SQL> create table u_test.t_test as select * from dba_tables;

SQL> select count(*) from u_test.t_test;

COUNT(*)

----------

1207

SQL> alter system archive log current;

备库恢复需要点时间,通过查看备库alert日志文件,确认完成了媒体恢复后,检查备库是否也建立了同样的用户和表。

物理备库库一(vmtwo):

$ sqlplus '/as sysdba'

--到只读模式下查看刚刚建立的用户和表

SQL> recover managed standby database finish;

SQL> alter database open read only;

SQL> select count(*) from u_test.t_test;

COUNT(*)

----------

1207

--再回到恢复管理模式

SQL> recover managed standby database disconnect;

物理备库库二(vmthree):

同上。

可以看到新建的用户和表在两个备库上都同步了。

八、更改物理备库为最大可用或最大保护模式

前面建立的备库默认是最大性能模式,一般都设置成最大可用性模式,如果备库发生问题,主库会自动降级为最大性能模式,对主库不会有影响。

8.1 备库配置standby redolog(vmtwo)

SQL> recover managed standby database cancel;

SQL> alter database add standby logfile

group 4 ('/orahome/oradata/PHYSTDBY/stdby_redo04.log') size 50m,

group 5 ('/orahome/oradata/PHYSTDBY/stdby_redo05.log') size 50m,

group 6 ('/orahome/oradata/PHYSTDBY/stdby_redo06.log') size 50m,

group 7 ('/orahome/oradata/PHYSTDBY/stdby_redo07.log') size 50m;

standby redolog的组数参考公式:(online redolog组数 + 1) * 数据库线程数;单机线程数为1,RAC一般为2。

standby redolog的组成员数和大小也尽量和online redolog一样。

SQL> recover managed standby database disconnect;

8.2 备库配置standby redolog(vmthree)

SQL> recover managed standby database cancel;

SQL> alter database add standby logfile

group 4 ('/orahome/oradata/LOGSTDBY/stdby_redo04.log') size 50m,

group 5 ('/orahome/oradata/LOGSTDBY/stdby_redo05.log') size 50m,

group 6 ('/orahome/oradata/LOGSTDBY/stdby_redo06.log') size 50m,

group 7 ('/orahome/oradata/LOGSTDBY/stdby_redo07.log') size 50m;

SQL> recover managed standby database disconnect;

8.3 修改主库远程归档目的地的属性为同步传送和同步写磁盘(vmone)

需设置log_archive_dest_2/3为联机日志方式(LGWR)同步(SYNC)传送日志,并且同步写磁盘(AFFIRM),为了防止备库发生网络故障引发主库挂起还设置每隔一小时重新传送失败的日志(REOPEN=3600)。

SQL> alter system set log_archive_dest_2='SERVICE=db_phystdby LGWR SYNC AFFIRM REOPEN=1800 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PHYSTDBY' scope=both;

SQL> alter system set log_archive_dest_3='SERVICE=db_logstdby LGWR SYNC AFFIRM REOPEN=1800 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=LOGSTDBY' scope=both;

8.4 更改主库为最大保护模式(vmone)

SQL> shutdown immediate;

SQL> startup mount;

SQL> alter database set standby database to maximize protection;

提示:maximize 后可跟{PROTECTION | AVAILABILITY | PERFORMANCE},分别对应最大保护,最高可用性及最高性能。

SQL> alter database open;

8.5 更改后主备库日志应用测试

主库一(vmone):

SQL> select name,database_role,db_unique_name,open_mode,protection_mode,protection_level,switchover_status,supplemental_log_data_pk,supplemental_log_data_ui from v$database;

NAME     DATABASE_ROLE    DB_UNIQUE_NAME                 OPEN_MODE PROTECTION_MODE      PROTECTION_LEVEL     SWITCHOVER_STATUS    SUP SUP

-------- ---------------- ------------------------------ ---------- -------------------- -------------------- -------------------- --- ---

ORCLDB   PRIMARY          WENDING                        READ WRITE MAXIMUM PROTECTION   MAXIMUM PROTECTION   SESSIONS ACTIVE      NO NO

SQL> create table u_test.t_test2 as select * from dba_users;

此时发现消耗时间明显加长,因为它要保证两个备库同时也提交了该操作才算完成了当前事务。

物理备库一(vmtwo):

SQL> select name,database_role,db_unique_name,open_mode,protection_mode,protection_level,switchover_status,supplemental_log_data_pk,supplemental_log_data_ui from v$database;

NAME     DATABASE_ROLE    DB_UNIQUE_NAME                 OPEN_MODE PROTECTION_MODE      PROTECTION_LEVEL     SWITCHOVER_STATUS    SUP SUP

-------- ---------------- ------------------------------ ---------- -------------------- -------------------- -------------------- --- ---

ORCLDB   PHYSICAL STANDBY PHYSTDBY                       MOUNTED    MAXIMUM PROTECTION   MAXIMUM PROTECTION   NOT ALLOWED          NO NO

物理备库二(vmthree):

SQL> select name,database_role,db_unique_name,open_mode,protection_mode,protection_level,switchover_status,supplemental_log_data_pk,supplemental_log_data_ui from v$database;

NAME     DATABASE_ROLE    DB_UNIQUE_NAME                 OPEN_MODE PROTECTION_MODE      PROTECTION_LEVEL     SWITCHOVER_STATUS    SUP SUP

-------- ---------------- ------------------------------ ---------- -------------------- -------------------- -------------------- --- ---

ORCLDB   PHYSICAL STANDBY LOGSTDBY                       MOUNTED    MAXIMUM PROTECTION    MAXIMUM PROTECTION NOT ALLOWED          NO NO

现在备库不能shutdown数据库,除非shutdown abort:

SQL> shutdown immediate;

ORA-01154: 数据库忙。现在不允许打开, 关闭, 装载和卸载

后续再修改为maximize availability或maximize performance模式可以在数据库open状态下随时修改,但修改为maximize protection模式则必需在mount状态下修改。

SQL> alter database set standby database to maximize performance;

SQL> alter database set standby database to maximize availability;

最终测试发现,是可以随时修改,但是没有得到想要的效果,晕!!!

九、转物理备库二为逻辑备库(主机vmthree)

9.1 主库检查(vmone)

以下sql可以确定哪些表不支持(不被支持的表通常是由于列的定义包含了不支持的数据类型):

SQL> SELECT OWNER, TABLE_NAME FROM DBA_LOGSTDBY_NOT_UNIQUE

WHERE (OWNER, TABLE_NAME) NOT IN (SELECT DISTINCT OWNER, TABLE_NAME FROM DBA_LOGSTDBY_UNSUPPORTED)

AND BAD_COLUMN = 'Y';

假设某张表没有主键或唯一约束,可以通过以下方式来给表增加唯一特征:

SQL> ALTER TABLE mytab ADD PRIMARY KEY (id, name) RELY DISABLE;

查看主库是否启用了supplemental logging特性:

SQL> select supplemental_log_data_pk,supplemental_log_data_ui from v$database;

SUP SUP

--- ---

NO NO

如果未启动,可以这样开启:

SQL> alter database add supplemental log data (PRIMARY KEY,unique INDEX) columns;

9.2 备库停止redo apply

SQL> RECOVER MANAGED STANDBY DATABASE CANCEL;

9.3 在主库生成LogMiner字典到redo,并归档(vmone)

build过程会等到所有事务都完成,这个步骤需要使用闪回查询技术对数据字典信息执行一致性读,故undo_retention需要设置时间长一些,3600以上,不然可能碰到ora-1555。

SQL> EXECUTE DBMS_LOGSTDBY.BUILD;

SQL> alter system archive log current;

9.4 转换物理备库为逻辑备库,同时会将db_name设置为LOGDB,会自动更新spfile

SQL> RECOVER TO LOGICAL STANDBY LOGDB;

SQL> exit

此时会自动应用未曾应用的日志。

9.5 由于修改了db_name,逻辑备库需重建密码文件,一定是要用orapw,密码和主库一样

$ orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=iamwangnc force=y

9.6 现在是一个全新的新库了,可以修改一些初始化参数,然后关闭并mount上

$ sqlplus '/as sysdba'

逻辑备库不支持以下参数,可以忽略掉。

--SQL> alter system set db_file_name_convert='' scope=both;

--SQL> alter system set log_file_name_convert='' scope=both;

SQL> shutdown immediate

SQL> STARTUP MOUNT;

9.7 打开逻辑备库,由于此时和主库事务不一致,需RESETLOGS

SQL> ALTER DATABASE OPEN RESETLOGS;

9.8 启动sql apply

SQL> alter database start logical standby apply immediate;

9.9 逻辑备库信息查询

SQL> select name,database_role,db_unique_name,open_mode,protection_mode,protection_level,switchover_status,supplemental_log_data_pk,supplemental_log_data_ui from v$database;

NAME     DATABASE_ROLE    DB_UNIQUE_NAME                 OPEN_MODE PROTECTION_MODE      PROTECTION_LEVEL     SWITCHOVER_STATUS    SUP SUP

-------- ---------------- ------------------------------ ---------- -------------------- -------------------- -------------------- --- ---

LOGDB    LOGICAL STANDBY LOGSTDBY                       READ WRITE MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY NOT ALLOWED          YES YES

SQL> archive log list;

数据库日志模式            存档模式

自动存档             启用

存档终点            /orahome/arch/LOGSTDBY

最早的联机日志序列     0

下一个存档日志序列   1

当前日志序列           1

SQL> select * from v$dataguard_status;

到此主库+物理备库+逻辑备库建立完毕!!!

九、转物理备库二为逻辑备库(主机vmthree)

9.1 主库检查(vmone)

以下sql可以确定哪些表不支持(不被支持的表通常是由于列的定义包含了不支持的数据类型):

SQL> SELECT OWNER, TABLE_NAME FROM DBA_LOGSTDBY_NOT_UNIQUE

WHERE (OWNER, TABLE_NAME) NOT IN (SELECT DISTINCT OWNER, TABLE_NAME FROM DBA_LOGSTDBY_UNSUPPORTED)

AND BAD_COLUMN = 'Y';

假设某张表没有主键或唯一约束,可以通过以下方式来给表增加唯一特征:

SQL> ALTER TABLE mytab ADD PRIMARY KEY (id, name) RELY DISABLE;

查看主库是否启用了supplemental logging特性:

SQL> select supplemental_log_data_pk,supplemental_log_data_ui from v$database;

SUP SUP

--- ---

NO NO

如果未启动,可以这样开启:

SQL> alter database add supplemental log data (PRIMARY KEY,unique INDEX) columns;

9.2 备库停止redo apply

SQL> RECOVER MANAGED STANDBY DATABASE CANCEL;

9.3 在主库生成LogMiner字典到redo,并归档(vmone)

build过程会等到所有事务都完成,这个步骤需要使用闪回查询技术对数据字典信息执行一致性读,故undo_retention需要设置时间长一些,3600以上,不然可能碰到ora-1555。

SQL> EXECUTE DBMS_LOGSTDBY.BUILD;

SQL> alter system archive log current;

9.4 转换物理备库为逻辑备库,同时会将db_name设置为LOGDB,会自动更新spfile

SQL> RECOVER TO LOGICAL STANDBY LOGDB;

SQL> exit

此时会自动应用未曾应用的日志。

9.5 由于修改了db_name,逻辑备库需重建密码文件,一定是要用orapw,密码和主库一样

$ orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=iamwangnc force=y

9.6 现在是一个全新的新库了,可以修改一些初始化参数,然后关闭并mount上

$ sqlplus '/as sysdba'

逻辑备库不支持以下参数,可以忽略掉。

--SQL> alter system set db_file_name_convert='' scope=both;

--SQL> alter system set log_file_name_convert='' scope=both;

SQL> shutdown immediate

SQL> STARTUP MOUNT;

9.7 打开逻辑备库,由于此时和主库事务不一致,需RESETLOGS

SQL> ALTER DATABASE OPEN RESETLOGS;

9.8 启动sql apply

SQL> alter database start logical standby apply immediate;

9.9 逻辑备库信息查询

SQL> select name,database_role,db_unique_name,open_mode,protection_mode,protection_level,switchover_status,supplemental_log_data_pk,supplemental_log_data_ui from v$database;

NAME     DATABASE_ROLE    DB_UNIQUE_NAME                 OPEN_MODE PROTECTION_MODE      PROTECTION_LEVEL     SWITCHOVER_STATUS    SUP SUP

-------- ---------------- ------------------------------ ---------- -------------------- -------------------- -------------------- --- ---

LOGDB    LOGICAL STANDBY LOGSTDBY                       READ WRITE MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY NOT ALLOWED          YES YES

SQL> archive log list;

数据库日志模式            存档模式

自动存档             启用

存档终点            /orahome/arch/LOGSTDBY

最早的联机日志序列     0

下一个存档日志序列   1

当前日志序列           1

SQL> select * from v$dataguard_status;

到此主库+物理备库+逻辑备库建立完毕!!!

十、逻辑备库同步数据测试

10.1 同步数据测试

主库(vmone):

$ sqlplus '/as sysdba'

SQL> select name,database_role,db_unique_name,open_mode,protection_mode,protection_level,switchover_status,supplemental_log_data_pk,supplemental_log_data_ui from v$database;

NAME     DATABASE_ROLE    DB_UNIQUE_NAME                 OPEN_MODE PROTECTION_MODE      PROTECTION_LEVEL     SWITCHOVER_STATUS    SUP SUP

-------- ---------------- ------------------------------ ---------- -------------------- -------------------- -------------------- --- ---

ORCLDB   PRIMARY          WENDING                        READ WRITE MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY SESSIONS ACTIVE      YES YES

SQL> select dest_name,error from v$archive_dest;

此时提示LOG_ARCHIVE_DEST_3有ORA-03135错误,最后把主库重启后解决,也许等一段时间,会自动好。

SQL> create table u_test.t_test4 as select * from dba_indexes;

SQL> select count(*) from u_test.t_test4;

COUNT(*)

----------

1490

SQL> alter system archive log current;

逻辑备库(vmthree):

$ sqlplus '/as sysdba'

SQL> select count(*) from u_test.t_test4;

COUNT(*)

----------

1490

可以看到主库的改变已经同步到了逻辑备库了。如果还未同步,查看alert日志文件,确认完成了LOGMINER。

10.2 逻辑备库读写测试

SQL> archive log list;

数据库日志模式            存档模式

自动存档             启用

存档终点            /orahome/arch/LOGSTDBY

最早的联机日志序列     0

下一个存档日志序列   1

当前日志序列           1

SQL> create table u_test.t_test888 as select * from dba_users;

SQL> alter system archive log current;

SQL> archive log list;

数据库日志模式            存档模式

自动存档             启用

存档终点            /orahome/arch/LOGSTDBY

最早的联机日志序列     1

下一个存档日志序列   2

当前日志序列           2

10.3 逻辑备库除了表、序列、job外的其它特殊操作

除了表、序列、job,如果在主库增加其它对象,那么逻辑备库也得做同样的操作,比如主库增加了表空间ts_test2,那么逻辑备库要做类似操作。

主库(vmone):

$ sqlplus '/as sysdba'

SQL> create tablespace ts_test1 datafile '/orahome/oradata/WENDING/ts_test1.dbf' size 10m reuse;

--SQL> drop tablespace ts_test1 including contents and datafiles cascade constraints;

SQL> alter system archive log current;

SQL> select * from v$dbfile;

FILE# NAME

---------- ------------------------------------------------------------

1 /orahome/oradata/WENDING/system.dbf

2 /orahome/oradata/WENDING/undotbs1.dbf

3 /orahome/oradata/WENDING/sysaux.dbf

4 /orahome/oradata/WENDING/users01.dbf

5 /orahome/oradata/WENDING/ts_test.dbf

6 /orahome/oradata/WENDING/ts_test1.dbf

物理备库(vmtwo):

$ sqlplus '/as sysdba'

SQL> select * from v$dbfile;

FILE# NAME

---------- ------------------------------------------------------------

1 /orahome/oradata/PHYSTDBY/system.dbf

2 /orahome/oradata/PHYSTDBY/undotbs1.dbf

3 /orahome/oradata/PHYSTDBY/sysaux.dbf

4 /orahome/oradata/PHYSTDBY/users01.dbf

5 /orahome/oradata/PHYSTDBY/ts_test.dbf

6 /orahome/oradata/PHYSTDBY/ts_test1.dbf

逻辑备库(vmthree):

$ sqlplus '/as sysdba'

SQL> select * from v$dbfile;

FILE# NAME

---------- ------------------------------------------------------------

1 /orahome/oradata/LOGSTDBY/system.dbf

2 /orahome/oradata/LOGSTDBY/undotbs1.dbf

3 /orahome/oradata/LOGSTDBY/sysaux.dbf

4 /orahome/oradata/LOGSTDBY/users01.dbf

5 /orahome/oradata/LOGSTDBY/ts_test.dbf

可以看到新建的表空间ts_test1未传过来,因为逻辑备库里db_file_name_convert参数是无用的,需要手工做一下:

SQL> alter database stop logical standby apply;

SQL> alter session disable guard;

SQL> create tablespace ts_test1 datafile '/orahome/oradata/LOGSTDBY/ts_test1.dbf' size 10m reuse;

--SQL> drop tablespace ts_test1 including contents and datafiles cascade constraints;

SQL> alter session enable guard;

SQL> alter database start logical standby apply immediate;

SQL> alter database start logical standby apply immediate skip failed transaction;

SQL> select * from v$dbfile;

FILE# NAME

---------- --------------------------------------------------

1 /orahome/oradata/LOGSTDBY/system.dbf

2 /orahome/oradata/LOGSTDBY/undotbs1.dbf

3 /orahome/oradata/LOGSTDBY/sysaux.dbf

4 /orahome/oradata/LOGSTDBY/users01.dbf

5 /orahome/oradata/LOGSTDBY/ts_test.dbf

6 /orahome/oradata/LOGSTDBY/ts_test1.dbf

10.4 在新表空间上新建表测试

主库(vmone):

SQL> create table u_test.ts_test5 tablespace ts_test1 as select * from dba_users;

SQL> alter system archive log current;

SQL> select count(*) from u_test.ts_test5;

COUNT(*)

----------

10

逻辑备库(vmthree):

SQL> select count(*) from u_test.ts_test5;

COUNT(*)

----------

10

十一、主备库的起停和维护

10.1 Dataguard关闭(建议先关主库再关备库)

主库:

$ sqlplus '/as sysdba'

SQL> alter system archive log current;

SQL> shutdown immediate;

物理备库:

$ sqlplus '/as sysdba'

SQL> alter database recover managed standby database cancel;

SQL> shutdown immediate;

逻辑备库:

$ sqlplus '/as sysdba'

SQL> ALTER DATABASE stop LOGICAL STANDBY APPLY;

SQL> shutdown immediate;

10.2 Dataguard开启(先开备库再开主库)

逻辑备库:

$ lsnrctl start

$ sqlplus '/as sysdba'

SQL> startup;

SQL> alter database start logical standby apply immediate;

物理备库:

$ lsnrctl start

$ sqlplus '/as sysdba'

SQL> startup mount;

SQL> recover managed standby database disconnect;

如果需要做数据库查询可以将备库从redo apply状态切换到只读状态:

SQL> recover managed standby database cancel;

SQL> alter database open read only;

物理备库在只读模式下可以增加临时文件:

SQL> alter database temp add tempfile '/orahome/oradata/PHYSTDBY/temp02.dbf' size 100m reuse;

如果备库本来就处于关闭状态,则可以直接startup而进入只读状态:

SQL> startup;

主库:

$ lsnrctl start

$ sqlplus '/as sysdba'

SQL> startup;

10.3 主库和物理备库维护

查询当前库的角色和保护模式:

SQL> select name,database_role,db_unique_name,open_mode,protection_mode,protection_level,switchover_status,supplemental_log_data_pk,supplemental_log_data_ui from v$database;

显示那些被自动触发写入alert.log或服务器trace文件的事件:

SQL> select * from v$dataguard_status;

如果备库没有接受到主库的redo数据,在主库上确认错误信息:

SQL> SELECT DEST_ID, dest_name,STATUS, DESTINATION, ERROR FROM V$ARCHIVE_DEST;

在主库上,查询待转换备库的归档文件是否连接:

SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;

如过上面查到存在不连续的归档,那查找sequence 对应的归档文件:

SQL> SELECT NAME FROM V$ARCHIVED_LOG WHERE THREAD#=1 AND DEST_ID=1 AND SEQUENCE# BETWEEN 7 AND 10;

复制上面查到的归档文件到备库,如果是RAC 的话,要找对机器,然后将这些文件重新注册一下:

SQL> ALTER DATABASE REGISTER LOGFILE '/orahome/arch/PHYSTDBY/1_12_669837011.dbf';

最后重启redo 应用即可。

在备库上,察看备库已经归档的redolog:

SQL> SELECT name, applied, REGISTRAR, CREATOR, THREAD#, SEQUENCE#, FIRST_CHANGE#, NEXT_CHANGE#, first_time, next_time FROM V$ARCHIVED_LOG order by SEQUENCE#;

在备库上,察看备库已经应用的redolog:

SQL> SELECT THREAD#, SEQUENCE#, FIRST_CHANGE#, NEXT_CHANGE#, FIRST_TIME FROM V$LOG_HISTORY;

备库已经应用的日志,需要定时删除。

在主库上,察看哪些归档日志没有归档到备库(假设local归档目录的ID为1,remote的归档目录为2):

SQL> SELECT name, applied, REGISTRAR, CREATOR, THREAD#, SEQUENCE#, FIRST_CHANGE#, NEXT_CHANGE#

FROM (SELECT * FROM V$ARCHIVED_LOG WHERE DEST_ID = 1) a

WHERE a.SEQUENCE# NOT IN (SELECT SEQUENCE# FROM V$ARCHIVED_LOG WHERE DEST_ID = 2 AND THREAD# = a.THREAD#);

物理备库启用实时应用通过下列语句(前提是已经在备库建了standby redologs):

SQL> RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE disconnect;

物理备库取消延迟应用可以通过下列语句:

SQL> RECOVER MANAGED STANDBY DATABASE NODELAY;

如果要强制主库每10分种归档一次,那么设置主库初始化参数ARCHIVE_LAG_TARGET:

SQL> alter system set ARCHIVE_LAG_TARGET=600 scope=both;

物理备库中已经应用的归档日志需定时删除,采用rman会只能判断删除,而逻辑备库会自动删除:

RMAN> DELETE ARCHIVELOG ALL COMPLETED AFTER 'SYSDATE - 30';

为了减轻主库的压力,考虑在备库上进行rman备份:

SQL> recover managed standby database cancel;

RMAN> backup database format '';

SQL> 'alter database backup controlfile to '';

10.4 主库和逻辑备库维护

如果说,某些表或者数据不需要dataguard 保护(比如一些在逻辑standby 端生成的统计表),这个时候就需要DBMS_LOGSTDBY.SKIP。

SQL> alter database stop logical standby apply;

SQL> execute dbms_logstdby.skip('SCHEMA_DDL','U_TEST','T_TEST%'); --跳过对象的ddl 操作,可用通配符

SQL> execute dbms_logstdby.skip('DML','U_TEST','T_TEST%'); --跳过对象的dml 操作

如果说某些表某个时候取消了同步,现在希望再恢复同步:

SQL> execute DBMS_LOGSTDBY.UNSKIP('DML','U_TEST','T_TEST%');

最后再启动sql应用:

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

查询当前库的角色和保护模式:

SQL> select name,database_role,db_unique_name,open_mode,protection_mode,protection_level,switchover_status,supplemental_log_data_pk,supplemental_log_data_ui from v$database;

显示那些被自动触发写入alert.log或服务器trace文件的事件:

SQL> select * from v$dataguard_status;

查询逻辑备库事件:

SQL> select event_time,event,status from DBA_LOGSTDBY_EVENTS;

默认情况下,该视图保留100 条事件的记录,不过可以通过DBMS_LOGSTDBY.APPLY_SET()过程修改该参数。

查看备库日志应用状态(等同于物理备库中的v$archived_log):

SQL> select sequence#,first_change#,next_change#,timestamp,applied from dba_logstdby_log;

查看备库LogMiner的统计信息及状态:

SQL> select *from v$logstdby_stats;

显示当前log 应用服务的相关信息,常用于诊断归档日志逻辑应用的性能问题:

SQL> select sid,serial#,spid,type,status,high_scn from v$logstdby_process;

显示sql 应用的大致状态:

SQL> select * from v$Logstdby_state;

注意state 列,该列可能有下述的几种状态:

INITIALIZING: LogMiner session 已创建并初始化

LOADING DICTIONARY: SQL 应用调用LogMiner 字典

WAITING ON GAP: SQL 应用正等待日志文件,可能有中断

APPLYING: SQL 应用正在工作

WAITING FOR DICTIONARY LOGS: SQL 应用等待LogMiner 字典信息

IDLE: SQL 应用工作非常出色,已经干的没什么可干了:)

逻辑备库有不连续的归档,怎么办?

因为逻辑standby 没有提供类型v$archive_gap之类的视图,因此在主库上通过下列的语句识别是否存在丢失的情况:

SQL> select thread#,sequence#,file_name from dba_logstdby_log l

where next_change# not in ( select first_change# from dba_logstdby_log where l.thread# = thread#)

order by thread#,sequence#;

然后复制对应的归档文件到standby,如果是RAC 的话,要找对机器,然后将这些文件重新注册一下:

SQL> ALTER DATABASE REGISTER LOGFILE '/orahome/arch/PHYSTDBY/1_12_669837011.dbf';

最后重启sql 应用即可。

10.5 注意事项

如果在主库执行 alter database clear unarchived logfile或alter database open resetlogs,则dataguard要重建。

在连续恢复模式下工作之前,需要保证之前所有的归档日志己经应用到备用库上。因为在连续恢复模式的情况下,oracle不会应用之前的归档日志,而只会应用后面陆续到来的归档日志。

新建表、表空间、datafile都能通过日志应用到备库,但新建一个临时表空间和rename datafile 均不能应用到备库上。

出现归档日志gap时,需要找出相应的归档日志,然后将这些归档日志copy到备用节点的standby_archive_dest和log_archive_dest目录下面。需要注意的是 log_archive_dest目录下也需要copy。然后ALTER DATABASE RECOVER AUTOMATIC STANDBY DATABASE;

应当实时察看standby库的alert文件,就能清晰明了地知道主备更新的情况。这也是排错的重要方法。

10.6 相关视图

V$ARCHIVE_DEST

V$ARCHIVE_DEST_STATUS

V$ARCHIVE_GAP

V$ARCHIVED_LOG

V$DATABASE

V$DATAFILE

V$DATAGUARD_STATUS

V$LOG

V$LOGFILE

V$LOG_HISTORY

V$STANDBY_LOG

Logical Standby Databases Only:

DBA_LOGSTDBY_EVENTS

DBA_LOGSTDBY_LOG

DBA_LOGSTDBY_NOT_UNIQUE

DBA_LOGSTDBY_PARAMETERS

DBA_LOGSTDBY_PROGRESS

DBA_LOGSTDBY_SKIP

DBA_LOGSTDBY_SKIP_TRANSACTION

DBA_LOGSTDBY_UNSUPPORTED

V$LOGSTDBY

V$LOGSTDBY_STATS

V$MANAGED_STANDBY

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值