Linux下Oracle 19c + ASM生产环境数据库部署实战指南
生产环境的数据库部署,历来是运维和 DBA 团队最谨慎的活儿之一。我自己在多个项目中先后把不同版本的 Oracle 数据库搬到 Linux 平台上,最近两三年主力使用的组合就是 Linux + Oracle 19c + ASM。这篇内容来自我实际整理的部署实施记录,也算是一个偏实战的系列笔记。不打算复读官方安装文档,而是把选型逻辑、环境准备、GI 安装、ASM 磁盘组规划、建库过程和项目上线中的真实踩坑一次性理清楚。
先给结论:生产环境选 Oracle 19c,核心原因是它的支持周期长、稳定性验证充分;再叠加 ASM 作为统一的存储管理组件,把多块磁盘组成磁盘组自动管理,省去后续维护数据文件路径的麻烦。无论你是在筹备新项目落地,还是想把旧库迁移到新 Linux 服务器,这套流程都可以直接拿来做参照。适合读者主要是系统管理员、数据库运维和负责基础设施交付的工程师,涵盖从平台搭建到项目切换上线的完整链路。
1. 生产环境方案选型:为什么是 Linux + Oracle 19c + ASM
1.1 Oracle 19c 的版本定位与选型逻辑
Oracle 19c 本质上就是 12.2.0.3,属于 12c 家族的收官版本。Oracle 产品线里有 18c、19c、20c、21c 和后续的 23ai 这些版本,但生产环境不能只看新版本功能多不多,更要看支持的持久性和社区踩坑的充分度。从这些年的运维反馈来看,19c 是各方验证最全面、坑相对最少的一个版本。
另外,19c 默认推荐使用容器数据库架构,也就是 CDB 加 PDB 的模式。一个实例内可以挂载多个可插拔数据库,业务部门多、环境数量多的场景下特别合适,部署一套数据库就能承载多个独立业务,资源隔离度比单实例多 Schema 要好,管理成本比部署多个实例要低。非容器数据库架构在 19c 里依然保留,但 Oracle 官方已经明确不推荐在新项目中使用,这个趋势做选型时要心里有数。
安装配置前还有一件事要想清楚:数据库用单机还是 RAC。如果业务还处在发展期,预算有限,单机 ASM 已经能满足绝大多数场景,后续如果要升级,RAC 的扩展路径也顺畅。数据安全主要靠备份和 Data Guard,而不是靠 RAC。关于这一点我的建议很直接:不要把高可用混同于负载均衡,选 RAC 前先确认业务的负载增长曲线和预算投入,否则单机加 DG 明显更划算。
1.2 ASM 在数据库存储环节的真实作用
ASM 全称是 Automatic Storage Management,Oracle 自家的卷管理器和文件系统。传统部署方式里,数据库文件要么放在普通文件系统,要么用 LVM 逻辑卷,管理员要手动规划目录、做软链接,还要担心磁盘空间分配不合理带来的 IO 不均。ASM 解决了这个问题:把多块物理盘统一加入一个磁盘组,数据文件自动均匀分布在磁盘组内,从数据库侧看,文件路径变成了 +DATA 这种 ASM 路径,底层落到哪块盘、怎么分散 IO,都由 ASM 自动完成。
用生活化的比喻,普通文件系统像一个手动仓库,得自己决定每箱货放哪个货架、担心某个货架空间不够;ASM 则是一个智能仓储系统,货物进来它会自动选择空闲位置并尽量让各个货架负载均衡。数据库文件的 IO 分布对性能影响极大,ASM 在这方面省掉了大量手工调优工作。
在单机生产环境里,ASM 的另一个好处是磁盘热扩展方便。数据库运行一段时间后磁盘空间不够,普通文件系统要么挂新盘、扩逻辑卷,再改数据文件路径,麻烦且容易出错;ASM 只要把新盘加入磁盘组,空间自动纳入可分配范围,不需要中断数据库。项目实战中这个特性救过我好几次,扩容时间从小时级压缩到分钟级。
1.3 生产环境架构规划的先后顺序
很多新手一上来就拷安装包、解压软件、跑安装向导,结果装到一半发现磁盘组没规划、目录空间不够、主机名解析有问题,又得重来。我习惯的步骤是先做架构规划,再动任何安装动作。
第一步是定架构形态,明确单机还是 RAC、是否搭配 Data Guard 备用库、ASM 磁盘组怎么拆。第二步是定存储方案,本地盘、外置存储还是云盘,是否用多路径软件。第三步是定目录规范,比如 /u01 分区大小、GI 软件目录、数据库软件目录各自放哪里,这些先写进设计文档。第四步才进入实际操作。
磁盘组规划上,我的经验是至少拆成两个组:DATA 放数据文件、临时文件、控制文件,FRA 放归档日志、闪回日志和 RMAN 备份集。有些人图省事把所有东西放一个组,一旦归档写得猛把空间填满,数据库直接挂起,这种事故我在不少客户现场见过。生产环境必须把数据路径和备份/归档路径隔离,这是底线原则。
2. 环境准备与底层配置:把地基打牢
2.1 操作系统层面的核心参数调整
Linux 环境安装 Oracle 19c 前,最容易被忽略的是内核参数调整。Oracle 安装在系统层面会做很多预检查,参数不合适直接报错。我在生产环境常用的一组 sysctl.conf 配置如下,注意具体数值要结合物理内存大小调整。
信号量参数控制并发进程数量,共享内存参数直接关系到 SGA 是不是能分配成功。vm.swappiness 调低是为了避免生产数据库服务器发生过早使用 swap 的情况,这一点在数据库负载高时特别重要。改完 sysctl.conf 后执行 sysctl -p 让参数即时生效,再用 sysctl -a 抽查几个关键项确认没问题。
同属系统层的还有 limits.conf,这组参数控制的是 oracle 和 grid 用户能打开的文件数、进程数和可锁定内存大小。我的实践配置如下:
memlock 是特别容易忽略的一项,数据库启用大页或者 ASMM 自动内存管理时,如果 memlock 不够,启动阶段可能报内存分配失败的错。生产环境建议把 memlock 设置成物理内存的 60% 以上,具体数值以部署前实测为准。配套的还有 pam_limits.so 是否被加载,有些精简安装的系统默认没启用这个模块,导致 limits.conf 不生效,排查起来很隐蔽。
2.2 用户、组、目录结构与安装介质准备
数据库软件在生产环境建议用独立用户运行,不要直接用 root 干活。常规拆分是创建 grid 用户负责 Grid Infrastructure 和 ASM,oracle 用户负责数据库软件和实例。相关用户组要一起建好,主要是 oinstall、dba、asmadmin、asmdba、asmoper 这五个。
用户建好后规划软件目录,我通常单独划一个 /u01 分区,空间大小按 200GB 起步,然后把软件全部放在 /u01/app 下。grid 用户的 GI 软件放 /u01/app/grid_home,oracle 用户的数据库软件放 /u01/app/oracle_home,Inventroy 目录用 /u01/app/oraInventory。目录创建好之后要 chown 到对应用户和组,权限别随意放大,生产环境尤其注意不要把所有目录都 chmod 777。
安装介质建议提前准备好一份放在本地镜像仓库,避免安装时临时找包。Oracle 19c 的 GI 软件包和 DB 软件包都从官方渠道下载,文件较大,下载后做校验,避免压缩包不完整导致解压或安装时出现奇怪的报错。解压时先解压到一个临时目录,再移动到最终安装路径,注意解压后文件属主要改成对应用户,否则安装向导写文件会权限报错。
2.3 国产化环境与部署形态补充
最近两年我在国产化交付项目里也做了不少 Oracle 19c 单机环境的搭建,麒麟 v10 这类基于 openEuler/CentOS 生态的操作系统部署 19c 的需求明显上升。这里补充几个和生产环境强相关的注意点。
依赖包补齐是最常见的问题。国产化环境通常没有外网,直接用系统自带 yum 源很可能缺 libaio、elfutils-libelf-devel、compat-libcap1 这些包。我一般会提前准备一份依赖 RPM 包列表,放到内网软件仓库,安装前统一批量安装。另一个需要注意的是 oracleasm 内核模块,在麒麟或 openEuler 这类系统上不一定有对应内核版本的 ASMLIB,与其折腾内核模块,不如直接用 udev 固定磁盘别名,更稳也更通用。
图形安装界面在国产化服务器上不一定有桌面环境,生产环境推荐直接走静默安装,把响应文件提前编辑好,一条命令跑到底。响应文件里的参数在图形界面能选的项,它全都能配置,只是对操作者的细致程度要求更高。后面章节我会结合具体命令说明。
3. Grid Infrastructure 安装与 ASM 实战
3.1 GI 安装的前置检查和安装流程
GI 全称 Grid Infrastructure,是 ASM 实例、监听器和集群文件等组件的基础服务。在单机环境里,它仍然会启动 OHASD、CRSD 等相关进程,负责 ASM 的启动和资源管理。
进入正式安装前,先跑一遍安装目录下的预检查脚本。这一步在生产环境不能省,它能提前暴露主机名解析问题、内存交换分区不足、依赖包缺失等风险。比如 19c 要求物理内存和 Swap 满足一定比例,一个常见阈值是物理内存大于 8GB 时 swap 建议至少 8GB,不够的话预检查会直接标红。
图形界面弹出来后,我觉得几个关键选项需要写清楚。Configure Oracle Grid Infrastructure for a Standalone Server 是单机模式,RAC 场景才选 Oracle Real Application Clusters。配置 ASM 时选择磁盘组名称,设置 SYSASM 密码。接下来会扫描候选磁盘,要求磁盘已经提前绑定并授予 grid 用户组权限。后续步骤会提示执行 root 脚本,这一步必须在终端里以 root 用户执行,不能跳过。
root.sh 执行过程会启动一系列资源,出现卡顿是正常的,不要随便中断。执行完成后可以登回 grid 用户用命令检查资源状态:
单机 GI 同样会生成 OCR 相关元数据和资源注册信息,只不过不像 RAC 那样需要独立的表决盘集群,安装向导一般会把相关元数据引导到一个 ASM 磁盘组中。如果不确定,默认选择安装向导提示的位置即可。
3.2 用 udev 绑盘与 ASM 磁盘组创建
ASM 能识别的磁盘必须具备稳定可靠的设备名。直接使用 /dev/sdb 这种名称风险很大,重启后盘符可能漂移,ASM 会找不到磁盘组导致数据库起不来。生产环境我强烈建议用 udev 规则固定磁盘别名。
以 4 块 SSD 为例,先通过 lsblk 查看磁盘信息,然后用磁盘的 ID 或者 size + 序列号生成 udev 规则。下面是一个典型的 udev 规则写法:
这里 ATTR{size} 的单位是 512 字节块,要用 fdisk -l 查到的实际块数填写。规则写好后执行 udevadm control --reload 和 udevadm trigger 让规则生效,再检查 /dev 下对应的设备文件属主是否被正确修改。这一步做完,ASM 磁盘组创建前的重要条件就齐了。
创建 ASM 磁盘组有两个常用入口。一个是图形化的 asmca,适合交互式操作;另一个是 SQL*Plus 里以 sysasm 身份执行命令。生产环境我更习惯用命令方式,方便记录到操作文档里。
常见冗余级别有三种:EXTERNAL 表示没有冗余,完全依赖底层存储本身;NORMAL 代表两路镜像,至少需要两块盘;HIGH 是三路镜像。生产环境如果底层存储已经做了 RAID,通常选 EXTERNAL 降低成本;如果底层是普通盘没有冗余,选 NORMAL。真实项目里很多事故都是冗余级别选错导致空间开销超出预期,这个决策要提前拍板。
3.3 ASM 日常运维与常用命令
安装部署完成后,日常维护 ASM 最常碰到的就是进入命令环境的姿势。很多新手分不清 asmcmd 和 sqlplus 的差异,这里列一下两种入口。
asmcmd 的 lsdg 能看磁盘组总空间、可用空间和冗余状态,lsdsk 能看底层磁盘的归属情况。SQL*Plus 里则更适合执行创建磁盘组、查看 ASM 实例参数等管理操作。日常巡检时,我会同时看 v$asm_diskgroup 和 v$asm_disk 两张视图,确认磁盘组的 USABLE_FILE_MB 是否充足。
在线扩容磁盘组的命令在生产中很常用,比如给 DATA 组加入一块新盘:
执行后 ASM 会自动做 rebalance,把已用数据分布到新盘上。rebalance 是异步的,可以通过 v$asm_operation 查看进度。这个特性在实际项目中相当实用,扩容时看到新盘空间被识别,过一段时间再查,空间已经释放到可用值。停车维护的时间完全省掉了。
4. Oracle 19c 数据库软件安装与建库
4.1 数据库软件安装与 root.sh 执行
GI 安装成功后,接下来装 Oracle 数据库软件。以 oracle 用户解压 DB 安装包到 /u01/app/oracle_home,然后运行 runInstaller。
生产环境我一般选择“仅安装数据库软件”,不勾选“安装并创建数据库”,原因很简单:软件安装是一个相对独立的过程,建库则涉及表空间、字符集、归档策略等一堆业务相关决策,分开做更清晰,排除故障时也更容易定位。
安装向导的步骤不多,重点检查 Base 目录设置、软件语言是否包含简体中文、数据库版本是否为 Enterprise Edition。安装过程同样会在接近结束时让你以 root 执行 root.sh,这个脚本会给集群资源注册数据库软件信息。如果执行 root.sh 中途报错,不要重复执行,先去看日志确认错误原因,很多资源竞争类问题强行重跑会留下脏数据。
软件装完可以用 sqlplus -v 验证版本,能看到 19c 的版本号说明安装成功。生产环境多版本并存的机器上,还有一步很容易漏掉:确认 PATH 和 ORACLE_HOME 的关联正确,避免写自动化脚本时调用到错误版本。
4.2 使用 DBCA 创建容器数据库
数据库软件就绪后,我习惯用 DBCA 的静默模式建库。命令行的好处是可以把所有参数写进文件,可重复执行,也方便记录到变更单里。下面是一个生产环境用的建库命令示例:
这里把数据库建在 +DATA 磁盘组,使用 FRA 作为快速恢复区,字符集选择 AL32UTF8。生产库的字符集必须在建库前想清楚,一旦有业务数据写入,字符集再迁移会非常痛苦。PDB 的密码强度也值得注意,生产环境不要偷懒用太简单的口令,否则后续安全基线检查很难过。
建库完成后用 sqlplus 登录验证:sqlplus / as sysdba,然后检查实例状态、PDB 是否自动启动。默认建好的 PDB 需要确认容器实例是否设置 PDB 随 CDB 自动打开,如果不设置,主机重启后 PDB 是关闭状态,应用连接就会报错。生产库我一般都会执行一条命令:
4.3 生产环境初始化参数与建库后立即要做的事
生产库刚建成时只是“裸库”状态,离真正可用还有一段距离。我每次拿到新建的 19c 数据库,第一件事就是做基础参数与安全加固。
归档模式是生产库的必选项。没有归档就没有 point-in-time 恢复,数据库一旦在某个时间点损坏,只能恢复到全备时间,业务数据损失不可接受。
开启归档时同步设置 FRA 的归档目标:DB_RECOVERY_FILE_DEST 指向 +FRA。闪回功能建议一并开启,闪回保留时间按业务恢复目标设置,一般填 1440 分钟即一天。闪回并不是替代备份,但它能快速处理逻辑误操作,业务方误删数据时的恢复速度远快于从备份集 restore。
参数方面,19c 默认启用了自动内存管理,但如果物理内存有限,我更倾向于手动分配 SGA 和 PGA。比如 64GB 内存的服务器,SGA 给 24GB、PGA 给 8GB,剩下的留给操作系统和文件缓存。具体数值要看业务并发和数据量,没有统一答案,关键是别让数据库把物理内存吃得太满,否则主机层面会出现 swap 波动。
安全加固条目包括:锁定不用的内置账号、修改默认用户口令、开启审计但限制审计保留时间、关闭没用的数据库组件。内置样本用户如果不需要,直接 drop 掉,避免成为安全隐患。
5. 项目实战:从部署到上线的一整套动作
5.1 一套典型生产业务的部署日志
拿一个真实项目举例,业务方是一家制造企业的财务系统迁移,原库跑在老旧单机上,数据量约 800GB,并发峰值 300 左右。新环境硬件配置是双路处理器、128GB 内存、4 块 960GB SSD,操作系统使用 Linux。磁盘组规划为 DATA 组约 1.8TB,FRA 组约 900GB。
第一天做系统初始化和环境准备,包括内核参数、用户组、目录规划和 udev 绑盘,半天时间富余。第二天安装 GI 并创建 ASM 磁盘组。第三天安装数据库软件。第四天建库并着手导入数据。因为源端是 11g 环境,跨版本逻辑导出成了首选方案,expdp 全量导出加上 VERSION 参数控制兼容性。导入过程主要耗时在索引创建和统计信息收集,利用并行 hint 把时间控制在业务可接受的窗口内。
第五天进入上线切换。切换方案是:白天完成最后一次增量导出,晚上停业务,导入增量数据,核对行数和关键数据后,修改应用连接串指向新库,正式对外提供服务。整个切换过程预留了两小时的窗口,实际上 40 分钟完成了写操作,剩下的时间用来做功能和并发回归验证。
这个过程中回滚预案同样重要。我把旧环境保留了一周,没有立刻回收资源,万一新库出现重大性能问题或数据不一致,能够立即切回。事实证明这个做法虽然保守但很稳,尤其对业务连续性要求高的企业系统来说,回滚能力本身就是一种高可用保障。
5.2 备份与容灾策略落地
新库上线当天必须把备份挂上,不能等到出问题再补。我用的是一套基于 RMAN 的定时备份方案,核心思路是全备加增量归档备份结合。周日凌晨做 0 级全备,周一到周六每天做 1 级增量备份,归档日志每两小时备份一次,备份直接写入 FRA 磁盘组或外部 NAS 路径。
脚本里的 DELETE OBSOLETE 用于清理超出保留策略的旧备份,避免备份把磁盘撑满。生产环境里备份失败最常见的原因就是目标空间不足,所以每次备份完成后一定要检查备份日志,并且做一个恢复演练。不要等到数据库真坏了才发现某个月的备份根本恢复不了,这样的教训太贵了。
容灾层面,如果预算允许,给生产库配一个 Data Guard 物理备库是不错的选择。主营业务对 RPO 要求高的话,物理备库能做到秒级数据同步,主库故障切换速度相对可控。如果只是核心报表分析类场景,可以每周用 RMAN 做一致性备份恢复到测试环境,也能达到业务连续性要求。关键是容灾方案要和业务方明确恢复时间目标和数据丢失容忍度,这两个指标直接决定技术选型。
5.3 性能监控与隐患排查
数据库上线只是开始,上线后的第一周是最容易暴露性能问题的阶段。我通常在数据库运行平稳后开启 AWR 自动快照,每天保留快照,并每周生成一份 AWR 报告和一份 ADDM 分析报告。
生成 AWR 报告的命令很直接:
报告会给出负载概况、Top 等待事件、SQL 语句排名、IO 统计等关键指标。生产环境我最关心的几个点集中在:数据库时间分布是否集中在 DB CPU 和用户 IO;Top SQL 的物理读和逻辑读是否失衡;日志文件的写入延迟是否稳定。如果发现某类 SQL 的 CPU 消耗异常,基本能推断出执行计划问题或索引缺失,再配合执行计划做针对性优化。
19c 默认开启了自动维护任务,包括统计信息收集、自动 SQL 调优、空间顾问等。默认配置在大多数环境够用,但要留意统计信息收集窗口是否落在业务高峰段。如果业务是全天高并发,建议把维护窗口挪到凌晨低频段,并单独评估统计信息收集对生产的影响。
巡检脚本也是排查隐患的好帮手。我的巡检清单包括:数据库实例状态、监听状态、ASM 磁盘组空间、归档日志空间使用、SYSAUX 表空间占用、最近的告警日志错误、备份结果。每周巡检一次,把异常项记入运维台账,连续观察趋势比只看单日值更能发现问题。
6. 常见问题与排查技巧实录
6.1 安装部署阶段的高频报错
安装阶段是最容易让人心态崩溃的环节,这里整理一张生产中高频报错速查表,都是我在项目里实际遇到并解决过的。
| 报错信息 | 原因分析 | 解决办法 |
|---|---|---|
| PRVF-0002 : could not retrieve local node name | 主机名解析异常,/etc/hosts 未配置 FQDN | 检查 hostname 与 /etc/hosts 对应关系,补全主机名解析 |
| INS-32013 : Insufficient space | 安装目录空间不足 | 提前规划 /u01 分区大小,预留 200GB 以上,检查 tmp 目录 |
| PRCD-1035 : Failed to execute root script | root.sh 执行前资源未完全就绪 | 查看 root.sh 日志,确认资源服务状态,通常重跑 root.sh 前先清理残留资源 |
| CRS-5017 : The resource action failed | ASM 实例启动异常 | 查 ASM 告警日志,确认磁盘组权限和磁盘设备是否被正确识别 |
| ORA-15032 / ORA-15017 | ASM 磁盘挂载失败 | 检查磁盘组状态、磁盘设备是否存在、udev 规则是否满足要求 |
这些报错对老手来说可能一眼看穿,但对第一次部署 19c 的人来说,最忌讳的是不看日志瞎猜。Oracle 的日志路径非常有规律:GI 日志在 $GRID_HOME/log,数据库告警日志在 $ORACLE_BASE/diag/rdbms。报错出现后先打开对应日志文件,搜 ORA- 或者 CRS- 关键字,大多数原因都能直接从日志里读出来。
另外还遇到过 /dev/oracleasm/disks 目录在重启后消失的情况,根因是 ASMLIB 未随系统启动加载或磁盘绑定规则没有生效。解决办法很直接:改成 udev 静态绑定,不依赖 ASMLIB 的自动加载机制,重启后设备名依旧稳定。
6.2 运维阶段容易踩的坑
运维阶段比安装阶段更考验人的是“表面正常但隐患很深”的问题。这里专门列两个生产中反复碰到的坑。
第一个是 SYSAUX 表空间膨胀。这个坑几乎每个 19c 环境都会遇到,网上搜索量也常年很高。SYSAUX 里主要塞了 AWR 历史快照、优化器统计信息历史、审计记录、自动维护任务的日志、SMO 管理信息等。如果放任不管,几个月后 SYSAUX 可能涨到几十 GB,而且单纯用表空间扩展压制根本不是办法。
排查思路是执行一条查询:
看到哪个组件占用最高就针对性清理。AWR 快照保留期太长的,用 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS 缩短到 7-10 天;统计信息历史太长的,用 DBMS_STATS.PURGE_STATS 清理 15 天前的数据。生产环境建议把这些清理动作写进月度巡检,防止 SYSAUX 无声无息地变大。
第二个坑是主机重启后 ASM 实例自动启动但磁盘组挂载延迟。如果是 udev 绑定磁盘且开机服务依赖顺序正常,这个问题基本不会发生。但在 kvm 虚拟机场景里,有时候磁盘设备和 udev 规则的加载顺序不稳定,导致 ASM 启动时找不到设备,数据库起不来。解决方案是在 /etc/fstab 或 systemd 里增加延迟启动依赖,或者把磁盘绑定写成带重试机制的服务,等设备出现后再自动挂载磁盘组。
6.3 两个必须搞清楚的概念:跨版本恢复与 CDB/PDB
这个问题被问过太多次了:Oracle 19c 的备份文件能不能在 Oracle 11g 上恢复出来?答案是明确的,不能。RMAN 的备份集严格遵循版本兼容规则:低版本备份可以恢复到高版本实例,但高版本生成的备份集无法恢复到低版本。原因是数据文件的物理块格式、控制文件信息、恢复元数据在不同版本间存在差异,低版本软件不理解高版本生成的数据。
可行的迁移路径只有逻辑导出。用 expdp 从 19c 导出,导入 11g 时附加 VERSION 参数加以限制:
但即便加了 VERSION 参数,如果库里的对象用了 19c 独有特性(比如某个高级压缩参数、新版本的数据类型),到 11g 导入阶段仍会失败。所以跨低版本迁移前,一定要先跑一遍完整的对象兼容性评估,不能在导出完成那一步就认为大功告成。
CDB/PDB 架构也需要澄清一个常见误解:PDB 不是传统意义上的独立数据库,它需要 CDB 根容器和底层实例做支撑。备份恢复时,19c 支持在 CDB 级别做全量备份,也支持针对单个 PDB 做备份恢复。这个特性让多业务整合场景的恢复显得非常灵活。如果计划做 PDB 级别的移植,还有另一个思路:利用 19c 的 PDB 拔出插入功能,把一个 PDB 从源 CDB 拔出,再插入目标 CDB,这在同版本环境里比传统迁移更高效。
我在实际生产环境中的体会是,数据库搭建这件事,难点经常不在那几步标准的安装动作,而在于装好之后很长一段时间里,你不知道哪些隐患会在哪天爆发。磁盘绑定稳不稳定、归档空间够不够、SYSAUX 会不会悄悄膨胀、备份恢复路径通不通,这些都需要在搭建期就养成规划和巡检的习惯。建议第一次做生产部署的工程师,把每一步操作都记录成标准文档,配上输出结果截图和参数解释,同时把备份恢复演练当作上线前的固定步骤,确保关键节点全部走通过。这套流程熟练之后,再遇到类似的数据库环境部署,基本就是一晚上加一上午的事。
相关推荐
基于Python+Open CV的手势识别算法设计
伴随着人工智能时代的到来,人机交互的领域也逐渐成为研究的一大方向;其中,手势识别是人机交互领域的一项关键技术,自此手势识别也迎来了一波高潮,近几年无论是在消费领域、电子领域、数码领域、家电领域甚至汽车领域上,都能或多或少的见到手势识别的身影。 手势识别在设计智能高效的人机界面方面具有至关重要的作用, 目前手势识别已应用到手语识别、智能监控、到虚拟现实等各个领域,手势识别的原理都是利用各种传感器(例如红外、摄像头等)对手部的形态进行捕捉并进行建模,形成一个模型信息的序列帧,而后将这些信息序列转换为机器能够识别的相对应指令(例如打开、切换菜单、移动等)来完成控制。 采用Python的集成开发环境Pycharm进行本次课程设计,在Pycharm中进行需要库(模块)的下载,调取电脑摄像头,按帧读取摄像头采集到的头像,形态学处理,图像旋转(由于摄像头采集到的图像是镜像,需要用cv2.flip将摄像头采集到的图像进行处理),选取图片中固定位置作为手势输入,用红线画出手势识别框,基于hsv的肤色检测,进行高斯滤波,找出轮廓,求出图像中手势的凹凸点,手指间角度求取。
ROS-CV-ImageConverter:将ROS图像转换为OpenCV(cv :: Mat)类型的图像
ROS-CV图像转换器 依存关系 cv_bridge(ROS软件包)
计算机视觉图像处理-CV2与图像插值算法
用最近邻插值与双线性插值原理完成图像缩放 最近邻插值,是指将目标图像中的点,对应到源图像中后,找到最相邻的整数点,作为插值后的输。缺点:使用最近邻插值算法处理图像放大时,在图象中可能出现明显的块状效应 双线性插值,在两个方向上做三次线性插值。使用双线性插值算法处理图像放大时,在图象中可能出现马赛克 代码 import cv2 img = cv2.imread(’./xiabang.jpg’, cv2.IMREAD_UNCHANGED) #缩放比例 scale_percent = 0.3 width = int(img.shape[1] * scale_percent) height = int
基于水平集CV模型的图像分割(Matlab代码)
基于水平集CV模型的图像分割(Matlab代码),全套代码
导向滤波(guide_filter)的python实现
导向滤波(guide_filter)的python实现,可以结合暗通道;理论实现比较好的图像去噪效果。

