生产环境Linux+Oracle 19c+ASM实战:从安装到运维

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

生产环境里搞Oracle 19c + ASM,说难不难,说简单也真不简单。很多朋友在测试环境随手装一套能用就行,可一旦放到生产环境,各种细节问题就全冒出来了。这篇博文我就结合自己的实际经验,把Linux + Oracle 19c + ASM这套组合从环境规划、安装配置到项目实战的完整链路掰开揉碎讲清楚,包括每一步为什么要这么做、踩过哪些坑、怎么排查,希望对正在折腾生产库的朋友有实际帮助。

1. 从零开始:看懂生产环境下的技术选型逻辑

1.1 为什么生产环境偏爱 Linux + Oracle 19c + ASM

先说一个很现实的问题:生产环境为什么这么多人选 Linux、Oracle 19c 和 ASM 这个组合?其实说白了就是三个字:稳、快、省。

Linux 作为服务器操作系统,在稳定性、安全性和资源利用率上表现确实出色。相比 Windows Server,Linux 对硬件资源的消耗更低,而且极少需要重启,这对7×24小时运行的生产库来说是硬指标。Oracle 19c 作为 Oracle 数据库的长期支持版本,官方支持周期很长,修复bug和更新补丁都比较及时,是目前企业级生产环境里用得相当广泛的一个版本。

ASM(Automatic Storage Management)这个组件,说白了就是 Oracle 自己的一套“存储管理中间层”。它把多块磁盘统一管理成磁盘组,自动做条带化和镜像,好处是:你不用再依赖操作系统的 LVM 或者 RAID,直接让数据库和存储之间对话。生产库的数据文件、控制文件、日志文件全部放在 ASM 里,性能更好,管理也更简单。

这套组合的另一个优势在于高可用方案的配合。比如 Oracle RAC 集群环境下,ASM 是它的存储底座,Linux 是它最常见的宿主操作系统。即使你现在只装单机版,提前走 ASM 的路线,后续要扩展成 RAC,迁移成本会小很多。

1.2 生产与测试环境的本质区别

很多新手犯的典型错误是:拿测试环境的安装思路去搞生产库,最后搞出一堆隐患。我列个表说明区别:

对比项 测试环境 生产环境
系统资源配置 能跑就行 预留业务增长空间,内存/CPU/磁盘都有规划
存储方案 文件系统直接用 ASM / 裸设备,考虑性能与安全
备份策略 可有可无 必须规划RMAN备份+归档日志策略
变更流程 随意 有变更窗口、回滚方案、风险评审
监控告警 无 有完善的监控和告警机制
安全性 开个端口就行 最小权限、防火墙策略、审计开启

生产环境不是“能装起来”就行,而是“出了问题能兜住”。比如 ASM 磁盘组选 normal redundancy 还是 external redundancy,测试环境无所谓,生产环境你选错了,坏一块盘可能就是灾难。又比如数据库字符集,测试库选错了大不了重建,生产库字符集选错了,后面全是坑。

所以这篇文章我写的所有步骤、配置参数,都是以“生产环境可用”为标准来展开的,而不是那种“演示一下能跑起来”的教学模式。

2. 安装前的关键规划与参数计算

2.1 服务器硬件与操作系统版本规划

先说要准备什么。生产环境建议的最低配置是这样的:

  • CPU:不低于8核,主频2.0GHz以上,根据业务并发情况调整
  • 内存:至少16GB,32GB或以上比较理想。Oracle 19c 在安装时会检查物理内存,小于1GB会直接挡下来不给装
  • 磁盘:系统盘单独一块(/boot、/、swap分开是基本功),数据库盘另配,如果是 ASM 就用独立的物理盘或 LUN 给 ASM 用
  • 网络:至少两块网卡,一块走业务,一块走管理,生产环境还建议冗余

操作系统版本上,Oracle 19c 官方支持的主流 Linux 发行版包括 RHEL 7.x、Oracle Linux 7.x/8.x、SUSE Linux Enterprise Server 12 SP3+ 等。如果用的是麒麟 V10 这种国产系统,Oracle 19c 安装也能跑,但需要额外注意几个问题,后面我会专门讲到。

我的建议是:如果是正规的生产项目,优先选官方认证的 RHEL/Oracle Linux 版本,别图新鲜用太冷门的发行版。很多问题不是 Oracle 本身的问题,而是操作系统兼容性带来的。

2.2 内存分配、内核参数与 swap 的规划方法

这是很多新手容易忽略的环节。Oracle 的安装前检查有一堆内核参数要求,你如果直接照抄网上的命令,十有八九是过了检查但后端运行隐患一堆。

先说内存。Linux 下 Oracle 19c 的 SGA + PGA 规划,业界常用的经验法则是:

  • 若物理内存小于16GB,SGA 建议分配物理内存的 50% ~ 60%,PGA 分配 15% ~ 20%
  • 若物理内存大于32GB,SGA 建议分配物理内存的 40% ~ 50%,PGA 分配 10% ~ 15%
  • 两者相加不要超过物理内存的 75%,要留出 Linux 操作系统本身和 Page Cache 的余量

举个例子,一台64GB内存的服务器,SGA 给 32GB,PGA 给 8GB,剩下24GB留给 OS 和文件缓存,这个比例在生产环境里是比较稳妥的。

再看内核参数。关键几个我来解释一下为什么要这么设:

  • kernel.sem 的四个值分别代表信号量相关参数。Oracle 官方建议 kernel.sem = 4096 4096 4096 512,但生产环境大并发场景下建议适当调大,特别是第四个参数 SEMMNS,决定系统能同时持有的最大信号量数量
  • kernel.shmmni 是系统级共享内存段的最大数量,Oracle 建议设为 4096
  • kernel.shmall 表示共享内存页的总数,等于内存大小除以页大小。算一下就是:kernel.shmall = 物理内存大小 / 页大小,一般页面大小是4096字节
  • fs.aio-max-nr 是异步IO请求的最大数目,Oracle 19c 要求至少 1048576
  • fs.file-max 是文件句柄的上限,生产环境建议 6815744 或者更大

特别注意:Oracle 19c 会检查 kernel.sem 和 fs.aio-max-nr,不满足直接报错。而这些参数改完以后,需要 sysctl -p 重载,并且重启后依然生效需要写入 /etc/sysctl.conf。

swap 方面,Oracle 官方建议 swap 大小根据物理内存来定:2GB~16GB的物理内存,swap等于物理内存大小;16GB以上,swap可以设为16GB或物理内存的一半。但这个标准在云计算环境里很难满足,我的处理方式是:生产环境至少给8GB swap,宁可多给不可不给,避免内存压力触发 OOM。

3. Oracle 19c 与 ASM 的安装配置核心流程

3.1 Linux 系统侧的准备工作

这部分我用清单式的方式罗列,你照着做基本不会漏。

首先创建 Oracle 用户和用户组。生产环境建议这样建:

BASH
groupadd oinstall
groupadd dba
groupadd asmadmin
groupadd asmdba
groupadd asmoper
useradd -g oinstall -G dba,asmadmin,asmdba,asmoper oracle

注意:Oracle 用户的主组是 oinstall,附加组是 dba/asmadmin/asmdba/asmoper。如果你只建了 dba 组,后面装 ASM 时会发现权限不够,很麻烦。

然后建立目录:

BASH
mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
mkdir -p /u01/app/oracle/oradata
mkdir -p /u01/app/oraInventory
chown -R oracle:oinstall /u01/app
chmod -R 775 /u01/app

这些路径不是随便定的。/u01/app/oracle 是 ORACLE_BASE,/u01/app/oraInventory 存放安装清单,/u01/app/oracle/product/19.0.0/dbhome_1 是 ORACLE_HOME,路径统一有助于后期维护和升级。

接下来是安装依赖包。Oracle 19c 在 RHEL 7 上需要的包非常多,我建议直接用 yum 批量装:

BASH
yum install -y binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXext libXtst libX11 libXau libXi make sysstat unixODBC unixODBC-devel

如果你用的是麒麟 V10 或其他基于 CentOS/RHEL 的国产系统,rpm -qa 检查依赖时可能会报缺一些包,建议直接搜索 ISO 镜像源里的同名 RPM 包手动装上。这类系统里 compat-libstdc++-33 有时候源里没有,我是从老 CentOS 7 的源里下载编译安装的,可以正常用。

3.2 内核参数、资源限制与环境变量

前面讲了要配置哪些内核参数,这里给出一个完整可用的配置,你可以根据自己的物理内存调整:

INI
# 添加到 /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.sem = 4096 4096 4096 512
kernel.shmall = 16777216
kernel.shmmni = 4096
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
net.ipv4.ip_local_port_range = 9000 65500
vm.swappiness = 10

注意 kernel.shmall 我写了 16777216,这个值适用于64GB内存的情况(64GB / 4096Bytes = 16777216)。你把 16777216 乘以 4096 再除以 1GB 就是 64GB,根据自己的物理内存去套这个公式。

sema 参数虽然官方推荐是 250 32000 100 128,但生产环境高并发下很容易不够用,所以调大会更稳。vm.swappiness = 10 是为了减少 swap 的使用,避免频繁换页影响数据库性能。

然后是资源限制,修改 /etc/security/limits.conf:

INI
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 4096
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock 3145728
oracle hard memlock 3145728

memlock 这个很多人会漏掉。Oracle 19c 在开启 use_large_pages 时,如果 memlock 不够,数据库启动会报错或者性能不佳。我一般是把它设成 SGA 大小的上限(KB 为单位)。

Oracle 用户的环境变量配置 ~/.bash_profile:

BASH
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=ORCLCDB
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export TMP=/tmp
export TMPDIR=/tmp

这里特别提醒:ORACLE_SID 在安装前先不用设,或者设一个占位值。安装时会自动创建实例名。

3.3 ASM 实例与磁盘组的创建(核心难点)

ASM 这部分我单独拿出来讲,因为这是最容易翻车的地方。

先说说 ASM 是怎么工作的。简单理解:ASM 实例类似于一个“存储管家”,数据库实例通过它去读写存储在磁盘组里的数据文件。你在操作系统层面看到的裸盘,被 ASM 划归到磁盘组后,Oracle 以自己的方式管理这些空间。

创建 ASM 磁盘之前,在 VMware 或物理机上,你要先给虚拟机加几块磁盘,不要格式化,不要分区,直接原生态裸盘交给 Linux 系统识别。然后通过 lsblk 确认磁盘名称,比如 /dev/sdb、/dev/sdc。

为了让 ASM 能认出这些盘,需要用 oracle 用户身份执行 asmcmd 或者用 oracleasm 工具标记。不过更简单的方式是直接改 /etc/udev/rules.d/99-oracle-asm.rules 文件,设置磁盘的权限和属主:

