Oracle_DB常用SQL查询技巧

4星 · 超过85%的资源 需积分: 18 26 下载量 44 浏览量 更新于2024-07-25 收藏 208KB DOC 举报
"Oracle_DB常用经典sql查询" 在Oracle数据库管理中,SQL查询是DBA进行日常维护和性能监控的重要工具。以下是一些Oracle数据库中常用的SQL查询示例,涵盖了表空间、数据文件、回滚段、控制文件、日志文件以及表空间使用情况等关键信息的检查。 1. 查看表空间的名称及大小 这个查询用于获取所有表空间的名称及其总大小(以MB为单位)。通过`dba_tablespaces`和`dba_data_files`视图联接,可以获取每个表空间占用的总字节数,并转换成易于理解的MB单位。 ```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; ``` 2. 查看表空间物理文件的名称及大小 此查询用于列出所有表空间的物理数据文件(data files)及其大小(以MB为单位)。通过`dba_data_files`视图,可以查看每个文件的表空间名、文件ID、文件名以及大小。 ```sql SELECT tablespace_name, file_id, file_name, ROUND(bytes/(1024*1024), 0) total_space FROM dba_data_files ORDER BY tablespace_name; ``` 3. 查看回滚段名称及大小 回滚段是存储事务回滚信息的地方。这个查询显示了每个回滚段的名称、所在表空间、状态、初始和下一个扩展的大小(以KB为单位),以及当前扩展的数量。 ```sql SELECT segment_name, tablespace_name, r.status, (initial_extent/1024) InitialExtent, (next_extent/1024) NextExtent, max_extents, v.curext CurExtent FROM dba_rollback_segs r, v$rollstat v WHERE r.segment_id = v.usn(+) ORDER BY segment_name; ``` 4. 查看控制文件 控制文件是Oracle数据库的关键组件,记录了数据库的结构和状态。这个查询列出了所有控制文件的位置。 ```sql SELECT name FROM v$controlfile; ``` 5. 查看日志文件 日志文件用于记录数据库的所有更改,是数据库恢复的关键。此查询返回数据库的日志组成员。 ```sql SELECT member FROM v$logfile; ``` 6. 查看表空间的使用情况 最后,这两个查询提供了表空间的使用情况,包括总大小、已使用的空间和剩余的自由空间,以及使用和空闲的百分比。 第一个查询简化了表空间的自由空间: ```sql SELECT SUM(bytes)/(1024*1024) AS free_space, tablespace_name FROM dba_free_space GROUP BY tablespace_name; ``` 第二个查询提供了更详细的表空间利用率: ```sql SELECT A.TABLESPACE_NAME, A.BYTES TOTAL, B.BYTES_USED, C.BYTES_FREE, (B.BYTES * 100) / A.BYTES "%USED", (C.BYTES * 100) / A.BYTES "%FREE" FROM SYS.SM$TS_AVAIL A, SYS.SM$TS_USED B, SYS.SM$TS_FREE C WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME AND A.TABLESPACE_NAME = C.TABLESPACE_NAME; ``` 这些SQL查询是DBA日常运维中的基础,有助于监控数据库健康状况,优化性能,以及规划存储资源的分配。了解并熟练使用这些查询,对于管理Oracle数据库至关重要。