1. 首页 > 软件安装教程 > 正文

Oracle容灾-Oracle26ai ADG单机安装配置 FOR WINDOWS2022详细过程

1. 环境准备

在配置Oracle 26ai ADG(Active Data Guard)之前,需要准备好主库和备库的环境。更多学习教程www.fgedu.net.cn

1.1 环境规划

# 主库信息
主机名:fgedudb01
IP地址:192.168.1.51
操作系统:Windows Server 2022
Oracle版本:23.26.0.0(Oracle 26ai)
数据库名:fgedudb
实例名:fgedudb
ORACLE_HOME:D:\oracle\product\23ai\dbhome_1
ORACLE_BASE:D:\oracle

# 备库信息
主机名:fgedudb02
IP地址:192.168.1.52
操作系统:Windows Server 2022
Oracle版本:23.26.0.0(Oracle 26ai)
数据库名:fgedudb
实例名:fgedudb
ORACLE_HOME:D:\oracle\product\23ai\dbhome_1
ORACLE_BASE:D:\oracle

1.2 网络配置

# 配置主库和备库的hosts文件(C:\Windows\System32\drivers\etc\hosts)
192.168.1.51 fgedudb01 fgedudb01
192.168.1.52 fgedudb02 fgedudb02

# 测试网络连通性
C:\> ping fgedudb01
C:\> ping fgedudb02

1.3 端口配置

# 确保以下端口可用
– 主库监听端口:1521
– 备库监听端口:1521
– 归档传输端口:1521
生产环境建议:主库和备库的硬件配置应尽可能一致,包括CPU、内存、存储等,以确保备库能够承载主库的工作负载。

2. 主库配置

在配置Data Guard之前,需要先对主库进行必要的配置。学习交流加群风哥微信: itpux-com

2.1 启用归档模式

— 连接到主库
SQL> CONNECT / AS SYSDBA

— 关闭数据库
SQL> SHUTDOWN IMMEDIATE;

— 启动到mount状态
SQL> STARTUP MOUNT;

— 启用归档模式
SQL> ALTER DATABASE ARCHIVELOG;

— 打开数据库
SQL> ALTER DATABASE OPEN;

— 验证归档模式
SQL> ARCHIVE LOG LIST;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 34
Next log sequence to archive 36
Current log sequence 36

2.2 配置归档目录

— 设置归档目录
SQL> ALTER SYSTEM SET log_archive_dest_1=’LOCATION=D:\oracle\archive’ SCOPE=spfile;

— 设置归档格式
SQL> ALTER SYSTEM SET log_archive_format=’%t_%s_%r.dbf’ SCOPE=spfile;

— 重启数据库使配置生效
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;

2.3 启用强制日志

— 启用强制日志
SQL> ALTER DATABASE FORCE LOGGING;

— 验证强制日志状态
SQL> SELECT FORCE_LOGGING FROM V$DATABASE;

FORCE_LOGGING
————
YES

2.4 配置闪回恢复区

— 设置闪回恢复区大小(500GB)
SQL> ALTER SYSTEM SET db_recovery_file_dest_size=500G SCOPE=spfile;

— 设置闪回恢复区位置
SQL> ALTER SYSTEM SET db_recovery_file_dest=’D:\oracle\flash_recovery_area’ SCOPE=spfile;

— 重启数据库使配置生效
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;

2.5 创建standby redo log

— 查询当前日志组信息
SQL> SELECT GROUP#, BYTES/1024/1024 AS SIZE_MB FROM V$LOG;

GROUP# SIZE_MB
—— ———-
1 512
2 512
3 512

— 创建standby redo log(数量为主库日志组数量+1,大小相同)
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 (‘D:\oracle\oradata\fgedudb\standby_redo04.log’) SIZE 512M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 (‘D:\oracle\oradata\fgedudb\standby_redo05.log’) SIZE 512M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 (‘D:\oracle\oradata\fgedudb\standby_redo06.log’) SIZE 512M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 (‘D:\oracle\oradata\fgedudb\standby_redo07.log’) SIZE 512M;

— 验证standby redo log
SQL> SELECT GROUP#, STATUS, BYTES/1024/1024 AS SIZE_MB FROM V$STANDBY_LOG;

2.6 配置初始化参数