TEXT
KERNEL=="sdb", OWNER="oracle", GROUP="asmadmin", MODE="0660"
KERNEL=="sdc", OWNER="oracle", GROUP="asmadmin", MODE="0660"

改完之后:

BASH
udevadm trigger

确认权限已生效后,用 oracle 用户连接 ASM 实例(此时 ASM 应该还没创建,稍后安装时一并创建)。

安装 Oracle 19c 的时候,有一个组件选择步骤可以选择“Install Grid Infrastructure”,用来安装 ASM 和集群软件。单机版生产环境不需要 Cluster,只装 ASM 即可。装完 Grid Infrastructure 之后,asmca 命令就能打开图形化界面来创建磁盘组。

磁盘组的三种冗余模式,生产环境怎么选,这里我给出我的建议:

  • external redundancy:数据只存一份,完全靠外部存储保障,比如用了 SAN 阵列的 RAID。生产环境如果存储层已有 RAID,可以选这个,省空间
  • normal redundancy:双份镜像,两块盘坏一块不影响。生产环境首选,如果你的 ASM 盘是本地 RAID 或者没有可靠存储保障,务必选这个
  • high redundancy:三份镜像,空间利用率只有 1/3,一般只有金融、核心交易系统才会用

创建磁盘组的界面里会要求填磁盘组名称、选择成员磁盘、设定冗余级别。起名建议用 DATA(放数据文件)、FRA(放闪回区和归档日志)。另外注意 AU(Allocation Unit)大小,默认 1MB 就行,除非你的是大规模 OLAP 场景,可以调大到 4MB。

3.4 数据库实例创建与初始化参数调优

数据库实例的创建有两种路径:DBCA 图形化工具,或者命令行静默创建。生产环境我建议使用 DBCA,因为它能顺便帮你建好监听器、配置好 EM 等。

在 DBCA 里关键的选择:

  • 选“Create a database with default configuration”还是“Advanced Configuration”?生产建议走 Advanced,能细化很多参数
  • 数据库类型:选“General Purpose or Transaction Processing”还是“Data Warehousing”?OLTP 选前者,分析型可选后者
  • Storage 选择:必须选 ASM,并指定磁盘组。选文件系统就是走老路,但既然你在生产环境用了 ASM,这里就没有理由选回文件系统
  • 字符集:生产库建议 AL32UTF8,这个选择关乎后面乱不乱码。如果对接老系统,可能需要根据开发需求确认,但 AL32UTF8 是最通用的选择
  • 内存参数:DBCA 会让你选“Automatic Shared Memory Management”还是“Manual”。我的建议是生产环境启用 ASMM(SGA_TARGET),但 PGA 要单独设 PGA_AGGREGATE_TARGET,别全自动

创建完成后,有一些初始化参数需要手工核对:

SQL
-- 查看关键参数
show parameter sga_target;
show parameter pga_aggregate_target;
show parameter db_recovery_file_dest;
show parameter compatible;
show parameter processes;
show parameter open_cursors;
show parameter db_files;

比较关键的是 compatible 参数。Oracle 19c 默认安装后 compatible 是 19.0.0,不要随便调低,因为调低之后某些新特性就用不了,而且调高容易调低难。

processes 默认是 300,生产环境至少要按并发会话数的两倍来设。我经历过一次生产系统因为 processes 不够,导致应用疯狂报 ORA-12520,排查半天才定位到这个问题。建议至少设 1000 或更高。

db_files 默认值是 200,如果你预期数据文件很多(比如分区表每个月一个新表空间),就把这个值调大,比如 500。不然文件数超过限制再扩容就要重启实例,非常麻烦。

4. 项目实战:从数据导入到生产切换的完整过程

4.1 项目背景与实战需求

光说不练假把式。我结合自己做过的一个真实项目来讲——某制造企业的 ERP 系统数据库升级,原库是 Oracle 11g,运行在 Windows Server 2008 R2 上,数据量约 1.2TB。项目要求升级到 19c,运行环境换成 Linux + ASM,业务中断时间窗口只有 4 个小时。

这种场景很有代表性,因为它不只是“装个新库”,还牵扯到数据迁移、兼容性测试、应用适配和切换方案。很多集成商到这一步都会翻车,所以我挑几个核心环节详细讲。

4.2 导出/导入还是跨版本升级

2019年以前的老方法往往是用 exp/imp,或者 Data Pump 来做逻辑迁移。但对 1.2TB 的库来说,逻辑迁移太慢,导出3小时、传输1小时、导入8小时,根本不可能在4小时内完成。

生产环境走跨版本迁移,我更推荐用物理方式:

  • 方法一:用 RMAN 将 11g 的库恢复到一个中转环境,然后用 DBMS_REDEFINITION 或直接升级。缺点是耗时也长
  • 方法二:如果两套库在不同服务器上,网络带宽足够,可以直接在旧库做好 Data Guard,切换时直接 role transition,增量时间极短,可以做到分钟级切换。但我做的这个项目,旧库是 Windows 单机,没开 DG 配置,重新配时间成本太高
  • 方法三(本项目采用):RMAN 备份恢复 + 增量应用。先用 RMAN 备份 11g 全库,在新环境上 restore 成为 19c 库,然后使用 RMAN CONVERT 或直接打开库后通过 utl_file 导入。实际生产上更推荐直接走 expdp/impdp 的并行方式和数据泵并行度来压缩耗时

我们这个项目最后的方案是折中的:先在线做全库备份,传输到新服务器,RMAN 恢复并升级数据字典到 19c,然后针对业务增量数据,用 expdp/impdp 单独做增量补录。整个过程耗时约 3.5 小时,包含了最后业务侧验证的时间,正正好好赶在窗口内完成。

所以,在实战环节我要强调的一个点:先测好你的迁移时间,再给领导承诺切换窗口。任何没经过演练的评估都是耍流氓,生产切换的紧张程度你真的想象不到。

4.3 实战中的 ASM 磁盘管理与空间预估

1.2TB 的数据量对 ASM 磁盘组规划提出了很高的要求。全库备份加归档日志,到新环境上我规划了两组磁盘:DATA 组 2TB,FRA 组 1.5TB。具体计算方式:

TEXT
DATA 组预估:
数据文件合计:约 1.2TB
同一时间增长余量:20%(基于业务月均增速计算)
镜像冗余开销:normal redundancy 乘以 2
合计:1.2TB * 1.2 * 2 = 2.88TB

但我实际只给了 DATA 组 2TB,因为我的 plan 是 nologging + 部分历史数据不迁移(旧系统已下线了两个历史模块,共约500GB)。这种取舍很关键,业务侧的确认比其他都重要。

FRA 组就是闪回恢复区,需要存放 RMAN 备份、归档日志、闪回日志。我按照“最近3天归档+1份全备+RMAN自动备份”来算:

TEXT
FRA 组预估:
归档日志:每天约 80GB,保留3天 = 240GB
RMAN 全备:压缩后约 700GB
control file / spfile 自动备份:约 2GB
冗余开销:normal redundancy 2倍
合计:(240 + 700 + 2) * 2 = 1884GB

最终给 FRA 组 1.5TB,实际使用约 1.1TB,剩余 400GB 用于后续增长。这个估算方式算是比较合理的。

4.4 数据库打开后的应用适配与性能验证

数据库这侧迁移完成,不代表项目交付了。接下来更麻烦的是应用适配和性能验证。

我们的应用系统中间层通过 JDBC 连接 Oracle,升级到 19c 后有一个很典型的问题:JDBC 驱动版本太旧。旧系统用的 ojdbc6 连 11g 没问题,连 19c 直接报 ORA-28040: No matching authentication protocol。解决方法是升级驱动到 ojdbc8,或者是把数据库的 SQLNET.ALLOWED_LOGON_VERSION_CLIENT 参数调低。

更稳妥的做法是在升级前检查一下应用的数据库驱动版本,结合 19c 的官方兼容性矩阵提前替换。

另一个实际遇到的问题:19c 默认开了 PDB(多租户架构),而旧系统是一个非容器数据库。这涉及到 CDB/PDB 的取舍。生产环境里有时候我们会选择用 PDB 来模拟原来的单库模式,应用连接配置改一点点就能用;但如果你不想上多租户,Oracle 19c 也支持 NON-CDB 模式(虽然官方对 non-CDB 的支持后续版本会弱化)。我个人的做法是:新环境能上 CDB/PDB 就坚决上,理由很简单——未来扩展和资源隔离都方便。

性能验证环节,我们不能只跑通 insert/select 就算完。至少要做这么几件事:

  • 跑一遍核心业务全流程(下单、审核、入账、查询)
  • 跑一版全表扫描类大报表,对比新库与旧库的响应时间
  • 检查 AWR 报告,重点看 Top 5 Wait Events。生产环境 19c + ASM 下,我见过比较常见的等待事件是 cell single block physical read(这是Exadata上的)和 db file sequential read(传统存储),通过调整 db_file_multiblock_read_count 和存储并发策略来改善
  • 观察 ASM 磁盘组的 I/O 吞吐量,确认没有单盘瓶颈

5. 真实环境里踩过的坑与排查经验

5.1 如何彻底卸载 Oracle 19c 并清理干净

这是一个经常被问到的问题,尤其是在 Windows 平台,卸载不干净导致重装失败的情况特别常见。虽然我们的标题是 Linux 环境,但搜这个热点的人非常多,我就一起说了。

Linux 下卸载 Oracle 才是正道。关键步骤是:先停库、再删文件、删用户、清理配置。很多新手只会 rm -rf /u01/app/oracle,这样根本卸不干净。

一套相对完整的卸载步骤:

BASH
# 1. 停止监听和数据库实例
lsnrctl stop
sqlplus / as sysdba
SQL> shutdown immediate;
SQL> exit
 
# 2. 停止 ASM 实例(如果有)
sqlplus / as sysasm
SQL> shutdown immediate;
SQL> exit
 
# 3. 使用 deinstall 工具
$ORACLE_HOME/deinstall/deinstall -checkonly
$ORACLE_HOME/deinstall/deinstall
 
# 4. 清理用户和目录
userdel -r oracle
groupdel oinstall
groupdel dba
rm -rf /u01/app /etc/oraInst.loc /etc/oratab

在注册表层面的问题主要出现在 Windows 平台。Windows 卸载 Oracle 时,光靠控制面板的卸载程序是不够的,还需要:

  • 删除注册表 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 相关键值
  • 删除 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 下所有 Oracle 开头的服务项
  • 删除环境变量里的 ORACLE_HOME、TNS_ADMIN 之类的条目
  • 删除 C:\Program Files\Oracle 目录
  • 删除 C:\Users\用户名\AppData\Local\Temp 下的 Oracle 临时文件

