Oracle DBA 的日常少不了各种 SQL 操作,尤其是管理和监控数据库资源时,用得那叫一个频繁。这篇整理了几个**常用**的 SQL 语句,从查看表空间大小、日志文件位置,到查找 TRACE 文件,覆盖面还挺全。语句清晰、执行高效,新手照抄就能跑,老手也能当小手册用,贴在工位都不为过。

dba_tablespacesv$logfile这些视图,平时不记得字段名,查起来麻烦,本文直接给你 SQL 模版,一改参数就能用。比如说你要看哪个表空间占了多少空间,用下面这个就顺手:

SELECT t.tablespace_name, ROUND(SUM(bytes/(1024*1024)),0) ts_size
FROM dba_tablespaces t, dba_data_files d
WHERE t.tablespace_name = d.tablespace_name
GROUP BY t.tablespace_name;

还有像看当前用户的 SID、Serial#,调 BUG 的时候实用,直接查 v$session 就行。别看这些 SQL 看着简单,其实都挺实用,贴近实战。

哦对了,查 TRACE 文件路径的那条也赞,配合性能调优用得上:

SELECT u_dump.value || '/' || instance.value || '_ora_' || v$process.spid || NVL2(v$process.traceid, '_' || v$process.traceid, null) || '.trc' AS "Trace File"
FROM v$parameter u_dump
CROSS JOIN v$parameter instance
CROSS JOIN v$process
JOIN v$session ON v$process.addr = v$session.paddr
WHERE u_dump.name = 'user_dump_dest'
AND instance.name = 'instance_name'
AND v$session.audsid = sys_context('userenv','sessionid');

,别小看这些 SQL,真正用熟了,能省下不少时间。如果你刚开始接触 Oracle DBA,建议收藏起来;如果你是老司机,也可以拎出几条改改,做成自己的脚本库。