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 网络配置
192.168.1.51 fgedudb01 fgedudb01
192.168.1.52 fgedudb02 fgedudb02
# 测试网络连通性
C:\> ping fgedudb01
C:\> ping fgedudb02
1.3 端口配置
– 主库监听端口:1521
– 备库监听端口:1521
– 归档传输端口:1521
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 配置闪回恢复区
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 =
(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数据库软件
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> STARTUP NOMOUNT;
5. Data Guard配置
使用RMAN将主库的数据复制到备库,并配置Data Guard。
5.1 从主库复制数据到备库
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]
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;
本文详细介绍了Oracle 26ai ADG单机在Windows Server 2022上的安装配置过程,包括环境准备、主库配置、备库安装、备库配置、Data Guard配置、启动和验证等步骤,同时验证了AI功能(如向量数据库)的数据同步。通过这些步骤,可以建立一个高可用性的Oracle Data Guard环境,确保数据库的安全和可用性。from:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
