[Oracle][DATAGUARD] 关于确认LOGICAL STANDBY的同期状况的方法
Oracle的DATAGUARD环境,有PHYSICAL STANDBY和LOGICAL STANDBY两种。
PHYSICAL STANDBY是传输REDO传到Standby端,然后由Standby端的MRP进程应用该Redo,以达到同期效果。
LOGICAL STANDBY是传输REDO传到Standby端,然后由Standby端的LSP进程调用LogMiner来抽取SQL文,然后执行该SQL文以达到同期效果。
这里介绍一个简单的确认同期状况的方法:
ODM TEST CASE
===================
Name = TC#1010_1
####Primary####
SQL> set line 300
SQL> select database_role,OPEN_MODE from v$database;
select instance_name,status from v$instance;
DATABASE_ROLE OPEN_MODE
------------------------------------------------ ------------------------------------------------------------
PRIMARY READ WRITE
SQL>
INSTANCE_NAME STATUS
------------------------------------------------ ------------------------------------
orcl OPEN
SQL> create user USER_A identified by USER_A;
ユーザーが作成されました。
SQL> grant dba to USER_A;
権限付与が成功しました。
SQL> conn USER_A/USER_A
接続されました。
SQL> create table TBL_DGTEST(
id char(8),
USER_NAME varchar2(250)); 2 3
表が作成されました。
SQL> declare
vID char(8);
vText varchar2(250);
begin
dbms_random.seed(uid);
for i in 1..1000000
loop
vID := to_char(i, 'FM00000000');
vText := dbms_random.string('x', 16);
insert into TBL_DGTEST (id, USER_NAME) values (vID, vText);
if (mod(i, 100) = 0) then
commit;
end if;
end loop;
commit;
end;
/ 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
PL/SQLプロシージャが正常に完了しました。
SQL> select count(*) from TBL_DGTEST;
COUNT(*)
----------
1000000
SQL>
####Standby####
SQL> set line 300
SQL> select database_role,OPEN_MODE from v$database;
select instance_name,status from v$instance;
DATABASE_ROLE OPEN_MODE
------------------------------------------------ ------------------------------------------------------------
LOGICAL STANDBY READ WRITE ★LOGICAL STANDBY
SQL>
INSTANCE_NAME STATUS
------------------------------------------------ ------------------------------------
orcls OPEN
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE; ★Begin applying sql
データベースが変更されました。
SQL> conn USER_A/USER_A
接続されました。
SQL> select count(*) from TBL_DGTEST;
COUNT(*)
----------
1000000 ★
SQL>
ODM TEST CASE
===================
Name = TC#1010_2
####On Primary,insert 1000000 rows into TBL_DGTEST####
SQL> SELECT THREAD#, SEQUENCE# FROM V$LOG WHERE STATUS='CURRENT'; ★You will check that SEQUENCE# was growing
THREAD# SEQUENCE#
---------- ----------
1 96
SQL> SELECT THREAD#, SEQUENCE# FROM V$LOG WHERE STATUS='CURRENT'; ★
THREAD# SEQUENCE#
---------- ----------
1 101
SQL> SELECT THREAD#, SEQUENCE# FROM V$LOG WHERE STATUS='CURRENT'; ★
THREAD# SEQUENCE#
---------- ----------
1 102
####Use DBA_LOGSTDBY_LOG to moniter sql application on Standby####
SQL> SELECT SEQUENCE#,FIRST_CHANGE#,NEXT_CHANGE#,TIMESTAMP,APPLIED FROM DBA_LOGSTDBY_LOG;
SEQUENCE# FIRST_CHANGE# NEXT_CHANGE# TIMESTAMP APPLIED
---------- ------------- ------------ ------------------- ------------------------
73 756171 757560 2017-03-01 20:29:55 YES
<省略>
92 827738 833358 2017-09-28 14:20:09 YES
93 833358 834365 2017-09-28 14:57:39 CURRENT ★93
94 834365 834411 2017-09-28 14:57:39 NO
SEQUENCE# FIRST_CHANGE# NEXT_CHANGE# TIMESTAMP APPLIED
---------- ------------- ------------ ------------------- ------------------------
95 834411 834994 2017-09-28 14:57:40 NO
96 834994 837710 2017-09-28 15:01:28 NO
97 837710 840227 2017-09-28 15:02:06 NO
98 840227 842731 2017-09-28 15:02:39 NO
99 842731 845235 2017-09-28 15:03:16 NO
100 845235 847751 2017-09-28 15:03:49 NO
101 847751 850377 2017-09-28 15:04:27 NO
29行が選択されました。
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE; ★begin SQL application
データベースが変更されました。
SQL> SELECT SEQUENCE#,FIRST_CHANGE#,NEXT_CHANGE#,TIMESTAMP,APPLIED FROM DBA_LOGSTDBY_LOG;
SEQUENCE# FIRST_CHANGE# NEXT_CHANGE# TIMESTAMP APPLIED
---------- ------------- ------------ ------------------- ------------------------
73 756171 757560 2017-03-01 20:29:55 YES
<省略>
92 827738 833358 2017-09-28 14:20:09 YES
93 833358 834365 2017-09-28 14:57:39 YES ★SQL application was over
94 834365 834411 2017-09-28 14:57:39 YES ★SQL application was over
SEQUENCE# FIRST_CHANGE# NEXT_CHANGE# TIMESTAMP APPLIED
---------- ------------- ------------ ------------------- ------------------------
95 834411 834994 2017-09-28 14:57:40 YES ★SQL application was over
96 834994 837710 2017-09-28 15:01:28 YES ★SQL application was over
97 837710 840227 2017-09-28 15:02:06 CURRENT ★SQL application is on going
98 840227 842731 2017-09-28 15:02:39 CURRENT ★SQL application is on going
99 842731 845235 2017-09-28 15:03:16 NO ★SQL application is in line
100 845235 847751 2017-09-28 15:03:49 NO ★
101 847751 850377 2017-09-28 15:04:27 NO ★
29行が選択されました。
SQL> /
SEQUENCE# FIRST_CHANGE# NEXT_CHANGE# TIMESTAMP APPLIED
---------- ------------- ------------ ------------------- ------------------------
73 756171 757560 2017-03-01 20:29:55 YES
<省略>
92 827738 833358 2017-09-28 14:20:09 YES
93 833358 834365 2017-09-28 14:57:39 YES
94 834365 834411 2017-09-28 14:57:39 YES
SEQUENCE# FIRST_CHANGE# NEXT_CHANGE# TIMESTAMP APPLIED
---------- ------------- ------------ ------------------- ------------------------
95 834411 834994 2017-09-28 14:57:40 YES
96 834994 837710 2017-09-28 15:01:28 YES
97 837710 840227 2017-09-28 15:02:06 YES
98 840227 842731 2017-09-28 15:02:39 YES
99 842731 845235 2017-09-28 15:03:16 CURRENT ★SQL application is on going
100 845235 847751 2017-09-28 15:03:49 CURRENT ★SQL application is on going
101 847751 850377 2017-09-28 15:04:27 NO
29行が選択されました。
SQL> /
SEQUENCE# FIRST_CHANGE# NEXT_CHANGE# TIMESTAMP APPLIED
---------- ------------- ------------ ------------------- ------------------------
73 756171 757560 2017-03-01 20:29:55 YES
<省略>
92 827738 833358 2017-09-28 14:20:09 YES
93 833358 834365 2017-09-28 14:57:39 YES
94 834365 834411 2017-09-28 14:57:39 YES
SEQUENCE# FIRST_CHANGE# NEXT_CHANGE# TIMESTAMP APPLIED
---------- ------------- ------------ ------------------- ------------------------
95 834411 834994 2017-09-28 14:57:40 YES
96 834994 837710 2017-09-28 15:01:28 YES
97 837710 840227 2017-09-28 15:02:06 YES
98 840227 842731 2017-09-28 15:02:39 YES
99 842731 845235 2017-09-28 15:03:16 YES
100 845235 847751 2017-09-28 15:03:49 CURRENT ★SQL application is on going
101 847751 850377 2017-09-28 15:04:27 CURRENT ★SQL application is on going
29行が選択されました。
SQL> /
SEQUENCE# FIRST_CHANGE# NEXT_CHANGE# TIMESTAMP APPLIED
---------- ------------- ------------ ------------------- ------------------------
73 756171 757560 2017-03-01 20:29:55 YES
<省略>
92 827738 833358 2017-09-28 14:20:09 YES
93 833358 834365 2017-09-28 14:57:39 YES
94 834365 834411 2017-09-28 14:57:39 YES
SEQUENCE# FIRST_CHANGE# NEXT_CHANGE# TIMESTAMP APPLIED
---------- ------------- ------------ ------------------- ------------------------
95 834411 834994 2017-09-28 14:57:40 YES
96 834994 837710 2017-09-28 15:01:28 YES
97 837710 840227 2017-09-28 15:02:06 YES
98 840227 842731 2017-09-28 15:02:39 YES
99 842731 845235 2017-09-28 15:03:16 YES
100 845235 847751 2017-09-28 15:03:49 YES ★SQL application was over
101 847751 850377 2017-09-28 15:04:27 YES ★SQL application was over
29行が選択されました。
SQL>
[Oracle][DATAGUARD] 关于确认LOGICAL STANDBY的同期状况的方法的更多相关文章
- [Oracle][DATAGUARD] 关于确认PHYSICAL STANDBY的同期状况的方法
补上简单的确认PHYSICAL STANDBY的同期状况的方法: ODM TEST CASE===================Name = TC#1010_3 ####Primary#### SQ ...
- [Oracle][DATAGUARD] LOGICAL STANDBY环境里,有些SEQUENCE无法应用,导致Primary和Standby无法同期
今天遇到了一个客户,问题是这样的,客户构筑了一个RACtoRAC的 LOGICAL STANDBY环境.并用EM在监视同期情况,发现EM页面上55115和55116这两个SEQUENCE一直在应用. ...
- Oracle Dataguard之物理standby的基本配置
尽管网上有很多Oracle Dataguard的配置教程,但不难发现,很多采用的是rman duplicate这种方法,尽管此种方法较为简便.但在某种程度上,却也误导了初学者,虽说也能配置成功,但只知 ...
- Oracle DataGuard 物理Standby 搭建(上)
物理standby database 环境搭建 Arch asysnc Oracle Dataguard host IP Oracle_sid DB_unique_name FAL_server FA ...
- Oracle DG故障诊断一则:alter database recover to logical standby new_logical_dbname卡住
我们在基于物理standby的基础上搭建逻辑备库过程过程中,在运行: alter database recover to logical standby READDB; 卡住不动,而且alert也没有 ...
- DataGuard相同SID物理Standby搭建
Oracle Data Guard 是针对企业数据库的最有效和最全面的数据可用性.数据保护和灾难恢复解决方案.它提供管理.监视和自动化软件基础架构来创建和维护一个或多个同步备用数据库,从而保护数据不受 ...
- Oracle Dataguard 介绍
Oracle DataGuard介绍 一. DataGuard的基本原理 当某次事务处理对生产数据库中的数据作出更改时,Oracle数据库将在一个联机重做日志文件里记录此次更改.在DataGuard中 ...
- Oracle DataGuard 升级 [11.2.0.1 -> 11.2.0.4]
Oracle DataGuard 升级 [11.2.0.1 -> 11.2.0.4] Primary: 11.2.0.1 单机,Site A. Standby: 11.2.0.1 单机,Site ...
- oracle dataguard主从切换
前言: 众所周知DataGuard一般的切换分成两种,一种是系统正常的情况下的切换这种方式为:switchover是无损切换,不会丢失数据:另外一种方式属于灾难情况下的切换,这种情况下一般主库已经启动 ...
随机推荐
- Python day 03
dya 03 今日内容 整形 布尔类型 字符串 补充 运算符补充 in value = '我是中国人' # 判断'中国'是否是value所代指的字符串的子序列. v1 = '中国' in value ...
- 某大公司的sql面试题
问:关系模式:User(userId, userName), Article(articleId, userId, title, content),Vote(articleId, score),U ...
- Python内置进制转换函数(实现16进制和ASCII转换)
在进行wireshark抓包时你会发现底端窗口报文内容左边是十六进制数字,右边是每两个十六进制转换的ASCII字符,这里使用Python代码实现一个十六进制和ASCII的转换方法. hex() 转换一 ...
- windows10下配置环境变量
环境变量 -> 系统变量中: 新建变量JAVA_HOME,值:jdk的安装路径 新建变量CLASSPATH,值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\ ...
- win10 开机自启指定软件
开机自启 %programdata%\Microsoft\Windows\Start Menu\Programs\StartUp
- ProtoType原型和__Proto__原型链的详解
var arr = new Array(12,13,14,15,16,17,18); var arr2 = new Array(12,13); arr.sun=function(){ //用原型加Ar ...
- @resource、@Autowired、@Service在一个接口多个实现类中的应用
Spring在没有引入注解之前,传统的Spring做法是使用.xml文件来对bean进行注入,所有的内容都需要配置在.xml文件中,使配置和编程分离,却增加了可读性和复杂度. Spring注解将复杂的 ...
- (js) 字符串和数组的常用方法
JS中字符串和数组的常用方法 JS中字符串和数组的常用方法 js中字符串常用方法 查找字符串 根据索引值查找字符串的值 根据字符值查找索引值 截取字符串的方法 字符串替换 字符串的遍历查找 字符串转化 ...
- 剑指offer 10:矩形覆盖
题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? public class Solution { public ...
- 7_linux用户及权限(2)和管理
useradd:useradd [options] USERNAME -u UID -g GID(基本组) -G GID,...(附加组) //省略号表示可以有多个,彼此之间用逗号隔开 -c &quo ...