2013年(350)
分类: Oracle
2013-04-24 16:43:03
逻辑standby
1、接收到的归档文件
前章曾经提到,逻辑standby应用完归档后会自动删除该归档文件,该特性你如果觉着不爽,没关系,执行下面这个过程,屏蔽掉它:
JSSLDG2> EXECUTE DBMS_LOGSTDBY.APPLY_SET('LOG_AUTO_DELETE', FALSE);
提示:这种操作并非毫无意义,比如说逻辑standby打开了flashback database,那如果你想恢复到之前的某个时间点,然后再接着应用,就必须要有该时间点后对应的归档,假如LOG_AUTO_DELETE为TRUE的话,显然应用过的归档就不存在了,想回都回不去。
2、启动实时应用
默认情况下,log应用服务会等待单个归档文件全部接收之后再启动应用(在前面redo传输服务中我们介绍了不同形式的传输方式),如果standby端使用了standby redologs,就可以打开实时应用(real-time apply),这样dg就不需要再等待接收完归档文件,只要rfs将redo数据写入standby redologs,即可通过MRP/LSP实时写向standby,这样就可以尽可能保持standby与primary的同步。
要启动逻辑standby的实时应用,只需要在启动逻辑standby应用时加上immediate子句即可,前面我们已经无数次的演练过,例如:
JSSLDG2> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;
3、定义DBA_LOGSTDBY_EVENTS视图中事件记录的相关参数。
Dba_logstdby_events视图前面刚讲过,里面记录了逻辑standby的一些操作事件,如果你希望修改该视图中记录的事件信息的话,可以通过下列的方式:
例如,希望该视图能够保留最近999条事件,可以通过执行下列语句:
JSSLDG2> select *from v$logstdby_stats where name='maximum events recorded';
NAME VALUE
---------------------------------------------------------------- ---------------
maximum events recorded 100
JSSLDG2> alter database stop logical standby apply;
已更改。
JSSLDG2> execute dbms_logstdby.apply_set('max_events_recorded','999');
PL/SQL 过程已成功完成。
JSSLDG2> alter database start logical standby apply immediate;
数据库已更改。
JSSLDG2> select *from v$logstdby_stats where name='maximum events recorded';
NAME VALUE
---------------------------------------------------------------- ---------------
maximum events recorded 999
再比如,你如果想在视图中记录ddl操作的信息,可以通过执行下列语句:
JSSLDG2> execute dbms_logstdby.apply_set('RECORD_APPLIED_DDL','TRUE');
4、指定对象跳过应用,请用DBMS_LOGSTDBY.SKIP
默认情况下,接收自primary的redo数据中,所有能够被standby支持的操作都会在逻辑standby端执行,如果你希望跳过对某些对象的某些操作的话,DBMS_LOGSTDBY.SKIP就能被派上用场了。
先来看看dbms_logstdby.skip的语法:
DBMS_LOGSTDBY.SKIP (
stmt IN VARCHAR2,
schema_name IN VARCHAR2 DEFAULT NULL,
object_name IN VARCHAR2 DEFAULT NULL,
proc_name IN VARCHAR2 DEFAULT NULL,
use_like IN BOOLEAN DEFAULT TRUE,
esc IN CHAR1 DEFAULT NULL);
除stmt外,其它都是可选参数,并且看字面意义就能明白其所指,下面简单描述一下stmt参数调用的关键字都是指定值,详细见下列:
STMT关键字 |
包含的操作 |
NON_SCHEMA_DDL |
不属于模式对象的所有其它ddl操作 |
提示:使用该关键字时,SCHEMA_NAME和OBJECT_NAME两参数也必须指定。 |
|
SCHEMA_DDL |
创建修改删除模式对象的所有ddl操作 (例如: tables, indexes, and columns) |
提示:使用该关键字时,SCHEMA_NAME和OBJECT_NAME两参数也必须指定。 |
|
DML |
Includes DML statements on a table (for example: INSERT, UPDATE, and DELETE) |
CLUSTER |
AUDIT CLUSTER CREATE CLUSTER DROP CLUSTER TRUNCATE CLUSTER |
CONTEXT |
CREATE CONTEXT DROP CONTEXT |
DATABASE LINK |
CREATE DATABASE LINK CREATE PUBLIC DATABASE LINK DROP DATABASE LINK DROP PUBLIC DATABASE LINK |
DIMENSION |
ALTER DIMENSION CREATE DIMENSION DROP DIMENSION |
DIRECTORY |
CREATE DIRECTORY DROP DIRECTORY
|
INDEX |
ALTER INDEX CREATE INDEX DROP INDEX
|
PROCEDURE |
ALTER FUNCTION ALTER PACKAGE ALTER PACKAGE BODY ALTER PROCEDURE CREATE FUNCTION CREATE LIBRARY CREATE PACKAGE CREATE PACKAGE BODY CREATE PROCEDURE DROP FUNCTION DROP LIBRARY DROP PACKAGE DROP PACKAGE BODY DROP PROCEDURE |
PROFILE |
ALTER PROFILE CREATE PROFILE DROP PROFILE |
ROLE |
ALTER ROLE CREATE ROLE DROP ROLE SET ROLE |
ROLLBACK STATEMENT |
ALTER ROLLBACK SEGMENT CREATE ROLLBACK SEGMENT DROP ROLLBACK SEGMENT |
SEQUENCE |
ALTER SEQUENCE CREATE SEQUENCE DROP SEQUENCE |
SYNONYM |
CREATE PUBLIC SYNONYM CREATE SYNONYM DROP PUBLIC SYNONYM DROP SYNONYM |
TABLE |
ALTER TABLE CREATE TABLE DROP TABLE |
TABLESPACE |
CREATE TABLESPACE DROP TABLESPACE TRUNCATE TABLESPACE |
TRIGGER |
ALTER TRIGGER CREATE TRIGGER DISABLE ALL TRIGGERS DISABLE TRIGGER DROP TRIGGER ENABLE ALL TRIGGERS ENABLE TRIGGER |
TYPE |
ALTER TYPE ALTER TYPE BODY CREATE TYPE CREATE TYPE BODY DROP TYPE DROP TYPE BODY |
USER |
ALTER USER CREATE USER DROP USER |
VIEW |
CREATE VIEW DROP VIEW |
字数受限,详细请查看: