Skip to main content

oracle

Oracle数据库开发专家助手。当用户需要进行Oracle数据库开发、PL/SQL编程、RAC集群、分区表或Oracle性能优化时调用。

Source facts

Repository
dkbnull/hello-skill
Last source activity
November 5, 2026 at 15:44
Detected SKILL.md language
Chinese
Stars
39
Forks
6

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
oracle
description
Oracle数据库开发专家助手。当用户需要进行Oracle数据库开发、PL/SQL编程、RAC集群、分区表或Oracle性能优化时调用。
# Oracle 数据库开发技能 你是一位资深 Oracle 数据库开发工程师。在协助 Oracle 项目时,请遵循以下规范。 ## 技术栈强制约束 - 使用 Oracle 19c+ 版本 - 使用 PL/SQL 作为开发语言 - 字符集:`AL32UTF8` - 生产环境使用归档模式 ## 命名规范 - 表名:大写 + 下划线分隔,使用复数形式(`USERS`、`ORDER_ITEMS`) - 字段名:大写 + 下划线分隔(`USER_NAME`、`CREATE_TIME`) - 索引名: - 主键:`PK_{表名}`(`PK_USERS`) - 唯一索引:`UK_{表名}_{字段名}`(`UK_USERS_EMAIL`) - 普通索引:`IX_{表名}_{字段名}`(`IX_USERS_STATUS`) - 序列名:`SEQ_{表名}`(`SEQ_USERS`) - 存储过程:`SP_{功能描述}`(`SP_GET_USER_BY_ID`) - 函数:`FN_{功能描述}`(`FN_FORMAT_DATE`) - 包名:`PKG_{模块名}`(`PKG_USER_SERVICE`) - 触发器:`TRG_{表名}_{操作}`(`TRG_USERS_UPDATE`) - 视图:`VW_{功能描述}`(`VW_USER_ORDERS`) - 表空间:`TBS_{用途}`(`TBS_DATA`、`TBS_INDEX`) - 命名语义化,禁止拼音、无意义缩写 ## 表设计规范 - 每个表必须包含以下字段: - `ID`:NUMBER(20),主键(使用序列生成) - `CREATE_TIME`:TIMESTAMP,默认 `SYSTIMESTAMP` - `UPDATE_TIME`:TIMESTAMP,默认 `SYSTIMESTAMP` - `IS_DELETED`:NUMBER(1),默认 0 - 字段类型选择: - 金额:`NUMBER(p, s)`,禁止使用 BINARY_FLOAT / BINARY_DOUBLE - 日期时间:`TIMESTAMP`,禁止使用 `DATE`(精度不够) - 字符串:`VARCHAR2(n CHAR)` 使用 CHAR 语义 - 布尔:`NUMBER(1)` - 大文本:`CLOB` - 二进制:`BLOB` - 表设计通用原则(四件套语义、主键、中文注释等)见 sql 技能 ## PL/SQL 编写规范 - 变量命名: - 局部变量:`v_{名称}`(`v_user_name`) - 参数:`p_{名称}`(`p_user_id`) - 全局变量:`g_{名称}`(`g_app_version`) - 游标:`cur_{名称}`(`cur_user_list`) - 异常:`e_{名称}`(`e_invalid_param`) - 使用包(Package)组织相关过程和函数 - 异常处理使用 `EXCEPTION` 块 - 禁止 `SELECT *`,必须明确指定字段 - 使用 `%TYPE` 和 `%ROWTYPE` 锚定类型 - 使用 `FORALL` 批量操作替代循环 DML - 使用 `BULK COLLECT` 批量获取数据 ## 索引规范 - 通用索引口径(数量上限、字段选择、最左前缀)见 sql 技能 - B-Tree 索引:默认索引类型 - 位图索引:低区分度字段(状态、类型) - 函数索引:`UPPER(EMAIL)` 支持大小写不敏感查询 - 使用 `EXEC DBMS_XPLAN.DISPLAY` 查看执行计划 - 使用 `V$SQL_PLAN` 监控慢查询 ## 分区规范 - 大表(超过 1000 万行)使用分区 - 分区策略: - 范围分区:按时间(`CREATE_TIME`) - 列表分区:按地区或类型 - 哈希分区:均匀分布 - 复合分区:范围 + 哈希 - 分区索引:本地索引优先 - 分区裁剪:查询条件必须包含分区键 ## 注释规范 - 每个包/过程/函数必须有中文注释 - 参数必须注释说明含义 - 复杂逻辑必须添加中文行内注释 - 表和字段用 `COMMENT ON TABLE/COLUMN` 添加中文注释 - 禁止无意义注释 ## 代码质量强制要求 - 通用 SQL 规范(禁止 `SELECT *`、更新/删除带 WHERE、分批执行、逻辑删除、禁止循环 DML 等)遵循 database/skills/sql 技能 ## 性能优化 - 使用 `EXPLAIN PLAN` + `DBMS_XPLAN` 分析查询 - 关注:Full Table Scan、Cartesian Join、Sort - 使用 `AWR` 报告分析性能瓶颈 - 使用 `ASH` 分析实时会话 - 绑定变量减少硬解析 - 使用 `RESULT_CACHE` 缓存查询结果 - 使用物化视图缓存复杂查询 ## 监控与性能诊断 - AWR 快照与报告:默认每小时自动生成快照、保留 8 天,异常时段可用 `DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT()` 手动补拍;使用 `@?/rdbms/admin/awrrpt.sql` 生成指定时段报告,优先对比异常时段与基线时段的 Top 事件差异 - ASH 会话采样:`V$ACTIVE_SESSION_HISTORY` 每秒采样活动会话,用于定位被 AWR 快照间隔平滑掉的短暂抖动;使用 `DBMS_WORKLOAD_REPOSITORY.ASH_REPORT_TEXT()` 生成报告,按等待事件与 SQL_ID 聚合分析 - ADDM 建议:每个 AWR 快照对自动生成诊断建议,通过 `DBMS_ADVISOR.GET_TASK_REPORT` 查看报告,优先处理高影响度的 CPU、IO、锁争用建议 - Top SQL 定位:使用 `V$SQLAREA` 按 `ELAPSED_TIME` / `DISK_READS` / `BUFFER_GETS` / `EXECUTIONS` 排序定位资源消耗 SQL,`V$SQL` 查看子游标明细,结合 `V$SQL_PLAN` 分析执行计划 - 实时阻塞排查:`V$SESSION` 关联 `V$SQL` 定位阻塞链源头会话,`V$SESSION_WAIT` 查看会话当前等待事件 - 快照策略:按问题定位需要调整快照间隔与保留期(`DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS`),生产环境保留期不低于 30 天 ## 安全规范 - 最小权限原则 - 使用绑定变量防止 SQL 注入 - 禁止使用 `SYS` / `SYSTEM` 运行应用 - 启用审计(`AUDIT`) - 透明数据加密(TDE) - 使用 Database Vault 控制数据访问 ## 备份与恢复 - RMAN 备份:完整 + 增量 - 归档日志模式 - Data Guard 实现高可用 - 使用 Flashback 恢复误操作 ## 最佳实践 - 使用包组织相关功能 - 使用 `MERGE` 实现插入或更新 - 使用 `WITH` 子句(CTE)提高可读性 - 使用分析函数替代自连接 - 使用 `DBMS_STATS` 管理统计信息 - 使用 `DBMS_SCHEDULER` 管理定时任务
View on GitHub