搭建逻辑备库

1. 搭建物理备库

2. 在物理备库上停止重做应用,如果备库是RAC,则必须停止所有执行以下语句以外的实例

SQL> alter database recover managed standby database cancel;

Database altered.

3. 为角色转换准备主库

这一步仅在执行切换时有用

修改初始化参数:

alter system set LOG_ARCHIVE_DEST_1=‘LOCATION=/oradata/arch/ VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=primary‘ scope=spfile;

alter system set LOG_ARCHIVE_DEST_3=‘LOCATION=/oradata/logiclarch/ VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=primary‘ scope=spfile;

alter system set LOG_ARCHIVE_DEST_STATE_3=ENABLE;

参数介绍


primary库运行在主角色


primary库运行在逻辑备角色


LOG_ARCHIVE_DEST_1


归档主库在线日志文件的路径


归档逻辑备库在线日志的路径


LOG_ARCHIVE_DEST_3


不起作用


归档从主库接受的redo到本地的路径

4. 在重做数据中创logminer字典

SQL> execute dbms_logstdby.build;

PL/SQL procedure successfully completed.

注:在11g r2以后补充日志在物理备库中自动开启,如果数据库版本是11.2之前的,或者是由之前的版本升级到11.2以后,执行以下语句开启补充日志

sql>  alter database add supplemental log data (primary key, unique index) columns;

SQL> select SUPPLEMENTAL_LOG_DATA_PK, SUPPLEMENTAL_LOG_DATA_UI from v$database;

SUP SUP

--- ---

YES YES

参数没有开启的话,在发生switchover或者failover后DG就是失效,需要重新配置逻辑备库

5. 转化物理备库为逻辑备库

1). 单实例

SQL> alter database recover to logical standby test;

Database altered.

db_name指定一个与主库不同的名字来标识新的逻辑备库,可以不指定

2).RAC

先停止除了一个实例以外的任何实例,修改cluster_database参数为false,以exclusive模式启动备库到mount,再执行语句切换到逻辑备库

sql> alter system set cluster_database=false scope=spfile;

sql> shutdown abort;

sql> startup mount exclusive;

注:滚动升级的时候,需要以keep identity模式切换到逻辑备库,数据库版本要求:11.1之后

sql> alter database recover to logical standby keep identity;

执行切换logical standby语句时,语句会等待应用重做数据,直到在日志文件中找到logminer 字典,

如果logminer没有在主库执行成功,则语句会一直等待,另开一个会话,执行以下sql命令取消切换logical standby语句

sql> alter database recover mananged standby database cancel

因为db_name改变了,在打开logical standby前需要重建密码文件

$ cd $ORACLE_HOME/dbs

$ orapwd file=orapwtest password=oracle

6. 调整逻辑备库的初始化参数

RAC环境:设置cluster_database为true

sql> alter system set cluster_database=true scope=spfile;

关闭逻辑备库,启动到mount阶段,修改参数

alter system set LOG_ARCHIVE_DEST_1=‘LOCATION=/oradata/arch/ VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby‘ scope=spfile;

alter system set LOG_ARCHIVE_DEST_2=‘SERVICE=primary ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=primary‘ scope=spfile;

alter system set LOG_ARCHIVE_DEST_3=‘LOCATION=/oradata/logicalarch/ VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE)DB_UNIQUE_NAME=standby‘ scope=spfile;

alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE;

alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE;

alter system set LOG_ARCHIVE_DEST_STATE_3=ENABLE;

在备库上添加standby logfile

SQL> alter database add standby logfile group 8 ‘/oradata/orcl/standby08.log‘ size 50M,group 9 ‘/oradata/orcl/standby09.log‘ size 50M,group 10 ‘/oradata/orcl/standby10.log‘ size 50M;

SQL> select group#,thread#,bytes/1024/1024 M from v$standby_log;

GROUP#    THREAD#          M

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

8            1              50

9            1              50

10            1              50

重启备库使参数生效

参数介绍


当standby库运行在主角色


当standby库运行在逻辑备角色


LOG_ARCHIVE_DEST_1


归档主库的在线日志到本路径


归档逻辑备库的在线日志到本路径


LOG_ARCHIVE_DEST_2


传输redo到远程逻辑备库primary


不起作用


LOG_ARCHIVE_DEST_3


不起作用


归档从主库接受的redo到本地的路径

7. 打开逻辑备库

SQL> alter database open resetlogs;

Database altered.

8. 应用SQL应用到逻辑备库

SQL> alter database start logical standby apply immediate;

Database altered.

注:相同主机,需执行以下语句

SQL> execute dbms_logstdby.skip(‘alter tablespace‘);

9. 检验逻辑备库是否可用

在备库上查询,当前APPLIED_SCN和NEWEST_SCN一致,当前主库没有事务运行

SQL> select applied_scn,newest_scn from dba_logstdby_progress;

APPLIED_SCN NEWEST_SCN

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

379385         379385

切换主库日志文件

SQL> alter system switch logfile;

System altered.

在备库查看APPLIED_SCN和NEWEST_SCN

日志应用中:

