Oracle 高可用性与安全性
关键词:Oracle 高可用架构、Data Guard、RAC、透明数据加密 TDE、细粒度审计 FGA、GoldenGate 数据同步
✅ 摘要
在企业级 Oracle 数据库部署中,高可用性(High Availability)和安全性(Security) 是保障业务连续性和数据隐私的核心要求。
本文将围绕以下内容进行详细讲解:
- 高可用架构:Oracle Data Guard(物理/逻辑备库)、RAC(Real Application Clusters)
- 数据库安全性:透明数据加密(TDE)、细粒度审计(FGA)、VPN访问控制
- 高级复制与同步技术:流复制(Streams Replication)、GoldenGate 实时同步
每部分都配有 完整的 SQL 示例代码、配置说明与操作步骤,适合 DBA 和开发人员学习掌握 Oracle 的高可用与安全机制。
一、高可用架构
🔹 1. Oracle Data Guard 配置(物理备库 & 逻辑备库)
简介:
Oracle Data Guard 提供数据库的冗余备份机制,支持主库故障自动切换(Failover),确保数据库服务持续可用。
🌐 场景:配置物理备库(Physical Standby)
第一步:主库开启归档模式
-- 登录 sqlplus
sqlplus / as sysdba-- 查看当前是否归档
ARCHIVE LOG LIST;-- 关闭数据库并启动到 mount 状态
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;-- 启用归档模式
ALTER DATABASE ARCHIVELOG;-- 开启强制日志记录
ALTER DATABASE FORCE LOGGING;-- 添加 standby redo log(建议至少与主库一样多)
ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u01/oradata/mydb/srl01.log') SIZE 50M;
第二步:创建主库的参数文件
-- 创建 pfile
CREATE PFILE='/tmp/initmydb.ora' FROM SPFILE;
修改 /tmp/initmydb.ora
文件,添加如下内容:
*.log_archive_config='DG_CONFIG=(mydb,standbydb)'
*.log_archive_dest_1='LOCATION=/u01/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=mydb'
*.log_archive_dest_2='SERVICE=standbydb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standbydb'
*.log_archive_format='%t_%s_%r.arc'
*.fal_server='standbydb'
*.standby_file_management='AUTO'
第三步:创建物理备库(使用 RMAN)
-- 在主库执行 RMAN 备份
rman target /RUN {ALLOCATE CHANNEL c1 TYPE DISK;BACKUP DATABASE FORMAT '/backup/db_%U';BACKUP ARCHIVELOG ALL FORMAT '/backup/arch_%U';RELEASE CHANNEL c1;
}
将备份文件拷贝至备库服务器,并恢复数据库:
-- 在备库执行恢复
rman target / auxiliary sys/password@mydbDUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK;
第四步:启动 Redo Apply(应用日志)
-- 在备库启动日志应用
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
📌 物理 vs 逻辑备库对比:
特性 | 物理备库 | 逻辑备库 |
---|---|---|
数据一致性 | 完全一致(字节级别) | 逻辑一致(SQL转换) |
支持查询 | 只读模式 | 可读写 |
日志应用方式 | Redo Apply | SQL Apply |
故障切换 | 支持 | 支持 |
🔹 2. Oracle RAC 概述与部署
简介:
RAC(Real Application Clusters)是 Oracle 提供的集群解决方案,允许多个节点同时访问同一个数据库,实现负载均衡与高可用。
📌 RAC 核心组件:
- OCR(Oracle Cluster Registry)
- Voting Disk(仲裁磁盘)
- ASM(Automatic Storage Management)
- SCAN(Single Client Access Name)
🛠️ 简化部署流程(需在两个节点上安装 Oracle Grid Infrastructure):
# 使用图形界面或响应文件安装 GI
runInstaller -silent -responseFile /path/to/rac_install.rsp
配置共享存储(ASM):
asmca --silent --createDiskGroup DG_DATA 'ORCL:DATA_DISK1','ORCL:DATA_DISK2'
创建 RAC 数据库:
dbca -silent -createDatabase \-templateName General_Purpose.dbc \-gdbName racdb \-storageType ASM \-diskGroupName DG_DATA \-characterset AL32UTF8 \-totalMemory 2048 \-nodeList node1,node2 \-databaseType MULTIPURPOSE
二、数据库安全性
🔹 1. 透明数据加密(Transparent Data Encryption, TDE)
简介:
TDE 对表空间或列进行加密,防止数据文件被非法访问。
🛠️ 步骤:启用 TDE 并创建加密表空间
-- 创建钱包目录
mkdir -p /u01/admin/mydb/wallet-- 修改 sqlnet.ora
ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/u01/admin/mydb/wallet)))-- 打开钱包
ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "your_password";-- 创建加密表空间
CREATE TABLESPACE secure_tbs DATAFILE '/u01/oradata/mydb/secure01.dbf' SIZE 100MENCRYPTION USING 'AES256'DEFAULT STORAGE(ENCRYPT);-- 创建用户并指定为加密表空间
CREATE USER secure_user IDENTIFIED BY secure_pwd DEFAULT TABLESPACE secure_tbs;
🔹 2. 细粒度审计(Fine-Grained Auditing, FGA)
简介:
FGA 允许你对特定 SQL 操作进行审计,如某个用户访问敏感数据。
📌 示例:审计 HR.EMPLOYEES 表的 SELECT 操作
-- 创建策略
BEGINDBMS_FGA.ADD_POLICY(object_schema => 'HR',object_name => 'EMPLOYEES',policy_name => 'emp_access_audit',audit_condition => NULL,audit_column => 'SALARY',handler_schema => NULL,handler_module => NULL,enable => TRUE);
END;
/-- 查询审计结果
SELECT * FROM DBA_FGA_AUDIT_TRAIL WHERE OBJECT_NAME = 'EMPLOYEES';
🔹 3. 访问控制与 VPN 配置
建议做法:
- 使用 Oracle Net Services(
sqlnet.ora
,listener.ora
)限制 IP 访问 - 配置 SSL/TLS 加密通信
- 部署防火墙 + VPN 控制远程连接权限
三、其他高级主题
🔹 1. 流复制(Streams Replication)
简介:
Streams 是 Oracle 提供的一种异步复制机制,可用于跨数据库的数据同步。
📌 示例:配置 Streams 捕获与传播
-- 创建队列
BEGINDBMS_STREAMS_ADM.SET_UP_QUEUE();
END;
/-- 添加捕获规则
BEGINDBMS_CAPTURE_ADM.CREATE_CAPTURE(queue_name => 'streams_queue',rule_set_name => 'default_rule_set',capture_name => 'capture_emp');
END;
/-- 启动捕获进程
BEGINDBMS_CAPTURE_ADM.START_CAPTURE('capture_emp');
END;
/
🔹 2. GoldenGate 数据同步
简介:
GoldenGate 是 Oracle 提供的企业级实时数据复制工具,支持跨平台、异构数据库之间的数据同步。
📌 配置步骤简要:
- 安装 GoldenGate 软件
- 配置 Extract 进程(从源端提取数据)
EXTRACT ext1
SETENV (ORACLE_SID=ORCL)
USERID ggate, PASSWORD ggate
EXTTRAIL ./dirdat/lt
TABLE hr.employees;
- 配置 Pump 进程(传输数据到目标)
EXTRACT pump1
RMTHOST target_host, MGRPORT 7809
RMTTRAIL ./dirdat/rt
PASSTHRU
TABLE hr.employees;
- 配置 Replicat 进程(目标端应用数据)
REPLICAT rep1
ASSUMETARGETDEFS
MAP hr.employees, TARGET hr.employees;
✅ 总结
本文的主要内容:
模块 | 技能点 |
---|---|
高可用架构 | Data Guard(物理/逻辑备库)、RAC 集群部署 |
数据库安全 | TDE 加密、FGA 审计、访问控制 |
数据同步 | Streams、GoldenGate 实时复制 |
实战能力 | 主备切换、加密配置、审计日志查看、同步任务管理 |
这些技能是你构建企业级 Oracle 架构的重要基础。
📚 参考资料
- Oracle Data Guard 官方文档
- Oracle RAC 官方指南
- Oracle Security Guide