用途
本技能面向在 OCI 上管理 Oracle Autonomous Database(ADB)的场景,用于日常运维、性能故障排查、成本优化以及高可用与灾难恢复(HA/DR)实施。它汇总了 ADB 特有的注意事项与成本陷阱,帮助避免常见误操作。
主要能力
禁止事项(NEVER Do This)
- 禁止在应用代码中使用 ADMIN 用户:ADMIN 拥有完整数据库控制权,审计轨迹会将所有操作记为 ADMIN(无问责性),且 ADMIN 无法在不破坏自动化的前提下被锁定或禁用。正确做法是创建最小权限的应用专用用户,例如:
CREATE USER app_user IDENTIFIED BY :password;
GRANT CREATE SESSION, SELECT ON schema.table TO app_user;
-
禁止在未检查等待事件前扩容 ECPU:从 2 扩容到 4 ECPU 每月额外花费 526 美元。若根因是劣质 SQL,则属于浪费。决策路径:先查 v$system_event 的 top 等待事件;高 CPU time 说明 SQL 差,应先优化而非扩容;高 db file sequential read 说明缺索引,不应扩容;持续高 User I/O 应扩容存储 IOPS 或启用自动扩缩容;只有在 CPU 等待持续且 SQL 已优化后才扩容 ECPU。
-
禁止假设停止 ADB 即零成本:停止后计算费用为 0,但存储按 0.025 美元/GB/月继续计费,备份保留费用也继续。长期闲置(超过 60 天)应通过 Data Pump 导出、删除 ADB、再从备份恢复。
-
禁止创建无保留期的手动备份(会永久保留):错误做法是直接创建备份,正确做法是设置保留天数,例如:
oci db autonomous-database-backup create \
--autonomous-database-id $ADB_ID \
--display-name "pre-upgrade-backup" \
--retention-days 30
若遗忘,1TB × 0.025 美元 × 12 个月 = 300 美元/年。
-
禁止在未设置最大 ECPU 上限时启用自动扩缩容:自动扩缩容按每小时峰值用量计费。基础 2 ECPU 可扩到 6 ECPU(3 倍硬限制)。无上限时费用可能从 526 美元/月涨到 1,578 美元/月。正确做法是在控制台将 Max ECPU 设为 4(2 倍基础),将费用上限控制在 1,052 美元/月。
-
禁止将 ROWNUM 与 ORDER BY 混用(结果错误):ROWNUM 在 ORDER BY 之前应用。正确做法是使用 FETCH FIRST(Oracle 12c+):
SELECT * FROM orders ORDER BY created_at DESC FETCH FIRST 10 ROWS ONLY;
性能排查决策树
“查询慢”时:若单个查询慢,获取 SQL_ID 并检查执行计划(DBMS_XPLAN.DISPLAY_CURSOR),大表全表扫描则加索引,连接顺序错误则用 SQL 提示或 SQL Plan Baseline,笛卡尔积则修正查询逻辑。若所有查询都慢,检查等待事件(v$system_event,排除 Idle),按等待类别处理:CPU time 优化 SQL 或扩容 ECPU(先查 SQL);db file sequential read 缺索引;db file scattered read 全表扫描;log file sync 提交过多(批量 DML);User I/O 扩容存储 IOPS 或启用自动扩缩容。若需判断起始时间:模式变更后收集统计信息;数据加载后收集统计信息并检查分区;版本升级后对比执行计划;随时间逐渐变慢则考虑数据增长,需要索引或分区。
SQL_ID 调试工作流
- 查找问题 SQL_ID:查询 v$sql,按 elapsed_time 排序取前 10。
- 获取执行计划:DBMS_XPLAN.DISPLAY_CURSOR。
- 创建并运行 SQL Tuning Task:使用 DBMS_SQLTUNE.CREATE_TUNING_TASK 与 EXECUTE_TUNING_TASK,再通过 REPORT_TUNING_TASK 查看报告。
- 实施修复:建议加索引则创建索引;建议用提示则先测试,再通过 SQL Plan Baseline 固化;建议收集统计信息则执行 DBMS_STATS.GATHER_TABLE_STATS。
ADB 特有行为
- 自动扩缩容硬限制(不可更改):最小 1 倍基础 ECPU,最大 3 倍基础 ECPU;CPU 超过 80% 持续 5 分钟以上触发扩容,低于 60% 持续 10 分钟以上触发缩容;扩缩容耗时 5-10 分钟;按每小时峰值用量计费。
- ADMIN 用户限制(与本地部署不同):不能创建表空间(DATA 自动管理);不能修改 SYSTEM/SYSAUX 表空间;不能访问操作系统(无 shell、无文件系统);不能使用 SYSDBA 权限(ADB 中不可用)。
- 服务名性能影响:HIGH 使用专用 OCPU、1 倍 ECPU 并发,适合交互式查询与 OLTP;MEDIUM 共享 OCPU、2 倍 ECPU,适合报表与批处理;LOW 共享最多、3 倍 ECPU,适合后台任务与 ETL。注意:后台任务使用 HIGH 会挤占交互用户且无额外成本收益。
- 备份保留(自动与手动):自动备份为每日增量加每周全量,默认 60 天,包含在存储成本中;手动备份为按需创建,永久保留直到手动删除,按 0.025 美元/GB/月计费。成本陷阱:10 个手动备份 × 1TB × 0.025 = 每月 250 美元持续产生。
版本功能矩阵
- JSON Relational Duality:23ai、26ai 支持,用于 REST + SQL 现代应用。
- AI Vector Search:23ai、26ai 支持,用于 RAG、语义搜索。
- JavaScript Stored Procs:26ai 支持,面向 Node.js 开发者。
- SELECT AI(自然语言转 SQL):23ai、26ai 支持。
- Property Graphs:21c、23ai、26ai 支持,用于欺诈检测、社交场景。
- True Cache:26ai 支持,用于读密集负载。
- Blockchain Tables:21c、23ai、26ai 支持,用于不可变审计日志。
升级路径:19c → 21c → 23ai → 26ai(不支持降级)。规则:升级生产前务必在克隆环境测试。
常见 ADB 错误
- ORA-01017 无效用户名/密码:钱包密码错误或过期,重新下载钱包。
- ORA-12170 连接超时:NSG 规则阻断或服务名错误,检查 NSG 并核对 tnsnames.ora。
- ORA-00604 递归 SQL 层错误:自动任务失败(统计信息、空间管理),检查 DBA_SCHEDULER_JOB_RUN_DETAILS。
- ORA-30036 无法扩展段:ADB 自动管理 DATA,若持续出现则为缺陷,联系 Oracle 支持。
- ORA-01031 权限不足:ADMIN 尝试受限操作,参见上述 ADMIN 限制。
使用方式
按场景加载参考文件:
- 预配、扩缩容或删除 ADB 实例;创建备份或克隆(完整与元数据);下载钱包文件;更改自动扩缩容、许可类型或版本时,加载 references/oci-cli-adb.md。
- 通过 Bash(SQLcl)执行 SQL 查询;运行 DBMS_SQLTUNE 任务;Data Pump 导出/导入;为模式对象生成 DDL 时,加载 references/sqlcl-workflows.md。
- 从零设计 ADB 架构;规划 ATP vs ADW vs APEX vs JSON 工作负载类型;从本地 Oracle 迁移到 ADB 时,加载 references/oci-adb-best-practices.md。
- Autonomous Data Guard 设置、跨区域 DR、RTO/RPO 目标:参见 references/adb-ha-dr.md。
- mTLS 钱包配置、私有端点、VCN Service Gateway 设置:参见 references/adb-security.md。
- ECPU/存储定价表与自动扩缩容成本计算:参见 references/cost-reference.md。
适用场景
适用于在 OCI 上运维 Oracle Autonomous Database 的数据库管理员与开发人员,尤其是需要排查性能问题、控制成本、规划版本升级或实施高可用与灾难恢复的团队。
限制
资料未提供该技能的具体安装方式、运行环境要求或平台兼容性说明;部分参考文件的具体内容未在资料中展开,仅给出加载时机。