但我想说的是,你在生产 Linux 服务器上一般不会遇到这么脏的清理需求,反而很多装国产系统麒麟 V10 的机器上会遇到依赖问题。麒麟 V10 上装 Oracle 19c 时有几个典型的坑:

  • pdksh 包在麒麟源里没有,导致安装检查失败。解决办法是用 ksh 替代,创建符号链接 ln -s /usr/bin/ksh /bin/ksh,并安装 ksh 包
  • compat-libcap1 和 compat-libstdc++-33 在麒麟源里可能版本不匹配,可以手动下载 CentOS 7 的 RPM 强制安装(加 --nodeps --force,但要注意影响)
  • 图形化安装界面中文乱码,一般是缺字体,设置环境变量 LANG=en_US.UTF-8 通常能解决

5.2 sysaux 表空间占用率过高的问题

另一个高频问题:Oracle 19c 的 SYSAUX 表空间占用率异常高。这问题通常不是单一原因,我遇到过的最常见的三类原因:

第一类是 AWR 快照保留时间过长、快照密度过高。默认 AWR 只保留8天,每60分钟采一次。有些同事图省事改了 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS,改成每15分钟一次还保留30天,SYSAUX 能不大吗?

排查语句:

SQL
SELECT occupant_name, space_usage_kbytes
FROM v$sysaux_occupants
ORDER BY space_usage_kbytes DESC;

看哪个组件占得多。如果是 SM/AWR 占大头,那就调整快照策略:

SQL
BEGIN
DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
retention => 43200, -- 保留5天(单位:分钟)
interval => 60, -- 每小时一个快照
topnsql => 50
);
END;
/

有时候光是调整策略还不够,你还需要手动清理老快照:

SQL
BEGIN
DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(
low_snap_id => 1,
high_snap_id => 500,
dbid => 1234567890
);
END;
/

第二类是审计日志(Audit Trail)爆了。19c 默认开启统一审计,如果审计记录大量写入 SYSAUX,增长速度非常快。我之前接手过一个库,跑了不到一个月,SYSAUX 直接干到 70GB。清理方法是:

SQL
-- 查看审计表大小
SELECT table_name, num_rows, blocks*8/1024 size_mb
FROM dba_tables
WHERE table_name LIKE 'AUD$%';

如果确认是审计日志占空间,可以关闭不必要的审计策略,或者把审计日志挪到独立表空间。有一条很实用的经验:生产库对外部登录失败的审计是必要的,但不要开对内部应用账号的详细 SQL 审计,不然空间和性能都在烧钱。

第三类是优化器统计信息历史表(WRI$_OPTSTAT_HISTORY)过大。Oracle 19c 默认会保存统计信息的历史记录,如果频繁跑 DBMS_STATS.GATHER_TABLE_STATS,历史累积也很大。清理方式:

SQL
BEGIN
DBMS_STATS.PURGE_STATS(sysdate - 30);
END;
/

我建议在你排查空间问题时,用这个终极 SQL 一次性列出各组件占用:

SQL
SELECT occupant_name, space_usage_kbytes/1024/1024 AS size_gb
FROM v$sysaux_occupants
ORDER BY space_usage_kbytes DESC;

对着结果逐个击破就好了。

5.3 从 ASM 中读取数据库及进入 ASM 实例的常用命令

进入 ASM 实例这个问题,问的人也不少。简单说一下:

BASH
# 以 oracle 用户登录
sqlplus / as sysasm

as sysasm 和 as sysdba 是有很大区别的。只有 sysasm 权限才能管理磁盘组、创建/删除 ASM 实例;sysdba 进 ASM 实例其实很多管理命令都不能执行。

进入后常用命令:

SQL
-- 查看磁盘组信息
SQL> set linesize 300
SQL> col name format a10
SQL> select group_number, name, type, total_mb, free_mb, state from v$asm_diskgroup;
 
-- 查看磁盘状态
SQL> select group_number, disk_number, name, path, total_mb, free_mb, mount_status, state from v$asm_disk;
 
-- 查看 ASM 实例的告警日志
SQL> show parameter background_dump_dest;

ASM 磁盘有时会遇到磁盘被 dismount 或者 offline 的情况,重新挂载磁盘组的命令:

SQL
SQL> alter diskgroup DATA mount;

另外用命令行控制 ASM 也更实用:

BASH
asmcmd
ASMCMD> ls /u01/app/oracle/oradata
ASMCMD> du -sh DATA
ASMCMD> lsdg

ASMCMD 中的 lsdg 查看磁盘组使用情况非常直观。

5.4 备份文件兼容性:19c 备份能否恢复到 11g

这个问题也特别多:19c 的备份文件能不能恢复到 11g 上?答案是明确的:不能。原因在于 Oracle 数据库的备份和恢复机制是“向下兼容,向上不兼容”的。简单说,11g 备份可以恢复到 19c,19c 备份不能恢复到 11g。

具体来说:

  • RMAN 备份集的格式和内容受数据库版本影响,高版本备份的低版本数据库无法识别
  • 数据文件块版本不同,低版本数据库无法处理更高版本的数据文件头
  • 控制文件的格式也不兼容

如果确实需要从 19c 回退到 11g(虽然这种事最好别发生),只能走逻辑导出:

BASH
expdp system/xxx@ORCLCDB schemas=xx directory=DATA_PUMP_DIR dumpfile=xx.dmp logfile=xx.log

在 11g 上执行:

BASH
impdp system/xxx@ORCL schemas=xx directory=DATA_PUMP_DIR dumpfile=xx.dmp logfile=xx.log

但要注意:如果 19c 里用了 11g 不支持的新特性(比如 12c+ 的多租户 PDB、新版本的数据类型),逻辑导入到 11g 也有风险。所以生产环境升级前,一定要把回退方案的细节提前验证清楚,别等到切换时才发现退不回去。我见过不止一次因为回退不了被迫熬夜做数据修复的惨痛案例。

5.5 进入 ASM 的权限与登录认证问题

还有一类很常见的问题是:明明装了 Grid Infrastructure,但 sqlplus / as sysasm 进去报 ORA-01031: insufficient privileges。这种情况排查思路是:

先确认操作系统用户所在的组是否正确:

BASH
id oracle

必须包含 asmadmin 组,因为拥有 sysasm 权限的前提是你属于 asmadmin 组。如果只属于 dba 组,你只能以 sysdba 登录,很多 ASM 管理命令执行不了。

其次确认 ORACLE_SID 是什么。ASM 实例的 SID 默认是 +ASM,如果没设置 ORACLE_SID,直接 sqlplus / as sysasm 有可能会去连数据库实例而不是 ASM 实例。所以进入 ASM 之前,建议执行:

BASH
export ORACLE_SID=+ASM
sqlplus / as sysasm

注意 +ASM 前面的加号不能丢,这是 ASM 实例的命名规范。把它写进 Grid Infrastructure 用户的 .bash_profile 里就不会搞混了。

6. 生产环境的日常运维与监控建议

最后我多说几句运维侧的东西。装好一套环境不是结束,而是开始。生产环境的数据库运维,我一般会做好这几件事:

每天检查的地方:

  • 查 ASM 磁盘组使用率,低于20%空闲就要开始规划扩容了
  • 查告警日志中是否有 ORA- 错误
  • 查监听日志是否被爆破尝试(大量无效连接)
  • 查看备份日志是否成功完成

每周检查的地方:

  • 数据库 AWR 报告,重点关注 Top SQL、Top Wait Events
  • ASM 磁盘性能,查看 v$asm_disk_iostat
  • 归档日志的产生量趋势,提前估算空间
  • 数据库启动后的运行时长、进程数是否异常

监控工具方面,如果团队预算不足,最简单的方案就是用 Oracle 自带的 Enterprise Manager (EM Express),从 12c 开始默认启用,端口 5500,浏览器直接访问就很方便。如果团队规模稍大,建议用 Zabbix + Orabbix 模板来监控数据库层的存活、表空间、备份状态等指标。

备份策略这块是最不该省的钱。生产环境强烈建议:

  • 开启归档模式,并将 DB_RECOVERY_FILE_DEST_SIZE 设置到位
  • RMAN 每日增量备份(Level 0 每周一次,Level 1 每日一次)
  • 控制文件和 spfile 自动备份必须开
  • 备份完成后异地拷贝一份(从 ASM 拷贝到另一台存储服务器或对象存储)
  • 每季度至少做一次恢复演练,别等出事了再测恢复流程行不行

我见过太多事故,不是没做备份,而是备份做了但从没恢复过,真要恢复了才发现备份数据损坏或路径对不上。做一次恢复演练一小时,出一次事故通宵一周,这笔账每个 DBA 都得算清楚。

7. 这套技术组合的扩展方向:从单机走向集群与云化

在生产环境跑熟了单机版 19c + ASM 之后,你会自然而然地思考一个问题:接下来怎么扩展?

一个很自然的演进路径是:单机 ASM → RAC 集群。由于你在单机阶段已经使用 ASM 存储,后续扩展 RAC 会顺畅很多,因为 ASM 本身就是共享存储架构。RAC 环境下,ASM 依然承担存储管理职责,而且集群件(GI)会提供节点间的心跳检测和故障转移能力。Linux + Oracle 19c RAC + ASM 是很多企业核心系统的标配,无论是在物理机还是虚拟化环境,这套组合都是经过验证的。

另一个方向是云化。Oracle 19c 现在可以跑到公有云(如阿里云、腾讯云的 Oracle RDS),也可以跑在 OCI(Oracle Cloud Infrastructure)的 Exadata 服务上。云化之后,很多运维细节(存储扩容、备份)会由云平台接管,但对 DBA 的技能要求变成“懂架构设计和成本核算”为主。不过即使上了云,ASM 这个底层逻辑也依然存在——云上的 Exadata 服务底层就是 ASM + 智能存储。

我给朋友的建议是:如果你想长期在数据库这个圈子里深耕,Linux + Oracle 19c + ASM 这个组合非常值得花时间学好。它既是传统企业级数据库的标杆组合,也是通向 RAC、Data Guard、Exadata 这些更高阶技术的基础。别怕麻烦,把安装文档做收敛、把每一类问题记录成自己的排查手册,这些东西在未来五年内都会是你的核心竞争力。

最后再分享一个我个人的习惯:每次在生产库做完变更,我都会把变更步骤、遇到的问题、排查过程、修复方法整理成一份带时间线的文档归档。这个习惯说不上多高大上,但真的能救命——半年后你接到一个类似的变更需求,打开这份文档就能省掉至少一半的踩坑时间。希望这篇关于 Linux + Oracle 19c + ASM 的经验分享也能成为你自己的“排雷手册”里的一页。

