Linux下Oracle 19c + ASM生产环境部署实战:从选型到运维

Oracle 19cASMLinux
于 2026-10-01 07:14:11 修改
·本内容遵循CC 4.0 BY-SA版权协议

我们直接开始讲重点。生产环境的数据库选型与搭建,和开发机上随便跑个实例完全是两码事。多实例共存、存储选型、高可用冗余、备份恢复策略、日常巡检的便利性,这些都得在装系统之前想清楚,否则后面每加一个数据库都要动一次存储架构,那种痛苦经历过一次就再也不想有第二次。

这篇文章我围绕 Linux + Oracle 19c + ASM 的组合,把从选型到投产的完整链路拆开讲透。内容主要来自我在几个生产项目里的实际部署经验,包含原理层面的解释、具体到可以直接复制的命令和参数、以及只有在生产环境摸爬滚打才能总结出来的那些坑。阅读时长大约 15 分钟,适合刚接触 Oracle 且需要在 Linux 上做正经部署的 DBA、运维,以及被安排去搭数据库环境的开发同学。

1. 生产环境为什么是 ASM,而不是普通文件系统

先说清楚一个核心问题:Linux 下的 Oracle 生产库,数据文件为什么不直接放在 ext4 或者 xfs 上,非要用 ASM 绕一道?这是很多刚开始接触 Oracle 的人最大的困惑。

1.1 ASM 解决了什么问题

把 ASM 理解成一个专为数据库设计的分布式卷管理工具就顺了。它不是你理解的那种传统 LVM——LVM 只会把磁盘合并成逻辑卷,然后给你一个 /dev/vg01/lv01 这样的设备路径,至于数据怎么分布、冗余怎么做、坏盘了怎么办,LVM 一概不管,那是文件系统和 RAID 卡的事。

ASM 做的事情要狠得多。它接管了"数据到底写在哪个磁盘上"这件事。当你建表空间的时候,只需要告诉 ASM 这个数据文件放到哪个磁盘组,它自己会把文件打散成一个个 Allocation Unit(默认 1MB),然后均匀分布到磁盘组内的所有物理磁盘上。这意味着只要磁盘组里有多块盘,IO 天然就是并行的。这在过去用传统文件系统加 RAID 5 的年代,是必须在数据库层面手动做数据文件跨盘分布、搞一堆表空间放在不同目录才能勉强接近的性能,现在一个 ASM 实例全给你包圆了。

1.2 镜像与冗余:数据库级的 RAID

生产环境必须面对一个现实:磁盘会坏。传统做法是依赖存储阵列的 RAID 5 或者 RAID 10。ASM 提供了另一层选择——它在软件层就实现了镜像。

ASM 有三种冗余模式:

  • 外部冗余:完全靠存储阵列的 RAID 保护,ASM 不做任何冗余,适合底层已经是 RAID 10 的 SAN 存储。
  • 正常冗余:ASM 自己做两路镜像,数据写一份,镜像再写一份到不同的盘上,等价于 RAID 1 的效果,两块盘同时坏也不会丢数据。这是大部分生产环境的选择。
  • 高冗余:三路镜像,至少需要三块盘以上,安全性最高,但磁盘利用率只有三分之一,非极端要求一般不用。

生产库选正常冗余,两块盘做一个小型磁盘组,既能抗住一块盘物理损坏,又不至于让磁盘成本翻三倍。需要注意,ASM 正常冗余要求的是故障组维度,真正生产上建议故障组分散在不同的 HBA 卡或者存储控制器路径下,避免单卡故障带崩整個磁盘组。

1.3 为什么 12c 之后的新版本更喜欢 ASM

Oracle 从 12c 开始明确地把 ASM 作为唯一推荐的数据库存储方案。除了数据和备份之外,OCR(集群注册表)和投票盘也必须放在 ASM 磁盘组(或者共享文件系统)里。到了 19c,单机环境装 ASM 更是标准动作,因为 Grid Infrastructure(GI)统一管理了 ASM 实例和集群件(单机就是 Oracle Restart),数据库能用 srvctl 统一启停,开机自动拉起,比传统 rc.local 里写一堆 dbstart 要可靠得多。

注意:单机环境下,GI 的集群件退化为 Oracle Restart,只负责拉起本机的 ASM 实例和数据库实例。虽然名字里带 Grid,但不需要配置多节点 RAC。

2. 安装前的环境规划:操作系统、目录、用户和磁盘

我在很多项目里见过同一个通病:操作系统装完直接就开始跑图形化安装界面,结果装到一半报这个错那个错,回头发现是系统参数没调、用户没建全、磁盘没绑定固定盘符。生产环境安装 Oracle,最少要留出半天时间做前置准备,这里每个细节都值得较真。

2.1 操作系统版本与内核参数

19c 的官方支持范围很广,Oracle Linux 7/8、RHEL 7/8、SUSE 12/15 都在行列。最稳妥的是 Oracle Linux 7.9 搭配 UEK(Unbreakable Enterprise Kernel),毕竟 Oracle 自家底裤都穿在这套内核上,兼容性最没问题。如果企业强制用 CentOS,7.9 也完全没问题,但 CentOS 8 在 2024 年已经全系 EOL,不建议新项目踩坑。

内核参数是硬门槛,直接贴生产环境可用的配置。注意这些参数不少是起作用的,修改完需要 sysctl -p 立即生效。

BASH
# /etc/sysctl.conf 关键参数(16GB 内存 / 8 核 / 生产 OLTP)
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 4194304
kernel.shmmax = 17179869184
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 4194304
vm.swappiness = 10
vm.dirty_ratio = 30
vm.dirty_background_ratio = 5

shmmax 是共享内存段的最大字节数,生产上建议直接给到物理内存的一半到 80%。不要想当然地按网上旧教程设一个 4GB 或者 8GB,19c 的 MEMORY_TARGET 或 SGA_TARGET 如果大于 shmmax,实例根本起不来,报 ORA-27102 的经典错误就是这么来的。

2.2 用户、组和目录结构

Oracle 安装的一个老传统是权限隔离:GI(包含 ASM)用 grid 用户,数据库软件用 oracle 用户。两个用户要分属于不同的主组,但这两个用户又必须同属于 oinstall 组,这样它们才能读写同样一套 ORACLE_HOME 下的共享文件。

BASH
# 用户和组
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
groupadd -g 54324 backupdba
groupadd -g 54325 dgdba
groupadd -g 54326 kmdba
groupadd -g 54327 asmdba
groupadd -g 54328 asmoper
groupadd -g 54329 asmadmin
 
useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba oracle
useradd -u 54322 -g oinstall -G dba,oper,asmdba,asmoper,asmadmin grid
 
# 目录
mkdir -p /u01/app/19.0.0/grid
mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
mkdir -p /u01/app/oracle/oradata # 可选,如果用 ASM 其实用不到本地路径
mkdir -p /u01/app/oraInventory
chown -R grid:oinstall /u01/app/19.0.0
chown -R oracle:oinstall /u01/app/oracle
chown -R grid:oinstall /u01/app/oraInventory

这个目录规划很重要。grid 的家目录和 oracle 的家目录必须分开,GI 软件和数据库软件不能装到同一个 ORACLE_HOME,否则 asmcmd、srvctl 这些命令和 sqlplus、dbca 会互相打架,这在生产环境是硬性规则。

