目录
5.4.5查看及修改参数log_archive_dest_state_1和log_archive_dest_state_2
5.4.7主库操作-修改db_file_name_convert
5.4.8主库操作-修改log_file_name_convert
5.4.9查看及修改参数standby_file_management
6.2.1在主库中生成初始化参数文件INITorcl.ora
6.2.2拷贝主库pfile参数文件(INITorcl.ORA)到从库并重命名
6.4配置db_home_1中的tnsnames.ora文件
6.6从库尝试解决sqlplus登录ORA-12560: TNS: 协议适配器错误
6.8从库测试sqlplus通过tnsname连接主库与从库
6.9主库-测试验证tnsping和sqlplus通过主备tnsname连接
6.10备库操作-修改db_file_name_convert和log_file_name_convert
1.Windows平台搭建Oracle DataGuard,实现容灾
2.探索Oracle11g 基础上Oracle Dataguard增强的从库查询功能
| 虚拟机1-作为主机 | 虚拟机2-作为从机 | |
| Os | winserver2016 x64 | winserver2016 x64 |
| db | oracle11g Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production 已创建监听 已创建数据库实例 | oracle11g Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production 已创建监听 无数据库实例(注意,不要创建实例) |
原数据库安装时设置所有账户默认密码为orcl
用户名sys密码orcl
如果从机已创建实例,可通过以下步骤删除实例。
1.关闭所有ORACLE服务;
2.打开OraDb11g_home1下的Database Configuration Asistant
3.选择删除数据库
4.等待大约8分钟。
5.刷新服务列表,原Oracle实例(带orcl字样)的几个服务已被自动删除
6.为保险起见,重启一次服务器。
| 主库 | 备库 | |
| 操作系统 | OS 名称: Microsoft Windows Server 2016 Datacenter OS 版本: 10.0.14393 暂缺 Build 14393 | OS 名称: Microsoft Windows Server 2016 Datacenter OS 版本: 10.0.14393 暂缺 Build 14393 |
| 服务器名称 | WIN16-ORADG-PRI | WIN16-ORADG-STD |
| IP地址规划 | 192.168.7.181 | 192.168.7.182 |
| 数据库版本 | Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production | Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production |
| db_name | orcl | orcl |
| db_unique_name | orcl | orclstandby |
| instance_name | orcl | orclstandby |
| service_name | orcl | orcl |
| 数据库安装 | 安装数据库软件+创建监听+安装数据库 | 安装数据库软件+创建监听 |
主库从库均设置防火墙允许ping和开放1521端口。
主库-配置hosts文件,映射主机名与ip,以便后期可直接使用计算机名进行配置,可读性强。
进入C:\Windows\System32\drivers\etc,记事本打开hosts文件
增加
192.168.7.181 WIN16-ORADG-PRI
192.168.7.182 WIN16-ORADG-STD
修改后hosts文件内容如下
- # Copyright (c) 1993-2009 Microsoft Corp.
- #
- # This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
- #
- # This file contains the mappings of IP addresses to host names. Each
- # entry should be kept on an individual line. The IP address should
- # be placed in the first column followed by the corresponding host name.
- # The IP address and the host name should be separated by at least one
- # space.
- #
- # Additionally, comments (such as these) may be inserted on individual
- # lines or following the machine name denoted by a '#' symbol.
- #
- # For example:
- #
- # 102.54.94.97 rhino.acme.com # source server
- # 38.25.63.10 x.acme.com # x client host
-
- # localhost name resolution is handled within DNS itself.
-
- 127.0.0.1 localhost
- ::1 localhost
- 192.168.7.181 WIN16-ORADG-PRI
- 192.168.7.182 WIN16-ORADG-STD
配置hosts文件后,cmd中使用如下命令可刷新host,无需重启服务器。
ipconfig /flushdns
主库ping host记录
- Microsoft Windows [版本 10.0.14393]
- (c) 2016 Microsoft Corporation。保留所有权利。
-
- C:\Users\Administrator>hostname
- WIN16-ORADG-PRI
-
- C:\Users\Administrator>ping WIN16-ORADG-PRI -4
-
- 正在 Ping WIN16-ORADG-PRI [192.168.7.181] 具有 32 字节的数据:
- 来自 192.168.7.181 的回复: 字节=32 时间<1ms TTL=128
- 来自 192.168.7.181 的回复: 字节=32 时间<1ms TTL=128
- 来自 192.168.7.181 的回复: 字节=32 时间<1ms TTL=128
- 来自 192.168.7.181 的回复: 字节=32 时间<1ms TTL=128
-
- 192.168.7.181 的 Ping 统计信息:
- 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
- 往返行程的估计时间(以毫秒为单位):
- 最短 = 0ms,最长 = 0ms,平均 = 0ms
-
- C:\Users\Administrator>ping WIN16-ORADG-STD -4
-
- 正在 Ping WIN16-ORADG-STD [192.168.7.182] 具有 32 字节的数据:
- 来自 192.168.7.182 的回复: 字节=32 时间<1ms TTL=128
- 来自 192.168.7.182 的回复: 字节=32 时间<1ms TTL=128
- 来自 192.168.7.182 的回复: 字节=32 时间<1ms TTL=128
- 来自 192.168.7.182 的回复: 字节=32 时间<1ms TTL=128
-
- 192.168.7.182 的 Ping 统计信息:
- 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
- 往返行程的估计时间(以毫秒为单位):
- 最短 = 0ms,最长 = 0ms,平均 = 0ms
-
- C:\Users\Administrator>
从库ping host记录
- Microsoft Windows [版本 10.0.14393]
- (c) 2016 Microsoft Corporation。保留所有权利。
-
- C:\Users\Administrator>hostname
- WIN16-ORADG-STD
-
- C:\Users\Administrator>ping WIN16-ORADG-STD -4
-
- 正在 Ping WIN16-ORADG-STD [192.168.7.182] 具有 32 字节的数据:
- 来自 192.168.7.182 的回复: 字节=32 时间<1ms TTL=128
- 来自 192.168.7.182 的回复: 字节=32 时间<1ms TTL=128
- 来自 192.168.7.182 的回复: 字节=32 时间<1ms TTL=128
- 来自 192.168.7.182 的回复: 字节=32 时间<1ms TTL=128
-
- 192.168.7.182 的 Ping 统计信息:
- 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
- 往返行程的估计时间(以毫秒为单位):
- 最短 = 0ms,最长 = 0ms,平均 = 0ms
-
- C:\Users\Administrator>ping WIN16-ORADG-PRI -4
- Ping 请求找不到主机 WIN16-ORADG-PRI。请检查该名称,然后重试。
-
- C:\Users\Administrator>ping WIN16-ORADG-PRI -4
- Ping 请求找不到主机 WIN16-ORADG-PRI。请检查该名称,然后重试。
-
- C:\Users\Administrator>ipconfig /flushdns
-
- Windows IP 配置
-
- 已成功刷新 DNS 解析缓存。
-
- C:\Users\Administrator>ping WIN16-ORADG-PRI -4
-
- 正在 Ping WIN16-ORADG-PRI [192.168.7.181] 具有 32 字节的数据:
- 来自 192.168.7.181 的回复: 字节=32 时间<1ms TTL=128
- 来自 192.168.7.181 的回复: 字节=32 时间<1ms TTL=128
- 来自 192.168.7.181 的回复: 字节=32 时间<1ms TTL=128
- 来自 192.168.7.181 的回复: 字节=32 时间<1ms TTL=128
-
- 192.168.7.181 的 Ping 统计信息:
- 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
- 往返行程的估计时间(以毫秒为单位):
- 最短 = 0ms,最长 = 0ms,平均 = 0ms
查询是否启用强制记录日志
select force_logging from v$database;
如果未启用,则使用下面语句来开启强制记录日志
alter database force logging;
cmd记录
-
- SQL*Plus: Release 11.2.0.1.0 Production on 星期四 11月 17 09:29:17 2022
- Copyright (c) 1982, 2010, Oracle. All rights reserved.
-
- 请输入用户名: sys as sysdba
- 输入口令:
-
- 连接到:
- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
-
- SQL> select force_logging from v$database;
-
- FOR
- ---
- NO
-
- SQL> alter database force logging;
-
- 数据库已更改。
-
- SQL> select force_logging from v$database;
-
- FOR
- ---
- YES
-
- SQL>
查询命令
select log_mode from v$database;
cmd记录
- SQL> archive log list;
- 数据库日志模式 非存档模式
- 自动存档 禁用
- 存档终点 USE_DB_RECOVERY_FILE_DEST
- 最早的联机日志序列 28
- 当前日志序列 30
- SQL> select log_mode from v$database;
-
- LOG_MODE
- ------------
- NOARCHIVELOG
-
- SQL>
上述显示未启用归档模式。
如果未启用归档,可以按照如下步骤开启归档
----Oracle 11g数据库归档模式开启
--STEP1:以sysdba角色登陆数据库
sqlplus / as sysdba
--STEP2:干净的关闭数据库
shutdown immediate
--STEP3:将数据库启动到mount状态
startup mount
--STEP4:开启归档
alter database archivelog;
--STEP5:打开数据库
alter database open
Cmd记录如下
- SQL> shutdown immediate;
- 数据库已经关闭。
- 已经卸载数据库。
- ORACLE 例程已经关闭。
- SQL> startup mount;
- ORACLE 例程已经启动。
-
- Total System Global Area 1286066176 bytes
- Fixed Size 2175408 bytes
- Variable Size 754978384 bytes
- Database Buffers 520093696 bytes
- Redo Buffers 8818688 bytes
- 数据库装载完毕。
- SQL> alter database archivelog;
-
- 数据库已更改。
-
- SQL> alter database open;
-
- 数据库已更改。
-
- SQL> archive log list;
- 数据库日志模式 存档模式
- 自动存档 启用
- 存档终点 USE_DB_RECOVERY_FILE_DEST
- 最早的联机日志序列 28
- 下一个存档日志序列 30
- 当前日志序列 30
- SQL> select log_mode from v$database;
-
- LOG_MODE
- ------------
- ARCHIVELOG
-
- SQL>
查看命令【show parameter db_unique_name;】
如需修改,则修改命令【alter system set db_unique_name = 'orcl' scope=spfile;】
db_unique_name后面填主库的待设定的唯一名称,用于区别从库的db_unique_name;
- SQL> show parameter db_unique_name;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- db_unique_name string orcl
- SQL> show parameter log_archive_config;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- log_archive_config string
- SQL> show parameter db_unique_name;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- db_unique_name string orcl
- SQL> show parameter log_archive_config;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- log_archive_config string
- SQL> alter system set log_archive_config='DG_CONFIG=(orcl,orclstandby)' scope=spfile;
-
- 系统已更改。
-
- SQL> show parameter log_archive_config;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- log_archive_config string
- SQL>
参数说明
【alter system set log_archive_config='DG_CONFIG=(orcl,orclstandby)' scope=spfile;】
上面命令中orcl是主库的db_unique_name
orclstandby是从库的db_unique_name
问题:为什么修改log_archive_config后当时再查询仍为空?
次日重启之后,再查询参数,即正常了。
网搜原因:
1. scope=spfile: 对参数的修改记录在服务器初始化参数文件中,修改后的参数在下次启动DB时生效。适用于动态和静态初始化参数。
2. scope=memory: 对参数的修改记录在內存中,对于动态初始化参数的修改立即生效。在重启DB后会丟失,会复原为修改前的参数值。
3. scope=both: 对参数的修改会同时记录在服务器参数文件和內存中,对于动态参数立即生效,对静态参数不能用这个选项
重启数据库后查询结果如下
-
- SQL*Plus: Release 11.2.0.1.0 Production on 星期五 11月 18 08:58:49 2022
- Copyright (c) 1982, 2010, Oracle. All rights reserved.
-
- 请输入用户名: sys as sysdba
- 输入口令:
-
- 连接到:
- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
-
- SQL> show parameter log_archive_config;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- log_archive_config string DG_CONFIG=(orcl,orclstandby)
- SQL>
- SQL> show parameter log_archive_dest_1;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- log_archive_dest_1 string
- log_archive_dest_10 string
- log_archive_dest_11 string
- log_archive_dest_12 string
- log_archive_dest_13 string
- log_archive_dest_14 string
- log_archive_dest_15 string
- log_archive_dest_16 string
- log_archive_dest_17 string
- log_archive_dest_18 string
- log_archive_dest_19 string
- SQL> alter system set log_archive_dest_1='LOCATION=D:\oracle\product\11.2.0\dbhome_1\archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl' scope=both;
-
- 系统已更改。
-
- SQL> show parameter log_archive_dest_1;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- log_archive_dest_1 string LOCATION=D:\oracle\product\11.
- 2.0\dbhome_1\archivelog VALID_
- FOR=(ALL_LOGFILES,ALL_ROLES) D
- B_UNIQUE_NAME=orcl
- log_archive_dest_10 string
- log_archive_dest_11 string
- log_archive_dest_12 string
- log_archive_dest_13 string
- log_archive_dest_14 string
- log_archive_dest_15 string
- log_archive_dest_16 string
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- log_archive_dest_17 string
- log_archive_dest_18 string
- log_archive_dest_19 string
- SQL>
参数说明
alter system set log_archive_dest_1='LOCATION=D:\oracle\product\11.2.0\dbhome_1\archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl' scope=both;
上述命令中
LOCATION中[D:\oracle\product\11.2.0\dbhome_1\]根目录+ archivelog
DB_UNIQUE_NAME=orcl,orcl是主库的DB_UNIQUE_NAME;
注意:这里在主库要手动新建文件夹【D:\oracle\product\11.2.0\dbhome_1\archivelog】
否则,归档日志直接会变成【ARCHIVELOGARC0000000031_1102159423.0001】自动存入【D:\oracle\product\11.2.0\dbhome_1\】
正常的归档日志应该是【ARC0000000031_1102159423.0001】自动存入【D:\oracle\product\11.2.0\dbhome_1\archivelog】
- SQL> show parameter log_archive_dest_2;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- log_archive_dest_2 string
- log_archive_dest_20 string
- log_archive_dest_21 string
- log_archive_dest_22 string
- log_archive_dest_23 string
- log_archive_dest_24 string
- log_archive_dest_25 string
- log_archive_dest_26 string
- log_archive_dest_27 string
- log_archive_dest_28 string
- log_archive_dest_29 string
- SQL> alter system set log_archive_dest_2='SERVICE=tnsorclstandby LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orclstandby' scope=spfile;
-
- 系统已更改。
-
- SQL> show parameter log_archive_dest_2;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- log_archive_dest_2 string
- log_archive_dest_20 string
- log_archive_dest_21 string
- log_archive_dest_22 string
- log_archive_dest_23 string
- log_archive_dest_24 string
- log_archive_dest_25 string
- log_archive_dest_26 string
- log_archive_dest_27 string
- log_archive_dest_28 string
- log_archive_dest_29 string
- SQL>
参数说明:
alter system set log_archive_dest_2='SERVICE=tnsorclstandby LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orclstandby' scope=spfile;
参数中tnsorclstandby是主库(注意是主库)中tnsnames.ora文件中配置的用于访问从库的tnsname名称。(前述暂未向主库tnsnames.ora中添加tnsorclstandby,后续会添加,这里先配置)
上述alert命令执行后再查询,未显示到设置结果是因为未重启数据库。
查看
- SQL> show parameter log_archive_dest_state_1;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- log_archive_dest_state_1 string enable
- log_archive_dest_state_10 string enable
- log_archive_dest_state_11 string enable
- log_archive_dest_state_12 string enable
- log_archive_dest_state_13 string enable
- log_archive_dest_state_14 string enable
- log_archive_dest_state_15 string enable
- log_archive_dest_state_16 string enable
- log_archive_dest_state_17 string enable
- log_archive_dest_state_18 string enable
- log_archive_dest_state_19 string enable
- SQL> show parameter log_archive_dest_state_2;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- log_archive_dest_state_2 string enable
- log_archive_dest_state_20 string enable
- log_archive_dest_state_21 string enable
- log_archive_dest_state_22 string enable
- log_archive_dest_state_23 string enable
- log_archive_dest_state_24 string enable
- log_archive_dest_state_25 string enable
- log_archive_dest_state_26 string enable
- log_archive_dest_state_27 string enable
- log_archive_dest_state_28 string enable
- log_archive_dest_state_29 string enable
- SQL>
如需修改,使用如下命令
alter system set log_archive_dest_state_1 = ENABLE;
alter system set log_archive_dest_state_2 = ENABLE;
目标是保证主库从库数据文件位置一致,不一致则用命令修改。
- SQL> select name from v$datafile;
-
- NAME
- --------------------------------------------------------------------------------
- D:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
- D:\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
- D:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
- D:\ORACLE\ORADATA\ORCL\USERS01.DBF
- D:\ORACLE\ORADATA\ORCL\VAMS_DATA_0.DBF
-
- SQL>
db_file_name_convert说明
db_file_name_convert 主数据库和备用数据库的数据文件转换目录对映(如果两数据库的目录结构不一样),如果有多个对映,逐一指明对映关系。
关键命令
alter system set db_file_name_convert='D:\oracle\oradata\orclstandby\','D:\oracle\oradata\orcl\' scope=spfile;
修改后需要重启数据库才能生效
- Microsoft Windows [版本 10.0.14393]
- (c) 2016 Microsoft Corporation。保留所有权利。
-
- D:\oracle\product\11.2.0\dbhome_1\BIN>sqlplus sys/orcl as sysdba
-
- SQL*Plus: Release 11.2.0.1.0 Production on 星期一 11月 21 15:44:52 2022
- Copyright (c) 1982, 2010, Oracle. All rights reserved.
-
-
- 连接到:
- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
-
- SQL> select name from v$datafile;
-
- NAME
- --------------------------------------------------------------------------------
- D:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
- D:\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
- D:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
- D:\ORACLE\ORADATA\ORCL\USERS01.DBF
- D:\ORACLE\ORADATA\ORCL\VAMS_DATA_0.DBF
-
- SQL> show parameter db_file_name_convert;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- db_file_name_convert string
- SQL> alter system set db_file_name_convert='D:\oracle\oradata\orclstandby\','D:\oracle\oradata\orcl\' scope=spfile;
-
- 系统已更改。
-
- SQL> show parameter db_file_name_convert;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- db_file_name_convert string
- SQL> shutdown immediate;
- 数据库已经关闭。
- 已经卸载数据库。
- ORACLE 例程已经关闭。
- SQL> startup;
- ORACLE 例程已经启动。
-
- Total System Global Area 1286066176 bytes
- Fixed Size 2175408 bytes
- Variable Size 822087248 bytes
- Database Buffers 452984832 bytes
- Redo Buffers 8818688 bytes
- 数据库装载完毕。
- 数据库已经打开。
- SQL> show parameter db_file_name_convert;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- db_file_name_convert string D:\oracle\oradata\orclstandby\
- , D:\oracle\oradata\orcl\
- SQL>
关键命令
alter system set log_file_name_convert='D:\oracle\oradata\orclstandby\','D:\oracle\oradata\orcl\' scope=spfile;
修改后需要重启数据库才生效
- SQL> show parameter log_file_name_convert;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- log_file_name_convert string
- SQL> select member from v$logfile;
-
- MEMBER
- --------------------------------------------------------------------------------
- D:\ORACLE\ORADATA\ORCL\REDO03.LOG
- D:\ORACLE\ORADATA\ORCL\REDO02.LOG
- D:\ORACLE\ORADATA\ORCL\REDO01.LOG
-
- SQL> alter system set log_file_name_convert='D:\oracle\oradata\orclstandby\','D:\oracle\oradata\orcl\' scope=spfile;
-
- 系统已更改。
-
- SQL> select member from v$logfile;
-
- MEMBER
- --------------------------------------------------------------------------------
- D:\ORACLE\ORADATA\ORCL\REDO03.LOG
- D:\ORACLE\ORADATA\ORCL\REDO02.LOG
- D:\ORACLE\ORADATA\ORCL\REDO01.LOG
-
- SQL> show parameter log_file_name_convert;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- log_file_name_convert string
- SQL> shutdown immediate;
- 数据库已经关闭。
- 已经卸载数据库。
- ORACLE 例程已经关闭。
- SQL> startup;
- ORACLE 例程已经启动。
-
- Total System Global Area 1286066176 bytes
- Fixed Size 2175408 bytes
- Variable Size 822087248 bytes
- Database Buffers 452984832 bytes
- Redo Buffers 8818688 bytes
- 数据库装载完毕。
- 数据库已经打开。
- SQL> show parameter log_file_name_convert;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- log_file_name_convert string D:\oracle\oradata\orclstandby\
- , D:\oracle\oradata\orcl\
- SQL>
参数含义:dg环境的standby_file_management参数,oracle解释是主库数据文件变化时,从库自动更新
查看命令【show parameter standby_file_management;】
修改为auto的命令【alter system set standby_file_management=auto scope=spfile;】
- SQL> show parameter standby_file_management;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- standby_file_management string MANUAL
- SQL> alter system set standby_file_management=auto scope=spfile;
-
- 系统已更改。
-
- SQL>
查看命令【show parameter fal_client;】
修改命令【alter system set fal_client='tnsorcl' scope=both;】
修改命令中tnsorcl是主库tnsnames.ora中配置的访问主库的tns连接名。
网搜参数说明如下
fal_server和fal_client,FAL即Fetch Archive Log,其值为Oracle Net service name,即tnsnames.ora中的服务名。
设置这两个参数可以用来解决Archive Gaps。
一旦产生了gap,fal_client会自动向fal_server请求传输gap的archivelog。
设置了这2个参数,就不需要在产生gap时手动向standby注册归档日志了。
所需要做的就是确认主库有这些归档日志,并且主库的控制文件中有这些日志的注册信息。
fal_client设置为数据库自身的service name,fal_server设置为远端数据库的service name。
fal_server可以设置多个值,用逗号隔开。
primary:
*.fal_server='dev01dg'
*.fal_client='dev01'
standby:
*.fal_server='dev01'
*.fal_client='dev01dg'
我的cmd实践如下
- SQL> show parameter fal_client;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- fal_client string
- SQL> alter system set fal_client='tnsorcl' scope=both;
-
- 系统已更改。
-
- SQL> show parameter fal_client;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- fal_client string tnsorcl
- SQL>
查看命令【show parameter fal_server;】
修改命令【alter system set fal_server='tnsorclstandby' scope=both;】
修改命令中'tnsorclstandby'是主库tnsnames.ora中配置的访问从库的tns连接名(后续会配置)。
我的cmd实践记录
- SQL> show parameter fal_server;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- fal_server string
- SQL> alter system set fal_server='tnsorclstandby' scope=both;
-
- 系统已更改。
-
- SQL> show parameter fal_server;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- fal_server string tnsorclstandby
- SQL>
查看原始监听,进入D:\oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN,记事本打开listener.ora
- # listener.ora Network Configuration File: D:\oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
- # Generated by Oracle configuration tools.
-
- SID_LIST_LISTENER =
- (SID_LIST =
- (SID_DESC =
- (SID_NAME = CLRExtProc)
- (ORACLE_HOME = D:\oracle\product\11.2.0\dbhome_1)
- (PROGRAM = extproc)
- (ENVS = "EXTPROC_DLLS=ONLY:D:\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
- )
- )
-
- LISTENER =
- (DESCRIPTION_LIST =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
- (ADDRESS = (PROTOCOL = TCP)(HOST = WIN16-ORADG-PRI)(PORT = 1521))
- )
- )
-
- ADR_BASE_LISTENER = D:\oracle
-
添加
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(SID_NAME = orcl)
(ORACLE_HOME = D:\oracle\product\11.2.0\dbhome_1)
)
修改为如下
- # listener.ora Network Configuration File: D:\oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
- # Generated by Oracle configuration tools.
-
- SID_LIST_LISTENER =
- (SID_LIST =
- (SID_DESC =
- (SID_NAME = CLRExtProc)
- (ORACLE_HOME = D:\oracle\product\11.2.0\dbhome_1)
- (PROGRAM = extproc)
- (ENVS = "EXTPROC_DLLS=ONLY:D:\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
- )
-
- (SID_DESC =
- (GLOBAL_DBNAME = orcl)
- (SID_NAME = orcl)
- (ORACLE_HOME = D:\oracle\product\11.2.0\dbhome_1)
- )
- )
-
- LISTENER =
- (DESCRIPTION_LIST =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
- (ADDRESS = (PROTOCOL = TCP)(HOST = WIN16-ORADG-PRI)(PORT = 1521))
- )
- )
-
- ADR_BASE_LISTENER = D:\oracle
-
- Microsoft Windows [版本 10.0.14393]
- (c) 2016 Microsoft Corporation。保留所有权利。
-
- C:\Users\Administrator>lsnrctl status
-
- LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 18-11月-2022 08:57:36
-
- Copyright (c) 1991, 2010, Oracle. All rights reserved.
-
- 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
- LISTENER 的 STATUS
- ------------------------
- 别名 LISTENER
- 版本 TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
- 启动日期 18-11月-2022 08:48:37
- 正常运行时间 0 天 0 小时 9 分 8 秒
- 跟踪级别 off
- 安全性 ON: Local OS Authentication
- SNMP OFF
- 监听程序参数文件 D:\oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
- 监听程序日志文件 d:\oracle\diag\tnslsnr\WIN16-ORADG-PRI\listener\alert\log.xml
- 监听端点概要...
- (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
- (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN16-ORADG-PRI)(PORT=1521)))
- 服务摘要..
- 服务 "CLRExtProc" 包含 1 个实例。
- 实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
- 服务 "orcl" 包含 1 个实例。
- 实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
- 服务 "orclXDB" 包含 1 个实例。
- 实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
- 命令执行成功
-
- C:\Users\Administrator>lsnrctl status
-
- LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 18-11月-2022 17:11:27
-
- Copyright (c) 1991, 2010, Oracle. All rights reserved.
-
- 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
- LISTENER 的 STATUS
- ------------------------
- 别名 LISTENER
- 版本 TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
- 启动日期 18-11月-2022 08:48:37
- 正常运行时间 0 天 8 小时 22 分 59 秒
- 跟踪级别 off
- 安全性 ON: Local OS Authentication
- SNMP OFF
- 监听程序参数文件 D:\oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
- 监听程序日志文件 d:\oracle\diag\tnslsnr\WIN16-ORADG-PRI\listener\alert\log.xml
- 监听端点概要...
- (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
- (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN16-ORADG-PRI)(PORT=1521)))
- 服务摘要..
- 服务 "CLRExtProc" 包含 1 个实例。
- 实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
- 服务 "orcl" 包含 1 个实例。
- 实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
- 服务 "orclXDB" 包含 1 个实例。
- 实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
- 命令执行成功
-
- C:\Users\Administrator>lsnrctl reload
-
- LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 18-11月-2022 17:12:15
-
- Copyright (c) 1991, 2010, Oracle. All rights reserved.
-
- 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
- 命令执行成功
-
- C:\Users\Administrator>lsnrctl status
-
- LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 18-11月-2022 17:12:19
-
- Copyright (c) 1991, 2010, Oracle. All rights reserved.
-
- 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
- LISTENER 的 STATUS
- ------------------------
- 别名 LISTENER
- 版本 TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
- 启动日期 18-11月-2022 08:48:37
- 正常运行时间 0 天 8 小时 23 分 51 秒
- 跟踪级别 off
- 安全性 ON: Local OS Authentication
- SNMP OFF
- 监听程序参数文件 D:\oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
- 监听程序日志文件 d:\oracle\diag\tnslsnr\WIN16-ORADG-PRI\listener\alert\log.xml
- 监听端点概要...
- (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
- (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN16-ORADG-PRI)(PORT=1521)))
- 服务摘要..
- 服务 "CLRExtProc" 包含 1 个实例。
- 实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
- 服务 "orcl" 包含 2 个实例。
- 实例 "orcl", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
- 实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
- 服务 "orclXDB" 包含 1 个实例。
- 实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
- 命令执行成功
-
- C:\Users\Administrator>
原始
- # tnsnames.ora Network Configuration File: D:\oracle\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
- # Generated by Oracle configuration tools.
-
- ORACLR_CONNECTION_DATA =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
- )
- (CONNECT_DATA =
- (SID = CLRExtProc)
- (PRESENTATION = RO)
- )
- )
-
- ORCL =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = WIN16-ORADG-PRI)(PORT = 1521))
- (CONNECT_DATA =
- (SERVER = DEDICATED)
- (SERVICE_NAME = orcl)
- )
- )
-
主库-修改新增tnsorcl和tnsorclstandby
配置项tnsorcl是主库中连接自身的tnsname,host是主库计算机名或ip。
配置项tnsorclstandby是主库中连接从库的tnsname,host是从库计算机名或ip。
注意这两个配置项的名称与前述主库参数配置的参数名是对应的,否则前述参数修改会无法生效。
- # tnsnames.ora Network Configuration File: D:\oracle\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
- # Generated by Oracle configuration tools.
-
- ORACLR_CONNECTION_DATA =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
- )
- (CONNECT_DATA =
- (SID = CLRExtProc)
- (PRESENTATION = RO)
- )
- )
-
- ORCL =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = WIN16-ORADG-PRI)(PORT = 1521))
- (CONNECT_DATA =
- (SERVER = DEDICATED)
- (SERVICE_NAME = orcl)
- )
- )
-
- tnsorcl =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = WIN16-ORADG-PRI)(PORT = 1521))
- (CONNECT_DATA =
- (SERVICE_NAME = orcl)
- )
- )
-
- tnsorclstandby =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = WIN16-ORADG-STD)(PORT = 1521))
- (CONNECT_DATA =
- (SERVICE_NAME = orcl)
- )
- )
-
主库密码文件为PWDorcl.ora,路径【D:\oracle\product\11.2.0\dbhome_1\database】
将主库的PWDorcl.ora手动拷贝到从库的相同目录(D:\oracle\product\11.2.0\dbhome_1\database)。
将从库的此文件改名为PWDorclstandby.ora,名称中orclstandby是备库的db_unique_name。
注意是主库中操作,因已有的spfile文件无法修改,所以依靠spfile生成pfile(INITorcl.ora)。
理论:
ORACLE中的参数文件是一个包含一系列参数以及参数对应值的操作系统文件,可以分为两种类型。它们是在数据库实例启动时候加载的,决定了数据库的物理结构、内存、数据库的限制及系统大量的默认值、数据库的各种物理属性、指定数据库控制文件名和路径等信息,是进行数据库设计和性能调优的重要文件。
PFILE:初始化参数文件(Initialization Parameters Files),Oracle 9i之前,ORACLE一直采用PFILE方式存储初始化参数,该文件为文本文件。
SPFILE:服务器参数文件(Server Parameter Files),从Oracle 9i开始,Oracle引入了SPFILE文件,该文件为二进制格式,不能通过手工修改。
PFILE与SPFILE的区别: 1:PFILE是文本文件的,而SPFILE是二进制格式的。PFILE文件可以用文本编辑器打开手工配置、而SPFILE不行,只能通过SQL命令在线修改。从操作系统上可以看到这两者的区别,初始化参数文件为ASCII文本文件,SPFILE为数据文件。
创建pfile(INITorcl.ORA)的命令【create pfile from spfile;】
执行之后,将在【D:\oracle\product\11.2.0\dbhome_1\database】路径下生成INITorcl.ORA,此文件之前不存在。
(主库中生成INITorcl.ORA的目的是将其拷贝到从库中进行修改)
- SQL> create pfile from spfile;
-
- 文件已创建。
-
- SQL>
将主库[D:\oracle\product\11.2.0\dbhome_1\database]下INITorcl.ORA文件拷贝到从库相同位置,并改名为INITorclstandby.ORA
对拷贝到从库后的INITorclstandby.ORA内容修改。
INITorclstandby.ORA原始内容
- orcl.__db_cache_size=486539264
- orcl.__java_pool_size=16777216
- orcl.__large_pool_size=16777216
- orcl.__oracle_base='D:\oracle'#ORACLE_BASE set from environment
- orcl.__pga_aggregate_target=436207616
- orcl.__sga_target=855638016
- orcl.__shared_io_pool_size=0
- orcl.__shared_pool_size=318767104
- orcl.__streams_pool_size=0
- *.audit_file_dest='D:\oracle\admin\orcl\adump'
- *.audit_trail='db'
- *.compatible='11.2.0.0.0'
- *.control_files='D:\oracle\oradata\orcl\control01.ctl','D:\oracle\recovery_area\orcl\control02.ctl'
- *.db_block_size=8192
- *.db_domain=''
- *.db_name='orcl'
- *.db_recovery_file_dest='D:\oracle\recovery_area'
- *.db_recovery_file_dest_size=4102029312
- *.diagnostic_dest='D:\oracle'
- *.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
- *.fal_client='tnsorcl'
- *.fal_server='tnsorclstandby'
- *.log_archive_config='DG_CONFIG=(orcl,orclstandby)'
- *.log_archive_dest_1='LOCATION=D:\oracle\product\11.2.0\dbhome_1\archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl'
- *.log_archive_dest_2='SERVICE=tnsorclstandby LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orclstandby'
- *.memory_target=1287651328
- *.open_cursors=300
- *.processes=150
- *.remote_login_passwordfile='EXCLUSIVE'
- *.standby_file_management='AUTO'
- *.undo_tablespace='UNDOTBS1'
修改项
| 原 | 改后 | |
| 新增 | 无 | *.db_unique_name='orclstandby' |
| 修改 | *.audit_file_dest='D:\oracle\admin\orcl\adump' | *.audit_file_dest='D:\oracle\admin\orclstandby\adump' |
| 修改 | *.control_files='D:\oracle\oradata\orcl\control01.ctl','D:\oracle\recovery_area\orcl\control02.ctl' | *.control_files='D:\oracle\oradata\orclstandby\control01.ctl','D:\oracle\recovery_area\orclstandby\control02.ctl' |
| 修改 | *.log_archive_dest_1='LOCATION=D:\oracle\product\11.2.0\dbhome_1\archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl' | *.log_archive_dest_1='LOCATION=D:\oracle\product\11.2.0\dbhome_1\archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orclstandby' |
| 修改 | *.log_archive_dest_2='SERVICE=tnsorclstandby LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orclstandby' | *.log_archive_dest_2='SERVICE=tnsorcl LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl' |
| *.fal_client='tnsorcl' | *.fal_client='tnsorclstandby' | |
| *.fal_server='tnsorclstandby' | *.fal_server='tnsorcl' |
完整修改后INITorclstandby.ORA的内容
- orcl.__db_cache_size=486539264
- orcl.__java_pool_size=16777216
- orcl.__large_pool_size=16777216
- orcl.__oracle_base='D:\oracle'#ORACLE_BASE set from environment
- orcl.__pga_aggregate_target=436207616
- orcl.__sga_target=855638016
- orcl.__shared_io_pool_size=0
- orcl.__shared_pool_size=318767104
- orcl.__streams_pool_size=0
- *.audit_file_dest='D:\oracle\admin\orclstandby\adump'
- *.audit_trail='db'
- *.compatible='11.2.0.0.0'
- *.control_files='D:\oracle\oradata\orclstandby\control01.ctl','D:\oracle\recovery_area\orclstandby\control02.ctl'
- *.db_block_size=8192
- *.db_domain=''
- *.db_name='orcl'
- *.db_unique_name='orclstandby'
- *.db_recovery_file_dest='D:\oracle\recovery_area'
- *.db_recovery_file_dest_size=4102029312
- *.diagnostic_dest='D:\oracle'
- *.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
- *.fal_client='tnsorclstandby'
- *.fal_server='tnsorcl'
- *.log_archive_config='DG_CONFIG=(orcl,orclstandby)'
- *.log_archive_dest_1='LOCATION=D:\oracle\product\11.2.0\dbhome_1\archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orclstandby'
- *.log_archive_dest_2='SERVICE=tnsorclstandby LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orclstandby'
- *.memory_target=1287651328
- *.open_cursors=300
- *.processes=150
- *.remote_login_passwordfile='EXCLUSIVE'
- *.standby_file_management='AUTO'
- *.undo_tablespace='UNDOTBS1'
从库中根据从库INITorclstandby.ORA文件中涉及的如下路径手工创建目录:
D:\oracle\admin\orclstandby\adump
D:\oracle\oradata\orclstandby\
D:\oracle\recovery_area\orclstandby\
D:\oracle\product\11.2.0\dbhome_1\archivelog
配置前
- # listener.ora Network Configuration File: D:\oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
- # Generated by Oracle configuration tools.
-
- SID_LIST_LISTENER =
- (SID_LIST =
- (SID_DESC =
- (SID_NAME = CLRExtProc)
- (ORACLE_HOME = D:\oracle\product\11.2.0\dbhome_1)
- (PROGRAM = extproc)
- (ENVS = "EXTPROC_DLLS=ONLY:D:\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
- )
- )
-
- LISTENER =
- (DESCRIPTION_LIST =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
- (ADDRESS = (PROTOCOL = TCP)(HOST = WIN16-ORADG-STD)(PORT = 1521))
- )
- )
-
- ADR_BASE_LISTENER = D:\oracle
-
配置后
- # listener.ora Network Configuration File: D:\oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
- # Generated by Oracle configuration tools.
-
- SID_LIST_LISTENER =
- (SID_LIST =
- (SID_DESC =
- (SID_NAME = CLRExtProc)
- (ORACLE_HOME = D:\oracle\product\11.2.0\dbhome_1)
- (PROGRAM = extproc)
- (ENVS = "EXTPROC_DLLS=ONLY:D:\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
- )
-
- (SID_DESC =
- (GLOBAL_DBNAME = orcl)
- (SID_NAME = orclstandby)
- (ORACLE_HOME = D:\oracle\product\11.2.0\dbhome_1)
- )
- )
-
- LISTENER =
- (DESCRIPTION_LIST =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
- (ADDRESS = (PROTOCOL = TCP)(HOST = WIN16-ORADG-STD)(PORT = 1521))
- )
- )
-
- ADR_BASE_LISTENER = D:\oracle
-
配置前
- # tnsnames.ora Network Configuration File: D:\oracle\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
- # Generated by Oracle configuration tools.
-
- ORACLR_CONNECTION_DATA =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
- )
- (CONNECT_DATA =
- (SID = CLRExtProc)
- (PRESENTATION = RO)
- )
- )
-
配置后
- # tnsnames.ora Network Configuration File: D:\oracle\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
- # Generated by Oracle configuration tools.
-
- ORACLR_CONNECTION_DATA =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
- )
- (CONNECT_DATA =
- (SID = CLRExtProc)
- (PRESENTATION = RO)
- )
- )
-
-
- ORCL =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = WIN16-ORADG-STD)(PORT = 1521))
- (CONNECT_DATA =
- (SERVER = DEDICATED)
- (SERVICE_NAME = orcl)
- )
- )
-
- tnsorcl =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = WIN16-ORADG-PRI)(PORT = 1521))
- (CONNECT_DATA =
- (SERVICE_NAME = orcl)
- )
- )
-
- tnsorclstandby =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = WIN16-ORADG-STD)(PORT = 1521))
- (CONNECT_DATA =
- (SERVICE_NAME = orcl)
- )
- )
-
-
如果从库中安装有oracle client,则需按上述内容配置client中的监听文件。路径:D:\oracle\product\11.2.0\client_1\network\admin
由于规划备库的instance_name为orclstandby
这里oradim参数如下
oradim –new –sid orclstandby
执行如下
Windows资源管理器进入D:\oracle\product\11.2.0\dbhome_1\BIN
输入cmd
- Microsoft Windows [版本 10.0.14393]
- (c) 2016 Microsoft Corporation。保留所有权利。
-
- D:\oracle\product\11.2.0\dbhome_1\BIN>oradim -new -sid orclstandby
- 实例已创建。
-
- D:\oracle\product\11.2.0\dbhome_1\BIN>
执行之后打开“服务”查看,新增了一项OracleServiceoraclestandby的服务,手动右键将其修改为自动启动。
再次查看监听状态,监听有变化
- Microsoft Windows [版本 10.0.14393]
- (c) 2016 Microsoft Corporation。保留所有权利。
-
- C:\Users\Administrator>lsnrctl status
-
- LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 21-11月-2022 10:47:07
-
- Copyright (c) 1991, 2010, Oracle. All rights reserved.
-
- 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
- LISTENER 的 STATUS
- ------------------------
- 别名 LISTENER
- 版本 TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
- 启动日期 21-11月-2022 09:28:48
- 正常运行时间 0 天 1 小时 18 分 35 秒
- 跟踪级别 off
- 安全性 ON: Local OS Authentication
- SNMP OFF
- 监听程序参数文件 D:\oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
- 监听程序日志文件 d:\oracle\diag\tnslsnr\WIN16-ORADG-STD\listener\alert\log.xml
- 监听端点概要...
- (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
- (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN16-ORADG-STD)(PORT=1521)))
- 服务摘要..
- 服务 "CLRExtProc" 包含 1 个实例。
- 实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
- 服务 "orcl" 包含 1 个实例。
- 实例 "orclstandby (ORACLE_HOME = D:\oracle\product\11.2.0\dbhome_1", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
- 命令执行成功
-
- C:\Users\Administrator>
由于之前从库创建过orcl的数据库实例,在本次实验前删除了实例,但注册表留存了ORACLE_SID,这里需要手动修改注册表。
修改注册表
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1
ORACLE_SID由orcl改为orclstandby
改后重启服务中的oracle监听和OracleServiceorclstandby
修改注册表后再次sqlplus登录ok
- Microsoft Windows [版本 10.0.14393]
- (c) 2016 Microsoft Corporation。保留所有权利。
-
- D:\oracle\product\11.2.0\dbhome_1\BIN>sqlplus /nolog
-
- SQL*Plus: Release 11.2.0.1.0 Production on 星期一 11月 21 11:10:22 2022
- Copyright (c) 1982, 2010, Oracle. All rights reserved.
-
- SQL> conn sys/orcl as sysdba;
- ERROR:
- ORA-12560: TNS: 协议适配器错误
-
-
- SQL> conn sys/orcl as sysdba;
- 已连接到空闲例程。
- SQL>
命令
create spfile from pfile;
执行命令改后
在目录【D:\oracle\product\11.2.0\dbhome_1\database】下自动生成文件SPFILEORCLSTANDBY.ORA
成功
-
- D:\oracle\product\11.2.0\dbhome_1\BIN>sqlplus sys/orcl@orcl as sysdba
-
- SQL*Plus: Release 11.2.0.1.0 Production on 星期一 11月 21 14:22:05 2022
- Copyright (c) 1982, 2010, Oracle. All rights reserved.
-
- 已连接到空闲例程。
-
- SQL> 已断开连接
-
- D:\oracle\product\11.2.0\dbhome_1\BIN>sqlplus sys/orcl@tnsorcl as sysdba
-
- SQL*Plus: Release 11.2.0.1.0 Production on 星期一 11月 21 14:22:09 2022
- Copyright (c) 1982, 2010, Oracle. All rights reserved.
-
-
- 连接到:
- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
-
- SQL> 从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开
-
- D:\oracle\product\11.2.0\dbhome_1\BIN>sqlplus sys/orcl@tnsorclstandby as sysdba
-
- SQL*Plus: Release 11.2.0.1.0 Production on 星期一 11月 21 14:22:14 2022
- Copyright (c) 1982, 2010, Oracle. All rights reserved.
-
- 已连接到空闲例程。
-
- SQL> 已断开连接
-
- D:\oracle\product\11.2.0\dbhome_1\BIN>tnsping orcl
-
- TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 21-11月-2022 14:22:20
-
- Copyright (c) 1997, 2010, Oracle. All rights reserved.
-
- 已使用的参数文件:
- D:\oracle\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
-
-
- 已使用 TNSNAMES 适配器来解析别名
- 尝试连接 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = WIN16-ORADG-STD)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))
- OK (10 毫秒)
-
- D:\oracle\product\11.2.0\dbhome_1\BIN>tnsping tnsorcl
-
- TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 21-11月-2022 14:22:29
-
- Copyright (c) 1997, 2010, Oracle. All rights reserved.
-
- 已使用的参数文件:
- D:\oracle\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
-
-
- 已使用 TNSNAMES 适配器来解析别名
- 尝试连接 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = WIN16-ORADG-PRI)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = orcl)))
- OK (0 毫秒)
-
- D:\oracle\product\11.2.0\dbhome_1\BIN>tnsping tnsorclstandby
-
- TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 21-11月-2022 14:22:33
-
- Copyright (c) 1997, 2010, Oracle. All rights reserved.
-
- 已使用的参数文件:
- D:\oracle\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
-
-
- 已使用 TNSNAMES 适配器来解析别名
- 尝试连接 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = WIN16-ORADG-STD)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = orcl)))
- OK (10 毫秒)
-
- D:\oracle\product\11.2.0\dbhome_1\BIN>
测试连接成功,命令同备库命令,这里不再列出。
注意其中两个参数与主库此命令参数值不同,参数值互换了。
关键命令
alter system set db_file_name_convert='D:\oracle\oradata\orcl','D:\oracle\oradata\orclstandby' scope=spfile;
关键命令
alter system set log_file_name_convert='D:\oracle\oradata\orcl','D:\oracle\oradata\orclstandby' scope=spfile;
修改后重启。
cmd记录如下
-
- D:\oracle\product\11.2.0\dbhome_1\BIN>sqlplus sys/orcl as sysdba;
-
- SQL*Plus: Release 11.2.0.1.0 Production on 星期一 11月 21 16:14:44 2022
- Copyright (c) 1982, 2010, Oracle. All rights reserved.
-
-
- 连接到:
- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
-
- SQL> show parameter db_file_name_convert;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- db_file_name_convert string
- SQL> select name from v$datafile;
-
- NAME
- --------------------------------------------------------------------------------
- D:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
- D:\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
- D:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
- D:\ORACLE\ORADATA\ORCL\USERS01.DBF
- D:\ORACLE\ORADATA\ORCL\VAMS_DATA_0.DBF
-
- SQL> alter system set db_file_name_convert='D:\oracle\oradata\orcl','D:\oracle\oradata\orclstandby' scope=spfile;
-
- 系统已更改。
-
- SQL> select member from v$logfile;
-
- MEMBER
- --------------------------------------------------------------------------------
- D:\ORACLE\ORADATA\ORCL\REDO03.LOG
- D:\ORACLE\ORADATA\ORCL\REDO02.LOG
- D:\ORACLE\ORADATA\ORCL\REDO01.LOG
-
- SQL> alter system set log_file_name_convert='D:\oracle\oradata\orcl','D:\oracle\oradata\orclstandby' scope=spfile;
-
- 系统已更改。
-
- SQL> shutdown immediate;
- ORA-01109: 数据库未打开
-
-
- 已经卸载数据库。
- ORACLE 例程已经关闭。
- SQL> startup nomount;
- ORACLE 例程已经启动。
-
- Total System Global Area 1286066176 bytes
- Fixed Size 2175408 bytes
- Variable Size 754978384 bytes
- Database Buffers 520093696 bytes
- Redo Buffers 8818688 bytes
- SQL> show parameter db_file_name_convert;
-
- NAME TYPE
- ------------------------------------ ----------------------
- VALUE
- ------------------------------
- db_file_name_convert string
- D:\oracle\oradata\orcl, D:\ora
- cle\oradata\orclstandby
- SQL> show parameter log_file_name_convert;
-
- NAME TYPE
- ------------------------------------ ----------------------
- VALUE
- ------------------------------
- log_file_name_convert string
- D:\oracle\oradata\orcl, D:\ora
- cle\oradata\orclstandby
- SQL>
Cmd切换到目录【D:\oracle\product\11.2.0\dbhome_1\BIN】
命令【rman target sys/orcl@tnsorcl auxiliary sys/orcl@tnsorclstandby】
在RMAN提示符后输入
【duplicate target database for standby from active database nofilenamecheck;】
提示
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: Duplicate Db 命令 (在 11/21/2022 15:01:53 上) 失败
RMAN-06403: 无法获得完全授权的会话
RMAN-04006: 来自辅助数据库的错误: ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
解决办法将数据库以nomount方式启动。
- Microsoft Windows [版本 10.0.14393]
- (c) 2016 Microsoft Corporation。保留所有权利。
-
- D:\oracle\product\11.2.0\dbhome_1\BIN>rman target sys/orcl@tnsorcl auxiliary sys/orcl@tnsorclstandby
-
- 恢复管理器: Release 11.2.0.1.0 - Production on 星期一 11月 21 15:00:11 2022
-
- Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
-
- 连接到目标数据库: ORCL (DBID=1629940155)
- 已连接到辅助数据库 (未启动)
-
- RMAN> duplicate target database for standby from active database nofilenamecheck;
-
- 启动 Duplicate Db 于 21-11月-22
- RMAN-00571: ===========================================================
- RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
- RMAN-00571: ===========================================================
- RMAN-03002: Duplicate Db 命令 (在 11/21/2022 15:01:53 上) 失败
- RMAN-06403: 无法获得完全授权的会话
- RMAN-04006: 来自辅助数据库的错误: ORA-01034: ORACLE not available
- ORA-27101: shared memory realm does not exist
-
- RMAN>
- ^C
- D:\oracle\product\11.2.0\dbhome_1\BIN>sqlplus sys/orcl as sysdba;
-
- SQL*Plus: Release 11.2.0.1.0 Production on 星期一 11月 21 15:16:41 2022
- Copyright (c) 1982, 2010, Oracle. All rights reserved.
-
- 已连接到空闲例程。
-
- SQL> shutdown immediate
- ORA-01034: ORACLE not available
- ORA-27101: shared memory realm does not exist
- SQL> startup nomount
- ORACLE 例程已经启动。
-
- Total System Global Area 1286066176 bytes
- Fixed Size 2175408 bytes
- Variable Size 754978384 bytes
- Database Buffers 520093696 bytes
- Redo Buffers 8818688 bytes
- SQL>
成功操作记录
-
- D:\oracle\product\11.2.0\dbhome_1\BIN>rman target sys/orcl@tnsorcl auxiliary sys/orcl@tnsorclstandby
-
- 恢复管理器: Release 11.2.0.1.0 - Production on 星期一 11月 21 16:31:39 2022
-
- Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
-
- 连接到目标数据库: ORCL (DBID=1629940155)
- 已连接到辅助数据库: ORCL (未装载)
-
- RMAN> duplicate target database for standby from active database nofilenamecheck;
-
- 启动 Duplicate Db 于 21-11月-22
- 使用目标数据库控制文件替代恢复目录
- 分配的通道: ORA_AUX_DISK_1
- 通道 ORA_AUX_DISK_1: SID=63 设备类型=DISK
-
- 内存脚本的内容:
- {
- backup as copy reuse
- targetfile 'D:\oracle\product\11.2.0\dbhome_1\DATABASE\PWDorcl.ORA' auxiliary format
- 'D:\oracle\product\11.2.0\dbhome_1\DATABASE\PWDorclstandby.ORA' ;
- }
- 正在执行内存脚本
-
- 启动 backup 于 21-11月-22
- 分配的通道: ORA_DISK_1
- 通道 ORA_DISK_1: SID=198 设备类型=DISK
- 完成 backup 于 21-11月-22
-
- 内存脚本的内容:
- {
- backup as copy current controlfile for standby auxiliary format 'D:\ORACLE\ORADATA\ORCLSTANDBY\CONTROL01.CTL';
- restore clone controlfile to 'D:\ORACLE\RECOVERY_AREA\ORCLSTANDBY\CONTROL02.CTL' from
- 'D:\ORACLE\ORADATA\ORCLSTANDBY\CONTROL01.CTL';
- }
- 正在执行内存脚本
-
- 启动 backup 于 21-11月-22
- 使用通道 ORA_DISK_1
- 通道 ORA_DISK_1: 启动数据文件副本
- 复制备用控制文件
- 输出文件名=D:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\SNCFORCL.ORA 标记=TAG20221121T163146 RECID=8 STAMP=1121358707
- 通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:03
- 完成 backup 于 21-11月-22
-
- 启动 restore 于 21-11月-22
- 使用通道 ORA_AUX_DISK_1
-
- 通道 ORA_AUX_DISK_1: 已复制控制文件副本
- 完成 restore 于 21-11月-22
-
- 内存脚本的内容:
- {
- sql clone 'alter database mount standby database';
- }
- 正在执行内存脚本
-
- sql 语句: alter database mount standby database
-
- 内存脚本的内容:
- {
- set newname for tempfile 1 to
- "D:\ORACLE\ORADATA\ORCLSTANDBY\TEMP01.DBF";
- set newname for tempfile 2 to
- "D:\ORACLE\ORADATA\ORCLSTANDBY\VAMS_TEMP_0.DBF";
- switch clone tempfile all;
- set newname for datafile 1 to
- "D:\ORACLE\ORADATA\ORCLSTANDBY\SYSTEM01.DBF";
- set newname for datafile 2 to
- "D:\ORACLE\ORADATA\ORCLSTANDBY\SYSAUX01.DBF";
- set newname for datafile 3 to
- "D:\ORACLE\ORADATA\ORCLSTANDBY\UNDOTBS01.DBF";
- set newname for datafile 4 to
- "D:\ORACLE\ORADATA\ORCLSTANDBY\USERS01.DBF";
- set newname for datafile 5 to
- "D:\ORACLE\ORADATA\ORCLSTANDBY\VAMS_DATA_0.DBF";
- backup as copy reuse
- datafile 1 auxiliary format
- "D:\ORACLE\ORADATA\ORCLSTANDBY\SYSTEM01.DBF" datafile
- 2 auxiliary format
- "D:\ORACLE\ORADATA\ORCLSTANDBY\SYSAUX01.DBF" datafile
- 3 auxiliary format
- "D:\ORACLE\ORADATA\ORCLSTANDBY\UNDOTBS01.DBF" datafile
- 4 auxiliary format
- "D:\ORACLE\ORADATA\ORCLSTANDBY\USERS01.DBF" datafile
- 5 auxiliary format
- "D:\ORACLE\ORADATA\ORCLSTANDBY\VAMS_DATA_0.DBF" ;
- sql 'alter system archive log current';
- }
- 正在执行内存脚本
-
- 正在执行命令: SET NEWNAME
-
- 正在执行命令: SET NEWNAME
-
- 临时文件 1 在控制文件中已重命名为 D:\ORACLE\ORADATA\ORCLSTANDBY\TEMP01.DBF
- 临时文件 2 在控制文件中已重命名为 D:\ORACLE\ORADATA\ORCLSTANDBY\VAMS_TEMP_0.DBF
-
- 正在执行命令: SET NEWNAME
-
- 正在执行命令: SET NEWNAME
-
- 正在执行命令: SET NEWNAME
-
- 正在执行命令: SET NEWNAME
-
- 正在执行命令: SET NEWNAME
-
- 启动 backup 于 21-11月-22
- 使用通道 ORA_DISK_1
- 通道 ORA_DISK_1: 启动数据文件副本
- 输入数据文件: 文件号=00001 名称=D:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
- 输出文件名=D:\ORACLE\ORADATA\ORCLSTANDBY\SYSTEM01.DBF 标记=TAG20221121T163201
- 通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:01:16
- 通道 ORA_DISK_1: 启动数据文件副本
- 输入数据文件: 文件号=00005 名称=D:\ORACLE\ORADATA\ORCL\VAMS_DATA_0.DBF
- 输出文件名=D:\ORACLE\ORADATA\ORCLSTANDBY\VAMS_DATA_0.DBF 标记=TAG20221121T163201
- 通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:35
- 通道 ORA_DISK_1: 启动数据文件副本
- 输入数据文件: 文件号=00002 名称=D:\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
- 输出文件名=D:\ORACLE\ORADATA\ORCLSTANDBY\SYSAUX01.DBF 标记=TAG20221121T163201
- 通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:55
- 通道 ORA_DISK_1: 启动数据文件副本
- 输入数据文件: 文件号=00003 名称=D:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
- 输出文件名=D:\ORACLE\ORADATA\ORCLSTANDBY\UNDOTBS01.DBF 标记=TAG20221121T163201
- 通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:15
- 通道 ORA_DISK_1: 启动数据文件副本
- 输入数据文件: 文件号=00004 名称=D:\ORACLE\ORADATA\ORCL\USERS01.DBF
- 输出文件名=D:\ORACLE\ORADATA\ORCLSTANDBY\USERS01.DBF 标记=TAG20221121T163201
- 通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:01
- 完成 backup 于 21-11月-22
-
- sql 语句: alter system archive log current
-
- 内存脚本的内容:
- {
- switch clone datafile all;
- }
- 正在执行内存脚本
-
- 数据文件 1 已转换成数据文件副本
- 输入数据文件副本 RECID=8 STAMP=1121358906 文件名=D:\ORACLE\ORADATA\ORCLSTANDBY\SYSTEM01.DBF
- 数据文件 2 已转换成数据文件副本
- 输入数据文件副本 RECID=9 STAMP=1121358907 文件名=D:\ORACLE\ORADATA\ORCLSTANDBY\SYSAUX01.DBF
- 数据文件 3 已转换成数据文件副本
- 输入数据文件副本 RECID=10 STAMP=1121358907 文件名=D:\ORACLE\ORADATA\ORCLSTANDBY\UNDOTBS01.DBF
- 数据文件 4 已转换成数据文件副本
- 输入数据文件副本 RECID=11 STAMP=1121358907 文件名=D:\ORACLE\ORADATA\ORCLSTANDBY\USERS01.DBF
- 数据文件 5 已转换成数据文件副本
- 输入数据文件副本 RECID=12 STAMP=1121358907 文件名=D:\ORACLE\ORADATA\ORCLSTANDBY\VAMS_DATA_0.DBF
- 完成 Duplicate Db 于 21-11月-22
-
- RMAN>
复制成功
进入从库windows系统,查看目录【D:\oracle\oradata\orclstandby】已经自动获得了来自主机的拷贝。
添加standby日志组需要注意的事项:
standby日志组个数:配置为redo日志组个数+1
在主库与备库都添加standby日志组。主库可以不添加,但是如果后期发生主备切换,还是要添加,所以最好一次性添加。
只查询standby日志组: select * from v$standby_log ;
理论知识
注:Standby Redo Logs(SRL)即备份的重做日志,创建SRL后,主库上写入每个Online Redo Log时都会被传输到备库,同时也会写入到SRL中。
SRL是额外的Redo Log,但SRL的创建有以下几个原则:
1)Standby Redo Log File要与Online Redo Log File一样大
查询方法:SELECT GROUP#, BYTES/1024/1024 M FROM V$LOG;
2)Standby Redo Log Group的数量至少要比Online Redo Log Group的数量多1组
查询方法:SELECT GROUP#, BYTES/1024/1024 M FROM V$LOG;
3)当主库添加了Redo Log Group,备库也必须添加相应的Redo Log Group,否则会导致备库在主库switch log后不同步。
SRL创建方法:alter database add standby logfile group 14 'D:/Oracle/oradata/PMS/standby14.log' size 50M;(创建一个节点)
SRL删除方法:alter database drop standby logfile group 14;
SRL查看方法:select group#,bytes/1024/1024 as Mb from v$standby_log;
4)归档位置原则:
a)如果配置了STANDBY_ARCHIVE_DEST,则归档将使用该目录位置
b)如果LOG_ARCHIVE_DEST_n参数明确定义了VALID_FOR=(STANDBY_LOGFILE,*)选项,则归档将使用LOG_ARCHIVE_DEST_n目录位置
c)如果STANDBY_ARCHIVE_DEST和LOG_ARCHIVE_DEST_n都没有配置,则使用STANDBY_ARCHIVE_DEST的缺省位置%ORACLE_HOME%\database\archive(Linux位于%ORACLE_HOME%\dbs\arc)
d)如果需要将Standby Redo Log归档到FRA(Fast Recovery Area):
Ⅰ)设置LOG_ARCHIVE_DEST_n的LOCATION参数为USE_DB_RECOVERY_FILE_DEST
Ⅱ)设置LOG_ARCHIVE_DEST_n的VALID_FOR参数为“允许归档”。即VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
e)如果需要将Standby Redo Log归档到本地指定位置:
Ⅰ)设置LOG_ARCHIVE_DEST_n的LOCATION参数为USE_DB_RECOVERY_FILE_DEST。
即LOG_ARCHIVE_DEST_1='LOCATION=D:/Oracle/oradata/PMS VALID_FOR=(STANDBY_LOGFILE,STANDBY_ROLE)'
Ⅱ)设置LOG_ARCHIVE_DEST_n的VALID_FOR参数为“允许归档”。
即VALID_FOR=(STANDBY_LOGFILE,STANDBY_ROLE)
添加前
-
- SQL*Plus: Release 11.2.0.1.0 Production on 星期二 11月 22 08:46:03 2022
- Copyright (c) 1982, 2010, Oracle. All rights reserved.
-
- 请输入用户名: / as sysdba
-
- 连接到:
- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
-
- SQL> archive log list
- 数据库日志模式 存档模式
- 自动存档 启用
- 存档终点 D:\oracle\product\11.2.0\dbhome_1\archivelog
- 最早的联机日志序列 44
- 下一个存档日志序列 46
- 当前日志序列 46
- SQL> show parameter log_archive_format;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- log_archive_format string ARC%S_%R.%T
- SQL> show parameter DB_RECOVERY_FILE_DEST;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- db_recovery_file_dest string D:\oracle\recovery_area
- db_recovery_file_dest_size big integer 3912M
- SQL> select name,log_mode from v$database;
-
- NAME LOG_MODE
- --------- ------------
- ORCL ARCHIVELOG
-
- SQL> select * from v$option where parameter='Oracle Data Guard';
-
- PARAMETER
- ----------------------------------------------------------------
- VALUE
- ----------------------------------------------------------------
- Oracle Data Guard
- TRUE
-
-
- SQL> select name,force_logging from v$database;
-
- NAME FOR
- --------- ---
- ORCL YES
-
- SQL> select group#,bytes/1024/1024 as Mb from v$log;
-
- GROUP# MB
- ---------- ----------
- 1 50
- 2 50
- 3 50
-
- SQL>
原redo有3个,这里要添加4个standbyredo log。
命令
alter database add standby logfile group 11 'D:\oracle\oradata\orcl\standbyredo11.log' size 50M;
alter database add standby logfile group 12 'D:\oracle\oradata\orcl\standbyredo12.log' size 50M;
alter database add standby logfile group 13 'D:\oracle\oradata\orcl\standbyredo13.log' size 50M;
alter database add standby logfile group 14 'D:\oracle\oradata\orcl\standbyredo14.log' size 50M;
- Microsoft Windows [版本 10.0.14393]
- (c) 2016 Microsoft Corporation。保留所有权利。
-
- D:\oracle\product\11.2.0\dbhome_1\BIN>sqlplus / as sysdba
-
- SQL*Plus: Release 11.2.0.1.0 Production on 星期二 11月 22 09:22:49 2022
- Copyright (c) 1982, 2010, Oracle. All rights reserved.
-
-
- 连接到:
- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
-
- SQL> alter database add standby logfile group 11 'D:\oracle\oradata\orcl\standbyredo11.log' size 50M;
-
- 数据库已更改。
-
- SQL> alter database add standby logfile group 12 'D:\oracle\oradata\orcl\standbyredo12.log' size 50M;
-
- 数据库已更改。
-
- SQL> alter database add standby logfile group 13 'D:\oracle\oradata\orcl\standbyredo13.log' size 50M;
-
- 数据库已更改。
-
- SQL> alter database add standby logfile group 14 'D:\oracle\oradata\orcl\standbyredo14.log' size 50M;
-
- 数据库已更改。
-
- SQL>
用命令shutdown immediate关闭数据库
然后用startup重启数据库
四个命令如下
操作完成后自动生成standbyredo四个log文件
- Microsoft Windows [版本 10.0.14393]
- (c) 2016 Microsoft Corporation。保留所有权利。
-
- D:\oracle\product\11.2.0\dbhome_1\BIN>sqlplus / as sysdba
-
- SQL*Plus: Release 11.2.0.1.0 Production on 星期二 11月 22 09:37:23 2022
- Copyright (c) 1982, 2010, Oracle. All rights reserved.
-
- 已连接到空闲例程。
-
- SQL> select group#,bytes/1024/1024 as Mb from v$log;
- select group#,bytes/1024/1024 as Mb from v$log
- *
- 第 1 行出现错误:
- ORA-01034: ORACLE not available
- 进程 ID: 0
- 会话 ID: 0 序列号: 0
-
-
- SQL> alter database add standby logfile group 11 'D:\oracle\oradata\orclstandby\standbyredo11.log' siez 50M;
- alter database add standby logfile group 11 'D:\oracle\oradata\orclstandby\standbyredo11.log' siez 50M
- *
- 第 1 行出现错误:
- ORA-01034: ORACLE not available
- 进程 ID: 0
- 会话 ID: 0 序列号: 0
-
-
- SQL> shutdown immediate
- ORA-01034: ORACLE not available
- ORA-27101: shared memory realm does not exist
- SQL> startup nomount
- ORACLE 例程已经启动。
-
- Total System Global Area 1286066176 bytes
- Fixed Size 2175408 bytes
- Variable Size 754978384 bytes
- Database Buffers 520093696 bytes
- Redo Buffers 8818688 bytes
- SQL> select group#,bytes/1024/1024 as Mb from v$log;
- select group#,bytes/1024/1024 as Mb from v$log
- *
- 第 1 行出现错误:
- ORA-01507: ??????
-
-
- SQL> alter database add standby logfile group 11 'D:\oracle\oradata\orclstandby\standbyredo11.log' siez 50M;
- alter database add standby logfile group 11 'D:\oracle\oradata\orclstandby\standbyredo11.log' siez 50M
- *
- 第 1 行出现错误:
- ORA-00933: SQL ???????
-
-
- SQL> alter database add standby logfile group 11 'D:\oracle\oradata\orclstandby\standbyredo11.log' size 50M;
- alter database add standby logfile group 11 'D:\oracle\oradata\orclstandby\standbyredo11.log' size 50M
- *
- 第 1 行出现错误:
- ORA-01507: ??????
-
-
- SQL> shutdown immediate
- ORA-01507: ??????
-
-
- ORACLE 例程已经关闭。
- SQL> startup
- ORACLE 例程已经启动。
-
- Total System Global Area 1286066176 bytes
- Fixed Size 2175408 bytes
- Variable Size 754978384 bytes
- Database Buffers 520093696 bytes
- Redo Buffers 8818688 bytes
- 数据库装载完毕。
- 数据库已经打开。
- SQL> select group#,bytes/1024/1024 as Mb from v$log;
-
- GROUP# MB
- ---------- ----------
- 1 50
- 2 50
- 3 50
-
- SQL> alter database add standby logfile group 11 'D:\oracle\oradata\orclstandby\standbyredo11.log' size 50M;
-
- 数据库已更改。
-
- SQL> alter database add standby logfile group 12 'D:\oracle\oradata\orclstandby\standbyredo12.log' size 50M;
-
- 数据库已更改。
-
- SQL> alter database add standby logfile group 13 'D:\oracle\oradata\orclstandby\standbyredo13.log' size 50M;
-
- 数据库已更改。
-
- SQL> alter database add standby logfile group 14 'D:\oracle\oradata\orclstandby\standbyredo14.log' size 50M;
-
- 数据库已更改。
-
- SQL>
-
- D:\oracle\product\11.2.0\dbhome_1\BIN>sqlplus sys/orcl as sysdba;
-
- SQL*Plus: Release 11.2.0.1.0 Production on 星期一 11月 21 16:56:28 2022
- Copyright (c) 1982, 2010, Oracle. All rights reserved.
-
-
- 连接到:
- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
-
- SQL> alter database recover managed standby database disconnect from session;
-
- 数据库已更改。
-
- SQL> recover managed standby database cancel;
- 完成介质恢复。
- SQL> shutdown immediate;
- ORA-01109: 数据库未打开
-
-
- 已经卸载数据库。
- ORACLE 例程已经关闭。
- SQL> startup nomount;
- ORACLE 例程已经启动。
-
- Total System Global Area 1286066176 bytes
- Fixed Size 2175408 bytes
- Variable Size 754978384 bytes
- Database Buffers 520093696 bytes
- Redo Buffers 8818688 bytes
-
-
- SQL> alter database mount standby database;
-
- 数据库已更改。
-
- SQL> alter database open read only;
-
- 数据库已更改。
-
- SQL> alter database recover managed standby database using current logfile disconnect from session;
- alter database recover managed standby database using current logfile disconnect from session
- *
- 第 1 行出现错误:
- ORA-38500: USING CURRENT LOGFILE option not available without standby redo logs
-
-
- SQL> alter database recover managed standby database disconnect from session;
-
- 数据库已更改。
-
- SQL>
上述命令设置同步后,只有在切换日志时才同步,不会自动同步。
自动同步要点,两条指令
第一条
从库:alter database recover managed standby database disconnect from session;
执行后确保将从库OPEN_MODE状态改为READ ONLY WITH APPLY
上述这条指令只是开启了同步,但并不是实时同步。如果从库只执行这条指令,则仅当主库执行主库强制归档命令【ALTER SYSTEM SWITCH LOGFILE;】后,从库才能查询到最新数据。
第二条
从库:alter database recover managed standby database using current logfile disconnect;
需要注意的是,上述第一第二两条指令都会将从库OPEN_MODE状态改为READ ONLY WITH APPLY,但只有第二条指令能开启实时同步。
从库cmd操作如下
- SQL> select open_mode from v$database;
-
- OPEN_MODE
- --------------------
- READ ONLY WITH APPLY
-
- SQL> alter database recover managed standby database using current logfile disconnect;
- alter database recover managed standby database using current logfile disconnect
- *
- 第 1 行出现错误:
- ORA-01153: 激活了不兼容的介质恢复
-
-
- SQL> alter database recover managed standby database cancel;
-
- 数据库已更改。
-
- SQL> alter database recover managed standby database using current logfile disconnect;
-
- 数据库已更改。
-
- SQL> select open_mode from v$database;
-
- OPEN_MODE
- --------------------
- READ ONLY WITH APPLY
-
- SQL>
命令
select open_mode,database_role,protection_mode,protection_level from v$database;
-
- SQL*Plus: Release 11.2.0.1.0 Production on 星期一 11月 21 17:22:49 2022
- Copyright (c) 1982, 2010, Oracle. All rights reserved.
-
- 请输入用户名: sys as sysdba
- 输入口令:
-
- 连接到:
- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
-
- SQL> select open_mode,database_role,protection_mode,protection_level from v$database;
-
- OPEN_MODE DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL
- -------------------- ---------------- -------------------- --------------------
- READ WRITE PRIMARY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE
-
- SQL>
命令
select open_mode,database_role,protection_mode,protection_level from v$database;
-
- D:\oracle\product\11.2.0\dbhome_1\BIN>sqlplus sys/orcl as sysdba;
-
- SQL*Plus: Release 11.2.0.1.0 Production on 星期一 11月 21 17:20:40 2022
- Copyright (c) 1982, 2010, Oracle. All rights reserved.
-
-
- 连接到:
- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
-
- SQL> select open_mode,database_role,protection_mode,protection_level from v$database;
-
- OPEN_MODE DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL
- -------------------- ---------------- -------------------- --------------------
- READ ONLY WITH APPLY PHYSICAL STANDBY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE
-
- SQL>
主库操作
- SQL> create table testdg03(id number,name varchar2(50));
-
- 表已创建。
-
- SQL> insert into testdg03 values(1,'wdh-2022-11-22 14:43');
-
- 已创建 1 行。
-
- SQL> commit;
-
- 提交完成。
-
- SQL>
-
从库查询,ok
- SQL> select * from testdg03;
-
- ID NAME
- ---------- --------------------------------------------------
- 1 wdh-2022-11-22 14:43
-
- SQL>
设置自动同步后,将主库从库均重启,但从库启动后OPEN_MODE为READ ONLY,并非READ ONLY WITH APPLY,需要手动进入从库下发命令修改OPEN_MODE。
开始菜单-Oracle-OraDb11g_home1下点击Administration Assistant for windows软件



启动关闭选项修改为【服务启动时启动实例】 

上述确定后,注册表也相应自动改变了,如下
【HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1】

查看默认实例 Oracle主目录-OraDb11g_home1-右键属性


参考资料
https://www.cnblogs.com/lottu/p/9542053.html
https://www.cnblogs.com/lijiaman/p/10663047.html
Windows环境Oracle搭建Data Guard_阿坚87的博客-CSDN博客