超详细的centos7安装oracle19c RAC
本文档详述了在CentOS7环境下使用VirtualBox安装Oracle 19c RAC的全过程,包括环境准备、配置网络、服务器设置、ASM共享磁盘配置、依赖包安装、GRID与数据库软件安装、DBCA创建实例等关键步骤,旨在帮助读者掌握RAC安装过程,避免常见错误。
无情白
11652
数据库教程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实例与数据库实例依赖关系、权限隔离及生产巡检要点。
风哥教程
154
【德哥说库系列】-ASM管理Oracle 19C单实例部署
本文介绍了如何在Linux环境中进行Oracle 19C的单实例部署,详细步骤包括环境准备、yum源配置、依赖安装、数据库预安装、目录权限设置、环境变量配置、GI用户创建、GI资源和磁盘组配置,以及Oracle软件安装、DBCA建库和日常管理。适合对Oracle数据库部署感兴趣的读者参考。
IT邦德
3081
Oracle19c单机部署(本地静默安装方式)附网盘资源
本文详细介绍了在Linux系统上通过本地静默方式部署Oracle 19c单机数据库的完整流程,涵盖安装前检查(硬件、OS、内核参数、用户权限、存储)、系统配置(创建oracle用户与组、目录权限、limits.conf和sysctl.conf调优)、环境变量设置、响应文件定制、runInstaller静默安装、DBCA命令行建库,以及监听与数据库连接验证等关键步骤,适用于运维及DBA人员快速完成标准化部署。
晴天¥
1585
全网首发!红帽 RHEL 10.0 一键安装 Oracle 19C,硬核!
作者在 RHEL 10.0 Beta 发布后,修改 Oracle 一键安装脚本并适配成功。本文详细介绍了在 RedHat 10.0 上使用该脚本一键安装 Oracle 19C 单机的过程,包括安装准备、环境信息、安装命令、安装过程及连接测试等内容。
Lucifer三思而后行
9372
96-OracleLinux10 安装-DB 19c 19.26-环境准备
本文介绍了Oracle Linux 10和RHEL 10的概述、演进背景、关键技术特性对比、核心差异点与适用场景及演进趋势。还详细说明了安装Oracle Linux 10并准备安装DB 19c 19.26的环境步骤,包括安装源包、更新、安装组件、检查环境等。
远方1609
1607
【实战】Oracle基础之单机安装-06 CentOS 7.9 + ASM + Oracle 12cR2
本文是Jady的第28期分享,介绍CentOS 7.9系统下结合ASM进行Oracle 12cR2单机安装。涵盖项目需求与规划,包括业务、资源、操作系统和数据库规划;还涉及操作系统安装与配置,如配置hosts文件、语言环境等,以及数据库部署前配置、ASM磁盘配置等内容。
「已注销」
1538
Oracle数据库安装配置详细教程汇总(含11g、12c、18c、19c、21c)
本文汇总了Oracle数据库从早期版本到19c、21c等版本的安装配置及跨版本升级文档。覆盖多种操作系统如Linux、Windows,并提供详细的图文教程及常见问题解决方案。
MoMoSQL666
6859
Oracle 19c 安装教程:Windows 与 Linux 双环境完整实操指南
本文详细讲解Oracle 19c在Windows与CentOS 7.9 Linux环境下的完整安装流程,涵盖硬件要求、介质准备、用户与权限配置、监听与建库、静默安装、内核参数调优及常见报错排查。重点包括SID与全局数据库名设定、AL32UTF8字符集选择、shmmax/shmall内核参数配置、oracle用户资源限制、响应文件编写及RU补丁升级实践,适用于开发测试、OCP备考与生产环境模拟。
weixin_33957648
204
Oracle 19c Linux静默安装实战:从系统调优到建库配置全解析
本文详解Oracle 19c在Linux平台的静默安装全过程,涵盖系统内核调优(如shmmax、sem等参数)、oracle用户与目录结构创建、依赖包安装(libaio、compat-libcap1等)、响应文件配置、dbca静默建库、监听器配置及开机自启服务设置。强调生产环境部署规范,包括资源限制、归档模式启用、RMAN备份初始化等关键运维配置。
weixin_34146805
428
Oracle 19c安装实战:CDB/PDB选择与Linux/麒麟环境避坑
本文详解Oracle 19c在Windows、Linux及麒麟V10系统下的安装全流程,重点剖析CDB/PDB架构选型依据与避坑要点。涵盖环境检查、图形化/静默安装、监听器配置、字符集选择(AL32UTF8/ZHS16GBK)、归档模式启用、闪回区调优、sysaux空间治理及彻底卸载方法。强调19c已废弃Non-CDB,但生产环境仍需权衡兼容性。
weixin_34417183
632
Oracle GoldenGate 19c生产环境部署与调优实战指南
本文详解Oracle GoldenGate 19c在生产环境中的全流程部署与性能调优,涵盖架构规划、静默安装、Manager/Extract/Replicat核心进程配置、链路验证、延迟监控、I/O与网络瓶颈优化、常见故障排查(如归档日志缺失、表结构不一致、持续延迟),以及高可用设计与自动化运维实践,聚焦事务级数据一致性保障与实时同步稳定性。
weixin_30321709
294
Oracle19c在Linux环境下的高效部署:从预配置到静默安装全解析
本文详细解析Oracle 19c在Linux环境下基于RPM预安装包与响应文件的静默部署流程,涵盖系统配置避坑、存储路径规划(如/u01 vs /opt)、响应文件生成、DBCA静默建库、内存自动配置及安装后必调项。重点突出自动化、标准化与高性能实践,适用于无GUI生产环境及批量部署场景。
吾心指南
410
超详细!Oracle 19c RAC双节点集群部署实战:RedHat/CentOS 从零搭建全流程 + 避坑指南
本文详细记录了在RedHat/CentOS系统上从零搭建Oracle 19c RAC双节点集群的全流程,涵盖操作系统准备、Grid Infrastructure安装、ASM磁盘组配置、RAC数据库图形化安装、DBCA建库、参数调优及归档启用等关键步骤,并重点说明SELinux禁用、透明大页关闭、udev多路径配置、OCR/ASM存储规划、时钟同步、hosts本地解析等核心避坑要点,适用于DBA和运维工程师实施高可用数据库集群。
sysrootsa
1269
数据库教程FGMT04‑生产环境Linux+Oracle19c RAC集群安装配置与项目实战
本文详细讲解在Linux(RHEL7)环境下,基于两节点、单节点64G内存/8CPU硬件规格,静默部署Oracle 19c RAC集群的完整流程。涵盖RAC核心理论(OCR、Voting Disk、SCAN、VIP、Cache Fusion)、操作系统预处理、GI集群安装、ASM磁盘组创建、RAC数据库软件部署、dbca静默建库、负载均衡与故障切换验证,以及集群巡检运维。所有操作均适配生产环境规范,提供可复用Shell脚本与配置文件。
风哥教程
181
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
397
在CentOS 8/RHEL 8上静默安装Oracle 19c:一个踩坑无数的运维工程师的完整复盘
本文详细复盘在RHEL 8/CentOS 8上静默部署Oracle 19c的关键技术要点,涵盖环境适配、依赖包替代方案、响应文件定制、SELinux策略配置、Firewalld端口与服务规则、Systemd自启动服务编写、常见报错根因分析(如环境变量失效、ASM空间不足、监听异常),以及初始性能参数调优。重点解决官方文档未覆盖的兼容性问题与生产级稳定性配置。
爱不到要偷
681
Oracle 19c RAC集群搭建实战:从规划部署到高可用架构实现
本文详细阐述Oracle 19c RAC高可用集群的端到端搭建流程,涵盖环境规划(硬件/网络/存储)、Grid Infrastructure安装与ASM配置、RAC数据库创建(DBCA静默/图形化)、集群管理命令及故障排查要点。重点解析SCAN、VIP、私有网络、OCR/Voting Disk、ASM磁盘组等核心技术组件的配置原理与实操细节,并强调备份策略(RMAN+ASM)、权限控制和日志分析等运维关键点。
weixin_30555515
424
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
389
CentOS 7.5安装Oracle 19c RAC全流程:GRID集群、ASM与建库实践
本文详细阐述在VMware虚拟化平台上基于CentOS 7.5部署Oracle 19c RAC集群的全流程,涵盖系统初始化、GRID集群安装、ASM磁盘组配置(OCR/DATA/ARCH/BACKUP)、RAC数据库创建及客户端连接。重点包括IP与存储规划、内核参数调优、udev裸盘绑定、cvu检查修复、root.sh执行顺序、时钟同步、克隆虚拟机MAC冲突处理等关键技术点,面向DBA与数据库工程师提供高可用集群落地实践指南。
weixin_34194359
453
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向高级架构师跃迁的必经炼狱之路。
坚强努力地活下去
Linux安装Oracle19c指南[项目源码]
Oracle 19c 是 Oracle 公司于2019年发布的长期支持(LTS)版本,作为 Oracle Database 12c 和 18c 的重大演进,它在稳定性、安全性、可管理性与云就绪能力方面实现了全面升级。在 Linux 系统上部署 Oracle 19c,是企业级数据库运维、DBA 技能体系中的核心实践环节,其安装过程远非简单执行安装脚本即可完成,而是一套高度系统化、强依赖操作系统底层配置的工程化流程。本文所指《Linux安装Oracle19c指南[项目源码]》正是围绕这一复杂场景构建的完整技术文档,具有极高的实操价值和教学意义。首先,在安装前的系统准备阶段,必须严格校验硬件与软件环境:CPU 架构需为 x86_64(不支持 ARM 或 i386),内存建议不低于 4GB(生产环境推荐 8GB+),Swap 分区应满足 Oracle 官方公式(RAM ≤ 2GB 时 Swap = 1.5×RAM;2GB 16GB 时 Swap ≥ 16GB),磁盘空间需预留至少 65GB(含软件安装目录、ORACLE_BASE、ORACLE_HOME、闪回恢复区及数据库文件)。操作系统层面,主流支持 RHEL 7.4+、CentOS 7.6+、Oracle Linux 7.6+ 及部分兼容发行版(如 Rocky Linux 8、AlmaLinux 8),但需特别注意内核版本(≥3.10.0-957)、glibc(≥2.17)、binutils(≥2.23.52.0.1)等关键组件版本匹配,否则将导致静默安装失败或运行时异常。用户与权限体系是 Oracle 19c 安全运行的基石。必须创建专用的操作系统用户组:oinstall(作为 Oracle 软件所有者主组)、dba(授予数据库管理员权限)、asmadmin/asmdba/asmoper(若涉及 ASM 存储则需);再创建 oracle 用户并指定其主组为 oinstall、附加组为 dba,禁止使用 root 或普通用户直接安装。目录结构须遵循 Oracle 最佳实践:/u01/app/oracle/product/19.0.0/dbhome_1 作为 ORACLE_HOME(软件安装路径),/u01/app/oracle 作为 ORACLE_BASE(统一基目录),/u01/app/oraInventory 作为 Oracle Inventory 目录(记录所有 Oracle 产品安装信息),且所有路径均需由 oracle 用户完全拥有并设置 755 权限。SELinux 必须设为 permissive 或 disabled(因 Oracle 进程需大量访问系统资源,Enforcing 模式会触发大量 AVC 拒绝日志,导致监听器启动失败、数据库挂起等不可预知问题);firewalld 或 iptables 需关闭或放行 1521(默认监听端口)、5500(EM Express 端口)、8080(APEX 端口)等关键端口,否则客户端无法建立网络连接。环境变量配置直接影响 Oracle 运行时行为,需在 oracle 用户的 ~/.bash_profile 中精确设置:ORACLE_SID(实例唯一标识,如 orcl)、ORACLE_BASE(/u01/app/oracle)、ORACLE_HOME(/u01/app/oracle/product/19.0.0/dbhome_1)、PATH(追加 $ORACLE_HOME/bin)、LD_LIBRARY_PATH($ORACLE_HOME/lib)、NLS_LANG(设定字符集,如 AMERICAN_AMERICA.AL32UTF8,避免中文乱码)。资源限制则通过 /etc/security/limits.conf 强制约束:oracle 用户的 nofile(打开文件数)≥ 65536,nproc(最大进程数)≥ 16384,stack(栈大小)≥ 10240KB,memlock(锁定内存)设为 unlimited(防止 SGA 内存被交换),同时在 /etc/security/limits.d/20-nproc.conf 中确保 nproc 不被覆盖。此外,还需修改 /etc/sysctl.conf 设置内核参数:fs.aio-max-nr=1048576、fs.file-max=6815744、kernel.shmall=2097152、kernel.shmmax=4294967295(≥物理内存一半)、kernel.shmmni=4096、kernel.sem="250 32000 100 128"、net.ipv4.ip_local_port_range="9000 65500"、net.core.rmem_default=262144、net.core.wmem_default=262144、net.core.rmem_max=4194304、net.core.wmem_max=4194304,并执行 sysctl -p 生效。安装过程采用图形界面(X11 转发或 VNC)运行 runInstaller,需提前安装桌面环境依赖(如 xorg-x11-apps、xorg-x11-utils)及字体包(libXtst、libXrender、libX11)。安装向导中需选择“Install database software only”或“Create and configure a database”,后者自动执行监听器配置(listener.ora)、数据库创建(dbca)、密码管理(SYS/SYSTEM 密码强制复杂度校验)及 EM Express 启用。安装后必须以 root 执行 orainstRoot.sh 和 root.sh 脚本,完成 Inventory 权限初始化与 root 用户脚本注册。监听器通过 lsnrctl start 启动,数据库通过 sqlplus / as sysdba 执行 startup 启动,验证状态需依次检查 lsnrctl status、sqlplus / as sysdba -c "select status from v$instance;"、tnsping orcl 等多维度连通性。连接测试涵盖命令行与编程语言双路径:sqlplus system/password@//localhost:1521/orcl 验证本地 TCP/IP 连接;Java 应用则需引入 ojdbc8.jar(Oracle 19c 官方 JDBC 驱动),使用 DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/orcl", "system", "password") 建立连接,并启用 connection.isValid(10) 与 try-with-resources 确保资源释放。重启后服务未自启是高频痛点,解决方案包括:配置 systemd 服务(编写 oracle-db.service 文件,定义 ExecStart=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart $ORACLE_HOME)、启用监听器开机自启(lsnrctl start 在 /etc/rc.local 中)、修改 /etc/oratab 将实例条目末尾的 N 改为 Y、或使用 Oracle Restart(Grid Infrastructure 组件)实现高可用托管。此外,还需掌握日志定位方法:alert_orcl.log(位于 $ORACLE_BASE/diag/rdbms/orcl/orcl/trace/)、listener.log($ORACLE_HOME/network/log/)、安装日志(/u01/app/oraInventory/logs/)等,以支撑深度排错。整套流程体现了 Linux 与 Oracle 深度耦合的技术本质,是 DBA 从入门走向专业不可或缺的实战锤炼。
随身带U盘
Oracle+资料.part12.rar
Oracle数据库作为全球最成熟、最稳定的企业级关系型数据库管理系统之一,其技术体系庞大而精深,涵盖从基础安装配置、SQL与PL/SQL编程、存储架构设计(如ASM)、高可用性方案(RAC与Data Guard)、备份恢复机制(RMAN)、到深度性能调优(SQL优化、执行计划分析、AWR/ASH/ADDM诊断)等全生命周期管理能力。标题“Oracle+资料.part12.rar”虽为分卷压缩包的第十二部分,但结合其标签群——“Oracle数据库, SQL优化, RAC, Data Guard, Oracle安装配置, PL/SQL, Oracle性能调优, RMAN备份恢复, ASM存储管理, Oracle 19c”——可明确推断该资料属于一套系统化、进阶型的Oracle技术学习或企业运维实战资源合集,极可能覆盖Oracle 19c这一当前长期支持版本(LTS)的全部核心模块,并聚焦于生产环境高频痛点问题。其中,“Oracle安装配置”不仅包括单机Linux/Windows平台下的静默安装、响应文件定制、ORACLE_HOME与GRID_HOME分离部署、环境变量(ORACLE_SID、ORACLE_BASE、PATH等)精细化设置,还涉及多版本共存、补丁(OPatch)升级、OUI图形界面异常处理及防火墙/SELinux兼容性适配;“PL/SQL”部分必然深入讲解匿名块、存储过程、函数、包(Package)、触发器(DML/DDL/系统级)、动态SQL(EXECUTE IMMEDIATE与DBMS_SQL)、自治事务(AUTONOMOUS_TRANSACTION)、批量绑定(BULK COLLECT与FORALL)以及异常传播机制(PRAGMA EXCEPTION_INIT),并强调其在业务逻辑封装、批处理效率提升与事务边界控制中的不可替代性;“ASM存储管理”是Oracle云原生架构的关键基石,资料中应详述ASM实例启动原理、磁盘组(Disk Group)冗余策略(EXTERNAL/NORMAL/HIGH)、AU(Allocation Unit)大小影响、ASM Filter Driver(AFD)部署、ACFS集群文件系统集成、以及ASM动态再平衡(REBALANCE POWER)对I/O负载的调控逻辑;“RAC(Real Application Clusters)”作为Oracle最高阶高可用方案,资料必涵盖CRS(Cluster Ready Services)栈结构、OCR/Voting Disk多副本管理、SCAN监听器与GNS集成、节点驱逐(Node Eviction)诊断流程、GC(Global Cache)与GES(Global Enqueue Service)内存交互机制、AWR报告中Global Cache Efficiency Ratio与Global Lock Activity等关键指标解读;“Data Guard”则聚焦物理/逻辑备库构建全流程:从主库FORCE LOGGING启用、Standby Redo Log组规划、Broker配置(DGMGRL)、Switchover/Failover切换脚本编写,到快照备库(Snapshot Standby)的读写隔离、Active Data Guard实时查询(Real-Time Query)的SCN同步延迟监控、以及ADG下ADG DML Redirect与Far Sync模式的网络容灾设计;“RMAN备份恢复”绝非仅限于BACKUP DATABASE命令,而是完整覆盖0级/1级增量备份、归档日志备份策略(ARCHIVELOG DELETION POLICY)、备份集校验(VALIDATE)、块损坏修复(BLOCKRECOVER)、基于时间点/SCN/日志序列号的不完全恢复、以及利用备份控制文件进行灾难重建(RESTORE CONTROLFILE FROM AUTOBACKUP)等极限场景;“SQL优化”是贯穿始终的核心能力,资料势必包含CBO(Cost-Based Optimizer)统计信息收集策略(DBMS_STATS参数调优)、执行计划强制绑定(SQL Profile/SQL Plan Baseline)、SQL Monitor实时跟踪长事务、物化视图重写(Query Rewrite)、索引类型选择(B-Tree/Bitmap/Function-Based/Domain Index)、分区表剪枝(Partition Pruning)与连接算法(Nested Loop/Hash Join/Sort Merge Join)成本对比;最后,“Oracle性能调优”是上述所有技术的综合应用,需融合OS层面(CPU/内存/I/O等待)、实例层面(SGA/PGA内存分配、Latch/Enqueue争用分析)、会话层面(ASH采样、SQL_ID定位根因SQL)三维诊断法,并熟练运用AWR Compare Periods报告识别性能拐点。整套资料以Oracle 19c为技术底座,必然涵盖其新特性:自动索引(Auto Indexing)、实时统计信息(Real-Time Statistics)、内存多租户(PDB Memory Management)、JSON增强支持、以及Oracle Database In-Memory列式缓存的混合工作负载优化实践。该part12.rar作为系列资料的尾部卷宗,很可能承载着高级故障案例汇编、性能调优Checklist清单、RAC+DG联合部署拓扑图、或企业级运维自动化脚本(Shell/Python调用DBMS_SCHEDULER/DBMS_DATAPUMP)等高价值内容,是Oracle DBA从熟练工迈向架构师不可或缺的知识闭环组件。
oracle服务器及客户端安装简要说明
Oracle数据库作为全球领先的企业级关系型数据库管理系统,其安装与配置是企业信息化建设中至关重要的基础环节。本资料标题《Oracle服务器及客户端安装简要说明》所涵盖的知识体系,绝非简单的“点击下一步”式操作指南,而是融合了Oracle架构原理、操作系统适配、网络通信机制、安全策略配置及生产环境最佳实践的综合性技术文档。首先,从服务器安装角度而言,核心涉及Oracle Database Software(如Oracle 19c)在Linux(RHEL/CentOS/Oracle Linux)或Windows Server平台上的部署全流程:包括系统预检(如内核参数调整——shmmax/shmall、ulimit限制、用户资源限制、SELinux/AppArmor策略配置)、创建专用oracle用户与oinstall/dba组、解压安装包并运行runInstaller图形化或静默模式安装程序、执行root.sh脚本完成系统级权限配置、使用DBCA(Database Configuration Assistant)创建具有特定字符集(AL32UTF8)、存储类型(ASM或文件系统)、内存分配(SGA/PGA自动内存管理或手动调优)、归档模式(ARCHIVELOG)及备份策略的数据库实例。尤为关键的是Oracle Net Services的深度集成——listener.ora文件定义监听器端口(默认1521)、协议(TCP/IP)、主机名解析方式及动态/静态服务注册机制;而tnsnames.ora则作为客户端连接描述符的本地映射库,通过SERVICE_NAME或SID标识远端数据库,并支持负载均衡(LOAD_BALANCE=ON)、故障转移(FAILOVER=ON)等高可用特性。服务器端还必须正确配置Oracle环境变量:ORACLE_HOME(指向数据库软件根目录)、ORACLE_SID(实例唯一标识)、PATH(加入$ORACLE_HOME/bin确保sqlplus/rman/lsnrctl等命令全局可执行)、TNS_ADMIN(指定网络配置文件路径,避免默认$ORACLE_HOME/network/admin冲突)。 客户端安装则呈现高度灵活性与场景适配性:SQL*Plus作为Oracle原生命令行工具,需依赖完整客户端套件(Oracle Client),适用于开发调试与DBA日常运维;而Oracle Instant Client则是轻量化解决方案——仅需下载基础包(Basic或Basic Light)与SQL*Plus包,解压后设置LD_LIBRARY_PATH(Linux)或PATH(Windows)及TNS_ADMIN即可连接,无需安装、不修改注册表/系统库,特别适合容器化部署、CI/CD流水线及嵌入式应用。Instant Client还支持ODBC、JDBC、OCI等多种驱动接口,其tnsnames.ora可集中部署于网络共享路径,配合Oracle Connection Manager实现连接池与访问控制。此外,客户端连接验证必须覆盖多维度:使用tnsping测试TNS解析与监听器可达性,用sqlplus /@service_name验证身份认证与服务名路由,结合sqlplus username/password@host:port/service_name进行直连排错。所有安装过程均需严格遵循Oracle官方认证的操作系统版本矩阵(如Oracle 19c仅支持RHEL 7.6+、Windows Server 2016+),规避因glibc版本不兼容、内核补丁缺失导致的ORA-01034/ORA-27101等致命错误。更进一步,生产环境安装必须同步规划:归档日志路径(确保+ASM磁盘组或NFS高可用存储)、闪回区(DB_RECOVERY_FILE_DEST)、审计日志(AUDIT_FILE_DEST)、密码文件(orapw$ORACLE_SID)权限(640)、监听器日志轮转(log_rotation_time/log_rotation_size)、以及基于Oracle Wallet的透明数据加密(TDE)密钥管理。综上所述,该内部资料虽冠以“简要说明”,实则浓缩了Oracle DBA十年实战经验——从二进制文件解压到百万级TPS数据库稳定运行,每一步安装动作背后都是对Oracle内存结构(SGA/PGA)、进程模型(PMON/SMON/LGWR/DBWn)、网络协议栈(TNS over TCP)、字符集转换(AL16UTF16→AL32UTF8)、以及Linux进程调度与I/O子系统深刻理解的具象体现,是构建高可靠、高性能、可扩展、易维护企业数据底座不可逾越的技术基石。
oracle unix安装管理手册
Oracle数据库在UNIX系统上的安装与管理是一项高度专业化、强依赖操作系统底层机制的核心IT运维技能,广泛应用于金融、电信、政府等对数据一致性、高可用性与安全性要求极高的关键业务场景。本手册《Oracle UNIX安装管理手册》并非泛泛而谈的入门指南,而是面向中高级DBA(数据库管理员)、系统架构师及通过Oracle Certified Professional(OCP)/Oracle Certified Master(OCM)认证备考人员的实战型技术文档,其价值在于深度耦合UNIX操作系统的内核机制、进程模型、文件系统语义、用户权限体系与Oracle数据库的初始化逻辑,形成一套可复用、可审计、可标准化的企业级部署范式。首先,从“UNIX系统”维度看,手册覆盖了主流商业UNIX平台——包括IBM AIX、HP-UX、Solaris(SPARC/x86)以及类UNIX系统如Red Hat Enterprise Linux(RHEL)、Oracle Linux和SUSE Linux Enterprise Server(SLES)——的差异化适配策略。例如,在AIX上需特别关注LVM(逻辑卷管理)的VG(卷组)规划、JFS2文件系统挂载选项(如log=INLINE、mount options: cio, noatime)、AIO(异步I/O)子系统的启用方式及vmo参数调优;在Solaris上则必须配置zone隔离环境下的资源池(resource pool)、使用ZFS作为数据库文件系统时的recordsize=8K、primarycache=all等关键属性,并严格遵循SMF(Service Management Facility)服务注册规范启动监听器;而在Linux平台上,手册深入解析了ulimit限制(尤其是nofile、nproc、stack)、kernel.shmall/shmmax/shmmni/sem参数的数学推导逻辑(如shared memory segment大小须≥SGA_TARGET+PGA_AGGREGATE_TARGET+10%冗余)、Transparent HugePages(THP)必须禁用的原因(Oracle 11gR2+明确警告其导致内存分配抖动与实例崩溃),以及systemd服务单元文件中EnvironmentFile与ExecStartPre脚本的编写规范。其次,“Oracle数据库安装”绝非执行runInstaller图形化向导即可完成的简单操作。手册详述了静默安装(Silent Installation)全流程:从响应文件(response file)的字段级定义(如oracle.install.db.config.starterdb.type=GENERAL_PURPOSE、oracle.install.db.config.starterdb.globalDBName=orcl.example.com、oracle.install.db.config.starterdb.SID=orcl)到预检查(prereq)失败的根因分析(如缺少pdksh包、/tmp空间不足4GB、hostname解析异常、SELinux enforcing模式冲突);从Grid Infrastructure(GI)与RDBMS软件分阶段安装策略(先装GI再建ASM磁盘组,再以ASM为存储后端安装DB)到单机RAC模拟环境搭建技巧;从ORACLE_HOME目录的ACL(Access Control List)精细化控制(确保oinstall组可读、dba组可写、其他用户无权访问)到TNS_ADMIN、LD_LIBRARY_PATH、ORACLE_BASE等关键环境变量的bash/ksh/profile.d持久化配置方法。尤为关键的是,手册强调安装后必须执行root.sh脚本的完整输出校验(验证ohasd、oraagent等守护进程状态、OCR/Voting Disk路径权限、grid用户对/etc/oracle/olr.loc的读写能力),并提供基于Shell脚本的自动化验证套件(含ps -ef | grep ora_、crsctl check cluster、sqlplus / as sysdba -c "SELECT status FROM v$instance"等组合命令)。再者,“系统管理”层面涵盖安装后的深度加固与持续运维:包括创建专用OS用户(oracle、grid)与组(oinstall、dba、asmadmin、asmdba)的GID/UID规划原则(避免与系统保留组冲突);使用usermod/groupmod进行生产环境用户属性变更的安全边界(禁止直接修改/etc/passwd中的oracle主目录);基于RBAC(Role-Based Access Control)的sudoers策略设计(如允许backup用户仅执行rman target /、expdp等受限命令);利用crontab + find + gzip实现归档日志的滚动压缩与异地同步;通过AWR(Automatic Workload Repository)快照间隔调整(DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS)与ADDM(Automatic Database Diagnostic Monitor)阈值重设保障性能基线稳定性;以及在UNIX信号层面理解Oracle进程(PMON、SMON、DBWn、LGWR)的SIGTERM/SIGHUP响应机制,确保kill -9仅作为最后手段。此外,“权限配置”贯穿全生命周期:从安装前的目录权限(chown -R oracle:oinstall /u01/app/oracle;chmod -R 755 /u01/app/oracle/product/19c/dbhome_1)到ASM磁盘权限(udev规则绑定磁盘名、设置diskmode=0660、owner=grid:asmadmin);从监听器密码保护(lsnrctl change_password)、TNS加密配置(sqlnet.ora中SQLNET.ENCRYPTION_SERVER=REQUIRED)到数据泵导出目录对象(CREATE DIRECTORY dpump_dir AS '/backup/dp')的READ/WRITE权限授予粒度控制。手册还专门剖析了UNIX ACL与Oracle细粒度审计(FGA)的协同机制,例如通过setfacl -m u:audituser:r /u01/app/oracle/diag/rdbms/orcl/ORCL/trace实现审计日志只读访问,同时避免授予audituser DBA角色带来的过度授权风险。最后,“Shell脚本”作为UNIX管理的灵魂,在手册中体现为数十个生产就绪脚本:如自动检测ASM磁盘健康状态的asm_disk_check.sh(调用kfod、kfed解析AU分布)、批量生成RMAN恢复脚本的rman_gen_restore.sh(解析v$archived_log与v$backup_piece元数据)、基于sar/iostat/vmstat输出的IO瓶颈诊断脚本io_analyzer.sh,以及集成Ansible Playbook的跨平台部署框架(通过inventory动态识别AIX/Linux主机并调用对应shell模块)。所有脚本均附带详细的错误码处理($?判断)、日志轮转(logrotate配置示例)、邮件告警(mailx -s "ORA-00600 Alert" admin@example.com)与安全沙箱执行(使用unshare --user --pid --fork chroot环境隔离测试)。综上,《Oracle UNIX安装管理手册》是一部融合操作系统原理、数据库内核机制、企业安全合规要求与自动化工程实践的综合性技术典籍,其内容深度远超普通安装文档,实为构建高可靠、高性能、可审计、易维护的Oracle生产环境不可或缺的知识基石。
zzhp2010
unix和linux下的oracle数据库管理
在Unix和Linux操作系统环境下对Oracle数据库进行高效、稳定、安全的管理,是企业级IT基础设施运维中的核心能力之一。本书《Unix和Linux下的Oracle数据库管理》系统性地覆盖了从基础环境准备、数据库安装配置、日常运维操作、高可用架构部署,到深度性能调优、故障诊断与灾备恢复等全生命周期管理环节,具有极强的工程实践指导价值。首先,在系统平台适配层面,需深入理解Unix(如AIX、HP-UX、Solaris)与Linux(尤其是RHEL/CentOS、Oracle Linux、SUSE)在内核机制、进程调度、内存管理、I/O子系统及安全模型上的关键差异。例如,Linux采用CFS(完全公平调度器)而AIX使用WLM(工作负载管理器),这对Oracle后台进程(如DBWn、LGWR、PMON)的资源争用行为产生直接影响;又如Linux的hugepages配置可显著降低SGA内存页表开销,而Solaris则依赖其特有的largepage支持机制。其次,在Oracle数据库部署阶段,必须严格遵循Oracle官方认证的操作系统版本与补丁集(如Oracle Database 19c仅支持RHEL 7.6+或Oracle Linux 7.6+),并完成内核参数调优(如shmmax、shmall、sem、file-max)、用户资源限制(limits.conf中设置oracle用户的nofile、nproc)、SELinux/AppArmor策略配置以及ASMLib或UDEV规则编写以保障ASM磁盘识别稳定性。第三,在数据库管理实践中,需熟练掌握基于命令行的全套工具链:包括SQL*Plus进行DDL/DML/PLSQL交互式操作;RMAN实现物理备份与恢复(含0级全备、1级增量、归档日志备份、备份校验、跨平台恢复);Data Pump(expdp/impdp)执行逻辑迁移;ADRCI分析自动诊断信息库;AWR(Automatic Workload Repository)与ASH(Active Session History)结合生成性能报告;SQL Tuning Advisor与SQL Access Advisor辅助语句优化;以及利用OEM(Oracle Enterprise Manager)或自定义Shell/Python脚本构建监控体系,实时采集DB Time、Buffer Hit Ratio、Library Cache Hit Ratio、Redo Log Switch Frequency、Wait Events Top 5等关键指标。第四,在数据库性能优化维度,需建立“自顶向下”的分析框架:先从OS层(vmstat/iostat/mpstat/sar)定位CPU、内存、磁盘I/O、网络瓶颈;再进入实例层分析SGA/PGA内存分配合理性、共享池碎片、Library Cache Pin等待、Buffer Busy Waits成因;继而深入SQL层通过执行计划(EXPLAIN PLAN)、SQL Trace(TKPROF)、10046事件跟踪识别硬解析过多、索引缺失、统计信息陈旧、绑定变量窥探异常等问题;最后落实至存储层评估ASM磁盘组冗余模式(NORMAL/EXTENDED)、条带化策略、LUN对齐、多路径配置及智能闪存缓存(Exadata Smart Flash Cache)启用效果。第五,在高可用与容灾方面,必须掌握RAC(Real Application Clusters)集群架构下OCR/Voting Disk的存储规划、GI(Grid Infrastructure)安装与启停流程、节点驱逐机制、SCAN监听器配置;同时熟练部署Data Guard(物理/逻辑备库)、GoldenGate实时同步、Flashback Database快速回滚,以及结合第三方工具(如Veritas Cluster Server、IBM PowerHA)构建跨数据中心双活方案。此外,安全合规管理亦不可忽视:需配置TDE(Transparent Data Encryption)加密敏感字段、启用Database Vault限制特权滥用、审计SYSDBA操作、集成LDAP/Kerberos实现统一身份认证,并定期执行OPATCH更新Critical Patch Update(CPU)与Security Alert(SA)补丁。最后,PDG格式作为专业电子文档载体,具备高保真排版、矢量图表清晰、目录层级完整、文本可检索等优势,特别适合承载大量命令行截图、架构拓扑图、AWR报告样例、RMAN脚本模板等技术细节,为读者提供沉浸式学习体验。综上所述,本书不仅是一本操作手册,更是融合操作系统原理、数据库内核机制、性能工程方法论与大规模生产环境实战经验的综合性知识体系,对培养复合型DBA人才、构建健壮可靠的Oracle数据库服务平台具有不可替代的战略意义。
oracle实务管理权威指南pdf
《Oracle实务管理权威指南》是一本面向中高级数据库管理员(DBA)、系统架构师、运维工程师及Oracle技术实践者的综合性实战手册,其核心价值在于将Oracle数据库庞大而复杂的官方技术体系,转化为可落地、可复用、可诊断、可优化的工程化管理方法论。该指南并非泛泛而谈的概念罗列,而是深度扎根于企业级生产环境的真实场景,覆盖从Oracle数据库全生命周期的规划、部署、日常运维、故障排查到高可用与性能极致优化的完整知识链路。首先,在**Oracle安装与基础架构搭建**层面,指南详尽剖析了不同操作系统(Linux RHEL/OEL、Windows Server、AIX、Solaris)下Oracle Database 11g/12c/19c/21c的静默安装(Silent Install)、响应文件(response file)定制、Oracle Universal Installer(OUI)原理与常见报错排错(如INS-30131、ORA-00845、共享内存配置异常等),并强调安装前的内核参数调优(shmmax、shmall、semaphores、file-max)、用户资源限制(limits.conf)、SELinux/AppArmor策略适配等关键预检项。同时,深入讲解Oracle Home与Oracle Base分离部署的最佳实践、多版本共存的ORACLE_HOME管理、以及基于OPatch的补丁生命周期管理(包括PSU、BP、RU、One-Off Patch的冲突检测与回滚机制)。在**ASM存储管理**部分,指南超越了基础的磁盘组创建与冗余模式选择(EXTERNAL/NORMAL/HIGH),系统性阐述ASM实例内部结构(ASM Instance内存组件、ASM Disk Header元数据布局、Allocation Unit与Extent映射逻辑)、ASM Filter Driver(AFD)替代ASMLIB的现代部署范式、ASM Flex Diskgroup与Extended Diskgroup在云原生环境中的弹性扩展能力,并结合真实案例解析ASM磁盘丢失后的自动恢复流程、ASM rebalance操作的IO影响评估与窗口控制(POWER_LIMIT参数调优)、以及如何通过V$ASM_*系列动态性能视图(如V$ASM_DISK_STAT、V$ASM_OPERATION)实现ASM层性能瓶颈的秒级定位。针对**Oracle RAC(Real Application Clusters)**,指南以“高可用即设计”为原则,完整覆盖CRS Stack启动依赖关系、GI(Grid Infrastructure)版本与DB版本兼容矩阵、OCR/Voting Disk的多重镜像与在线迁移策略、SCAN Listener与GNS(Grid Naming Service)的DNS集成配置、RAC节点间Cache Fusion的私网通信优化(UDP vs. RDS协议选型、网络MTU与Jumbo Frame设置)、以及最易被忽视的RAC全局等待事件(如gc current/cr block busy、enq: TX – row lock contention跨实例锁争用)的根因分析模型。特别强调RAC环境下AWR报告必须启用“RAC-AWR”模式并对比Instance-Level与Global-Level指标差异。在**RMAN备份与恢复**领域,指南构建了“分级保护+多维验证”的企业级备份体系:不仅涵盖0级/1级增量备份、归档日志备份策略、保留策略(RECOVERY WINDOW/REDUNDANCY)、加密备份(Transparent Data Encryption for Backup),更深入RMAN底层机制——如备份集(Backup Set)与映像副本(Image Copy)的本质区别、块变更跟踪(Block Change Tracking)文件的IO开销权衡、RMAN通道(Channel)并发度与磁带/磁盘设备吞吐匹配算法、以及基于CATALOG数据库的异地灾备同步方案。恢复环节则重点解析时间点恢复(PITR)、表级恢复(TSPITR)、Data Guard Switchover/Failover与RMAN结合的混合容灾演练脚本。**数据泵导出导入(Data Pump)**部分突破传统expdp/impdp命令行教学,详解METADATA_ONLY与CONTENT=DATA_ONLY的混合迁移场景、NETWORK_LINK跨库直传的防火墙与权限穿透技巧、PARFILE参数文件的高级写法(如EXCLUDE=STATISTICS、TRANSFORM=SEGMENT_ATTRIBUTES:N)、并行度(PARALLEL)与UNDO表空间压力的动态平衡、以及如何利用Data Pump与外部表(External Table)联动实现TB级历史数据归档卸载。**SQL优化与性能调优**是本书的技术制高点:从CBO(Cost-Based Optimizer)统计信息采集策略(DBMS_STATS参数组合:ESTIMATE_PERCENT、METHOD_OPT、GRANULARITY)、执行计划稳定性保障(SQL Plan Baseline、SQL Profile、SQL Patch)、到AWR/ASH/ADDM三位一体的性能分析框架——指南手把手演示如何从AWR报告中精准提取Top SQL、识别DB Time构成(DB CPU、I/O Wait、Cluster Wait)、解读Wait Event的真正含义(如db file sequential read是否真为索引扫描慢?还是单块读引发的Buffer Busy Waits连锁反应?),并结合10046 Trace Level 12与TKPROF输出,逐行解析Parse/Execute/Fetch阶段的硬解析开销、递归SQL调用栈、以及Bind Variable窥探(Bind Peeking)导致的执行计划劣化问题。最后,指南将**ASM、RAC、RMAN、Data Pump、SQL Tuning**等模块全部纳入统一的**运维自动化体系**:提供基于Shell/Python的健康检查脚本框架(检查表空间使用率、闪回区空间、归档日志生成速率、RMAN备份成功率告警)、AWR快照自动巡检与异常指标邮件推送、以及Ansible Playbook实现Oracle集群的标准化部署与补丁批量升级。所有内容均附带可直接运行的SQL脚本、RMAN命令模板、参数配置清单及典型错误代码对照表,真正实现“所学即所用、所查即所得、所配即所稳”,堪称Oracle DBA从合格走向卓越的里程碑式实战典籍。
BLOG_【故障处理】Oracle_lhr_DG环境主库丢失归档情况下数据文件的恢复.pdf
资源摘要信息: 本文档聚焦于Oracle Data Guard(DG)高可用架构下一种极为典型且极具挑战性的故障场景——主库因归档日志(Archived Redo Logs)意外丢失,导致无法通过标准RECOVER机制完成数据文件恢复,尤其在主库自身数据文件发生损坏或误删后,常规的“RESTORE + RECOVER”流程因缺少必要归档而中断。在此严苛约束下,文档系统性地提出并验证了一套融合底层二进制编辑、ASM存储逻辑重构、SCN(System Change Number)人工干预与DG角色协同控制的复合型恢复方案,其技术深度远超Oracle官方推荐的RMAN备份恢复路径,属于DBA在极端生产事故中必须掌握的“最后一道防线”级技能。核心知识点展开如下:第一,BBED(Block Browser and Editor)工具的实战化部署与安全使用是整个恢复链路的基石。文档不仅详述了在不同Linux发行版(如CentOS 7/Oracle Linux 6)上编译BBED源码的完整步骤(包括依赖库glibc-static、gcc-c++的安装,makefile路径修正,以及Oracle 12c/19c下$ORACLE_HOME/rdbms/lib/sbbd.o链接技巧),更强调其高危属性——BBED可直接修改数据文件头(File Header)、控制文件(Control File)及数据块(Data Block)的物理结构,任何错误操作均会导致数据库永久性逻辑损坏。因此,文档强制要求所有BBED操作前必须对目标文件执行全量dd镜像备份,并在测试库反复验证脚本逻辑。第二,文件头SCN篡改技术是突破“归档缺失”瓶颈的关键。当主库丢失归档时,Oracle在执行RECOVER时会校验数据文件头中的kscnwrp(即文件头记录的Checkpoint SCN)与归档日志序列号是否连续。文档揭示了通过BBED定位并修改数据文件头中kccfhswv(Soft Checkpoint SCN)和kccfhcpc(Checkpoint Count)字段,将文件头SCN人为回退至一个已知存在的、早于丢失归档起点的稳定SCN值,从而欺骗Oracle跳过缺失归档段,允许后续执行ALTER DATABASE DATAFILE … ONLINE命令强制上线数据文件。该操作需精确计算SCN差值,结合V$ARCHIVED_LOG视图中MAX(SEQUENCE#)与MIN(FIRST_TIME)交叉验证,避免引入逻辑不一致。第三,ASM命名格式转换是跨平台恢复的隐性难点。在DG环境中,主库若使用ASM存储,其数据文件路径为+DATA/orcl/datafile/users.256.123456789形式,而传统OS级恢复工具(如cp/dd)无法识别此格式。文档提供了完整的转换矩阵:解析ASM别名(Alias)获取AU(Allocation Unit)编号,通过kfed读取ASM磁盘头定位文件Extent Map,再利用asmcmd cp命令或ASMCMD下的md_backup实现ASM到FS的无损导出,确保BBED可在普通文件系统上安全操作。同时强调,修改后的文件必须通过asmcmd cp反向导入ASM,并更新控制文件中文件路径元数据。第四,DG环境下的协同恢复策略体现架构级思维。当主库数据文件损坏且归档丢失时,单纯修复主库风险极高;文档提出“借力备库”的创新路径:先在备库执行ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL,将备库切换为READ ONLY模式,利用其完整归档链对受损数据文件进行RECOVER,再通过增量备份(Incremental Backup)将修复后的数据块同步回主库。此过程需精确控制DG Broker状态、禁用自动应用(LOG_ARCHIVE_DEST_n的DELAY参数)、手动触发FAL_SERVER/FAL_CLIENT重传机制,确保SCN同步无跳跃。第五,配套运维能力不可或缺:包括使用DBMS_SPACE包或直接查询X$KTFBUE视图获取真实表空间使用率(规避DBA_TABLESPACES中BYTES为空的误导),通过V$DATAFILE_HEADER诊断文件头损坏程度,以及在RECOVER过程中启用TRACE事件(如10046/10015)捕获底层IO路径异常。所有操作均需在MOUNT状态下执行,严格遵循Oracle内存结构(SGA中CKPT进程与DBWR进程的协同机制)与事务一致性模型(ACID中Durability与Consistency的权衡)。该方案虽非Oracle官方支持,但已在金融、电信等核心系统多次成功实施,是资深Oracle DBA技术纵深的标志性体现。
AiDBA宝典
实战管理Oracle 12c数据库实例
资源摘要信息:"实战管理Oracle 12c数据库实例"是一份面向中高级DBA及数据库运维工程师的深度技术实践指南,系统覆盖Oracle Database 12c(即12.1.x及12.2.x主流版本)核心实例生命周期管理的关键知识点。该资料以“可操作、可验证、可复现”为原则,紧扣数据库启动机制这一基础而关键的运维主线,从版本识别、环境约束、参数体系、实例状态演进、内存结构配置到底层文件定位等维度展开立体化解析。首先,Oracle 12c的版本号命名体系具有严格语义:首位“12”代表主发行版,引入多租户架构(Multitenant Architecture)、In-Memory Column Store、Application Container、SQL Plan Management增强、实时统计信息收集等划时代特性;第二位“c”(cloud)并非简单代指云,而是强调其原生支持云就绪部署模型,包括资源隔离、快速克隆、统一管理容器数据库(CDB)与可插拔数据库(PDB)的能力;第三位数字表征发行修订级别(如12.1.0.2为首个长期支持版本,集成大量关键补丁);第四位标识组件级补丁集(如PSU或BP),第五位则精确指向操作系统平台适配性(如Linux x86-64平台标识为0)。通过v$version动态性能视图可完整获取Oracle核心组件版本链(Oracle RDBMS、PL/SQL、CORE、TNS、NLSRTL),而v$instance仅返回数据库实例运行时版本号,二者协同使用可精准判断补丁应用状态与兼容性风险。在初始化环境层面,Oracle 12c彻底摒弃32位架构支持,强制要求64位操作系统(RHEL6+、OL6+、SLES11 SP3+等),最低1GB物理内存仅为理论阈值,实际生产环境必须配置2GB以上RAM以保障SGA(System Global Area)中共享池(Shared Pool)、数据库缓冲区缓存(Database Buffer Cache)、大型池(Large Pool)、Java池(Java Pool)及流池(Streams Pool)的合理分配;磁盘空间方面,企业版软件安装包本身需7.5GB以上,若启用Oracle Managed Files(OMF)、Automatic Storage Management(ASM)或配置归档日志、闪回区,则需额外预留数十GB空间。数据库实例启动过程严格遵循三阶段状态机模型:NOMOUNT阶段本质是纯内存实例构建——Oracle依据$ORACLE_HOME/dbs目录下优先级规则(spfile$ORACLE_SID.ora → spfile.ora → init$ORACLE_SID.ora → init.ora)定位初始化参数文件,解析所有显式参数(如memory_target、sga_max_size、processes、db_name等),据此静态分配SGA各组件内存块并启动PMON、SMON、DBWn、LGWR、CKPT、ARCn等必需后台进程,同时初始化alert_$ORACLE_SID.log告警日志及trace文件路径,此时实例已具备完整内存结构与进程框架,但尚未关联任何物理数据库文件;MOUNT阶段在NOMOUNT基础上加载控制文件(Control File),读取其中记录的数据文件(Datafile)、重做日志(Redo Log)、表空间(Tablespace)等元数据拓扑结构,使实例获得数据库逻辑结构认知,此状态下可执行备份恢复、重命名数据文件、启用/禁用归档模式等高危操作,但用户会话无法访问数据;OPEN阶段最终校验所有数据文件头一致性、验证重做日志可用性、完成实例恢复(Instance Recovery)后,将数据库置于完全可读写状态,允许用户连接与事务处理。整个启动流程高度依赖Oracle_SID环境变量,它不仅决定实例名称,更影响参数文件搜索路径、监听器注册名、后台进程命名及日志文件前缀,是实例唯一性标识的核心锚点。理解这些机制对故障诊断(如startup卡在NOMOUNT阶段通常指向参数文件缺失或语法错误)、性能调优(SGA各组件比例失衡导致latch争用)、高可用设计(RAC环境中多个实例共享同一数据库需严格SID隔离)及云迁移(12c向19c升级时需评估PDB兼容性)均具不可替代的实践价值。
CodeGolang
Oracle数据库管理员技术指南
《Oracle数据库管理员技术指南》是一部面向企业级数据库运维实践的系统性技术手册,全面覆盖Oracle数据库从安装部署、日常运维、高可用架构设计、性能诊断优化到灾难恢复保障等全生命周期管理的关键技术领域。作为全球最成熟、应用最广泛的关系型数据库管理系统之一,Oracle数据库在金融、电信、政务、能源等对数据一致性、事务完整性与系统稳定性要求极高的核心业务场景中占据主导地位,而其复杂性也决定了DBA(Database Administrator)角色的技术门槛极高——不仅需深入理解关系型数据库理论模型,更须掌握Oracle特有的内存结构(SGA/PGA)、进程模型(PMON/SMON/DBWn/LGWR等)、数据字典体系、事务机制(ACID实现细节)、锁与并发控制策略(ITL、TX锁、TM锁)、多版本并发控制(MVCC)原理以及基于UNDO/REDO的故障恢复逻辑。本指南以实战为导向,首先详述Oracle数据库的标准化安装与初始化配置,涵盖不同操作系统平台(Linux/Unix/Windows)下的环境准备、用户权限规划、Oracle Home与Grid Infrastructure分离部署规范、静默安装与响应文件定制化技巧;其次深入ASM(Automatic Storage Management)存储管理模块,解析ASM实例与数据库实例的协同机制、磁盘组冗余策略(EXTERNAL/NORMAL/HIGH)、AU(Allocation Unit)大小调优、ASM动态再平衡原理及asmcmd命令行工具的高级用法,强调ASM并非简单替代文件系统,而是Oracle深度集成的集群化存储管理层,直接支撑RAC架构的共享存储需求。在高可用架构方面,指南对Oracle RAC(Real Application Clusters)进行全景式剖析:包括OCR(Oracle Cluster Registry)与Voting Disk的物理存储与容错机制、CRS(Cluster Ready Services)资源管理框架、SCAN(Single Client Access Name)与VIP(Virtual IP)的负载分发逻辑、全局队列服务(GES)与全局缓存服务(GCS)如何实现跨节点Buffer Cache一致性、AWR报告中gc current/cr block receive等待事件的根因分析与调优路径。同时,Oracle监听器(Listener)作为客户端连接数据库的第一道网关,其配置文件listener.ora的动态注册与静态注册差异、端口冲突排查、TNSPING连通性验证、监听日志分析(尤其是TNS-12535/TNS-12545类错误)、以及结合防火墙策略的生产级安全加固方案均被纳入重点讲解范畴。数据库运维核心能力集中体现在SQL优化与性能调优两大维度:指南不仅介绍执行计划(Explain Plan/Autotrace/DBMS_XPLAN)的逐行解读方法,更强调基于AWR/ASH/ADDM的性能问题闭环诊断流程——如何识别Top SQL、定位硬解析过多、绑定变量窥探(Bind Variable Peeking)引发的执行计划劣化、索引失效场景(函数索引未使用、隐式类型转换)、统计信息陈旧导致的CBO误判,以及SQL Profile/SQL Plan Baseline/SQL Patch等Oracle原生SQL治理工具链的落地实践。RMAN(Recovery Manager)备份恢复章节则超越基础命令罗列,深入阐述0级/1级增量备份策略设计、归档日志管理生命周期、备份集与镜像复制的适用场景对比、基于SCN/时间点/日志序列号的精确恢复技术、Block Change Tracking加速增量备份原理、以及利用RMAN DUPLICATE构建备库或测试库的完整操作流。数据泵(Data Pump)部分则聚焦EXPDP/IMPDP的并行度控制、NETWORK_LINK远程导出、REMAP_SCHEMA/REMAP_TABLESPACE灵活迁移、METADATA_ONLY与CONTENT=DATA_ONLY的混合导入选项,以及处理ORA-39126/ORA-39083等典型错误的排错矩阵。此外,指南还涵盖数据库安全加固(TDE透明数据加密、细粒度审计FGA、角色权限最小化原则)、补丁管理(OPatch工具使用、RU/RUR补丁差异、滚动补丁在RAC环境的应用限制)、闪回技术家族(Flashback Database/Query/Table/Transaction)的底层UNDO机制与空间管理、以及19c新特性如自动索引(Auto Indexing)、实时统计信息(Real-Time Statistics)、内存数据库(In-Memory Column Store)的启用条件与性能收益评估。整部指南以大量真实生产案例为依托,每项技术均配套可复现的SQL脚本、参数修改建议、监控视图查询语句(V$SESSION/V$SQL/V$EVENT_NAME/V$ASM_DISKGROUP等),并强调变更前风险评估、变更窗口控制、回滚预案制定等SOP流程,真正体现一名资深Oracle DBA所应具备的“技术深度+架构视野+运维敬畏心”的三维能力模型。其价值不仅在于知识传递,更在于塑造一种以数据可靠性为底线、以系统可观测性为前提、以自动化与智能化为演进方向的现代数据库工程文化。
王晴