用途:pythia-explore 用于理解 Oracle 架构中的对象,包括查找对象、读取 PL/SQL 源码、查看签名、表列、DDL、搜索代码等。其核心原则是直接询问数据库,而不是依赖导出的 .sql 文件,因为导出文件可能过时,缺少类型、包和索引等信息。
主要能力与命令:pythia check 检查连接与架构;pythia ls "PKG_%" 按名称查找对象;pythia src NAME 读取源码(支持 --body、--spec);pythia args NAME 查看过程或函数签名;pythia cols TABLE_NAME 查看列与真实数据类型;pythia ddl TABLE NAME 查看完整 DDL;pythia grep "text" 搜索所有 PL/SQL 文本;pythia deps NAME 查看依赖;pythia impact NAME 查看被依赖情况;pythia plscope NAME 查看精确标识符用法;pythia similar NAME 查找相似程序;pythia invalid 和 pythia errors 查看当前损坏对象;pythia sql "select ..." 执行自由查询(仅 SELECT/WITH)。
使用方式:当开发者提供 .sql 文件时,应将其视为声明而非事实,先阅读文件,再运行 pythia src <NAME> 从数据库获取答案;若两者不同,应首先说明差异。仅在数据库不可达时,才以文件作为答案,并明确说明。
限制与规则:截断总是会被声明,输出以 -- truncated ... 结尾或在 --json 中设置 "truncated": true;若未看到标记则表示完整,若看到则应说明或使用 --limit、--offset、--max-lines 获取更多。对于“X 在哪里被使用”,应优先使用 plscope 而非 grep,因为 PL/Scope 由编译器记录且精确,grep 会匹配注释和相似名称;若 PL/Scope 无数据,命令会说明并以 grep 作为后备。src 行号是编译器自身的行号,错误在第 47 行即对应 src 输出第 47 行,无需偏移计算。默认输出上限用于保护上下文窗口,仅在实际处理的对象上提高上限。更深参考(字典视图、PL/Scope 启用、许可边界)见 reference/data-dictionary.md。