Steps of Creating a Physical Standby Database
一、环境说明:
操作系统 Red Linux Enterprise as 4
数据库版本 Oracle 10g Release 2
服务器:
Database DB__NAME DB_UNIQUE_NAME Oracle Net Service Name ORACLE_SID IP
Primary ge ge GE ge 192.168.1.160
Physical standby ge standby STANDBY ge 192.168.1.161
二、Preparing the Primary Database for Standby Database Creation
Main Steps:
Section 1 Enable Forced Logging
Section 2 Create a Password File
Section 3 Configure a Standby Redo Log
Section 4 Set Primary Database Initialization Parameters
Section 5 Backup a primary database
1、 Enable Forced Logging
设置主数据库为归档模式
SQL> ALTER DATABASE FORCE LOGGING;
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /opt/oracle/oradata/ge/archive
Oldest online log sequence 15
Next log sequence to archive 17
Current log sequence 17
可以通过以下方式把数据库调整为archivelog模式下
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog ;
SQL> alter database open;
2、Create a Password File
创建主数据库的密码文件
orapwd FILE=/opt/oracle/product/10.2.0/dbs/orapwge PASSWORD=test ENTRIES=30
注意:在Data Guard中的每一个数据库都必须有一个密码文件且sys用户的密码必须相同
3、Configure a Standby Redo Log
1) Ensure log file sizes are identical on the primary and standby databases.
2) Determine the appropriate number of standby redo log file groups.
3) Verify related database parameters and settings.
4) Create standby redo log file groups.
5) Verify the standby redo log file groups were created.
分析:当前的主数据库中的在线日志文件的大小为50M,并且线程数=1 ,并且每个线程的日志文件的最大数量=3,所以standby redo log文件组数=(3+1)*1=4
执行语句如下:
ALTER DATABASE ADD STANDBY LOGFILE GROUP 4
('/opt/oracle/oradata/ge/STANDBYge1.rdo') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 5
('/opt/oracle/oradata/ge/STANDBYge2.rdo') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 6
('/opt/oracle/oradata/ge/STANDBYge3.rdo') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 7
('/opt/oracle/oradata/ge/STANDBYge4.rdo') SIZE 50M;
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
7 0 0 YES UNASSIGNED
4、Set Primary Database Initialization Parameters
修改和添加下面的参数:
##############################################################
## Initialization Parameters of Primary database For Dataguard
##############################################################
DB_UNIQUE_NAME=ge
LOG_ARCHIVE_CONFIG='DG_CONFIG=(ge,standby)' --应该是db_unique_name
#CONTROL_FILES='/opt/oracle/oradata/ge/control01.ctl', '/opt/oracle/oradata/ge/control02.ctl','/opt/oracle/oradata/ge/control03.ctl'
LOG_ARCHIVE_DEST_1= 'LOCATION=/opt/oracle/oradata/ge/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ge'
LOG_ARCHIVE_DEST_2= 'SERVICE=STANDBY LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby' --SERVICE= tnsname.ora
#log_archive_dest_2='SERVICE=STANDBY OPTIONAL LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
LOG_ARCHIVE_MAX_PROCESSES=30
COMPATIBLE = 10.2.0.1
#以下参数是为了角色切换设置
FAL_SERVER=STANDBY
FAL_CLIENT=GE --Oracle Net service name
DB_FILE_NAME_CONVERT=('/opt/oracle/oradata/ge/','/opt/oracle/oradata/ge/') --注意顺序
LOG_FILE_NAME_CONVERT=('/opt/oracle/oradata/ge/','/opt/oracle/oradata/ge/')
STANDBY_FILE_MANAGEMENT=AUTO
重起数据库:
SQL> shutdown immediate
SQL> startup pfile='/opt/oracle/admin/ge/pfile/init.ora.10182008214357';
SQL> create spfile from pfile;
5、Backup database of a primary database
做主数据库的备份可以使用冷备份也可以使用RMAN备份(使用RMAN备份需要确保恢复数据库时必要的归档日志存在)。推荐使用RMAN备份
在主库上执行:
RMAN> backup full format '/opt/oracle/backup/%U_%s.bak' database include current controlfile for standby;
--backup current controlfile for standby ;
--backup database format='/opt/oracle/backup/%U_%s.bak';
RMAN> sql 'alter system archive log current';
RMAN> Backup ArchiveLog all format='/opt/oracle/backup/%U_%s.bak';
注:备份集的文件在/opt/oracle/backup/路径下
完整的数据库备份文件都在主数据库的此路径下:
[root@localhost backup]#pwd
/opt/oracle/backup/
[root@localhost backup]# ls -l
total 960640
-rw-r----- 1 oracle oinstall 851099648 Mar 1 20:24 1dk8ro5v_1_1_45.bak
-rw-r----- 1 oracle oinstall 7405568 Mar 1 20:25 1ek8roh3_1_1_46.bak
-rw-r----- 1 oracle oinstall 124192256 Mar 1 20:28 1fk8rolb_1_1_47.bak
--RMAN> backup database plus archivelog format '/home/oracle/%U';
SQL> select max(sequence#) from v$archived_log;
--记住最大的sequence#,这里是26;
三、Step-by-Step Instructions for Creating a Physical Standby Database
Main Steps of Creating a Physical Standby Database Reference Task
Section 1 Prepare an Initialization Parameter File for the Standby Database
Section 2 Copy Files from the Primary System to the Standby System
Section 3 Create pwdfile for standby database
Section 4 Set Up the Environment to Support the Standby Database
Section 5 Start the Physical Standby Database
Section 6 Verify the Physical Standby Database Is Performing Properly
Section 7 让standby database以spfile启动
1、Prepare an Initialization Parameter File for the Standby Database
1)copy主数据库的初始文件,通过创建spfile初始文件的文本来获取主数据库的初始文件,修改之后复制到备份数据库中去
CREATE PFILE='/opt/oracle/backup/initstandby.ora' FROM SPFILE;
2)修改备份库中的初始文件中的部分参数:
修改和添加的参数:
DB_UNIQUE_NAME=standby
LOG_ARCHIVE_CONFIG='DG_CONFIG=(ge,standby)'
CONTROL_FILES='/opt/oracle/oradata/ge/control01.ctl', '/opt/oracle/oradata/ge/control02.ctl','/opt/oracle/oradata/ge/control03.ctl'
DB_FILE_NAME_CONVERT=('/opt/oracle/oradata/ge/','/opt/oracle/oradata/ge/') --注意顺序
LOG_FILE_NAME_CONVERT=('/opt/oracle/oradata/ge/','/opt/oracle/oradata/ge/')
LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc
LOG_ARCHIVE_DEST_1= 'LOCATION=/opt/oracle/oradata/ge/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby'
LOG_ARCHIVE_DEST_2= 'SERVICE=GE LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ge' --service=GE 是net_service_name tnsnames
#LOG_ARCHIVE_DEST_2= 'SERVICE=GE LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ge'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
STANDBY_FILE_MANAGEMENT=AUTO
FAL_SERVER=GE --说明参数应该是tnsname
FAL_CLIENT=STANDBY
2、Copy Files from the Primary System to the Standby System
1)创建好相应目录,dump文件目录,数据文件目录,归档目录,目录结构与主库一样。
[oracle@localhost ~]$ mkdir -p /opt/oracle/oradata/ge/
[oracle@localhost ~]$ mkdir -p /opt/oracle/admin/ge/pfile
[oracle@localhost ~]$ mkdir -p /opt/oracle/admin/ge/udump
[oracle@localhost ~]$ mkdir -p /opt/oracle/admin/ge/cdump
[oracle@localhost ~]$ mkdir -p /opt/oracle/admin/ge/bdump
[oracle@localhost ~]$ mkdir -p /opt/oracle/admin/ge/adump
[oracle@localhost ~]$ mkdir -p /opt/oracle/flash_recovery_area/GE
2) 复制主数据库的初始文件到备份数据库中去
在主数据库上执行下面:
[oracle@localhost ~]$ scp /opt/oracle/backup/initstandby.ora root@192.168.1.161:/opt/oracle/admin/ge/pfile
root@192.168.1.161's password:
initstandby.ora 100% 1939 1.9KB/s 00:00
在从数据库上执行下面:
权限授予
[root@localhost pfile]# chown oracle.oinstall /opt/oracle/admin/ge/pfile/initstandby.ora
[root@localhost pfile]# ls -l
total 8
-rw-r--r-- 1 oracle oinstall 1939 Mar 1 20:56 initstandby.ora
3)将主数据库的备份文件复制到从数据库中,并且路径完全一致:
首先在从数据库上创建和主数据库一致的备份文件的路径:
mkdir -p /opt/oracle/backup
在主数据库上执行下面的文件传输:
[oracle@localhost ~]$ scp /opt/oracle/backup/*.* root@192.168.1.161:/opt/oracle/backup/
root@192.168.1.161's password:
1dk8ro5v_1_1_45.bak 100% 812MB 1.7MB/s 07:51
1ek8roh3_1_1_46.bak 100% 7232KB 1.8MB/s 00:04
1fk8rolb_1_1_47.bak 100% 118MB 2.2MB/s 00:55
initstandby.ora 100% 1939 1.9KB/s 00:00
在从数据库上执行下面:
权限授予:
chown oracle.oinstall /opt/oracle/backup/*.*
3、Create pwdfile for standby database
orapwd FILE=/opt/oracle/product/10.2.0/dbs/orapwge PASSWORD=test ENTRIES=30
注意:在Data Guard中的每一个数据库都必须有一个密码文件且sys用户的密码必须相同
4、Set Up the Environment to Support the Standby Database
1) Configure listeners for the primary and standby databases.
以下是备库listener.ora文件中添加下面的语句
##########################################################
(SID_DESC =
(GLOBAL_DBNAME = ge)
(ORACLE_HOME = /opt/oracle/product/10.2.0)
(SID_NAME = ge)
)
修改过后重新启动下监听
% lsnrctl stop
% lsnrctl start
2) Create Oracle Net service names.
以下是备库tnsnaes.ora ,下面写的情况是在两个不同的机器下做的配置
GE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.160)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ge)
)
)
STANDBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.161)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ge)
)
)
同时需要主库的tnsnames.ora,加入备库信息:
STANDBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.161)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ge)
)
)
3) Create a server parameter file for the standby database.
在从数据库上:
[oracle@localhost STANDBY]$ export ORACLE_SID=ge
[oracle@localhost STANDBY]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Mon Feb 23 22:44:34 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> connect sys/test@STANDBY as sysdba
Connected to an idle instance.
SQL> CREATE SPFILE FROM PFILE='/opt/oracle/admin/ge/pfile/initstandby.ora';
File created.
5、Start the Physical Standby Database
1) NOMOUNT从数据库
SQL> STARTUP NOMOUNT PFILE='/opt/oracle/admin/ge/pfile/initstandby.ora';
2) 用RMAN的duplicate功能创建standby database
在主库上执行:
[oracle@localhost ~]$ rman target sys/test@GE auxiliary sys/test@STANDBY
Recovery Manager: Release 10.2.0.1.0 - Production on Wed Feb 25 21:36:35 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: GE (DBID=1385239465)
connected to auxiliary database: GE (DBID=1385239465, not open)
RMAN> duplicate target database for standby dorecover nofilenamecheck;
注意:不加nofilenamecheck会报如下的错误:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 02/25/2009 22:48:45
RMAN-05501: aborting duplication of target database
RMAN-05001: auxiliary filename /opt/oracle/oradata/ge/users01.dbf conflicts with a file used by the target database
RMAN-05001: auxiliary filename /opt/oracle/oradata/ge/sysaux01.dbf conflicts with a file used by the target database
RMAN-05001: auxiliary filename /opt/oracle/oradata/ge/undotbs01.dbf conflicts with a file used by the target database
RMAN-05001: auxiliary filename /opt/oracle/oradata/ge/system01.dbf conflicts with a file used by the target database
3)检查standby database的状态
SQL> select database_role,protection_mode,protection_level from v$database;
DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL
---------------- -------------------- --------------------
PHYSICAL STANDBY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE
4)修改primary database数据库的log_archive_dest_state_2允许归档
SQL> alter system set log_archive_dest_state_2=enable scope=both;
System altered.
5)在从数据库上开始Redo应用
SQL> alter database recover managed standby database disconnect from session;
6、Verify the Physical Standby Database Is Performing Properly
1.在primary database 上切换日志
SQL> alter system switch logfile
2.在primary database上运行下面的语句
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
69
3. 在standby database上运行下面的语句
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
69
SQL> select sequence# ,applied from v$archived_log order by sequence#;
SEQUENCE# APPLIE
---------- ------
10 YES
11 YES
12 YES
......
SEQUENCE# APPLIE
---------- ------
67 NO
67 YES
68 NO
68 YES
69 YES
60 rows selected.
若在上步中的max sequence#在的的app状态为YES说明standby database 成功创建.
有个疑问:在 从库的v$archived_log表中有2个SEQUENCE# 没有被 APPLIE
解决:
从管理恢复模式下切换到只读模式
SQL>recover managed standby database cancel;
SQL>alter database open read only;
再从只读方式切换到管理恢复方式
SQL>recover managed standby database disconnect from session;
重新查看
SQL> select sequence# ,applied from v$archived_log where applied='NO' order by sequence# ;
no rows selected
此时2个SEQUENCE# 没有被 APPLIE已经被应用
7、让standby database以spfile启动
SQL> create spfile from pfile='/opt/oracle/admin/ge/pfile/initstandby.ora';
File created.
关闭从数据库
SQL> shutdown immediate
挂载从数据库 让从数据库处于应用redo状态
SQL> startup mount
SQL> alter database recover managed standby database disconnect from session;
SQL> select INSTANCE_NAME,STATUS from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
ge MOUNTED
此时从数据库处于的状态为:
SQL> select name,open_mode,PROTECTION_MODE,DATABASE_ROLE from v$database;
NAME OPEN_MODE PROTECTION_MODE DATABASE_ROLE
--------- ---------- -------------------- ----------------
GE MOUNTED MAXIMUM PERFORMANCE PHYSICAL STANDBY
参考网页:
http://space6212.itpub.net/post/12157/298911
http://space.itpub.net/77406/viewspace-515980
http://www.csjrc.com/article.asp?id=78
http://tech.ccidnet.com/art/1107/20080513/1446805_3.html
http://www.tzwhx.com/newOperate/html/3/32/321/12298.html
以及oracle10g官方文档
http://hi.baidu.com/kurz/blog/item/e620be09d33272216b60fbf2.html
http://ningoo.itpub.net/post/2149/230943
http://ningoo.itpub.net/post/2149/230978
注:
1、创建standby有三种方法:冷备份,rman备份,rman复制。
冷备份:需要关闭主数据库,使用copy命令将数据文件复制到从备份库的相同路径下
rman备份:在创建 standby时,需要restore数据库数据文件以及归档日志文件,具体步骤可以参考网页http://space6212.itpub.net/post/12157/298911
rman复制:实质是把使用rman备份的恢复过程自动化了,省了很多事,使恢复过程简单化。具体步骤可参考本网页
所以如果允许停库建议使用冷备份,在线的话直接使用rman复制创建standby。
2、创建standby千万要将standby文件路径和主数据库的文件路径保持一致;
3、要注意DB_UNIQUE_NAME和DB_NAME以及ORACLE_SID之间的区别
DB_UNIQUE_NAME:是10g的参数,在配置dataguard环境时必须为处于dg环境中每个db设置一个唯一值,在没有DB_UNIQUE_NAME参数之前,在同一
台机器上搭建dg时必须使用参数LOCK_NAME_SPACE在standby参数文件中,10g有了参数db_unique_name,LOCK_NAME_SPACE已经被废弃!
在OG_ARCHIVE_DEST_n参数中会用到DB_UNIQUE_NAME,用于在日志传输过程中指示主库传日志文件到哪个从数据库中。
ORACLE_SID参数:则是操作系统环境变量。操作系统环境变量ORACLE_SID用于和操作系统交互。也就是说,在操作系统中要想得到实例名,就必须使用ORACLE_SID。
此参数与ORACLE_BASE、ORACLE_HOME等用法相同。在数据库安装之后,ORACLE_SID被用于定义数据库参数文件的名称。 如:$ORACLE_BASE/admin/DB_NAME/pfile/init$ORACLE_SID.ora。(DB_NAME和ORACLE_SID是保持一致的)
DB_NAME参数: 在每一个运行的ORACLE数据库中都有一个独立的数据库名(db_name). 如果一个服务器中创建了多个数据库,则有多个数据库名。 其各自的控制参数分属在不同的pfile中,控制着与其相关的数据库。
wwj 说:
可以测一下,主库的表建表,数据增删改,删表,在从库中如何反映的
下面开始测试 主库的表建表,数据增删改,删表,在从库中如何反映的
查询从数据库的数据库的状态:
SQL> select name,open_mode,PROTECTION_MODE,DATABASE_ROLE from v$database;
NAME OPEN_MODE PROTECTION_MODE DATABASE_ROLE
--------- ---------- -------------------- ----------------
GE MOUNTED MAXIMUM PERFORMANCE PHYSICAL STANDBY
主数据库的状态:
SQL> select name,open_mode,PROTECTION_MODE,DATABASE_ROLE from v$database;
NAME OPEN_MODE PROTECTION_MODE DATABASE_ROLE
--------- ---------- -------------------- ----------------
GE READ WRITE MAXIMUM PERFORMANCE PRIMARY
下面是测试主库的表建表,数据增删改,删表,在从库中如何反映的
主库操作:
1、查看主库的当前的日志最大值
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
69
2、主库创建表
SQL> create table test1
2 (PKID number,
3 starttime char(14)
4 );
Table created.
3、在primary database 上切换日志
SQL> alter system switch logfile;
System altered.
4、查看主库的当前的日志最大值
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
70
同事对比查下从数据库的日志最大值:
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
70
分析:可以看出从数据库的日志最大值和主数据库是保持同步的,主数据库的redo是被同时应用到从数据库中
5、继续在主数据库中向test1表插入数据
insert into test1(PKID ,starttime)values(1,to_char(sysdate,'yyyymmddhh24miss'));
insert into test1(PKID ,starttime)values(2,to_char(sysdate,'yyyymmddhh24miss'));
insert into test1(PKID ,starttime)values(3,to_char(sysdate,'yyyymmddhh24miss'));
insert into test1(PKID ,starttime)values(4,to_char(sysdate,'yyyymmddhh24miss'));
insert into test1(PKID ,starttime)values(5,to_char(sysdate,'yyyymmddhh24miss'));
6、在primary database 上切换日志
SQL> alter system switch logfile;
System altered.
7、查看主库的当前的日志最大值
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
71
8、查询主库中刚刚创建的表
SQL> select * from test1;
PKID STARTTIME
---------- --------------
1 20090228130420
2 20090228130425
3 20090228130430
4 20090228130436
5 20090228130441
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
71
此时查看从数据库中的日志最大值:
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
71
试图打开从数据库:
SQL> alter database open read only;
alter database open read only
*
ERROR at line 1:
ORA-01154: database busy. Open, close, mount, and dismount not allowed now
问题已解决;主要是因为没理解.备用服务器的管理模式。
1. 备用服务器的管理模式与只读模式
(1)启动到管理模式,从数据库是处于Redo应用模式
SQL>shutdown immediate;
SQL>startup nomount;
SQL>alter database mount standby database;
SQL>alter database recover managed standby database disconnect from session;
(2)启动到只读方式
SQL>shutdown immediate;
SQL>startup nomount;
SQL>alter database mount standby database;
SQL>alter database open read only;
(3)在管理恢复模式下到只读模式
SQL>recover managed standby database cancel;
SQL>alter database open read only;
这个时候,可以给数据库增加临时数据文件(如果这个在热备份的时候是没有备份过来的)
如alter tablespace temp add tempfile '/opt/oracle/oradata/ge/temp01.dbf' size 100M;
(4)从只读方式到管理恢复方式
SQL>recover managed standby database disconnect from session;
参考:http://www.itpub.net/redirect.php?tid=926124&goto=lastpost
以只读模式打开从数据库之后,在主数据库上做一些操作,观察从数据库的变化:
SQL> recover managed standby database cancel;
Media recovery complete.
SQL> alter database open read only;
Database altered.
观察从库的打开状态:
SQL> select name,open_mode,PROTECTION_MODE,DATABASE_ROLE from v$database;
NAME OPEN_MODE PROTECTION_MODE DATABASE_ROLE
--------- ---------- -------------------- ----------------
GE READ ONLY MAXIMUM PERFORMANCE PHYSICAL STANDBY
SQL> select * from test1;
no rows selected
9、主库上删除表test1
drop table test1;
alter system archive log current;
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
72
从库上的情况如下:
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
72
并且查看从数据库中是否还存在被删除的表test1
SQL> select * from test1;
select * from test1
*
ERROR at line 1:
ORA-00942: table or view does not exist
结论:在主库的表建表,数据增删改,删表,在从数据库中是始终保持一致的。