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)
第一步:主库开启归档模式
sql 复制代码
-- 登录 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;

第二步:创建主库的参数文件
bash 复制代码
-- 创建 pfile
CREATE PFILE='/tmp/initmydb.ora' FROM SPFILE;

修改 /tmp/initmydb.ora 文件,添加如下内容:

ini 复制代码
*.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)
bash 复制代码
-- 在主库执行 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;
}

将备份文件拷贝至备库服务器,并恢复数据库:

bash 复制代码
-- 在备库执行恢复
rman target / auxiliary sys/password@mydb

DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK;

第四步:启动 Redo Apply(应用日志)
sql 复制代码
-- 在备库启动日志应用
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):
bash 复制代码
# 使用图形界面或响应文件安装 GI
runInstaller -silent -responseFile /path/to/rac_install.rsp
配置共享存储(ASM):
bash 复制代码
asmca --silent --createDiskGroup DG_DATA 'ORCL:DATA_DISK1','ORCL:DATA_DISK2'
创建 RAC 数据库:
bash 复制代码
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 并创建加密表空间
sql 复制代码
-- 创建钱包目录
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 100M
  ENCRYPTION 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 操作
sql 复制代码
-- 创建策略
BEGIN
  DBMS_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 捕获与传播
sql 复制代码
-- 创建队列
BEGIN
  DBMS_STREAMS_ADM.SET_UP_QUEUE();
END;
/

-- 添加捕获规则
BEGIN
  DBMS_CAPTURE_ADM.CREATE_CAPTURE(
    queue_name => 'streams_queue',
    rule_set_name => 'default_rule_set',
    capture_name => 'capture_emp');
END;
/

-- 启动捕获进程
BEGIN
  DBMS_CAPTURE_ADM.START_CAPTURE('capture_emp');
END;
/

🔹 2. GoldenGate 数据同步

简介:

GoldenGate 是 Oracle 提供的企业级实时数据复制工具,支持跨平台、异构数据库之间的数据同步。


📌 配置步骤简要:
  1. 安装 GoldenGate 软件
  2. 配置 Extract 进程(从源端提取数据)
bash 复制代码
EXTRACT ext1
SETENV (ORACLE_SID=ORCL)
USERID ggate, PASSWORD ggate
EXTTRAIL ./dirdat/lt
TABLE hr.employees;
  1. 配置 Pump 进程(传输数据到目标)
bash 复制代码
EXTRACT pump1
RMTHOST target_host, MGRPORT 7809
RMTTRAIL ./dirdat/rt
PASSTHRU
TABLE hr.employees;
  1. 配置 Replicat 进程(目标端应用数据)
bash 复制代码
REPLICAT rep1
ASSUMETARGETDEFS
MAP hr.employees, TARGET hr.employees;

✅ 总结

本文的主要内容:

模块 技能点
高可用架构 Data Guard(物理/逻辑备库)、RAC 集群部署
数据库安全 TDE 加密、FGA 审计、访问控制
数据同步 Streams、GoldenGate 实时复制
实战能力 主备切换、加密配置、审计日志查看、同步任务管理

这些技能是你构建企业级 Oracle 架构的重要基础。


📚 参考资料

相关推荐
StarRocks_labs2 小时前
StarRocks Community Monthly Newsletter (Jun)
数据库·starrocks·数据湖·物化视图·存算分离
光电的一只菜鸡3 小时前
ubuntu之坑(十五)——设备树
linux·数据库·ubuntu
ob熔天使——武4 小时前
MySQL
数据库·mysql
小光学长4 小时前
基于vue框架的防疫物资仓库管理系统09y38(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库
野生技术架构师8 小时前
MySQL数据实时同步到Elasticsearch的高效解决方案
数据库·mysql·elasticsearch
紫无之紫9 小时前
SQL性能调优经验总结
数据库·sql·性能调优
CZZDg9 小时前
Redis Sentinel哨兵集群
java·网络·数据库
__风__9 小时前
PostgreSQL ExecInitIndexScan 函数解析
数据库·postgresql
小云数据库服务专线9 小时前
GaussDB in的用法
数据库·sql·gaussdb