2.3 磁盘规划与多路径配置

ASM 磁盘组对应的底层设备,生产环境不要直接使用 /dev/sdb、/dev/sdc 这种径动会变的盘符。服务器重启或者 BIOS 枚举顺序变化,盘符可能莫名其妙错位。生产规范做法是两种:

  • 共享 SAN 存储:用 multipath 配置多路径软件,虚拟出 /dev/mapper/mpath* 设备。
  • 本地直连盘:用 udev 规则绑定磁盘的 WWID 或 UUID,固定成自定义名字。

这里贴一个 udev 绑定示例。用 /usr/lib/udev/scsi_id -g -u /dev/sdb 拿到磁盘的 WWID,然后写进规则:

BASH
# /etc/udev/rules.d/99-oracle-asm.rules
KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", SUBSYSTEMS=="scsi", ATTRS{wwid}=="360050763908103f0a800000000000000", SYMLINK+="oracleasm/data1", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", SUBSYSTEMS=="scsi", ATTRS{wwid}=="360050763908103f0a800000000000001", SYMLINK+="oracleasm/data2", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", SUBSYSTEMS=="scsi", ATTRS{wwid}=="360050763908103f0a800000000000002", SYMLINK+="oracleasm/fra1", OWNER="grid", GROUP="asmadmin", MODE="0660"

配置完后重新加载规则并触发:

BASH
udevadm control --reload
udevadm trigger
ls -l /dev/oracleasm/

看到 data1、data2、fra1 三个固定链接都出现,磁盘规划这块才算过关。

2.4 操作系统安装 Oracle 依赖包

这一步网上教程版本很多,但 19c 官方要求的依赖包也就那几十个。Oracle Linux 7 和 CentOS 7 上,一条命令装完:

BASH
yum install -y bc binutils compat-libcap1 compat-libstdc++-33 \
elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel \
ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel \
libgcc libstdc++ libstdc++-devel libxcb make net-tools nfs-utils python3 \
smartmontools sysstat unixODBC unzip xorg-x11-xauth

一个很多人忽略的点:Oracle 19c 的安装程序自身依赖 Python 3(用于执行一些后处理脚本)。如果系统是最小化安装,没有装 python3,rpm 检查那一步直接挂掉。提前装上能省掉很多不必要的折腾。

2.5 配置 hosts 和关闭防火墙

生产环境的 /etc/hosts 里,主机名必须解析到固定 IP。不要用 DHCP 随机 IP,否则你会看到一个听起来很离谱的实际报错:GI 集群件由于主机名不可解析直接拒绝安装。

BASH
# /etc/hosts
192.168.100.10 dbprod01 dbprod01.localdomain

防火墙在生产上如果不需要对外网全开,建议直接停掉,或者只放行数据库监听端口 1521。很多人在安装 GI 时卡在节点无法通信,排查半天最后发现是 firewalld 拦截了集群件内部通信。多花十秒钟执行下面这两条,能省掉两小时的排查时间:

BASH
systemctl stop firewalld
systemctl disable firewalld

3. 磁盘组架构设计:数据库文件与备份文件分离

ASM 安装完成之后第一步就是建磁盘组,这一层的设计直接决定后续运维是否顺手。

3.1 磁盘组命名与规划

生产环境建议至少建两个磁盘组:DATA 和 FRA,两个磁盘组承担不同职责。有些人在生产上只建一个 DATA 组,归档日志和闪回都往里面塞,短期没毛病,等到磁盘容量报警就发现根本分不清到底是数据占的、还是日志和闪回占的,扩也扩不清楚。

DATA 组放数据文件、控制文件、参数文件。FRA 组放归档日志、闪回日志、控制文件的自动备份、RMAN 备份集。建议的容量配比是:DATA 和 FRA 按 2:1 到 1:1 之间配置。如果开了闪回数据库,FRA 至少要准备数据库总体积的 30% 以上;如果主要用 RMAN 做增量备份,那么 FRA 和 DATA 等大比较稳。

3.2 通过 ASMCA 创建磁盘组

用 grid 登录,执行 asmca,在图形界面里操作创建磁盘组。步骤如下:

  1. 选择 Disk Groups 页签,点 Create。
  2. 磁盘组名称输入 DATA,冗余选 Normal(至少 2 块盘);如果用的是外部存储且底層 RAID10,选 External。
  3. 把准备好的两块盘勾选进列表中,点击 OK。

FRA 磁盘组同理,名字填 FRA。如果冗余方式选 Normal,ASM 会自动把两块盘分为两个 failure group,磁盘利用率只有 50%。选 External,利用率 100%,由底层 RAID 来承担冗余。

经验:如果真的只有两块盘,底层存储又是 RAID10,没必要为了"看起来专业"把 ASM 改成 Normal。ASM 的镜像要消耗一半容量的,外部冗余加底层 RAID10,性能和容量都更合适。

3.3 ASM 实例的关键参数

建完磁盘组后,建议检查 ASM 实例参数。用 grid 用户登录执行:

BASH
sqlplus / as sysasm
SHOW PARAMETER ASM_DISKSTRING;
SHOW PARAMETER ASM_POWER_LIMIT;

