Oracle 11g DataGuard 搭建笔记(Windows Server 2016)
  UQNwlGIOc9iG 2023年11月19日 20 0

1.需求

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

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

2.开发环境


虚拟机1-作为主机

虚拟机2-作为从机

Os

winserver2022 x64

winserver2022 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 DatacenterOS 版本: 10.0.14393 暂缺 Build 14393

OS 名称: Microsoft Windows Server 2016 DatacenterOS 版本: 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;

注意:这里在主库要手动新建文件夹【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.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\

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 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 SYSTEM SWITCH LOGFILE;】后,从库才能查询到最新数据。

第二条 从库:

alter database recover managed standby database using current logfile disconnect;

需要注意的是,上述第一第二两条指令都会将从库OPEN_MODE状态改为READ ONLY WITH APPLY,但只有第二条指令能开启实时同步。

从库cmd操作如下

SQL> select open_mode from v$database;

OPEN_MODE
--------------------

READ ONLY WITH APPLY

SQL> alter database recover managed standby database using current logfile disconnect;
alter database recover managed standby database using current logfile disconnect
*
第 1 行出现错误:
ORA-01153: 激活了不兼容的介质恢复


SQL> alter database recover managed standby database cancel;

数据库已更改。

SQL> alter database recover managed standby database using current logfile disconnect;

数据库已更改。

SQL> select open_mode from v$database;

OPEN_MODE
--------------------

READ ONLY WITH APPLY

SQL>

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-右键属性

貌似只是少了一步,这里操作 7 的时候 需要现在主库 备份下 然后吧备份文件放到 从库同样的位置,他才能正常执行恢复

备份数据库
rman target /
backup full database format='E:\app\backup\oral_full_%U';

Oracle 11g DataGuard 搭建笔记(Windows Server 2016)_数据库

主库执行从新生成控制文件,复制到从库
alter database create standby controlfile as 'E:/app/oracle/oradata/orcl/controlstandby.ctl';
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
  eHipUjOuzYYH   2023年12月10日   25   0   0 mysqlsqlUser
  hHWnOnebRjW2   2023年11月27日   22   0   0 PostgreSQLsqlbash
  9JCEeX0Eg8g4   2023年11月28日   14   0   0 主数据数据库mysql