Oracle DG Linux平台逻辑Standby的创建实例

oracle,平台,linux,数据库,archive,sql

操作系统:linux redhat 4.7

Oracle: 10.2.0.1

主库:orcl_pd

备库:LGDG

一、逻辑Standby创建过程

1、创建物理Standby

具体的参考:

Oracle Data Guard Linux 平台 Physical Standby 搭建实例

简单的做如下几点提示:

(1)初始化参数配置

初始化参数的修改并不仅仅只是在待创建的Standby数据库端创建,当前的Primary数据库甚至同一个Data Guard配置中的其他Standby数据库的初始化参数都有可能需要进行修改。

对于Primary数据库,至少需要新增一个LOG_ARCHIVE_DEST_n参数,以发送REDO数据到新的Standby端,同时其他一些与Standby环境相关的参数也会涉及调整,如LOG_ARCHIVE_CONFIG及FAL_*等参数。

而对于现有的Standby数据库(如果有的话),主要是基于角色转换的考虑,有必要对一些参数提前进行设置,设置的参数对当前功能不会有任何影响或促进,如果确定不进行角色转换,那么同一个Data Guard配置中的其他Standby数据库初始化参数也可以不做任何调整。

(2)监听和NetService配置

建议用Net Manager 工具来配置,这样不容易出现错误。

(3)创建密钥文件

必须确保在同一个Data Guard环境中,所有数据库的SYS用户拥有相同密码,建议从其他服务器复制密钥文件到本地,然后按照密钥文件名的格式修改文件名即可。

注意Windows平台和Linux/UNIX平台下,密钥文件名的命名格式并不相同,Windows平台下密钥文件名格式为PWD[sid].ora,而Linux/UNIX平台下密钥文件名格式为orapw[sid],注意文件名的大小写哟。

2、Primary数据库生成数据字典

执行下列过程,生成LogMiner字典信息:

SQL> EXECUTE DBMS_LOGSTDBY.BUILD;

PL/SQL procedure successfully completed.

注意:在Primary生成数据字典前,一定要确保待转换的物理Standby数据库已经停止REDO应用。如果已经启用了REDO应用,执行下列语句停止REDO应用:

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

Database altered.

控制文件中记录了日志文件的应用状态,正常情况下一个日志文件只会被应用一次,如果Primary生成的数据字典信息被物理Standby数据库应用了,等该物理Standby转换成逻辑Standby数据库时(不应用数据字典不代表就不能执行转换哟)就不会再应用这些文件,自然也没有Primary数据库对象的元数据,这可能会导致这部分对象的修改不能被逻辑Standby正常应用。

我们操作的根本目的是为了让逻辑Standby能够应用到这部分数据字典信息,只要能够实现这一点,是否暂停REDO应用或什么时间暂停REDO应用就无所谓了。这也我们理解另外一个问题,如果Primary生成LogMiner字典信息时,待转换的物理Standby数据库没有暂停REDO应用怎么办?好办,马上暂停REDO应用,然后Primary数据库重新生成一下LogMiner字典信息就是。

3、转换物理Standby为逻辑Standby

执行下列语句,转换物理Standby为逻辑Standby:

SQL> SHOW PARAMETER DB_NAME

NAME         TYPE        VALUE

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

db_name        string      orcl

SQL> ALTER DATABASE RECOVER TO LOGICAL STANDBY LGDG;

Database altered.

执行完该语句之后,关闭数据库并重新启动到MOUNT状态:

SQL> SHUTDOWN IMMEDIATE

ORA-01507: database not mounted

ORACLE instance shut down.

SQL>  STARTUP MOUNT;

ORACLE instance started.

Total System Global Area  167772160 bytes

Fixed Size                  1218316 bytes

Variable Size              79694068 bytes

Database Buffers           83886080 bytes

Redo Buffers                2973696 bytes

Database mounted.

为什么要重启?因为上述操作涉及逻辑Standby数据库更名,包括DBID、INCARNATION等均已被重新初始化。

再次查看DB_NAME参数和数据库角色:

SQL> SHOW PARAMETER DB_NAME;

NAME               TYPE        VALUE

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

db_name             string      LGDG

SQL> SELECT DATABASE_ROLE FROM V$DATABASE;

DATABASE_ROLE

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

LOGICAL STANDBY

现在DB_NAME和数据库的角色都已经被修改。

4、调整逻辑Standby数据库初始化参数

设置重做日志文件路径,将本地生成的归档文件和Primary数据库发送来的归档文件分开,存放到不同目录内,注意归档文件路径不要冲突,修改参数如下:

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/u01/archive VALID_FOR=(ONLINE_LOGFILES, ALL_ROLES) DB_UNIQUE_NAME=LGDG';    # LGDG 是在tnsnames.ora 中配置的

System altered.

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_3='LOCATION=/u01/std

VALID_FOR=(STANDBY_LOGFILES, STANDBY_ROLE) DB_UNIQUE_NAME=LGDG';

System altered.

5、打开逻辑Standby

由于逻辑Standby与Primary数据库事务并不一致,因此第一次打开时必须指定RESETLOGS子句,执行语句如下:

SQL> ALTER DATABASE OPEN RESETLOGS;

Database altered.

然后执行下列SQL命令开始应用REDO数据:

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY ;

Database altered.

如果要启用实时应用,建议首先创建Standby Redologs,例如,为该逻辑Standby创建几组Standby Redologs:

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 '/u01/app/oracle/oradata/orcl/redo04.log' SIZE 50m;

Database altered.

重新执行启动REDO应用的命令,附加APPLY IMMEDIATE子句,以打开实时应用(由于当前REDO应用已经启动,因此我们首先停止REDO应用):

SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;

Database altered.

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

Database altered.

6、验证环境