ASM_DISKSTRING 的值默认是 /dev/oracleasm/* 或者 /dev/asm/*,指向你绑定好的设备路径,这个必须设置正确,否则 ASM 实例启动后认不到任何盘。 ASM_POWER_LIMIT 默认是 1,如果数据量很大,执行 rebalance(比如往磁盘组加盘)时速度会很慢,生产上建议调到 4 或者更高:

BASH
ALTER SYSTEM SET ASM_POWER_LIMIT=4;

ASM 的 rebalance 是把已有数据搬移到新盘的过程,如果磁盘组已经 5TB 以上,POWER_LIMIT=1 时 rebalance 可能要跑十几个小时。调到 4 会快很多,但也会加大磁盘 IO 压力,业务高峰不建议调高。

3.4 磁盘组的使用率监控

生产环境磁盘组快满是个很危险的信号。ASM 磁盘组如果剩余空间低于 10%,数据库可能会报 ORA-15041 磁盘空间不足,严重时甚至实例 aborted。日常监控中,我最常执行的查询是:

SQL
SELECT name, type, total_mb, free_mb, (total_mb - free_mb) * 100 / total_mb AS used_pct
FROM v$asm_diskgroup;

看到某磁盘组使用率超过 85%,就要赶紧规划加盘或清理过期备份。ASM 加盘非常方便,不需要停库,直接:

BASH
sqlplus / as sysasm
ALTER DISKGROUP DATA ADD DISK '/dev/oracleasm/data3';

ASM 会自动触发 rebalance,把数据分布到新增磁盘上。这一步在生产环境实际执行中,如果 IO 压力大,可以先观察一段时间,确认 POWER_LIMIT 不影响业务再操作。

4. 安装 Oracle 19c 数据库软件:从 gridSetup 到 root.sh

4.1 GI(Grid Infrastructure)安装的前置检查

GI 安装是 19c 部署里最繁琐的一步。用 grid 用户启动安装程序:

BASH
cd /u01/app/19.0.0/grid
./gridSetup.sh

安装类型选择 Set Up Software Only(仅安装软件,稍后手动配置 ASM)。如果选择直接配置磁盘组,图形界面会要求你提供扫描磁盘的路径,但更靠谱的做法是先装软件,再手动用 asmca 建磁盘组——这样排错更快,也不容易被安装向导的校验卡死。

在执行到 root 脚本前,安装程序会做一次完备的环境校验(prereq check)。这里最常见的三个失败项:

  • 内核参数不达标:就是前面提到的 shmmax、sem、file-max 等问题,修改完 sysctl -p 后,点 Check Again 重新检查。
  • 依赖包缺失:提示 missing packages 就按列表补装,装完重新检查。
  • 物理内存不足:19c 官方要求至少 8GB 内存用于 GI 安装。如果服务器只有 8GB 但还跑了数据库,实际上很容易在启动数据库时报内存不足,生产库内存建议至少 16GB 起步。

4.2 执行 root.sh 的时机和常见报错

安装到 97% 左右,程序会弹出一个提示窗口告诉你需要以 root 用户执行两个脚本:/u01/app/oraInventory/orainstRoot.sh 和 /u01/app/19.0.0/grid/root.sh。

这里特别提醒:两个脚本都要用 root 执行,并且必须等 root.sh 完整跑完,确认没有报错后,再回到安装界面点击 OK。我曾经见过有人心急,root.sh 还在跑就点了 OK,结果 GI 没配上,最后只能手动清理配置再来一遍。

root.sh 执行过程中的常见报错:

  • ohasd 启动失败:多半是 /etc/ohasd 目录权限不对,或者系统缺少 pthread 相关库。多见于最小化安装的 Linux,解决方法是检查 /var/log/ohasd 日志,确认是权限还是缺依赖。
  • CRS-5017 / CRS-2674 无法启动 ora.asm 资源:通常是 ASM 实例参数问题或磁盘组未挂载。生产环境经验是,root.sh 执行前确认 /dev/oracleasm/* 下设备权限都是 grid:asmadmin,且 MODE 是 0660。如果设备是 root:root,ASM 实例根本起不来。

root.sh 全部执行成功后,用 grid 用户验证:

BASH
crsctl check has
crsctl stat res -t

正常输出里,ora.asm 和 ora.diskmon 等资源都应该是 ONLINE 状态。

4.3 用 asmca 配置 ASM 实例和磁盘组

GI 软件装好,ASM 资源已经注册到 Oracle Restart。接下来用 grid 用户执行:

BASH
asmca

打开图形界面,在 ASM 实例状态里,选择 Configure,输入 SYSASM 密码,创建磁盘组。这里注意,ASM 实例的 SYS 用户密码和数据库 SYS 密码不是一回事,分开设置并且记好。磁盘组创建完成后,ASM 就完全托管了数据文件的存放。

此时验证 ASM 磁盘组:

BASH
sqlplus / as sysasm
SQL> SELECT name, state, type FROM v$asm_diskgroup;

看到 DATA 和 FRA 都是 MOUNTED,ASM 这层就算彻底通了。

4.4 安装数据库软件本体

以 oracle 用户登录,执行:

BASH
cd /u01/app/oracle/product/19.0.0/dbhome_1
./runInstaller

安装类型选 Set Up Software Only,因为数据库实例一会儿用 dbca 建,不需要安装程序代劳。软件装完后用 root 执行 /u01/app/oracle/product/19.0.0/dbhome_1/root.sh,这一步很快,几秒就完成。

5. 数据库实例创建与 CDB/PDB 架构的实践决策

5.1 容器数据库与非容器数据库:一个生产上必须先做的选择

Oracle 19c 安装完软件后,最关键的建库决策就是:建 CDB(容器数据库)还是非 CDB。12c 之后官方强推 CDB/PDB 架构,版本到了 19c,非 CDB 已经在官方支持的边缘——19c 虽然仍允许建非 CDB,但官方的说法是这是最后一个支持传统非 CDB 架构的大版本,且非 CDB 模式已经进入 desupported 的前夜。

生产环境到底怎么选?我经历过的两套思路:

  • 如果公司有明确的数据库整合规划,未来想把多套业务库合并到一套物理环境节省成本,直接上 CDB,每个业务用独立的 PDB。管理上,PDB 之间资源隔离、备份恢复都能独立操作,体验接近以前的独立实例,但硬件成本大幅下降。
  • 如果运维团队对 PDB 不熟悉,且业务本身就是孤岛式系统(一套系统一个库),用非 CDB 也能运转。但要想清楚,未来升级到 20c/21c,非 CDB 数据库不能原地升级,必须迁移重建。这个迁移的成本得现在就记在账上。

我的建议很简单:新项目一律建 CDB,把应用数据放进 PDB,理由只有一个——以后升级路好走。

5.2 使用 DBCA 静默方式建库

生产环境如果用图形界面 dbca 建库,遇到网络断开或 X11 不好使的时候非常被动。推荐的方式是响应文件静默建库。准备一个 dbca.rsp 响应文件,关键参数如下:

TEXT
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0
gdbName=PROD
sid=PROD
databaseConfigType=SI
policyManaged=false
createAsContainerDatabase=true
numberOfPDBs=1
pdbName=APP01
useLocalUndoForPDBs=true
templateName=General_Purpose.dbc
systemPassword=YourStrongPassw0rd
sysPassword=YourStrongPassw0rd
pdbAdminPassword=YourStrongPassw0rd
storageType=ASM
diskGroupName=DATA
recoveryAreaDestination=FRA
recoveryAreaSize=1024000
datafileDestination=DATA
characterSet=AL32UTF8
memoryPercentage=40
totalMemory=16384
emConfiguration=LOCAL

然后执行:

BASH
dbca -silent -createDatabase -responseFile /home/oracle/dbca.rsp

静默建库的好处是输出全程可控,日志清晰,遇到报错直接在日志里看。之前用一个响应文件帮客户一次性建了 4 套生产库,比图形界面点半天效率高出一个量级。

5.3 实例启动/停止的正确方式

生产库的启停千万不要直接用 sqlplus shutdown,因为 ASM 管理下数据库已经注册到 Oracle Restart,正确的启停命令是:

BASH
# 启动整个数据库栈(包含 ASM、实例、监听)
srvctl start database -d PROD
 
# 停止
srvctl stop database -d PROD
 
# 查看状态
srvctl status database -d PROD

如果用 SQL 直接 shutdown,Oracle Restart 会探测到实例非正常下线,然后自动把它拉回来,导致你"明明关了为什么又起来了"的困惑。这一点新手特别容易踩,但实际生产上非常关键。

5.4 创建表空间和数据文件到 ASM

数据库建好后,应用联调前,建议先把业务表空间建好。这里演示一个把表空间放到 ASM 的 SQL:

SQL
-- 连接 PDB(注意连接串服务名,老司机不会连到 CDB 里建表)
ALTER SESSION SET CONTAINER=APP01;
 
-- 建 8GB 初始大小的表空间,自动扩展到 32GB
CREATE TABLESPACE APP_DATA
DATAFILE '+DATA' SIZE 8G AUTOEXTEND ON NEXT 512M MAXSIZE 32G;
 
-- 建索引表空间
CREATE TABLESPACE APP_IDX
DATAFILE '+DATA' SIZE 4G AUTOEXTEND ON NEXT 256M MAXSIZE 16G;

这里值得解释一下 '+DATA' 是什么含义。它不是文件系统路径,而是告诉 Oracle:这个数据文件放到名为 DATA 的 ASM 磁盘组里,具体物理文件叫什么名字、分成几个 extent,都是 ASM 自己管理。你会在查询 dba_data_files 时看到 FILE_NAME 变成 +DATA/PROD/... 这样的 ASM 别名。

6. 部署常见的生产环境问题:从参数到实际案例

我遇到的真实生产部署问题里,有很大一部分不是安装本身,而是装完之后开始各类告警、空间膨胀、权限混乱。这里挑几个比较有代表性的展开。

6.1 数据库连不上监听:端口、防火墙、动态注册

生产环境最容易出的问题就是监听连不上。验证三步走:

BASH
# 1. 看监听状态
lsnrctl status
 
# 2. 看实例是否动态注册到监听
lsnrctl services

如果监听启动了,但 services 里看不到 PROD 实例,多半是实例的 LOCAL_LISTENER 没配好。在 19c 里,local_listener 参数不再需要手动设置了,默认会自动注册到 1521 端口。但动态注册需要一点时间,通常是 60 秒,刚启动的实例等一会儿再试。

如果远程客户端连不上,看两个方向:

  • 防火墙是否放行 1521 端口,或干脆关闭。
  • 监听是否只绑定在 localhost 上。LISTENER 协议的 HOST 值必须是服务器对外 IP 或者 0.0.0.0,不能是 127.0.0.1。

6.2 SYSAUX 表空间占用率过高:19c 的一个典型问题

19c 某个版本有一个很经典的问题,SYSAUX 表空间无端暴涨,经常被空间告警找上门。热词列表里有人搜"oracle19c sysaux占用率高",说明大家都遇到类似问题。

SYSAUX 高占用一般两个来源:

  • AWR 快照保留周期过长。默认是 8 天,但如果被改成 30 天甚至 90 天,快照会占用大量空间,在 SYSAUX 里占比很高。
  • 优化器统计信息历史表,还有一个更隐蔽的是 WRH$_ACTIVE_SESSION_HISTORY,大量 ASH 数据堆积。

应对办法:

SQL
-- 查询哪些组件占用了 SYSAUX
SELECT occupant_name, space_usage_kbytes
FROM v$sysaux_occupants
ORDER BY space_usage_kbytes DESC;

根据查询结果,如果是 AWR 占用过高,把快照保留天数调回 7 天:

SQL
BEGIN
DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
retention => 7*24*60, -- 单位是分钟
interval => 30);
END;
/

处理完之后再结合上面提到过的磁盘组监控,把 SYSAUX 大小降下来,这个告警基本能消停很久。

6.3 ASM 磁盘组空间不足:ORA-15041 的错误处理

生产环境磁盘被打满的应急处理,真实场景是这样的:磁盘组空间 95% 以上,数据库开始报 ORA-15041,有些表已经不能分配新 extent。如果还不处理,下一步就是数据库 hang。

应对步骤:

  1. 立即查看回收站里是否有可清理的段。PDB 里执行 purge dba_recyclebin。
  2. 清理过期的归档日志:RMAN 里 delete noprompt archivelog all completed before 'sysdate-3'。
  3. 如果 FRA 组满了,把 DB_RECOVERY_FILE_DEST_SIZE 调小一点,强制数据库归档日志写不了就报错,此时思路应该是先把备份策略跑起来,删除过期备份集。
  4. 短期内没有可删内容,再加盘。在存储端划一块新的 LUN,绑定 udev,然后 ASM 里 ALTER DISKGROUP DATA ADD DISK。

生产环境最忌讳的就是磁盘组满后"再撑一会儿",因为它引发的往往不是慢,而是直接拒绝写入,应用侧看到的错误是 ORA-15041 和 ORA-27063 混合出现,非常被动。

6.4 备份文件跨版本恢复的问题

热词里有"oracle19c的备份文件能在oracle11g上恢复出来吗?",这是一个很典型的跨版本误解。明确回答:不能。数据泵导出(expdp)的备份文件,在极少数场景下可以向低版本导入,前提是版本差异极近且没有用高版本的新特性;但是 RMAN 备份集跨版本恢复,尤其是 19c 的备份往 11g 恢复,是完全不支持的。RMAN 只支持同版本或高版本往低版本(同 OS 平台)的部分恢复,从来没支持过 19c 备份集往 11g 环境还原。如果你有这个需求,说明当初备份策略就设计错了,正确做法是用 expdp/impdp 做逻辑迁移,而不是想着用 RMAN 物理备份做版本回退。

6.5 卸载 19C:注册表问题其实不存在

热词里还有一个"如何卸载oracle19c注册表",这明显是带着 Windows 习惯思维问 Linux 上的事。Linux 下 Oracle 的卸载就是 deinstall 工具:

BASH
cd $ORACLE_HOME/deinstall
./deinstall

按提示输入数据库家目录和列表,它会自动清理 /etc/oratab、/u01/app/oracle 等路径下的配置和文件。不要拿 Windows 的注册表概念套到 Linux 上,Oracle 在 Linux 的注册信息在 /etc/oratab 和 GI 的 OCR 里,deinstall 工具会把这些统一清干净。如果是 GI 软件,先停掉 CRS 再 deinstall:

BASH
crsctl stop crs
cd /u01/app/19.0.0/grid/deinstall
./deinstall

6.6 ASM 的日常访问方式:asmcmd

有些新手只知道 sqlplus 能连接 ASM 下的文件,其实 asmcmd 才是真正管理 ASM 文件系统的命令。以 grid 用户登录执行:

BASH
asmcmd
ASMCMD> ls +DATA
ASMCMD> ls -l +DATA/PROD/DATAFILE
ASMCMD> du +DATA

其中 du +DATA 能直接看整个磁盘组的空间占用分布,cp 命令可以在磁盘组之间复制文件(比如手动备份控制文件),这对生产运维非常实用。热词里"oracle进入asm命令"搜的就是这个东西,正确姿势就是 grid 用户下直接执行 asmcmd。

7. 数据库安装后的安全加固与日常巡检

生产环境不是装完就完事,Closer 的权限配置和日常巡检决定一个月后是安稳运行还是半夜接到告警电话。以下是我每次部署完必做的一组操作。

7.1 密码策略与最小权限

数据库的 SYS、SYSTEM 密码禁止使用简单密码。生产环境至少 16 位,包含大小写、数字、特殊字符。同时建议为运维人员额外建专用账号:

SQL
CREATE USER dbadmin IDENTIFIED BY "Strong!Passw0rd";
GRANT CONNECT, CREATE SESSION, SYSBACKUP, SYSOPER TO dbadmin;

不要给所有人发 SYS 密码。SYS 的权限过于强大,误操作无法追责;用 dbadmin 日常操作,出了问题能从审计日志里查到具体是谁、哪条 SQL。

7.2 开启统一审计

从 19c 开始,传统审计默认被统一审计取代。生产环境建议开启统一审计,特别是对 SYSDBA 操作的审计:

SQL
AUDIT POLICY ORA_LOGON_FAILURES;
AUDIT POLICY ORA_ACCOUNT_MGMT;
AUDIT SYSTEM PRIVILEGE CREATE USER;

日常遇到"谁把表删了"的问题,统一审计就是查账本,没开审计的时候只能干瞪眼。

7.3 数据库备份策略与 RMAN 验证

生产上最怕的不是备份失败,而是备份成功但恢复不了。19c 下建议用 RMAN 的自动备份控制文件加增量备份策略:

BASH
rman target /
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEVICE TYPE DISK PARALLELISM 4;
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
 
# 0级备份(每周日)
BACKUP INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG DELETE INPUT;
 
# 1级差异增量(每天)
BACKUP INCREMENTAL LEVEL 1 DATABASE PLUS ARCHIVELOG DELETE INPUT;

我特别强调 DELETE INPUT 这个选项,它能把归档日志备份完后从 FRA 清理掉,同时会导致控制文件里的归档记录强制刷新——这一步直接解决前面说的 FRA 空间增长问题。

备份策略跑通后,一定记得定期做一次恢复演练。RMAN 备份集的验证命令:

BASH
RESTORE DATABASE VALIDATE;

这个命令会把备份集读一遍,校验各数据文件块有没有损坏。我见过备份天天成功,结果一测试恢复发现备份文件头全坏掉的惨案,原因就是存储底层静默损坏或者备份期间磁盘 IO 异常。状似无事发生,实则是定时炸弹。

7.4 常用性能巡检语句

最后给你一组生产环境每个星期跑一遍的 SQL,基本够日常巡检:

SQL
-- 数据库整体状态和活动会话数
SELECT instance_name, status, database_status FROM v$instance;
 
-- 诊断最近的 ORA-600 / ORA-07445 等严重错误
SELECT name, value1, time_stamp
FROM v$diag_info
WHERE name IN ('Diag Alert','Default Trace File');
 
-- ASM磁盘组空间趋势(重点关注 free_mb)
SELECT name, type, round(total_mb/1024,2) total_gb,
round(free_mb/1024,2) free_gb,
round((total_mb - free_mb)*100/total_mb,1) used_pct
FROM v$asm_diskgroup;
 
-- 表空间使用率(重点看 > 85% 的)
SELECT tablespace_name, round(used_space*8/1024,2) used_mb,
round(tablespace_size*8/1024,2) total_mb,
round(used_percent,1) used_pct
FROM dba_tablespace_usage_metrics
WHERE used_percent > 85;

这些 SQL 一旦发现异常,恰好能对应上前面说过的磁盘组告警、SYSAUX 膨胀、表空间满等各种生产隐患,属于那种"一条报警都没收到反而是好事"的巡检。

8. 实战项目结束后的复盘与长期运维建议

每一套生产库搭完,我都习惯做一次完整复盘,把部署过程中所有中间状态、报错、解决方案记录下来。这套 19c + ASM 的架构我从第一次摸到现在的感受是:瓶颈往往不在安装本身,而在对 ASM 存储层和 GI 集群件的理解深度。很多问题表面上看起来是 Oracle 报错,实际上底层是操作系统、存储多路径、udev 权限这些问题在捣乱。如果部署前能先看一遍 /var/log/messages,把所有 SCSI 错误、盘符漂移、多路径告警清理干净,数据库安装会顺利非常多。

日常运维中我特别推荐一个小习惯:每个数据库部署维护手册,把下面这些内容写清楚。

  • 系统架构图(主机名、IP、存储路径、磁盘组结构)。
  • 关键账号与权限矩阵(SYS/SYSTEM、grid/oracle、应用账号)。
  • 启动顺序:先 ASM 后实例再监听,或者直接用 srvctl。
  • 备份恢复方案(备份时间、保留策略、恢复步骤)。
  • 常见告警的处理 S.O.P.,比如磁盘组空间告警、SYSAUX 高占用、监听连接失败。

手册的价值在半年后你接到电话说"数据库进不去了"的时候才会体现出来。没有手册,你只能翻历史和日志慢慢猜;有手册,十分钟内定位到是磁盘组满了还是实例被 OOM killer 干掉,处理速度完全不同。

如果还想进一步自动化,Linux 下可以用 shell 脚本加 cron 做巡检作业,把上面那几条 SQL 输出到文件,再结合系统监控工具做告警通知,这就是一整套生产数据库的基础运维闭环了。19c 加 ASM 这套组合的稳定程度很高,只要前期规划不出大错,后续真正花精力处理的大多是容量和变更层面的问题,架构本身不需要三天两头动刀。这也是为什么我始终建议生产环境按这套标准来搭,虽然前期多花半天做规划,但后面能省下的是数不清的凌晨三点。

【德哥说库系列】-ASM管理Oracle 19C单实例部署
本文介绍了如何在Linux环境中进行Oracle 19C的单实例部署,详细步骤包括环境准备、yum源配置、依赖安装、数据库预安装、目录权限设置、环境变量配置、GI用户创建、GI资源和磁盘组配置,以及Oracle软件安装、DBCA建库和日常管理。适合对Oracle数据库部署感兴趣的读者参考。
IT邦德
3084
Oracle 19c DG Broker在Linux 7.4+ASM环境的生产级部署与运维
本文详解Oracle 19c在Linux 7.4+ASM环境下的DG Broker生产级部署与运维,涵盖三层隔离架构设计、ASM磁盘组规划(OCR/VOTE与DATA物理分离)、MAXIMUM AVAILABILITY保护模式配置、udev规则定制、spfile存储路径规范、Broker配置文件ASM显式指定、RMAN DUPLICATE优化、12步精准搭建流程、自动化健康检查及PSU升级兼容性处理等核心实践。
陈小严
232
数据库教程FGMT03‑生产环境Linux+Oracle19c+ASM安装配置与项目实战
本文详细讲解Linux环境下Oracle 19c单机版基于ASM存储的生产级部署全流程,涵盖Grid Infrastructure(GI)静默安装、ASM磁盘组规划与创建(DATA/FRA)、UDEV磁盘权限固化、oracle用户组配置(asmdba/asmadmin)、dbca静默建库、Oracle Restart资源托管、监听配置及ASM扩容等核心操作。所有参数均适配64G内存/8CPU硬件规格,强调ASM实例与数据库实例依赖关系、权限隔离及生产巡检要点。
风哥教程
156
Oracle19c单机部署(本地静默安装方式)附网盘资源
本文详细介绍了在Linux系统上通过本地静默方式部署Oracle 19c单机数据库的完整流程,涵盖安装前检查(硬件、OS、内核参数、用户权限、存储)、系统配置(创建oracle用户与组、目录权限、limits.conf和sysctl.conf调优)、环境变量设置、响应文件定制、runInstaller静默安装、DBCA命令行建库,以及监听与数据库连接验证等关键步骤,适用于运维及DBA人员快速完成标准化部署。
晴天¥
1600
Oracle GoldenGate 19c生产环境部署与调优实战指南
本文详解Oracle GoldenGate 19c在生产环境中的全流程部署与性能调优,涵盖架构规划、静默安装、Manager/Extract/Replicat核心进程配置、链路验证、延迟监控、I/O与网络瓶颈优化、常见故障排查(如归档日志缺失、表结构不一致、持续延迟),以及高可用设计与自动化运维实践,聚焦事务级数据一致性保障与实时同步稳定性。
weixin_30321709
294
Oracle 19c Linux静默安装实战:从系统调优到建库配置全解析
本文详解Oracle 19c在Linux平台的静默安装全过程,涵盖系统内核调优(如shmmax、sem等参数)、oracle用户与目录结构创建、依赖包安装(libaio、compat-libcap1等)、响应文件配置、dbca静默建库、监听器配置及开机自启服务设置。强调生产环境部署规范,包括资源限制、归档模式启用、RMAN备份初始化等关键运维配置。
weixin_34146805
433
超详细!Oracle 19c RAC双节点集群部署实战:RedHat/CentOS 从零搭建全流程 + 避坑指南
本文详细记录了在RedHat/CentOS系统上从零搭建Oracle 19c RAC双节点集群的全流程,涵盖操作系统准备、Grid Infrastructure安装、ASM磁盘组配置、RAC数据库图形化安装、DBCA建库、参数调优及归档启用等关键步骤,并重点说明SELinux禁用、透明大页关闭、udev多路径配置、OCR/ASM存储规划、时钟同步、hosts本地解析等核心避坑要点,适用于DBA和运维工程师实施高可用数据库集群。
sysrootsa
1305
CentOS 7.5部署Oracle 19c RAC全流程:从环境准备到避坑实战
本文详细讲解在CentOS 7.5环境下部署Oracle 19c RAC集群的全流程,涵盖硬件与网络规划、Grid Infrastructure静默安装、ASM磁盘组配置、dbca建库参数链路,以及cluvfy检查、root.sh执行、SCAN解析、OCR/Vote File冗余等关键技术点。重点分析内核版本兼容性、cvuqdisk缺失、CSS启动失败、ASM磁盘头损坏、服务单节点注册等高频故障的根因与解法,适用于DBA及数据库工程师实施高可用生产环境。
weixin_33795806
398
Oracle19c在Linux环境下的高效部署:从预配置到静默安装全解析
本文详细解析Oracle 19c在Linux环境下基于RPM预安装包与响应文件的静默部署流程,涵盖系统配置避坑、存储路径规划(如/u01 vs /opt)、响应文件生成、DBCA静默建库、内存自动配置及安装后必调项。重点突出自动化、标准化与高性能实践,适用于无GUI生产环境及批量部署场景。
吾心指南
411
Oracle 19c RAC集群搭建实战:从规划部署到高可用架构实现
本文详细阐述Oracle 19c RAC高可用集群的端到端搭建流程,涵盖环境规划(硬件/网络/存储)、Grid Infrastructure安装与ASM配置、RAC数据库创建(DBCA静默/图形化)、集群管理命令及故障排查要点。重点解析SCAN、VIP、私有网络、OCR/Voting Disk、ASM磁盘组等核心技术组件的配置原理与实操细节,并强调备份策略(RMAN+ASM)、权限控制和日志分析等运维关键点。
weixin_30555515
426
Linux 7.9 安装 Oracle 19C RAC:GI、ASM 与避坑全记录
本文详细记录 Oracle 19C RAC 在 Linux 7.9 环境下的完整部署流程,涵盖环境规划(网络拓扑、共享存储 udev 绑定、内核参数)、Grid Infrastructure 安装(cvu 检查、root.sh 两阶段执行)、ASM 磁盘组配置(DATA/FRA)、数据库软件安装与 dbca 建库,以及五大高频故障避坑方案(节点踢出、ASM 磁盘识别失败、CSS 启动异常、集群服务不自启、SCAN 连接失败)。内容基于 VMware 实测,聚焦生产级配置与排错逻辑。
黄泓毅
254
Oracle 19c RAC集群搭建实战:从规划部署到避坑指南
本文详细阐述Oracle 19c RAC双节点集群的完整搭建流程,涵盖硬件/网络/存储规划、Grid Infrastructure安装配置、ASM磁盘组创建、RAC数据库部署及DBCA使用。重点解析OCR/Voting Disk、SCAN、Private IP、ASM裸盘准备等关键技术点,并总结runcluvfy验证、root脚本执行顺序、VIP漂移、缓存融合等高可用核心机制的实践要点与典型故障排查方法。
weixin_33769125
402
第二章【Oracle自动化部署脚本】介绍
本文详细解读了Oracle自动化部署脚本的功能,覆盖11GR2至19C版本,支持Linux 6-8,包括单机、集群和RAC安装。参数众多,如公共IP、主机名、Oracle SID等,助您快速部署。
Lucifer三思而后行
7695
Oracle 19c RAC Linux安装:内核调优、网络配置与ASM存储硬核指南
本文聚焦Oracle 19c RAC在RHEL 7.6上的生产级部署,涵盖内核调优(THP禁用、HugePages精确计算与配置)、网络配置(GNS+固定IP混合模式、SCAN域名DNS语法约束)、ASM存储(UDEV持久化绑定、Flex ASM模式选型)及高频故障根因排查。强调系统级兼容性校准,适用于具备Linux与单机Oracle经验、正实施RAC高可用架构的中高级DBA。
抹茶柚子冰
165
Linux 7.9上部署Oracle 19C RAC完整指南:从环境预检到集群验证
本文详细阐述在Oracle Linux 7.9上部署Oracle 19C RAC集群的完整流程,涵盖环境预检、网络与共享存储配置(udev绑定ASM磁盘)、内核参数调优、Grid Infrastructure安装(gridSetup.sh与root.sh)、dbca建库(Administrator-Managed模式)、ASM磁盘组规划(OCRVOTING/DATA/FRA)及集群验证(crsctl/srvctl/故障切换)。重点解决OCR/Voting磁盘识别、SCAN解析、私网防火墙、静默安装与日志定位等关键技术问题。
山月刀岚月刀
268
Linux 7.4+19c单实例ASM配置DG Broker实战指南
本文详细阐述在Linux 7.4环境下,基于Oracle 19c单实例、ASM存储与DG Broker构建高可用灾备系统的完整方案。涵盖四层隔离架构设计、udev磁盘固化、ASM AU_SIZE=4M配置、密码文件静默升级、静态监听器注册、DG Broker独立配置路径、STANDBY_FILE_MANAGEMENT启用等12个关键实操要点,并提供RMAN DUPLICATE搭建、Switchover压测及7大高频故障排查方法,满足等保三级与生产运维要求。
lau.ray
293
数据库教程FGMT04‑生产环境Linux+Oracle19c RAC集群安装配置与项目实战
本文详细讲解在Linux(RHEL7)环境下,基于两节点、单节点64G内存/8CPU硬件规格,静默部署Oracle 19c RAC集群的完整流程。涵盖RAC核心理论(OCR、Voting Disk、SCAN、VIP、Cache Fusion)、操作系统预处理、GI集群安装、ASM磁盘组创建、RAC数据库软件部署、dbca静默建库、负载均衡与故障切换验证,以及集群巡检运维。所有操作均适配生产环境规范,提供可复用Shell脚本与配置文件。
风哥教程
183
Oracle 19c安装实战:CDB/PDB选择与Linux/麒麟环境避坑
本文详解Oracle 19c在Windows、Linux及麒麟V10系统下的安装全流程,重点剖析CDB/PDB架构选型依据与避坑要点。涵盖环境检查、图形化/静默安装、监听器配置、字符集选择(AL32UTF8/ZHS16GBK)、归档模式启用、闪回区调优、sysaux空间治理及彻底卸载方法。强调19c已废弃Non-CDB,但生产环境仍需权衡兼容性。
weixin_34417183
634
Oracle 19c升级实战:从版本盘点到高频问题全解析
本文系统解析Oracle 19c升级实战要点:明确19c作为12.2长期支持版的定位;梳理11.2.0.4等源版本到19c的合规升级路径;详解DBUA、DBCA重建与DataGuard滚动升级三条路线;覆盖监听故障(ORA-28547)、ASM访问、等保安全配置、PDB巡检SQL等运维高频问题;并指出开发侧MySQL转Oracle的语法差异及EBS/P6/Fusion等周边组件的版本兼容要求。
weixin_33966095
393
阿里云ECS部署Oracle 19c RAC避坑指南:云环境RAC高可用实战
本文聚焦阿里云ECS环境下CentOS 7.6系统部署Oracle 19c双节点RAC集群的全生命周期实践,涵盖ECS选型、VPC网络隔离设计(SCAN/VIP/Private IP)、ASM磁盘组配置(OCR/DATA/FRA)、Grid Infrastructure安装与CRS启动排错、DBCA静默建库、云盘设备名稳定性方案(UUID/WWN)、以及RAC高可用运维关键技巧。重点解决云环境特有的节点驱逐、SCAN解析失败、ASM磁盘识别异常、I/O延迟导致半启动等核心问题。
weixin_34245749
405
19.3rac_生产RHEL7_ORACLE19C_安装详细实战步骤+打19.4补丁
Oracle Real Application Clusters(RAC)是Oracle数据库高可用性架构的核心技术,其本质是在多个物理或虚拟节点上部署同一套Oracle数据库实例,通过共享存储、集群软件(Grid Infrastructure, GI)、高速私网互联与全局资源协调机制,实现负载均衡、故障自动切换与业务连续性保障。本课程标题“19.3rac_生产RHEL7_ORACLE19C_安装详细实战步骤+打19.4补丁”所涵盖的知识体系极为庞大且高度工程化,绝非简单的软件安装流程,而是融合了操作系统底层调优、网络服务架构设计、存储子系统建模、集群生命周期管理及补丁策略制定等多维度深度实践。首先,RHEL7作为企业级Linux发行版,其内核版本(3.10.x)、systemd服务管理模型、SELinux强制访问控制、firewalld动态防火墙、chronyd替代ntpd的时钟同步机制,均对RAC部署构成关键约束——例如,RAC要求所有节点时间偏差严格控制在毫秒级以内,因此必须部署独立NTP服务器(如chrony-server)并配置层级化同步策略,客户端需禁用systemd-timesyncd,强制使用chronyc tracking验证偏移量;同时DNS服务不仅是域名解析工具,更是OCR(Oracle Cluster Registry)和Vote Disk定位、SCAN(Single Client Access Name)解析、VIP漂移注册的基础依赖,必须部署主从DNS架构,正向/反向区域文件需精确配置A记录、PTR记录、CNAME记录及SOA参数,且BIND服务须以chroot模式运行并关闭递归查询以满足安全合规要求。其次,共享存储是RAC的物理基石,课程采用Openfiler模拟HP 3PAR企业级存储,这涉及iSCSI Target完整配置:包括创建卷组、逻辑单元(LUN)、IQN认证、ACL访问控制列表、多路径映射(multipath.conf需定义wwid、path_grouping_policy、failover策略及udev规则持久化设备名),而RHEL7中multipathd服务必须与udev规则、kpartx、sg3_utils深度协同,确保重启后/dev/mapper/mpathX设备名稳定、权限正确、路径冗余有效,任何路径抖动或设备重命名都将导致GI启动失败或OCR损坏。第三,Oracle 19c RAC安装本身即为复杂状态机:需前置执行cvuqdisk包安装、grid用户环境变量隔离(ORACLE_BASE、GRID_HOME)、ASM磁盘组规划(OCR/VOTE建议外部冗余,DATA/FRA建议正常冗余)、GNS(Grid Naming Service)或DNS+SCAN双模式选型、网络接口绑定(public/private/ASM网络需严格分离并配置bonding或teamd)、HAIP(Highly Available IP)与VIP冲突规避、srvctl命令体系初始化验证等;尤其值得注意的是,19c引入了Unified Audit与Automatic Memory Management增强,需调整kernel.shmall/shmmax、semaphores、aio-max-nr等20余项内核参数,并通过sysctl -p永久生效。最后,“打19.4补丁”属于RAC生命周期运维核心能力:19.4是19c的首个季度性综合补丁集(Release Update, RU),包含GI与RDBMS两层补丁,必须遵循“先GI后DB”顺序,使用opatch auto工具在滚动模式下执行,期间需校验OCW(Oracle Clusterware)、ACFS、ASMLIB组件兼容性,备份OPATCH_LOG_DIR日志,停用CRS Stack前执行crsctl stop crs -f并确认ohasd进程终止,补丁后强制运行cluvfy stage -post patch -n all验证集群健康度,且必须更新OPATCH版本至12.2.0.1.25以上方可支持RU应用。整个过程涉及至少15类系统日志(/var/log/messages、$GRID_HOME/log/hostname/alerthostname.log、$ORACLE_HOME/cfgtoollogs/opatch/等)交叉分析能力,以及ocssd.bin、ohasd.bin、crsd.bin等关键守护进程的core dump诊断经验。该课程真正价值在于将教科书式理论转化为可审计、可复现、可迁移的生产级交付物——从Openfiler存储LUN的WWN固化、到RHEL7 kickstart自动化部署模板、再到RAC集群的Ansible Playbook编排脚本,每一环节都直指金融、电信等关键行业对Oracle RAC实施“零容忍失误”的严苛标准,堪称Oracle DBA向高级架构师跃迁的必经炼狱之路。
坚强努力地活下去
GoldenGate企业级运维实战
GoldenGate企业级运维实战是一套面向中大型企业数据库高可用、异构集成与实时数据分发场景的系统性技术实践指南,其核心围绕Oracle GoldenGate(OGG)这一业界领先的逻辑复制平台展开,覆盖从基础原理、跨平台部署、多场景配置到高级运维、故障诊断、安全加固、性能调优及数据一致性保障等全生命周期关键能力。该实战内容不仅深度解析OGG的技术本质,更以真实生产环境为蓝本,构建起一套可落地、可复用、可扩展的企业级数据复制运维方法论。首先,GoldenGate的历史渊源与战略定位决定了其不可替代性:它诞生于1995年,历经Tandem、Veritas、Symantec直至2009年被Oracle收购后全面融入Oracle数据库产品生态,成为Oracle“一体化云战略”中实现跨版本、跨平台、跨架构(单机/RAC/Exadata/Cloud DB)数据实时同步的核心引擎。其技术架构采用模块化设计,由Extract(捕获)、Pump(传输)、Replicat(应用)三大核心进程构成,配合Trail文件(二进制事务日志中间格式)实现解耦式异步复制;支持多种复制模式——如同步复制(需配合数据库Redo日志实时抓取)、异步复制(主流)、双向复制(Active-Active)、级联复制(Hub-Spoke)、一对多/多对一拓扑,满足灾备切换、读写分离、报表分流、数据仓库ETL前置、混合云数据协同等复杂业务需求。尤其在Oracle RAC环境中,OGG通过RAC-aware Extract机制识别实例主节点变化,结合ASM路径适配与归档日志轮询策略,确保集群环境下捕获的连续性与一致性;而Windows/Linux/AIX等多操作系统支持,则使其成为真正意义上的企业级异构数据管道基础设施。在实操层面,本书构建了完整的端到端实施路径:从Windows下Oracle-to-Oracle单向复制的入门演练,到Linux平台RAC源端对接Standalone目标端的高可用复制配置,再到AIX+Sybase→Oracle的异构数据库迁移实战,完整呈现了OGG对不同硬件架构、操作系统内核、数据库版本及字符集(如第9.6节专门解决中文表名/字段名在DDL同步中的乱码与元数据映射问题)的兼容性处理能力。尤为关键的是“目标端数据初始化”(第4章)——这是所有复制项目成败的前提:既涵盖传统expdp/rman在线备份恢复方式,也重点剖析OGG Initial Load的两种高效路径:Direct Load(直连数据库批量插入,适用于网络带宽充足、目标库空闲场景)与File-Based Load(先导出为flat file再加载,适用于跨广域网或目标库资源受限场景),并对比分析各方法在锁表时间、网络开销、事务一致性、重试机制等方面的工程权衡。DDL同步(第5章)是OGG区别于物理复制工具的关键能力,其实现依赖于数据库触发器+系统视图监听+OGG DDL Capture组件协同工作,但并非所有DDL操作均被支持(如TRUNCATE TABLE默认不捕获,需显式启用DDL INCLUDE TRUNCATE),因此必须严格遵循“DDL Enable → DDL Exclude System Objects → DDL Map Schema Mapping”的三层配置范式,并通过DDLERROR参数实现异常语句的自动跳过或告警记录。此外,针对实际业务中高频出现的一对多分发(如核心交易库同步至风控、审计、BI三套系统)、多对一汇聚(如多个区域库汇总至中心数据湖)、级联复制(A→B→C形成链路)、字段级数据转换(如加密脱敏、字段拼接、NULL值替换、时区转换)等场景(第7章),OGG提供了强大的Parameter File语法支持:包括MAP通配符匹配、COLMAP列映射、SQLEXEC执行SQL函数、@GETENV获取系统变量、@TOKENS注入上下文信息等,使数据流具备高度可编程性。日常运维(第8章)则聚焦稳定性保障:长事务处理需结合V$TRANSACTION与GGSCI VIEW TRANSACTIONS命令识别阻塞会话;增减复制表需动态STOP/START进程并更新TABLE参数;RMAN补丁升级须确保OGG Trail与数据库SCN严格对齐;而OGG自身补丁(如PSU、BP)则需遵循“停服务→解压→运行ggsci APPLY PATCH→重启”的标准化流程。错误处理体系(第9章)更是OGG健壮性的体现:REPERROR用于定义DML错误容忍策略(如SQLCODE 1403忽略NOT FOUND)、DISCARDFILE持久化记录失败事务原始SQL与上下文、LOGDUMP作为底层Trail解析神器可逐条查看XID、SCN、操作类型、列值等十六进制内容,是根因分析的黄金工具。安全方面(第10章),OGG提供全链路加密:Trail文件AES-256加密、数据库密码密文存储(ENCKEYS+KEYGEN)、SSL/TLS网络传输加密、CMDSEC细粒度命令权限控制(如禁止非DBA执行ALTER REPLICAT),满足等保三级与金融行业监管要求。监控体系(第11章)强调自动化与可视化:GGSCI命令行提供实时进程状态、延迟秒数、检查点位置等指标;ggserr.log需结合logrotate做滚动归档与ELK日志分析;Shell/Python脚本可定时采集LAG、READCHECKPOINT、WRITECHECKPOINT等关键指标推送Zabbix/Prometheus;Goldengate Director(Web UI)则提供图形化拓扑展示、告警订阅、参数版本比对与一键启停功能。数据校验(第12章)通过Veridata实现行级比对:支持全量/增量比对、抽样校验、差异报告生成、自动修复建议,弥补复制链路中潜在的数据漂移风险。性能优化(第13章)是高吞吐场景的生命线:Extract需调优TRANLOGOPTIONS(如CONVERTUCS2CLOB)、FETCHOPTIONS(减少LOB拉取次数)、CACHEMGR(增大缓存提升解析效率);Pump应启用TCPBUFSIZE与COMPRESS降低网络负载;Replicat则通过BATCHSQL、GROUPTRANSOPS、MAXTRANSOPS等参数提升批量应用效率,并结合目标库索引策略、归档模式、UNDO_RETENTION等数据库参数协同调优。最后,资料篇(第14–15章)强调实施前的严谨准备:包括生产库AWR/ASH报告分析、归档日志保留策略评估、OGG认证矩阵核查(如Oracle 19c仅支持OGG 19.1+,AIX 7.2需特定补丁包),确保技术选型与环境适配零偏差。整套体系不仅是工具使用手册,更是融合数据库原理、操作系统知识、网络协议、安全合规与运维工程思维的综合性企业数据治理能力图谱。
Linux7.6+Oracle 19c+UDEV+ASM.pdf
本材料的主要知识点围绕在VMware环境下安装配置Linux 7.6操作系统,以及在该环境下部署Oracle 19c数据库,包括使用UDEV和ASM(自动存储管理)进行磁盘管理。
蚁库
308
oracle linux 7.6 下oracle 19c (19.3.0)静默安装.pdf
通过本文的解析,安装者应该能够掌握Oracle 19c在Oracle Linux 7.6上的静默安装技巧,进而实现高效、自动化地部署Oracle数据库环境。
雨季雪迁
4855
阿里云ECS环境下CentOS-linux 7.6系统Oracle 19C RAC双节点集群安装部署-优化-维护手册.pdf
阿里云ECS环境下的Oracle 19C RAC双节点集群安装部署是一个复杂的过程,涉及到多个环节和系统配置。
Oracle原厂清洁工
874
RHEL+7.6+安装Oracle19C+ASM+dataguard超强安装指南
RHEL 7.6 安装 Oracle 19C ASM Dataguard 超强安装指南本指南旨在指导用户在 RHEL 7.6 环境中安装 Oracle 19C ASM Dataguard,以实现高可用性和高性能的数据库环境
CodeGolang
329
RHEL 7环境下19c RAC安装之udev规则配置ASM共享存储.docx
在Oracle 19c RAC的ASM环境中,正确配置udev规则可以确保存储设备在不同节点间的透明性和一致性,避免因设备命名不一致导致的问题,从而提高系统的稳定性和可维护性。
1492
CentOS7.5+Oracle 19c+RAC.pdf
【CentOS7.5+Oracle 19c+RAC】是关于在虚拟化平台VMware上部署Linux操作系统,特别是CentOS 7.5,并在此基础上安装和配置Oracle 19c数据库集群(RAC)的教程
蚁库
163
Oracle RAC部署环境准备手册之三:ASM磁盘组建
ASM是Oracle数据库自带的一种集成化的存储管理解决方案,它提供了自动化的磁盘管理和故障恢复功能,特别适合于Oracle RAC环境。在Linux环境下,ASM磁盘的组建主要包括以下步骤:1.
云祺vinchin
425
在Linux7.9环境下Oracle 19C RAC集群详细安装部署文档.pdf
总结,部署Oracle 19C RAC集群在Linux 7.9环境下涉及众多步骤,包括系统规划、环境配置、软件安装、数据库创建以及后续的测试和维护。
萧天天天
317