Oracle 11g DataGuard 搭建笔记(Windows Server 2016)

article/2025/9/29 15:48:02

0.目录

目录

0.目录

1.需求

2.开发环境

3.DataGuard主从库参数环境规划

4.网络环境

5.主库-DataGuard配置

5.1查询及启用强制记录日志

5.3查询及启用归档

5.4主库参数配置

5.4.1查看db_unique_name及修改

5.4.2修改参数log_archive_config

5.4.3修改参数log_archive_dest_1

5.4.4修改参数log_archive_dest_2

5.4.5查看及修改参数log_archive_dest_state_1和log_archive_dest_state_2

5.4.6查看或修改数据文件位置

5.4.7主库操作-修改db_file_name_convert

5.4.8主库操作-修改log_file_name_convert

5.4.9查看及修改参数standby_file_management

5.4.10查看及修改参数fal_client

5.4.11查看及修改参数fal_server

5.5主库监听修改

5.6主库查看监听

5.7主库-查看及修改tnsnames.ora

6.从库(备库)-DataGuard配置

6.1主库密码文件拷贝到从库相同位置并改名

6.2初始化参数文件

6.2.1在主库中生成初始化参数文件INITorcl.ora

6.2.2拷贝主库pfile参数文件(INITorcl.ORA)到从库并重命名

6.2.3上述参数中部分路径手动创建

6.3从库-配置静态监听

6.4配置db_home_1中的tnsnames.ora文件

6.5创建windows-service

6.6从库尝试解决sqlplus登录ORA-12560: TNS: 协议适配器错误

6.7从库使用pfile文件创建spfile文件

6.8从库测试sqlplus通过tnsname连接主库与从库

6.9主库-测试验证tnsping和sqlplus通过主备tnsname连接

6.10备库操作-修改db_file_name_convert和log_file_name_convert

7.备库-通过rman将主库数据文件复制到从库

8.添加主库和备库的standby日志组

8.1主库添加standby日志组

8.2从库添加standby日志组

9备库-启用日志同步

10.DataGuard状态查看

10.1主库状态查看

10.2从库状态查看

11测试Dataguard主库写,然后从库读


1.需求

1.Windows平台搭建Oracle DataGuard,实现容灾

2.探索Oracle11g 基础上Oracle Dataguard增强的从库查询功能

2.开发环境

虚拟机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.为保险起见,重启一次服务器。

3.DataGuard主从库参数环境规划

主库

备库

操作系统

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

数据库安装

安装数据库软件+创建监听+安装数据库

安装数据库软件+创建监听

4.网络环境

主库从库均设置防火墙允许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-PRIC:\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=128192.168.7.181 的 Ping 统计信息:数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):最短 = 0ms,最长 = 0ms,平均 = 0msC:\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=128192.168.7.182 的 Ping 统计信息:数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):最短 = 0ms,最长 = 0ms,平均 = 0msC:\Users\Administrator>

从库ping host记录

Microsoft Windows [版本 10.0.14393]
(c) 2016 Microsoft Corporation。保留所有权利。C:\Users\Administrator>hostname
WIN16-ORADG-STDC:\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=128192.168.7.182 的 Ping 统计信息:数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):最短 = 0ms,最长 = 0ms,平均 = 0msC:\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 /flushdnsWindows 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=128192.168.7.181 的 Ping 统计信息:数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):最短 = 0ms,最长 = 0ms,平均 = 0ms

5.主库-DataGuard配置

5.1查询及启用强制记录日志

