dataguard 主库DML等SQl操作迅速在备库应用
2017-12-31 19:22
162 查看
概述:如何使得主库的DML等SQL操作能够立即在备库等到应用?oracle dataguard 按照官方文档刚刚搭建完成备库应用的是归档日志文件也就是需要主库触发日志文件归档后才能够使得备库和主库同步,这样主备库就会存在误差,而11g开始备库是可以作为查询供业务使用的,这样就会导致如果读写分离的情况下,备库查询数据将会比主库慢而导致查询结果的不准确;本文就对主备库的实时查询等功能就行测试;
实验步骤:
1、主备库添加redo standby 日志
2、开启实时接收日志应用
3、测试
实验:
主库新建表:
[root@cube ~]# su - oracle
[oracle@cube ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Sun Dec 31 16:35:05 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> grant connect,resource to cube identified by cube ;
Grant succeeded.
SQL> conn / as sysdba
Connected.
SQL> create table cube.cube1 as select * from scott.emp;
Table created.
SQL> conn cube/cube
Connected.
Connected.
SQL> select count(*) from cube1;
COUNT(*)
----------
14
备库查询:
[oracle@jakki ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Sun Dec 31 16:39:50 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select count(*) from cube.cube1;
select count(*) from cube.cube1
*
ERROR at line 1:
ORA-00942: table or view does not exist
主备切换日志或者归档当前日志:
SQL> conn / as sysdba
Connected.
SQL> alter system switch logfile; 或者 alter system archive log current;
System altered.、
备库再次查询:
SQL> select count(*) from cube.cube1;
COUNT(*)
----------
14
添加standby logfile,如果只是为了使得备库能够实时应用而不考虑后期一旦主库变为备库的实时应用的话 可以只在备库添加standby logfile; 一般添加standby logfile文件的大小跟redo log文件的大小相同,组数比redo log多一组。
建议主备库都添加吧。
主库:
SQL> col member for a60
SQL> select f.member,l.bytes/1024/1024 from v$log l,v$logfile f where l.group#=f.group#;
MEMBER L.BYTES/1024/1024
------------------------------------------------------------ -----------------
/u01/app/oracle/oradata/CUBE/redo03.log 50
/u01/app/oracle/oradata/CUBE/redo02.log 50
/u01/app/oracle/oradata/CUBE/redo01.log 50
SQL> alter database add standby logfile '/u01/app/oracle/oradata/CUBE/redo04.log' size 50M;
Database altered.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/CUBE/redo05.log' size 50M;
Database altered.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/CUBE/redo06.log' size 50M;
Database altered.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/CUBE/redo07.log' size 50M;
Database altered.
备库:
SQL> recover managed standby database cancel;
Media recovery complete.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/JAKKI/redo05.log' size 50M;
Database altered.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/JAKKI/redo04.log' size 50M;
Database altered.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/JAKKI/redo06.log' size 50M;
Database altered.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/JAKKI/redo07.log' size 50M;
Database altered.
备库开启实时应用:
SQL> recover managed standby database using current logfile disconnect;
Media recovery complete.
主库创建一张表并且插入数据commit,查看归档日志保证没有使用归档应用。
SQL> select group#,thread#,status from v$log;
GROUP# THREAD# STATUS
---------- ---------- --------------------------------
1 1 ACTIVE
2 1 CURRENT
3 1 INACTIVE
SQL> create table cube.t1 (id number);
Table created.
备库查看:
SQL> select * from cube.t1;
no rows selected
主库插入一行数据提交
SQL> insert into cube.t1 values (1);
1 row created.
SQL> commit;
Commit complete.
SQL> select group#,thread#,status from v$log;
GROUP# THREAD# STATUS
---------- ---------- --------------------------------
1 1 ACTIVE
2 1 CURRENT
3 1 INACTIVE
备库查看:
select * from cube.t1;
ID
----------
1
至此实时应用的实验完成,上面测试了ddl 创建一张表以及dml 插入一条语句,其他测试请自行测试
总结:11g的实时adg功能可以使得业务读写分离,减轻了主库的查询压力,新功能可以多行测试后可以推广到日常的业务应用中。话说12C的ADG 将变得更加牛逼备库支持DML操作了。
实验步骤:
1、主备库添加redo standby 日志
2、开启实时接收日志应用
3、测试
实验:
主库新建表:
[root@cube ~]# su - oracle
[oracle@cube ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Sun Dec 31 16:35:05 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> grant connect,resource to cube identified by cube ;
Grant succeeded.
SQL> conn / as sysdba
Connected.
SQL> create table cube.cube1 as select * from scott.emp;
Table created.
SQL> conn cube/cube
Connected.
Connected.
SQL> select count(*) from cube1;
COUNT(*)
----------
14
备库查询:
[oracle@jakki ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Sun Dec 31 16:39:50 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select count(*) from cube.cube1;
select count(*) from cube.cube1
*
ERROR at line 1:
ORA-00942: table or view does not exist
主备切换日志或者归档当前日志:
SQL> conn / as sysdba
Connected.
SQL> alter system switch logfile; 或者 alter system archive log current;
System altered.、
备库再次查询:
SQL> select count(*) from cube.cube1;
COUNT(*)
----------
14
添加standby logfile,如果只是为了使得备库能够实时应用而不考虑后期一旦主库变为备库的实时应用的话 可以只在备库添加standby logfile; 一般添加standby logfile文件的大小跟redo log文件的大小相同,组数比redo log多一组。
建议主备库都添加吧。
主库:
SQL> col member for a60
SQL> select f.member,l.bytes/1024/1024 from v$log l,v$logfile f where l.group#=f.group#;
MEMBER L.BYTES/1024/1024
------------------------------------------------------------ -----------------
/u01/app/oracle/oradata/CUBE/redo03.log 50
/u01/app/oracle/oradata/CUBE/redo02.log 50
/u01/app/oracle/oradata/CUBE/redo01.log 50
SQL> alter database add standby logfile '/u01/app/oracle/oradata/CUBE/redo04.log' size 50M;
Database altered.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/CUBE/redo05.log' size 50M;
Database altered.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/CUBE/redo06.log' size 50M;
Database altered.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/CUBE/redo07.log' size 50M;
Database altered.
备库:
SQL> recover managed standby database cancel;
Media recovery complete.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/JAKKI/redo05.log' size 50M;
Database altered.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/JAKKI/redo04.log' size 50M;
Database altered.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/JAKKI/redo06.log' size 50M;
Database altered.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/JAKKI/redo07.log' size 50M;
Database altered.
备库开启实时应用:
SQL> recover managed standby database using current logfile disconnect;
Media recovery complete.
主库创建一张表并且插入数据commit,查看归档日志保证没有使用归档应用。
SQL> select group#,thread#,status from v$log;
GROUP# THREAD# STATUS
---------- ---------- --------------------------------
1 1 ACTIVE
2 1 CURRENT
3 1 INACTIVE
SQL> create table cube.t1 (id number);
Table created.
备库查看:
SQL> select * from cube.t1;
no rows selected
主库插入一行数据提交
SQL> insert into cube.t1 values (1);
1 row created.
SQL> commit;
Commit complete.
SQL> select group#,thread#,status from v$log;
GROUP# THREAD# STATUS
---------- ---------- --------------------------------
1 1 ACTIVE
2 1 CURRENT
3 1 INACTIVE
备库查看:
select * from cube.t1;
ID
----------
1
至此实时应用的实验完成,上面测试了ddl 创建一张表以及dml 插入一条语句,其他测试请自行测试
总结:11g的实时adg功能可以使得业务读写分离,减轻了主库的查询压力,新功能可以多行测试后可以推广到日常的业务应用中。话说12C的ADG 将变得更加牛逼备库支持DML操作了。
相关文章推荐
- Hadoop Hive基础SQL语法(DML 操作:元数据存储)
- Sql Server之旅——第十站 看看DML操作对索引的影响
- SQL应用与开发:(七)数据操作 · 查 · (二)高级型
- 9i新特性之Flashback Query的应用--针对DML误操作的恢复(2)(zz)
- 二、sql命令 DDL (结构化操作)、sql名 DML操作 (增 删 改 查)
- 9i新特性之backQuery的应用-------------针对DML误操作的恢复(1)
- 9i新特性之backQuery的应用-------------针对DML误操作的恢复(2)
- 9i新特性之Flashback Query的应用----针对DML误操作的恢复(1)ZZ
- SQL数据层面操作(DML)
- Sql Server之旅——第十站 看看DML操作对索引的影响
- 008-Hadoop Hive sql语法详解3-DML 操作:元数据存储
- SQL数据层面操作(DML)
- PL/SQL“ ORA-14551: 无法在查询中执行 DML 操作”解决
- C#连接数据库最基本操作之sql语句 DML
- Hive DDL DML及SQL操作
- Hadoop Hive sql语法详解3--DML 操作:元数据存储
- ORACLE SQL总结二:集合操作符合和DML语句
- SQL应用与开发:(七)数据操作 · 查 · (三)使用子查询访问和修改数据
- Hadoop Hive sql语法详解3--DML 操作:元数据存储
- SQL应用与开发:(三)数据操作 · 改 AND 删