Snapshot Standby

介绍Oracle 11g中新特性Snapshot Standby Database的功能与转换过程。此特性允许物理备库短时间内以读写模式运行,并能持续接收主库的redo日志进行归档。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

INTRODUCTION

Snapshot standby database是ORACLE 11g的新特性。允许Physical standby短时间的使用read write模式。

Snapshot standby是由Physical standby 全新转换而来,可以独立于primary 处理事务,同时能够不断地从primary接受redo data,归档redo data以备后用维护保护。

 

Snapshot Standby Database的特性:

(1)  Snapshot standby接收并归档redo data,但不应用redo data。

(2)  Snapshot standby转换回physical standby后,开始应用之前接收并归档的redo data.

(3)  主库传输过来的redo data一直被归档存放起来。

(4)  转换回physical standby后,所有的本地更新操作将会被丢弃。

(5)  如果primary移动到新的DB分支(如flashback database,open resetlogs),snapshot standby database会从新的DB分支继续接受redo data.

(6)  Snapshot standby不能作为switchover或者failover的目标库。Snapshot standby必须转换回Physical standby才能执行角色转换。

(7)  DG配置中的一个Standby发生switchover或者failover角色转换为primary后,Snapshot standby可以接受角色转换后的新的primary database 的redo data.

(8)  Snapshot standby不能为最大保护模式的DG配置中唯一的standby.

 

注意:一旦snapshot standby被激活的时间超出了primary 的最大负载时间,再次的本地更新操作将会产生额外的异常。

转换物理备库为快照备库

1.打开physical standby闪回区

SQL> alter system set db_recovery_file_dest_size=1G;

SQL> alter system set db_recovery_file_dest='/oradata/snapshot';

2.停止活动状态的日志应用

SQL> recover managed standby database cancel;

3.启动数据库到mount节点

SQL> shutdown immediate;

SQL> startup mount;

4.装换physical standby为snapshot standby

SQL> alter database convert to snapshot standby;

5.打开数据库

如果在转换的工程中,物理备库被dismount,则重启物理备库。

SQL> alter database open;

SQL> select open_mode,database_role from v$database;

 

OPEN_MODE            DATABASE_ROLE

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

READ WRITE           SNAPSHOT STANDBY

 

转换快照备库为物理备库

1.打开数据库至mount状态

SQL> shutdown immediate

SQL> startup mount;

2.转换snapshot standby为physical standby

SQL> alter database convert to physical standby;

3.restart数据库,开启日志应用

SQL> shutdown immediate

SQL> startup mount;

SQL> alter database open read only;

SQL> select open_mode,database_role from v$database;

 

OPEN_MODE            DATABASE_ROLE

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

READ ONLY            PHYSICAL STANDBY

 

4.开启日志应用

SQL> recover managed standby database using current logfile disconnect;

 

转载于:https://www.cnblogs.com/liang545621/p/9407353.html