查询是否启用强制记录日志

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 2022Copyright (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 optionsSQL> select force_logging from v$database;FOR
---
NOSQL> alter database force logging;数据库已更改。SQL> select force_logging from v$database;FOR
---
YESSQL>

5.3查询及启用归档

查询命令

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
------------
NOARCHIVELOGSQL>

上述显示未启用归档模式。

如果未启用归档,可以按照如下步骤开启归档

----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
------------
ARCHIVELOGSQL>

5.4主库参数配置

5.4.1查看db_unique_name及修改

查看命令【show parameter db_unique_name;】

如需修改,则修改命令【alter system set db_unique_name = 'orcl' scope=spfile;】

db_unique_name后面填主库的待设定的唯一名称,用于区别从库的db_unique_name;

5.4.2修改参数log_archive_config

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 2022Copyright (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 optionsSQL> show parameter log_archive_config;NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_config                   string      DG_CONFIG=(orcl,orclstandby)
SQL>

5.4.3修改参数log_archive_dest_1

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) DB_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                  stringNAME                                 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

5.4.4修改参数log_archive_dest_2

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命令执行后再查询,未显示到设置结果是因为未重启数据库。

5.4.5查看及修改参数log_archive_dest_state_1和log_archive_dest_state_2

查看

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;

5.4.6查看或修改数据文件位置

目标是保证主库从库数据文件位置一致,不一致则用命令修改。

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.DBFSQL>

5.4.7主库操作-修改db_file_name_convert

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 sysdbaSQL*Plus: Release 11.2.0.1.0 Production on 星期一 11月 21 15:44:52 2022Copyright (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 optionsSQL> 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.DBFSQL> 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>

5.4.8主库操作-修改log_file_name_convert

关键命令

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.LOGSQL> 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.LOGSQL> 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>

5.4.9查看及修改参数standby_file_management

参数含义: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> 

5.4.10查看及修改参数fal_client

查看命令【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>

5.4.11查看及修改参数fal_server

查看命令【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>

5.5主库监听修改

查看原始监听,进入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

5.6主库查看监听

Microsoft Windows [版本 10.0.14393]
(c) 2016 Microsoft Corporation。保留所有权利。C:\Users\Administrator>lsnrctl statusLSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 18-11月-2022 08:57:36Copyright (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 statusLSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 18-11月-2022 17:11:27Copyright (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 reloadLSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 18-11月-2022 17:12:15Copyright (c) 1991, 2010, Oracle.  All rights reserved.正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
命令执行成功C:\Users\Administrator>lsnrctl statusLSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 18-11月-2022 17:12:19Copyright (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>

5.7主库-查看及修改tnsnames.ora

原始

# 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)))

6.从库(备库)-DataGuard配置

6.1主库密码文件拷贝到从库相同位置并改名

主库密码文件为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。

6.2初始化参数文件

6.2.1在主库中生成初始化参数文件INITorcl.ora

注意是主库中操作,因已有的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>

6.2.2拷贝主库pfile参数文件(INITorcl.ORA)到从库并重命名

将主库[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'

6.2.3上述参数中部分路径手动创建

从库中根据从库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

6.3从库-配置静态监听

配置前

# 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

6.4配置db_home_1中的tnsnames.ora文件

配置前

# 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

6.5创建windows-service

由于规划备库的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 statusLSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 21-11月-2022 10:47:07Copyright (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>

6.6从库尝试解决sqlplus登录ORA-12560: TNS: 协议适配器错误

由于之前从库创建过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 /nologSQL*Plus: Release 11.2.0.1.0 Production on 星期一 11月 21 11:10:22 2022Copyright (c) 1982, 2010, Oracle.  All rights reserved.SQL> conn sys/orcl as sysdba;
ERROR:
ORA-12560: TNS: 协议适配器错误SQL> conn sys/orcl as sysdba;
已连接到空闲例程。
SQL>

6.7从库使用pfile文件创建spfile文件

命令

create spfile from pfile;

执行命令改后

在目录【D:\oracle\product\11.2.0\dbhome_1\database】下自动生成文件SPFILEORCLSTANDBY.ORA

6.8从库测试sqlplus通过tnsname连接主库与从库

成功


D:\oracle\product\11.2.0\dbhome_1\BIN>sqlplus sys/orcl@orcl as sysdbaSQL*Plus: Release 11.2.0.1.0 Production on 星期一 11月 21 14:22:05 2022Copyright (c) 1982, 2010, Oracle.  All rights reserved.已连接到空闲例程。SQL> 已断开连接D:\oracle\product\11.2.0\dbhome_1\BIN>sqlplus sys/orcl@tnsorcl as sysdbaSQL*Plus: Release 11.2.0.1.0 Production on 星期一 11月 21 14:22:09 2022Copyright (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 optionsSQL> 从 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 sysdbaSQL*Plus: Release 11.2.0.1.0 Production on 星期一 11月 21 14:22:14 2022Copyright (c) 1982, 2010, Oracle.  All rights reserved.已连接到空闲例程。SQL> 已断开连接D:\oracle\product\11.2.0\dbhome_1\BIN>tnsping orclTNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 21-11月-2022 14:22:20Copyright (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 tnsorclTNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 21-11月-2022 14:22:29Copyright (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 tnsorclstandbyTNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 21-11月-2022 14:22:33Copyright (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>

6.9主库-测试验证tnsping和sqlplus通过主备tnsname连接

测试连接成功,命令同备库命令,这里不再列出。

6.10备库操作-修改db_file_name_convert和log_file_name_convert

注意其中两个参数与主库此命令参数值不同,参数值互换了。

关键命令

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 2022Copyright (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 optionsSQL> 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.DBFSQL> 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.LOGSQL> 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>

7.备库-通过rman将主库数据文件复制到从库

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 2022Copyright (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 existRMAN>
^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 2022Copyright (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 2022Copyright (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 reusetargetfile  '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 reusedatafile  1 auxiliary format"D:\ORACLE\ORADATA\ORCLSTANDBY\SYSTEM01.DBF"   datafile2 auxiliary format"D:\ORACLE\ORADATA\ORCLSTANDBY\SYSAUX01.DBF"   datafile3 auxiliary format"D:\ORACLE\ORADATA\ORCLSTANDBY\UNDOTBS01.DBF"   datafile4 auxiliary format"D:\ORACLE\ORADATA\ORCLSTANDBY\USERS01.DBF"   datafile5 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月-22sql 语句: 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月-22RMAN>

复制成功

进入从库windows系统,查看目录【D:\oracle\oradata\orclstandby】已经自动获得了来自主机的拷贝。

8.添加主库和备库的standby日志组

添加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)

8.1主库添加standby日志组

添加前


SQL*Plus: Release 11.2.0.1.0 Production on 星期二 11月 22 08:46:03 2022Copyright (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 optionsSQL> 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      ARCHIVELOGSQL> select * from v$option where parameter='Oracle Data Guard';PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
Oracle Data Guard
TRUESQL> select name,force_logging from v$database;NAME      FOR
--------- ---
ORCL      YESSQL> select group#,bytes/1024/1024 as Mb from v$log;GROUP#         MB
---------- ----------1         502         503         50SQL>

原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 sysdbaSQL*Plus: Release 11.2.0.1.0 Production on 星期二 11月 22 09:22:49 2022Copyright (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 optionsSQL> 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>

8.2从库添加standby日志组

用命令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 sysdbaSQL*Plus: Release 11.2.0.1.0 Production on 星期二 11月 22 09:37:23 2022Copyright (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 序列号: 0SQL> 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 序列号: 0SQL> 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         502         503         50SQL> 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>

9备库-启用日志同步


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 2022Copyright (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 optionsSQL> 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 bytesSQL> 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 logsSQL> 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 APPLYSQL> 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 APPLYSQL>

10.DataGuard状态查看

10.1主库状态查看

命令

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 2022Copyright (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 optionsSQL> 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 PERFORMANCESQL>

10.2从库状态查看

命令

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 2022Copyright (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 optionsSQL> 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 PERFORMANCESQL>

11测试Dataguard主库写,然后从库读

主库操作

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:43SQL>

其他问题

设置自动同步后,将主库从库均重启,但从库启动后OPEN_MODE为READ ONLY,并非READ ONLY WITH APPLY,需要手动进入从库下发命令修改OPEN_MODE。

解决从库-windows服务启动时未启动实例

开始菜单-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博客

windows搭建oracle dataguard,本人亲测_佐手烈焰魂的博客-CSDN博客

Oracle11g DG实战配置(Windows版)(一)基础说明_0xfather的博客-CSDN博客


http://chatgpt.dhexx.cn/article/aMUP1fw0.shtml

相关文章

oracle11g dataguard

1. 主库必须处于 归档模式 必须设置数据库强制归档&#xff0c;否则复制到备库有块损坏 1. 确定数据库25是否处于归档模式 SQL> select name,log_mode from v$database; NAME LOG_MODE --------- ------------ ORCL ARCHIVELOG 2. 查看数据库是否强制记录日志…

oracle ogg dataguard,Oracle DataGuard与GoldenGate比较

一、复制方式 • Golden Gate 可提供秒一级的大量数据实时捕捉和投递&#xff0c;无法实现同步复制&#xff1b; • Data Guard 最大保护—Maximum protection 最大可用—Maximum availability 最大性能—Maximum performance 最大保护&#xff0c;最大可用模式都需要同步传输日…

oracle 9i 11g dataguard,Oracle 11g DataGuard使用总结

Oracle 11g的dataguard相比于10g来说&#xff0c;最优越的特性应该算就是active dataguard了&#xff0c;这一点改进在很大意义上促使用户需要把数据库从10g升级到11g,读写分离在这个时候得到了升华&#xff0c;而且在后台会根据需要进行数据的同步&#xff0c;相比于使用10g&a…

mysql可以使用dataguard,DataGuard相关参数

定义数据库唯一名称&#xff0c;因为DB_NAME参数对于物理数据库是必须相同&#xff0c;对于逻辑数据库必须不同&#xff0c;所以在Oracle 10g中引入DB_UNIQUE_NAM DB_UNIQUE_NAME 定义数据库唯一名称&#xff0c;因为DB_NAME参数对于物理数据库是必须相同&#xff0c;对于逻辑数…

oracle dataguard详细,Oracle数据库DataGuard参数配置与参数详解

oracle数据库Data Guard参数配置与参数详解 1. Oracle 11g Dataguard参数详解 就Oracle Data Guard来说&#xff0c;我们只关注如下三种参数&#xff1a; 1 独立于数据库角色的参数 2 数据库角色为primary时的参数 3 数据库角色为standby时的参数 虽然DG有着非常多的配置参数&a…

oracle11 dataguard,探索Oracle之11g DataGuard

1、什么是DataGuard DataGuard是Oracle推出的一项专门针对oracle数据库的高可用技术&#xff0c;在8i之前被称之为Standby Dtabase&#xff0c;从9i开始正式更名为DataGuard。通常情况下至少会有两个数据镜像节点构成的主备关系。通过redo日志的同步技术来保证数据的实时同步&a…

oracle取消dataguard,Oracle Dataguard的强制切换

【前言】Dataguard的从库一般情况下都是出于数据的抽取和查询的作用的&#xff0c;但是万一在主库发生故障的情况下就需要切换到备库了。而这种故障的切换往往又是灾难性的情况&#xff1a;比如主库的服务器根本就起不来了&#xff0c;没有办法进行正常的切换&#xff0c;就需要…

Oracle19c DataGuard

为记录的更详细点&#xff0c;文章经过二次编辑&#xff0c;有几张图的时间对不上&#xff0c;不过不影响查阅。 CSDN排版不太友好&#xff0c;有些代码的进位都给省略了。 文章早就编辑好了&#xff0c;由于一些原因一直没发出来。 根据自己的环境&#xff0c;一定要仔细比对d…

oracle dataguard延迟,dataguard延迟日志应用的问题

本帖最后由 lfree 于 2012-12-11 12:07 编辑 我管的dataguard使用recover managed standby database disconnect from session delay 720。 我发现一个问题&#xff0c;如果使用asm作为存储&#xff0c;会出现"大量“读取操作。 snap.jpg (10 KB, 下载次数: 43) 2012-12-1…

Oracle Dataguard(主库为 Oracle rac 集群)配置教程(01)—— dataguard 服务器安装 Oracle 软件

Oracle Dataguard&#xff08;主库为 Oracle rac 集群&#xff09;配置教程&#xff08;01&#xff09;—— dataguard 服务器安装 Oracle 软件 / 本专栏详细讲解 Oracle Dataguard&#xff08;Oracle 版本为11g&#xff0c;主库为双节点 Oracle rac 集群&#xff09;的配置过程…

Oracle DataGuard

一、DataGuard介绍 DataGuard是Oracle的一种高可用性数据库方案&#xff0c;主要用于数据容灾和读写分离。 数据库角色 Primary:主库 Standby:备库 Standby类型 物理standby:redolog以介质恢复的方式实现同步。用于数据备份&#xff08;11G也可以读写分离&#xff09;。 逻辑…

Data Guard原理

文章来源于网络整理 DG通过提供冗余数据来提供数据保护 1.常用于异地容灾和小企业的高可用解决方案 2.虽然可以在Standby机器上执行只读查询&#xff0c;从而分散Primary数据库的性能压力&#xff0c;但是绝不是性能解决方案 DataGuard介绍 在DG环境中&#xff0c;至少会有两…

基于Java的员工工资管理系统

​ 源码编号&#xff1a;F-A15 项目类型&#xff1a;Java SE项目&#xff08;awtswing&#xff09; 项目名称&#xff1a;基于Java的员工工资管理系统&#xff08;EmployeeSalary) 用户类型&#xff1a;双角色&#xff08;员工、管理员&#xff09; 主要技术&#xff1a;ja…

Java工程师工资水平出炉!真厉害了

Java因为其十分适用于企业级开发的特点&#xff0c;所以一直是国内大厂最主要使用的语言之一&#xff0c;也是应用最广泛的编程语言。 也由于Java主要用于开发企业级应用&#xff0c;市场需求同比其他语言来说会更大一些&#xff0c;自然它的起薪也相对较高&#xff0c;因而很多…

Java培训出来后一般多少工资

学完Java培训出来后一般多少工资呢?这是很多人都比较关心的一个问题&#xff0c;小编在这里告诉大家&#xff0c;java技术这个岗位分为初级、中级和高级&#xff0c;每个等级的工资情况也是不一样&#xff0c;来看看下面的详细介绍。 Java培训出来后一般多少工资?Java程序员薪…

2022上海Java工资收入概览

微信公众号&#xff0c;关注&#xff1a;georgezheng 越来越多的人选择从事IT&#xff0c;接触计算机互联网&#xff0c;除了学习复杂庞大的知识体系&#xff0c;也比较关注各地区Java工资收入&#xff0c;我收集了上海的信息做一次整理&#xff0c;数据来源职友集和平…

Java基础(员工工资管理系统)

项目介绍: 某公司的雇员分为以下若⼲类&#xff1a; SalariedEmployee&#xff1a;拿固定⼯资的员⼯。 HourlyEmployee&#xff1a;按⼩时拿⼯资的员⼯&#xff0c;每⽉⼯作超出160⼩时的部分按照1.5倍⼯资发放 SalesEmployee&#xff1a;销售⼈员&#xff0c;⼯资由⽉销售额和…

2020年5大一线城市Java薪资水平汇总,你还差多少呢?

程序员作为薪资最高的行业之一,一直是很多人转行的热门首选行业。Java程序员又在所有程序员中占比最大, 因此,Java程序员的薪资就能够很好的代表行业的薪资水准。 今天就为大家整理5大热门城市的Java薪资情况,看看你还差多少,你又想拿多少?或者你希望去哪个城市发展呢?…

Redis LRU

一&#xff1a;Redis内存驱逐的几种策略 检测易失数据&#xff08;可能会过期的数据集server.db[i].expires &#xff09; ① volatile-lru&#xff1a;挑选最近最少使用的数据淘汰 ② volatile-lfu&#xff1a;挑选最近使用次数最少的数据淘汰 ③ volatile-ttl&#xff1a…

LRU链表及LRU缓存

注&#xff1a;本文分析基于linux-4.18.0-193.14.2.el8_2内核版本&#xff0c;即CentOS 8.2 1、 关于LRU LRU即Least recently used&#xff0c;也就是最近最少使用&#xff0c;一般用作缓存淘汰上&#xff0c;它的核心思想是——如果一个数据在最近一段时间没有被访问到&…