ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Oracle云基础架构平台解决方案:从ECS到生产级数据库底座实战

Oracle云基础架构平台解决方案:从ECS到生产级数据库底座实战 简介这份《Oracle云基础架构平台解决方案》PDF面向售前技术人员、培训人员、合作伙伴及云计算初学者系统梳理了Oracle云平台的整体架构与建设思路帮助读者理解企业私有云、公有云及混合云环境的规划与落地方法。文档围绕计算、存储、网络、云安全、运营子系统、应用云子系统、软硬件配置清单、API集成、合作伙伴关系及售后服务支持等模块展开并附有版本修订记录与阅读对象说明便于按章节查阅。资源包内仅含1个PDF文件大小约3.72MB内容为完整方案文档适合作为架构设计与技术选型的参考资料。目前已有99人学习下载读者可从中获取云平台分层架构、子系统职责划分及部署配置要点快速建立对Oracle云基础架构的整体认知。1. Oracle 云基础架构平台解决方案从一台 ECS 到能扛住生产的数据库底座很多团队第一次把 Oracle 数据库往云上搬脑子里想的是「装个库而已」结果真上手才发现云基础架构平台解决方案要解决的根本不是安装问题而是网络、存储、高可用、备份、监控这一整套底座怎么搭。Oracle 云基础架构Oracle Cloud InfrastructureOCI这套东西本质上是把计算、块存储、虚拟云网络、负载均衡、自治数据库这些能力拼成一个能跑 Oracle 数据库和 Oracle EBS 这类重载业务的平台。它适合谁适合手里有 Oracle 数据库、Oracle EBS、Oracle JDK 相关业务又不想自己维护机房的中小团队和运维工程师。这篇不聊虚的就按我实际落地的顺序把选型、组网、建库、避坑、验证一条线讲透新手能照着敲熟手能对着参数抠边界。2. 先想清楚Oracle 云基础架构平台到底由哪几块拼起来2.1 计算、存储、网络三件套的选型逻辑云基础架构平台解决方案落到 OCI 上核心就是三样东西计算实例Compute、块存储Block Volume、虚拟云网络VCN。计算实例决定你数据库跑多快块存储决定你的 IOPS 和吞吐上限VCN 决定你的网络隔离和访问路径。很多人一上来就挑最贵的实例其实顺序反了——先看你的数据库是 OLTP 还是 OLAP再看存储能不能扛住随机读写最后才是 CPU 和内存。我一般这么定OLTP 业务选 E 系列E4/E5弹性实例内存和 CPU 比例可调适合 Oracle 数据库这种吃内存又吃并发的场景OLAP 或者跑批选标准实例配高吞吐块存储。块存储这块OCI 分 Balanced、High Performance、Ultra High Performance 三档性能差距在 IOPS 和吞吐上非常明显。Oracle 数据库的数据文件、重做日志、归档日志最好分盘放重做日志对延迟最敏感建议单独挂 High Performance 或 Ultra High Performance 盘。网络这块VCN 里至少划三个子网公网子网放跳板机私网子网放数据库再留一个子网给备份或者 Data Guard。安全列表Security List和网络安全组NSG要配合用NSG 更细能按实例绑定生产环境我基本只用 NSG安全列表只留最外层兜底。2.2 用 Terraform 把 VCN 和子网先搭出来手工在控制台点不是不行但云基础架构平台解决方案要可复现就得用基础设施即代码。下面这段 Terraform 是我常用的最小骨架建一个 VCN、两个子网、一个互联网网关和一个 NAT 网关。# 定义 VCNCIDR 按自己规划改别和本地机房冲突 resource oci_core_vcn main { cidr_block 10.0.0.0/16 compartment_id var.compartment_id display_name prod-vcn dns_label prodvcn } # 公网子网放跳板机和负载均衡 resource oci_core_subnet public { cidr_block 10.0.1.0/24 compartment_id var.compartment_id vcn_id oci_core_vcn.main.id display_name public-subnet dns_label public } # 私网子网放 Oracle 数据库实例 resource oci_core_subnet private { cidr_block 10.0.2.0/24 compartment_id var.compartment_id vcn_id oci_core_vcn.main.id display_name private-subnet dns_label private } # 互联网网关给公网子网出网用 resource oci_core_internet_gateway igw { compartment_id var.compartment_id vcn_id oci_core_vcn.main.id display_name prod-igw } # NAT 网关私网子网里的数据库要打补丁、拉包时走它 resource oci_core_nat_gateway nat { compartment_id var.compartment_id vcn_id oci_core_vcn.main.id display_name prod-nat }逻辑说明VCN 是整个网络的容器CIDR 一旦定了后面改很麻烦规划时一定要避开本地机房和已有专线的网段。公网子网和私网子网分开是为了让数据库实例没有公网 IP只能通过跳板机或者堡垒机访问。NAT 网关是私网子网出网的唯一通道打补丁、装 Oracle 客户端都靠它。参数说明cidr_block按你实际网段改compartment_id是 OCI 里的资源隔离单位相当于一个逻辑文件夹生产环境建议单独建一个 compartment。dns_label会影响实例的域名解析建完不好改起名时想清楚。2.3 块存储怎么挂、怎么调性能实例建好后块存储要单独挂。OCI 的块存储支持在线调性能档位但调完有短暂抖动生产环境尽量在业务低峰做。挂盘命令在 Linux 下就是标准的 iSCSI 流程OCI 控制台会给你一串 attach 命令直接贴到实例上执行。# 查看新挂上来的盘通常是 /dev/sdb 或 /dev/oracleoci/oraclevdb lsblk # 分区并格式化注意别把系统盘格了 sudo parted /dev/sdb mklabel gpt sudo parted /dev/sdb mkpart primary xfs 0% 100% sudo mkfs.xfs /dev/sdb1 # 挂到 Oracle 数据目录生产环境建议单独挂 /u01 sudo mkdir -p /u01 sudo mount /dev/sdb1 /u01 # 写进 fstab用 UUID 更稳别用设备名 sudo blkid /dev/sdb1 # 把 UUID 填进 /etc/fstab加 noatime 减少元数据写入逻辑说明lsblk先确认盘符别想当然。分区用 GPTXFS 是 Oracle 数据库在 Linux 上比较稳的文件系统。挂载点按 Oracle 的 OFA 规范来/u01放软件和数据/u02放重做日志/u03放归档。noatime能减少不必要的元数据写入对数据库盘有实际收益。参数说明块存储性能档位在控制台或 Terraform 里调Balanced 默认 60 IOPS/GBHigh Performance 是 75 IOPS/GBUltra High Performance 能到 225 IOPS/GB。重做日志盘建议至少 High Performance数据盘看业务并发。别把所有盘都堆在同一个块存储上IOPS 是共享的。3. 在 OCI 上把 Oracle 数据库跑起来安装、建库、连上去3.1 操作系统准备和 Oracle 安装前置检查OCI 上跑 Oracle 数据库操作系统我一般选 Oracle Linux兼容性最好预装了很多依赖。实例起来后先做几件事关掉透明大页、调内核参数、建 oracle 用户和组、配好 yum 源。# 关闭透明大页Oracle 数据库对 THP 很敏感不关会有性能玄学问题 echo never /sys/kernel/mm/transparent_hugepage/enabled echo never /sys/kernel/mm/transparent_hugepage/defrag # 写进 rc.local 或者 systemd重启后生效 # 内核参数按 Oracle 官方推荐调shmmax 至少给内存的一半 cat /etc/sysctl.conf EOF fs.file-max 6815744 kernel.sem 250 32000 100 128 kernel.shmmax 68719476736 kernel.shmall 4294967296 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 1048576 EOF sysctl -p # 建 oracle 用户和组 groupadd -g 54321 oinstall groupadd -g 54322 dba useradd -u 54321 -g oinstall -G dba oracle逻辑说明透明大页不关Oracle 数据库可能出现间歇性卡顿这种问题排查起来非常痛苦属于血泪经验。内核参数里shmmax和shmall决定共享内存段大小给太小数据库起不来。ip_local_port_range调大是为了应对高并发连接。参数说明shmmax按物理内存的一半到三分之二给shmall是页数一般shmmax / 4096。sem四个值分别是信号量集合数、每个集合的信号量数、每次操作数、系统级最大信号量数按官方推荐来就行。3.2 用 DBCA 静默建库参数怎么定图形界面建库在云上不现实静默建库才是正路。先准备好响应文件再用dbca -silent跑。# 建库响应文件 dbca.rsp关键参数如下 # gdbNameprodcdb # sidprodcdb # createAsContainerDatabasetrue # numberOfPDBs1 # pdbNameprodpdb # sysPassword改成你的密码 # systemPassword改成你的密码 # characterSetAL32UTF8 # nationalCharacterSetAL16UTF16 # totalMemory16384 # datafileDestination/u01/app/oracle/oradata dbca -silent -createDatabase \ -responseFile /home/oracle/dbca.rsp \ -templateName General_Purpose.dbc \ -redoLogFileSize 1024逻辑说明CDB PDB 是 12c 以后的推荐架构一个容器数据库带一个可插拔数据库后面做多租户或者迁移都方便。字符集选 AL32UTF8别用 ZHS16GBK除非你有历史包袱。totalMemory是给数据库实例的总内存SGA 和 PGA 自动分配。参数说明redoLogFileSize默认 200M生产环境建议 1G 起减少日志切换频率。datafileDestination指向你挂的块存储别放系统盘。建库过程大概十几分钟看日志tail -f就行。3.3 监听配置和客户端连接验证建完库监听要配好不然连不上。OCI 的私网子网没有公网 IP本地连数据库要么走跳板机要么走专线要么用 OCI 的堡垒机服务。# 配置监听listener.ora 里 HOST 写私网 IP 或主机名 # LISTENER # (DESCRIPTION_LIST # (DESCRIPTION # (ADDRESS (PROTOCOL TCP)(HOST 10.0.2.10)(PORT 1521)) # ) # ) lsnrctl start lsnrctl status # 本地用 sqlplus 验证 sqlplus / as sysdba SQL select name, open_mode from v$database; SQL select name from v$pdbs;逻辑说明监听起不来或者连不上先看lsnrctl status的输出再看防火墙和安全列表。OCI 的安全列表默认只开 SSH1521 端口要手动放行而且只放行跳板机或者堡垒机的源 IP别开 0.0.0.0/0。参数说明HOST写私网 IP 比写主机名稳除非你的 DNS 解析没问题。PORT默认 1521改端口能少扫一点但治标不治本安全还是靠网络隔离。4. 避坑与排查OCI 上跑 Oracle 最容易翻车的 5 个点4.1 监听服务起不来报 ORA-12518现象lsnrctl start看着起来了但客户端连的时候报ORA-12518: 监听程序无法分发客户机连接。原因多半是实例的进程数或者会话数到顶了processes和sessions参数给太小或者操作系统ulimit没放开。解决先看show parameter processes再查v$resource_limit里processes和sessions的当前值和最大值。改大processes和sessions重启库。同时检查/etc/security/limits.conf里 oracle 用户的nofile和nproc给到 65536 以上。4.2 块存储性能不达标IOPS 上不去现象数据库跑批特别慢iostat看%util很高但吞吐和 IOPS 远低于预期。原因块存储性能档位选低了或者多块盘共享了同一个块存储的 IOPS 配额再或者文件系统没对齐。解决控制台把块存储调到 High Performance 或 Ultra High Performance调完等几分钟再压测。数据文件、重做日志、归档日志分盘放别挤在一块盘上。XFS 格式化时确认分区对齐parted用0%起就是对齐的。4.3 安全列表放行了还是连不上现象1521 端口在安全列表里放行了本地 telnet 不通。原因OCI 有两层安全列表Security List和网络安全组NSG如果实例绑了 NSGNSG 里没放行照样不通。另外子网可能是私网子网没有路由到互联网网关。解决确认实例绑了哪些 NSG在 NSG 里加入站规则。私网子网要连走跳板机或者堡垒机别想着直接公网连。路由表里确认私网子网有 NAT 网关的路由不然出网都不行。4.4 建库时提示共享内存不足现象dbca跑到一半报错日志里提示ORA-27102: out of memory或者共享内存段创建失败。原因/dev/shm太小或者kernel.shmmax给得不够。解决df -h /dev/shm看大小Oracle 数据库要求/dev/shm至少是内存的一半。改/etc/fstab里/dev/shm的挂载大小或者直接mount -o remount,size32G /dev/shm。shmmax按内存的一半到三分之二调。4.5 重启后数据库没自动起来现象实例重启后数据库和监听都没起来业务断了。原因没配开机自启或者oratab里没开。解决/etc/oratab里把对应实例的最后一个字段改成Y然后写一个 systemd 服务或者用dbstart/dbshut脚本。监听用lsnrctl的 systemd 单元。生产环境一定要测一遍重启别等真出事才发现没自启。5. 进阶用 Data Guard 和备份策略把底座做扎实5.1 Data Guard 在 OCI 上的最小配置单实例数据库扛不住生产至少要做 Data Guard。OCI 上做 Data Guard主库和备库放不同可用域Availability Domain块存储和网络都独立。主库开归档备库用RMAN做 duplicate。# 主库开归档 sqlplus / as sysdba SQL shutdown immediate; SQL startup mount; SQL alter database archivelog; SQL alter database open; # 备库用 RMAN duplicate需要先配好 tnsnames 和静态监听 rman target sys/passwordprimary auxiliary sys/passwordstandby RMAN duplicate target database for standby from active database;逻辑说明duplicate ... from active database不用先备份再传备份集直接从主库拉数据文件适合云上跨可用域的场景。备库起来后是 mount 状态应用日志才会同步。参数说明db_unique_name主备要不一样log_archive_dest_2指向备库的 tnsnames 别名。DG_BROKER_START设成 true 可以用 Broker 管理切换。5.2 备份策略和验证方法备份这块OCI 有块存储的卷备份但数据库层面还是得用 RMAN。我一般这么配每天一次全备每小时一次归档备份保留 7 天。备份集放对象存储别放本地盘。# RMAN 备份脚本压缩加加密 rman target / RMAN configure retention policy to recovery window of 7 days; RMAN configure channel device type disk format /u03/backup/%U; RMAN backup as compressed backupset database plus archivelog delete input;逻辑说明recovery window of 7 days保证能恢复到 7 天内任意时间点。plus archivelog delete input备份完归档就删省空间。备份完一定要验证restore database validate跑一遍别等真恢复时才发现备份是坏的。参数说明format里的%U是唯一文件名别写死。压缩用as compressed backupset省空间但费 CPU看实例规格权衡。5.3 一个我常用来验证底座是否扎实的小技巧底座搭完别急着上业务先做一轮「破坏性验证」手动重启实例看数据库和监听是否自启手动拔一块块存储在控制台 detach看数据库是否报错、能否恢复把主库关机看 Data Guard 是否自动切换。这些操作在测试环境做一遍比看一百页文档都管用。我自己的习惯是每次交付前跑一遍这个清单跑通了才敢说这套 Oracle 云基础架构平台解决方案是能扛生产的。数据库这东西平时不出事出事就是大事后悔药没地方买。希望帮到你。本文还有配套的精品资源点击获取
返回列表