— 配置主库初始化参数
SQL> ALTER SYSTEM SET db_unique_name=’fgedudb_primary’ SCOPE=spfile;
SQL> ALTER SYSTEM SET log_archive_config=’dg_config=(fgedudb_primary,fgedudb_standby)’ SCOPE=spfile;
SQL> ALTER SYSTEM SET log_archive_dest_2=’service=fgedudb_standby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=fgedudb_standby’ SCOPE=spfile;
SQL> ALTER SYSTEM SET log_archive_dest_state_2=’ENABLE’ SCOPE=spfile;
SQL> ALTER SYSTEM SET fal_server=’fgedudb_standby’ SCOPE=spfile;
SQL> ALTER SYSTEM SET fal_client=’fgedudb_primary’ SCOPE=spfile;
SQL> ALTER SYSTEM SET standby_file_management=’AUTO’ SCOPE=spfile;
SQL> ALTER SYSTEM SET remote_login_passwordfile=’EXCLUSIVE’ SCOPE=spfile;
SQL> ALTER SYSTEM SET db_file_name_convert=’D:\oracle\oradata\fgedudb’,’D:\oracle\oradata\fgedudb’ SCOPE=spfile;
SQL> ALTER SYSTEM SET log_file_name_convert=’D:\oracle\oradata\fgedudb’,’D:\oracle\oradata\fgedudb’ SCOPE=spfile;

— 重启数据库使配置生效
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;

2.7 配置监听器

# 编辑listener.ora文件(D:\oracle\product\23ai\dbhome_1\NETWORK\ADMIN\listener.ora)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = fgedudb01)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)

ADR_BASE_LISTENER = D:\oracle

# 编辑tnsnames.ora文件(D:\oracle\product\23ai\dbhome_1\NETWORK\ADMIN\tnsnames.ora)
FGEDUDB_PRIMARY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = fgedudb01)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = fgedudb)
)
)

FGEDUDB_STANDBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = fgedudb02)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = fgedudb)
)
)

# 重启监听器
C:\> lsnrctl stop
C:\> lsnrctl start

# 验证监听器状态
C:\> lsnrctl status

2.8 创建密码文件

# 复制或重新创建密码文件
C:\> orapwd file=D:\oracle\product\23ai\dbhome_1\database\PWDfgedudb.ora password=oracle entries=10

# 验证密码文件存在
C:\> dir D:\oracle\product\23ai\dbhome_1\database\PWDfgedudb.ora

风哥提示:主库和备库的密码文件必须完全一致,建议直接复制主库的密码文件到备库。

3. 备库安装

在备库上安装与主库相同版本的Oracle数据库软件。

3.1 安装Oracle数据库软件

1. 运行Oracle 26ai安装程序
2. 选择”Install database software only”
3. 选择”Single instance database installation”
4. 选择语言(简体中文)
5. 选择数据库版本(Enterprise Edition)
6. 设置ORACLE_BASE和ORACLE_HOME与主库一致
7. 选择操作系统组
8. 执行先决条件检查
9. 确认安装信息并开始安装
10. 安装完成后执行配置脚本

3.2 复制主库文件到备库

# 复制密码文件
C:\> copy D:\oracle\product\23ai\dbhome_1\database\PWDfgedudb.ora \\fgedudb02\D$\oracle\product\23ai\dbhome_1\database\

# 复制监听器配置文件
C:\> copy D:\oracle\product\23ai\dbhome_1\NETWORK\ADMIN\listener.ora \\fgedudb02\D$\oracle\product\23ai\dbhome_1\NETWORK\ADMIN\
C:\> copy D:\oracle\product\23ai\dbhome_1\NETWORK\ADMIN\tnsnames.ora \\fgedudb02\D$\oracle\product\23ai\dbhome_1\NETWORK\ADMIN\

# 创建必要的目录结构
C:\> mkdir D:\oracle\archive
C:\> mkdir D:\oracle\flash_recovery_area
C:\> mkdir D:\oracle\oradata\fgedudb

4. 备库配置

对备库进行必要的配置,以便与主库建立Data Guard关系。学习交流加群风哥QQ113257174

4.1 配置初始化参数

# 创建初始化参数文件
C:\> cd D:\oracle\product\23ai\dbhome_1\database
C:\> notepad initfgedudb.ora

