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

news2024/11/17 13:35:05

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

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

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

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

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

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

SQL>

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

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

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

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\

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

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

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

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

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 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】已经自动获得了来自主机的拷贝。

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

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

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 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 database recover managed standby database using current logfile disconnect;

从库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>

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

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

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

SQL>

其他问题

设置自动同步后,将主库从库均重启,但从库启动后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://www.coloradmin.cn/o/30176.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

部署前端报错404 hash 以及history模式下面前端、后端如何配置

问题描述&#xff1a;前端 本地页面 正常展示 、部署后刷新浏览器如上&#xff1a; vue-router&#xff08;前端路由&#xff09;有两种模式&#xff0c;hash模式和history模式 原理的区别&#xff08;原理&#xff09; 1、hash ——即地址栏URL中的#符号。 hash 虽然出现URL…

Sealos 安装报错问题解决

sealos 是以 kubernetes 为内核的云操作系统发行版,看其他人通过sealos安装k8s集群十分丝滑,但自己实践的时候为什么报错频繁呢? 官网介绍: sealos.io1 先决条件 每个集群节点应该有不同的主机名。 主机名不要带下划线。所有节点的时间同步。在 Kubernetes 集群的第一个节点…

数组中出现次数超过一半的数字、替换空格、重建二叉树

1、数组中出现次数超过一半的数字 本题考点&#xff1a; 数组使用&#xff0c;简单算法的设计 牛客链接 题目描述&#xff1a; 给一个长度为 n 的数组&#xff0c;数组中有一个数字出现的次数超过数组长度的一半&#xff0c;请找出这个数字。 例如输入一个长度为9的数组[1,2,…

企业如何利用 Serverless 快速扩展业务系统?

2022 年 9 月 24 日&#xff0c;阿里云用户组&#xff08;AUG&#xff09;第 12 期活动在厦门举办。活动现场&#xff0c;阿里云高级技术专家史明伟&#xff08;花名&#xff1a;世如&#xff09;向参会企业代表分享了《未来已来——从技术升级到降本提效》。本文根据演讲内容整…

引擎入门 | Unity UI简介–第1部分(8)

本期我们继续为大家进行Unity UI简介&#xff08;第一部分&#xff09;的后续教程 本篇内容 17.9-Slice缩放 18.准备按钮图像 19.设置按钮图像 20.为按钮设置自定义字体 文章末尾可免费获取教程源代码 本篇Unity UI简介&#xff08;第一部分&#xff09;篇幅较长&#x…

Spring源码深度解析:八、bean的获取② - getSingleton

一、前言 文章目录&#xff1a;Spring源码分析&#xff1a;文章目录 在Spring源码分析七 &#xff1a;bean的加载① - doGetBean 文章中&#xff0c;我们介绍了Spring对获取bean的过程&#xff0c;但是并没有详细解释Bean是如何创建的&#xff0c;本文就来分析Spring是如何创…

Mybatis 源码分析