所有配置完成,接下来尝试在Primary数据库端执行修改操作,看看是否能够分别在逻辑Standby和物理Standby端应用。

首先在Primary数据库端执行下列语句,向tmp1表插入一条新记录并提交:

SQL> insert into scott.dept values(1,'dave','dmm');

1 row created.

SQL> commit;

Commit complete.

SQL> alter system switch logfile;

System altered.

接下来看看逻辑Standby的同步情况:

SQL> select * from scott.dept;

时间: 2024-12-03 05:06:57

Oracle DG Linux平台逻辑Standby的创建实例的相关文章

Oracle DG Linux平台物理Standby搭建实例

Oracle Data Guard Linux 平台 Physical Standby 搭建实例 Data Guard 环境: 操作系统: redhat 4.7 Primary数据库: IP地址:10.85.10.1. 数据库SID:orcl DB_UNIQUE_NAME:orcl_pd Standby数据库: IP地址:10.85.10.2 数据库SID:orcl. DB_UNIQUE_NAME:orcl_st 一.rimary 端的配置 1.  主库设置为force logging 模式 S

Oracle DG 逻辑Standby的创建说明

一.逻辑Standby的准备工作 1.确认操作的对象和语句是否能被逻辑Standby支持 由于逻辑Standby是通过SQL应用来保持与Primary数据库的同步.SQL应用与REDO应用是有很大的区别,REDO应用实际上是在物理Standby端进行RECOVER:SQL应用则是分析重做日志文件中的REDO信息,并将其转换为SQL语句,在逻辑Standby端执行,因此,需要注意以下几点: (1)并非所有的数据类型都能被逻辑Standby支持, 逻辑Standby支持的数据类型有: BINARY_

Oracle DG 管理影响物理Standby的主库事件

多数情况下,Primary数据库的修改会随着REDO数据传播到物理Standby数据库端并被应用,不需要在物理Standby端做额外的操作,不过根据实际配置的不同,也会有例外,有些操作不是没有被传播到Standby端,而是传播过去了,但不能正确执行,其中最常见的就是对表空间和日志文件的管理操作,下面通过实例逐一进行说明. 1.创建表空间或数据文件 初始化参数STANDBY_FILE_MANAGEMENT用来控制是否自动将Primary数据库增加表空间或数据文件的改动,传播到物理Standby数据

Oracle Arraysize设置对于逻辑读的影响实例分析_oracle

当执行一条SQL查询的时候,为了获得满足的数据,查询在这个过程中完成解析,绑定,执行和提取数据等一系列步骤,这些步骤都是单独执行的,满足条件的数据行必须由数据库返回给应用:对于任何大小的结果集,需要返回的数据行很可能不是在一次往返调用过程中传递给应用的! 每次调用过程中,数据库与客户端之间的往返回路数将一定层次上影响总的响应时间,其中除了提取数据(FETCH)步骤,其余步骤(解析,绑定,执行)都只执行一次,这也是必要的,Oracle需要获得满足查询条件的所有数据结果从而执行多次提取操作. 关于提

Oracle DG 修改逻辑Standby端数据

相对物理Standby,逻辑Standby的管理要复杂一点点.这个就是管理一个半数据库和管理两个数据库的差异(假设Data Guard环境为一主一备的情况下),毕竟逻辑Standby只是逻辑上,仿佛与Primary数据库一致,其实它是一个独立运行的,甚至可能与Primary数据库完全不同的数据库系统,对于这种配置环境,管理上多花点工夫想想也是应该的. 1.指定对象跳过应用 在默认情况下,接收自Primary的REDO数据中,所有能够被逻辑Standby数据库支持的操作都会在逻辑Standby端执

Oracle DG 物理Standby环境搭建

Oracle Data Guard, 分逻辑Standby和物理Standby. 下面讲的是物理Standby环境的搭建步骤. 一.启用Force Logging 将Primary数据库置为Force Logging模式.通过下列语句: 查看状态: SQL> SELECT DATABASE_ROLE,FORCE_LOGGING FROM V$DATABASE; DATABASE_ROLE    FORCE_LOGGING ----------------  --------------- PRI

Oracle DG 物理Standby的创建步骤

一.创建备份 物理Standby数据库相当于Primary数据库在某个时间点的镜像复制,因此在创建物理Standby数据库之前,至少要有一份Primary数据库的完整备份. Oracle建议使用RMAN创建备份集,不过如果数据库规模不是太大,我个人更倾向于通过用户管理的方式创建备份集. 创建备份有三种方式: 1. RMAN 备份与恢复 -- 不需要shutdown 数据库 备份: $ rman target / RMAN> backup full format 'D:/FULL_%d_%T_%s

Oracle DG 逻辑Standby数据同步性能优化

1.调整APPLIER进程数 APPLIER进程就是执行应用操作的进程.在默认情况下逻辑Standby会启动5个APPLIER进程,如果日志应用任务繁重(或者说Primary数据库修改量较大),则适当多启动几个APPLIER进程有助于提高应用的效率. 先查看当前空闲的APPLIER进程数: SQL> SELECT COUNT(*) AS IDLE_APPLIER FROM V$LOGSTDBY_PROCESS WHERE TYPE = 'APPLIER' and status_code = 16

Oracle DG 逻辑Standby的相关视图管理

1.DBA_LOGSTDBY_EVENTS 可以把该视图看成逻辑Standby操作日志,因此如果发生了错误,可以通过该视图查看近期逻辑Standby都做了些什么.默认情况下,该视图只保留最近100条事件的记录(可以通过相关过程修改保存的记录条数). 例如: SQL> SELECT EVENT_TIME,STATUS,EVENT FROM DBA_LOGSTDBY_EVENTS ORDER BY EVENT_TIMESTAMP; EVENT_TIM STATUS