<think>好的,我现在需要帮助用户解决在Windows系统中配置Oracle主从数据库的具体操作步骤,特别是关于standby数据库的设置和运行。首先,我要回顾用户之前的对话历史,确保我的回答符合他们之前提到的需求。 用户之前已经得到了一个配置指南,但可能觉得需要更详细的步骤,尤其是standby数据库的部分。现在用户再次提问,明确希望了解standby的具体设置步骤,所以我需要更详细地展开这部分。 首先,我需要确认用户的环境是否与引用中的一致,比如是否使用Oracle 11g企业版和Windows Server 2008。用户提到是在同一台电脑上运行主从,这意味着需要处理实例的多个配置,避免端口和路径冲突。因此,环境准备部分需要强调实例命名、目录结构和网络配置。 主库配置部分,用户可能需要知道如何启用归档模式和强制日志,这些是Data Guard的基本要求。引用[1]提到主库安装数据库,从库只安装软件,但用户的情况是在同一台机器上运行两个实例,所以可能需要两个完整的安装,或者使用不同的ORACLE_SID和目录。这里可能需要澄清,但根据之前的回答,用户可能已经安装了软件,现在需要配置实例。 接下来是生成备用控制文件和传输文件,这部分需要详细步骤,包括使用RMAN进行复制,确保路径正确,避免覆盖主库文件。同时,修改参数文件如pfile和tnsnames.ora是关键步骤,需要确保db_unique_name和service_names正确设置,以及监听器配置不同的端口。 备库配置中,启动到nomount状态,然后恢复控制文件,再启动到mount,并开始应用日志。这些步骤需要具体的SQL命令,用户可能需要逐条执行。另外,验证同步状态的方法,比如查询V$DATABASE和V$ARCHIVED_LOG,可以帮助用户确认配置是否成功。 用户可能遇到的问题包括端口冲突、文件权限、日志应用失败等,常见问题部分需要给出具体的解决建议,比如检查监听日志、防火墙设置和归档路径。引用[2]提到快照备用的切换,虽然用户当前可能不需要,但可以作为补充信息。 最后,相关问题需要覆盖用户可能进一步的需求,比如故障切换、监控延迟和资源优化,这些扩展问题可以帮助用户更全面地理解主从配置后的管理。 需要确保所有步骤使用正确的中文术语,避免技术术语混淆,并且按照用户的要求使用LaTeX格式的行内公式,虽然这个问题可能涉及较少的数学表达式,但如果有的话需要正确应用。例如,路径中的反斜杠可能需要转义,或者示例代码中的命令需要正确格式化。 总结来说,我需要将步骤分解得更详细,特别是在standby配置部分,确保用户能够一步步跟随操作,同时引用之前的参考内容,但根据用户的实际需求调整,避免依赖过时的信息。另外,注意用户是在同一台Windows电脑上运行两个实例,因此需要特别强调实例隔离和资源分配的问题。</think>#### Windows系统Oracle主从数据库配置步骤(Standby数据库核心设置) --- ### 一、环境准备(单机双实例) 1. **Oracle软件安装** - 主库和备库**使用相同版本的Oracle企业版**(如11g/19c),安装时选择“仅安装数据库软件”,**不创建数据库**(后续手动创建实例)[^1]。 - 创建两个独立实例: - 主库:`ORCL_MASTER`,数据目录`D:\oracle\oradata\master` - 备库:`ORCL_STANDBY`,数据目录`D:\oracle\oradata\standby` 2. **网络隔离配置** - 修改`%ORACLE_HOME%\network\admin\listener.ora`,分配不同监听端口: ```ini # 主库监听 SID_LIST_LISTENER_MASTER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME=ORCL_MASTER)(ORACLE_HOME=D:\oracle)(SID_NAME=ORCL_MASTER))) LISTENER_MASTER = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) # 备库监听 SID_LIST_LISTENER_STANDBY = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME=ORCL_STANDBY)(ORACLE_HOME=D:\oracle)(SID_NAME=ORCL_STANDBY))) LISTENER_STANDBY = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522)) ``` - 在`tnsnames.ora`中配置连接别名: ```ini MASTER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = ORCL_MASTER))) STANDBY = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = ORCL_STANDBY))) ``` --- ### 二、主库配置(关键步骤) 1. **启用归档日志模式** ```sql -- 以sysdba登录主库 SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN; -- 查看归档状态 SELECT log_mode FROM v$database; -- 应返回ARCHIVELOG ``` 2. **生成备用控制文件** ```sql ALTER DATABASE CREATE STANDBY CONTROLFILE AS 'D:\oracle\standby\control01.ctl'; ``` 3. **传输文件到备库** - **必需文件**: - 主库数据文件(通过RMAN全备份) - 备用控制文件 - 归档日志(持续传输) - 使用RMAN复制数据文件: ```bash RMAN> CONNECT TARGET sys/password@MASTER; RMAN> CONNECT AUXILIARY sys/password@STANDBY; RMAN> DUPLICATE TARGET DATABASE FOR STANDBY NOFILENAMECHECK; ``` --- ### 三、备库配置(Standby核心) 1. **初始化参数文件配置** - 修改备库的`initORCL_STANDBY.ora`: ```ini db_name = 'ORCL_MASTER' -- 必须与主库同名 db_unique_name = 'ORCL_STANDBY' -- 唯一标识备库 standby_file_management = AUTO -- 自动同步文件路径 log_archive_dest_1 = 'LOCATION=D:\oracle\standby\archives VALID_FOR=(ALL_LOGFILES,ALL_ROLES)' fal_server = 'MASTER' -- 指向主库TNS别名 ``` 2. **启动备库恢复进程** ```sql -- 启动到nomount状态 STARTUP NOMOUNT PFILE='D:\oracle\admin\ORCL_STANDBY\pfile\init.ora'; -- 恢复控制文件 ALTER DATABASE MOUNT STANDBY DATABASE; -- 开启日志应用 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION; ``` 3. **验证同步状态** ```sql -- 主库执行 ALTER SYSTEM SWITCH LOGFILE; -- 备库查询 SELECT sequence#, applied FROM v$archived_log ORDER BY sequence# DESC; -- 应显示最新日志已应用(APPLIED=YES) ``` --- ### 四、运行状态管理 1. **切换主从角色(测试场景)** ```sql -- 主库转为备库 ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY; -- 备库转为主库 ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; ``` 2. **快照备用模式(临时读写)** ```sql -- 备库执行 ALTER DATABASE CONVERT TO SNAPSHOT STANDBY; -- 切换为可读写快照 ALTER DATABASE CONVERT TO PHYSICAL STANDBY; -- 恢复为物理备库[^2] ``` --- ### 常见问题解决 - **ORA-12514: TNS无监听**:检查`listener.ora`端口配置,重启监听服务 - **备库日志未应用**:确认`log_archive_dest_1`路径权限,主备网络可达 - **数据文件路径冲突**:设置`db_file_name_convert`和`log_file_name_convert`参数转换路径 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值