mybatis 的一些总结 XMLConfigBuilder mybatis 的配置文件解析的能力是交给了XMLCconfigBuilder 去解析的 public SqlSessionFactory build(Reader reader, String environment, Properties properties) {try {XMLConfigBuilder parser new XMLConfigBuilder(reader, envir…

JDK内置命令工具

JDK内置命令工具 jps 作用 查看java进程的pid和全路径主类名和jvm参数 使用 -l : 输出所有正在运行java进程的pid 和主类名-v &#xff1a;输出正在运行java进程的pid和主类名和运行参数 jstack 作用 查看某个java进程当前的堆栈信息&#xff0c; 也就是当前进程中的线程…

NIO与BIO服务器端对比

本文利用NIO实现一个重复回复&#xff0c;客户端发送什么信息&#xff0c;客户端就会收到什么信息。 主要是理解NIO与BIO的区别。客户端采用telnet进行测试&#xff0c;以下连接是Telnet安装的方法。 Telnet的简单使用_武汉小喽啰的博客-CSDN博客_telnet 注意&#xff01;&a…

POSIX信号量

文章目录概念信号量函数基于环形队列的生产消费模型概念 信号量是一个计数器&#xff0c;用来描述临界资源数量的计数器。 每个执行流要进入临界资源时&#xff0c;要先申请信号量&#xff0c;出临界资源时&#xff0c;要释放信号量。 信号量的PV操作 P操作&#xff1a;申请…

万字长文总结分布式事务,总有一款适合你

导语&#xff1a;本文参考网络相关文章&#xff0c;主要总结了XA, 2PC, 3PC, 本地事务状态表, 可靠消息队列, 最大努力通知, TCC, SAGA等分布式事务的特点和适用场景&#xff0c;为大家选择分布式事务提供一些参考。 概述 分布式事务是指事务的参与者、支持事务的服务器、资源…

宝刀未老!阿里P8老兵耗时三年总结出这份Java项目实战文档

文档特点&#xff1a; 为了方便小伙伴们能更好地阅读&#xff0c;我已经提前给大家整理好了学习路线和知识结构 本书综合讲解Java程序设计中的核心技术&#xff0c;全书一共设计为22章&#xff0c;章节结构如下。 需要获取的小伙伴可以直接转发关注后私信&#xff08;学习&…

[Python]Django 配置

文章目录&#x1f349; pycharm中打开Django项目并配置虚拟环境运行项目&#x1f348; 打开项目后pycharm自动识别配置项目运行环境&#x1f34d; 指定项目运行的端口号&#x1f348; 自行配置项目的运行环境&#x1f34d; 配置项目的python解释器&#x1f34d; 配置Django项目…

本地demo服务器搭建计划——(三)rabbitmq配置中心config配置自动刷新

本章内容主要使用Spring Cloud Config来启动一个配置中心服务&#xff0c;通过Spring Cloud Bus消息总线&#xff08;依赖rabbitmq&#xff09;和Git仓库&#xff08;Gitee&#xff09;Webhook钩子函数来实现配置的自动更新&#xff08;push新的配置到gitee仓库时触发&#xff…

【英语口语】单词如何正确发音?

1. 发音基础介绍 音素&#xff1a;元音 辅音 单词&#xff1a;重音 失去爆破 浊化 三单 过去式过去分词 句子&#xff1a;语调 重音 弱读 连读 缩读 段落&#xff1a;意群 元音字母&#xff1a; A、E、I、O、U 2. 音节的定义 英语单词在发音的时候&#xff0c;不是一个字…

GD32F4(9):GD32f4出现上电不工作,必须按复位程序才能跑起来

GD32&#xff1a;上电不工作&#xff0c;需要按一下复位按键程序才能跑起来 文章目录GD32&#xff1a;上电不工作&#xff0c;需要按一下复位按键程序才能跑起来1.问题描述2. 我的调试思路2.1 第一步&#xff0c;排除电源问题2.2 第二步&#xff0c;排除复位电路的问题2.3 第三…

QUIC简介

一、概述、 QUIC&#xff08;Quick udp Internet connection&#xff09;&#xff1a;快速UDP互联网协议。相比于当前广泛应用的http2tcptls有如下优势&#xff1a; 减少三次握手及TLS握手时间&#xff1b;改进拥塞机制&#xff1b;避免队头阻塞的多路复用&#xff1b;连接迁移…

一文了解riscv软件系列之linux内核编译运行

一、交叉编译工具链的安装 【推荐阅读文章】 代码大佬的【Linux内核开发笔记】分享&#xff0c;前人栽树后人乘凉&#xff01; 一篇长文叙述Linux内核虚拟地址空间的基本概括 一文了解Linux内核的Oops 需要多久才能看完linux内核源码&#xff1f; 详细讲解磁盘及文件系统…

【antd vue pro】设置项目默认语言为中文:

文章目录一、官网文档&#xff1a;二、解决&#xff1a;1、在src\locales\index.js文件修改默认语言2、src\core\bootstrap.js文件&#xff0c;修改初始化的语言3、src\store\modules\app.js4、清空本地存储&#xff0c;然后npm run serve重启&#xff1a;5、遇到问题&#xff…

Linux文件权限管理:chomd命令和chown命令

Linux文件权限管理&#xff1a;chomd命令和chown命令前言介绍文件类型文件权限文件所属文件信息chomd命令chown命令前言 在服务器部署项目、安装应用会经常涉及到文件权限的问题&#xff0c;在此记录chomd命令和chown命令它们的用法及区别。 介绍 以下图为例&#xff0c;进行…