# 添加以下内容
db_name=fgedudb
db_unique_name=fgedudb_standby
control_files=(‘D:\oracle\oradata\fgedudb\control01.ctl’,’D:\oracle\oradata\fgedudb\control02.ctl’)
memory_target=8G
processes=800
audit_file_dest=’D:\oracle\admin\fgedudb\adump’
audit_trail=’db’
db_block_size=8192
db_domain=”
db_recovery_file_dest=’D:\oracle\flash_recovery_area’
db_recovery_file_dest_size=500G
diagnostic_dest=’D:\oracle’
dispatchers='(PROTOCOL=TCP) (SERVICE=fgedudbXDB)’
log_archive_config=’dg_config=(fgedudb_primary,fgedudb_standby)’
log_archive_dest_1=’LOCATION=D:\oracle\archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=fgedudb_standby’
log_archive_dest_2=’SERVICE=fgedudb_primary LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=fgedudb_primary’
log_archive_dest_state_1=’ENABLE’
log_archive_dest_state_2=’ENABLE’
log_archive_format=’%t_%s_%r.dbf’
log_archive_max_processes=10
fal_server=’fgedudb_primary’
fal_client=’fgedudb_standby’
db_file_name_convert=’D:\oracle\oradata\fgedudb’,’D:\oracle\oradata\fgedudb’
log_file_name_convert=’D:\oracle\oradata\fgedudb’,’D:\oracle\oradata\fgedudb’
standby_file_management=’AUTO’
remote_login_passwordfile=’EXCLUSIVE’
local_listener=’LISTENER’

# 创建spfile
SQL> CREATE SPFILE FROM PFILE=’D:\oracle\product\23ai\dbhome_1\database\initfgedudb.ora’;

4.2 启动备库到nomount状态

SQL> CONNECT / AS SYSDBA
SQL> STARTUP NOMOUNT;

5. Data Guard配置

使用RMAN将主库的数据复制到备库,并配置Data Guard。

5.1 从主库复制数据到备库

# 在主库上使用RMAN连接到主库和备库
C:\> rman target sys/oracle@fgedudb_primary auxiliary sys/oracle@fgedudb_standby

# 执行duplicate命令
RMAN> DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE NOFILENAMECHECK DORECOVER;

# 等待命令执行完成,这将复制主库的所有数据文件、控制文件等到备库

5.2 验证备库控制文件

— 在备库上验证控制文件
SQL> SELECT NAME FROM V$CONTROLFILE;

NAME
————————————————–
D:\ORACLE\ORADATA\FGEDUDB\CONTROL01.CTL
D:\ORACLE\ORADATA\FGEDUDB\CONTROL02.CTL

— 验证备库角色
SQL> SELECT DATABASE_ROLE FROM V$DATABASE;

DATABASE_ROLE
—————-
PHYSICAL STANDBY

6. 启动Data Guard

启动Data Guard的应用进程,使备库开始接收并应用主库的归档日志。

6.1 启动日志应用进程

— 在备库上启动日志应用进程
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

— 或启动实时应用(如果使用LGWR SYNC传输模式)
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

7. 验证Data Guard状态

验证Data Guard的配置和状态是否正常。更多学习教程公众号风哥教程itpux_com

7.1 验证主库状态

— 检查主库归档传输状态
SQL> SELECT DEST_ID, STATUS, ERROR FROM V$ARCHIVE_DEST WHERE DEST_ID=2;

DEST_ID STATUS ERROR
——- ——— —————————————-
2 VALID

— 检查主库日志序列
SQL> SELECT SEQUENCE#, STATUS FROM V$LOG;

SEQUENCE# STATUS
———- —————-
37 CURRENT
35 INACTIVE
36 INACTIVE