SQL> select applied_scn,newest_scn from dba_logstdby_progress;

APPLIED_SCN NEWEST_SCN

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

382578         382581

如果主库一直有有新事务,则APPLIED_SCN会一致追赶NEWEST_SCN,当主库没有事务后,APPLIED_SCN追评NEWEST_SCN后,备库便应用完了主库的重做数据

查看主备库状态

可以看到,逻辑备库的DBID与主库的不一样,逻辑备库可以打开到读写模式

主库:

SQL> select name,dbid,database_role,open_mode from v$database;

NAME            DBID DATABASE_ROLE    OPEN_MODE

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

ORCL      1387027022 PRIMARY          READ WRITE

备库:

SQL> select name,dbid,database_role,open_mode from v$database;

NAME            DBID DATABASE_ROLE    OPEN_MODE

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

TEST      2158270330 LOGICAL STANDBY  READ WRITE

开始与停止逻辑备库的SQL应用

开始:

SQL> alter database start logical standby apply immediate;

Database altered.

停止:

SQL> alter database stop logical standby apply immediate;

Database altered.

时间: 2024-12-16 15:20:15

搭建逻辑备库的相关文章

DG搭建逻辑备库

逻辑备库是在物理备库的基础上搭建的,所以需要先搭建好物理备库. 备库执行如下操作: [[email protected] ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production onFri Nov 7 15:03:30 2014 Copyright (c) 1982, 2011, Oracle.  All rights reserved. Connected to: Oracle Database 11g Enterpris

Dataguard搭建灾备库操作手册

数据库:Oracle11gr2 主库 alter database force logging; alter system set db_unique_name='erpdb' scope=spfile;  --我们让主库db_name=db_unique_name alter system set REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE scope=spfile; alter system set LOG_ARCHIVE_FORMAT='%t_%s_%r.arc

Oracle 11g Data Guard 之逻辑备库角色转换

逻辑备库不复制数据库服务,在进行switchover或者failover时,连接主库服务的中间层将不能连接(因为服务的创建没有被复制),或者连接不正确的版本(因为服务属性的修改没有被复制). Oracle集群不复制管理逻辑备库的服务,必须手动对主库与备库进行同步,具体的详参Oracle集群管理和部署的相关内容. 一.逻辑备库的switchover操作 当进行switchover操作来改变主库和逻辑备库的角色时,总是在主库启动switchover,然后在逻辑备库完成操作,其中的步骤必须按顺序,否则

DG搭建物理备库

搭建过程难免会出现各种错误,所以之前最好做一个备份!!! service iptables stop 关闭防火墙 [[email protected] ~]# setenforce 0 [[email protected] ~]# getenforce Permissive 主库 [[email protected] ~]# su - oracle [[email protected] ~]$ db11g [[email protected] ~]$ sqlplus / as sysdba SQ

『ORACLE』DG搭建时备库的db_name报错

因为搭建DG时备库中的db_name为SBCD,实际应该是主库db_name的PROD1 所以在[主库]执行如下rman操作命令时会报错控制文件记录的数据库名与实际拷贝的数据库名不相同 RMAN> duplicate target database for standby from active database; Starting Duplicate Db at 01-MAY-17using target database control file instead of recovery ca

Dataguard搭建灾备库操作

DJI erpdb库搭建DG 数据库:Oracle11gr2 主库 (下面打井号的不用执行) alter database force logging; alter system set db_unique_name='erp' scope=spfile; --我们让主库db_name=db_unique_name alter system set REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE scope=spfile; alter system set LOG_ARC

搭建物理备库

Primary db configure:1. 开启主库强制日志 查询当前是否强制日志: SQL> select force_logging from v$database;  FOR --- NO  开启强制日志 SQL> alter database force logging;  Database altered.  查询 SQL> select force_logging from v$database;  FOR --- YES2. 开启归档模式 SQL> alter s

pgsql物理复制(pgsql 备库的搭建以及角色互换,提升)

结构图如下: Postgresql早在9.0版本开始支持物理复制,也称为流复制,通过从实例级复制出一个与主库一模一样的备库.流复制同步方式有同步,异步两种,如果主节点和备节点不是很忙,通常异步模式下备库和主库的延迟时间能够控制在毫秒级.物理复制只能复制整个实例. 逻辑复制也成为选择性复制,可以做到基于表级别的复制,选择需要逻辑复制的表,而不是复制实例上的所有数据库的表,10版本不支持内置的逻辑复制,通常使用第三方逻辑复制. WAL日志记录数据库变化,格式为二级制格式,尽管流复制都是基于WAL,但

ORACLE Physical Standby 级联备库搭建

搭建oracle 级联DG 现在db与dg1是一套DG ,在此基础上搭建级联备库: 数据库版本 11.2.0.4 db_name=prod db为主库,dg1为备库,dg2为级联备库:DB_UNIQUE_NAME DATABASE_ROLEdb primary 10.100.12.10 dg1 standby1 10.100.12.11 dg2 standby2 10.100.12.12 三个库的LOG_FILE_NAME_CONVERT,DB_FILE_NAME_CONVERT路径一致####