用途
oracledb 技能用于管理和监控 Oracle 数据库,主要面向需要通过脚本化方式执行 SQL、查看元数据和分析查询性能的场景。所有脚本均使用 Node.js 执行。
使用方式
调用脚本时,将 <param_name> 和 <param_value> 替换为实际值。Bash 下使用单引号包裹 JSON 参数:
node <skill_dir>/scripts/<script_name>.js '{"<param_name>": "<param_value>"}'
PowerShell 下:
node <skill_dir>/scripts/<script_name>.js '{"<param_name>": "<param_value>"}'
脚本会自动从各类 .env 文件加载环境变量。除非因环境变量缺失导致执行失败,否则不需要让用户手动设置变量。
主要能力
execute_sql:默认只执行一条只读的 SELECT 或 WITH 查询。在启动数据库工具之前,包装器会拒绝多条语句、DDL、DML、事务控制、PL/SQL、CALL、COPY、DO、SELECT INTO 以及行锁定查询。参数 sql(string,必填)为要执行的单条只读 SQL 查询。非只读语句需要两个显式命令行确认,并且应仅在用户确认确切 SQL 后使用:
node <skill_dir>/scripts/execute_sql.js
--dangerous --confirm-dangerous-sql=EXECUTE
'{"sql":"<confirmed non-read SQL>"}'
get_query_plan:使用 EXPLAIN PLAN 为一条 SELECT 或 WITH 查询生成完整执行计划。该包装器在调用工具前会应用与 execute_sql 相同的只读语句校验和相同的双标志危险覆盖。参数 query(string,必填)为要生成计划的 SQL 语句(省略 EXPLAIN 关键字)。
list_active_sessions:列出当前正在运行的数据库会话(STATUS='ACTIVE')的顶部 N 条(默认 50),显示 SID、操作系统用户、程序和当前 SQL 语句文本。
list_invalid_objects:列出所有处于无效状态、需要重新编译的数据库对象(例如过程、函数、视图)。
list_tables:列出已连接模式中的所有用户表,包括段大小、行数和最后分析日期。可按逗号分隔的名称列表过滤。如果省略名称,则列出当前用户模式中的所有表。
list_tablespace_usage:列出表空间名称、总大小、可用空间和使用百分比,用于监控存储使用情况。
list_top_sql_by_resource:根据选定的资源指标(CPU、I/O 或 Elapsed Time),从库缓存中列出顶部 N 条(默认 5)SQL 语句。显示 SQL ID、执行次数、缓冲区获取、磁盘读取、CPU 时间和已用时间。
适用场景
适用于 Oracle 数据库的日常运维、只读查询执行、执行计划分析、会话监控、对象健康检查、表与表空间存储监控,以及基于资源的 SQL 性能排查。
限制
默认仅允许只读语句;DDL、DML、事务控制、PL/SQL、CALL、COPY、DO、SELECT INTO 和行锁定查询会被拒绝。非只读操作需要显式危险标志确认。脚本依赖 Node.js 运行环境,并依赖 .env 文件中的环境变量;环境变量缺失可能导致执行失败。