— 检查归档日志序列
SQL> SELECT MAX(SEQUENCE#) FROM V$ARCHIVED_LOG;

MAX(SEQUENCE#)
————–
36

7.2 验证备库状态

— 检查备库日志应用状态
SQL> SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK# FROM V$MANAGED_STANDBY;

PROCESS STATUS THREAD# SEQUENCE# BLOCK#
——— ———— ———- ———- ———-
ARCH CONNECTED 0 0 0
ARCH CONNECTED 0 0 0
ARCH CONNECTED 0 0 0
ARCH CONNECTED 0 0 0
RFS IDLE 1 37 128
MRP0 APPLYING_LOG 1 37 128

— 检查备库已应用的日志序列
SQL> SELECT MAX(SEQUENCE#) FROM V$ARCHIVED_LOG WHERE APPLIED=’YES’;

MAX(SEQUENCE#)
————–
36

— 检查备库延迟
SQL> SELECT NAME, VALUE/60 AS DELAY_MINUTES FROM V$DATAGUARD_STATS WHERE NAME=’apply lag’;

NAME DELAY_MINUTES
——————– ————-
apply lag 0

7.3 测试主备同步

— 在主库上创建测试表
SQL> CREATE TABLE test_sync (id NUMBER, name VARCHAR2(50));
SQL> INSERT INTO test_sync VALUES (1, ‘Data Guard Test’);
SQL> COMMIT;

— 切换日志以触发归档传输
SQL> ALTER SYSTEM SWITCH LOGFILE;

— 在备库上检查数据是否同步
SQL> SELECT * FROM test_sync;

ID NAME
———- ————————————————–
1 Data Guard Test

— 测试AI功能(Vector Database)同步
SQL> ALTER SESSION SET CONTAINER=fgedudb_pdb1;
SQL> CREATE TABLE vector_test (id NUMBER, vector VECTOR(1536));
SQL> INSERT INTO vector_test VALUES (1, VECTOR(‘[1.0, 2.0, 3.0]’));
SQL> COMMIT;

— 切换日志
SQL> ALTER SYSTEM SWITCH LOGFILE;

— 在备库上检查向量数据是否同步
SQL> ALTER SESSION SET CONTAINER=fgedudb_pdb1;
SQL> SELECT * FROM vector_test;

ID VECTOR
———- ————————————————–
1 [1.0,2.0,3.0]

生产环境建议:定期监控Data Guard的状态,包括归档传输、日志应用、延迟等,确保备库与主库保持同步。同时监控AI功能(如向量数据库)的数据同步情况。

8. Data Guard维护

了解Data Guard的日常维护操作。

8.1 启动和停止备库

— 停止备库
SQL> SHUTDOWN IMMEDIATE;

— 启动备库到mount状态
SQL> STARTUP MOUNT;

— 启动日志应用进程
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

8.2 切换主备角色

— 在主库上执行切换
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;

— 在新的主库(原备库)上执行切换
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
SQL> ALTER DATABASE OPEN;

— 在新的备库(原主库)上启动日志应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

9. 故障转移测试

进行故障转移测试,确保在主库故障时备库能够接管服务。

— 模拟主库故障(关闭主库)
C:\> sqlplus / as sysdba
SQL> SHUTDOWN ABORT;

— 在备库上执行故障转移
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
SQL> ALTER DATABASE OPEN;

— 验证新主库状态
SQL> SELECT DATABASE_ROLE FROM V$DATABASE;

DATABASE_ROLE
—————-
PRIMARY

— 测试新主库可用性
SQL> CREATE TABLE failover_test (id NUMBER, test_date DATE);
SQL> INSERT INTO failover_test VALUES (1, SYSDATE);
SQL> COMMIT;
SQL> SELECT * FROM failover_test;

— 测试AI功能可用性
SQL> ALTER SESSION SET CONTAINER=fgedudb_pdb1;
SQL> CREATE TABLE vector_failover_test (id NUMBER, vector VECTOR(1536));
SQL> INSERT INTO vector_failover_test VALUES (1, VECTOR(‘[4.0, 5.0, 6.0]’));
SQL> COMMIT;
SQL> SELECT * FROM vector_failover_test;

风哥提示:故障转移会导致原主库变为备库,需要重新配置才能恢复Data Guard关系。建议在测试环境中进行充分测试,熟悉故障转移和恢复流程。

本文详细介绍了Oracle 26ai ADG单机在Windows Server 2022上的安装配置过程,包括环境准备、主库配置、备库安装、备库配置、Data Guard配置、启动和验证等步骤,同时验证了AI功能(如向量数据库)的数据同步。通过这些步骤,可以建立一个高可用性的Oracle Data Guard环境,确保数据库的安全和可用性。from:www.itpux.com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息