Oracle DBA必备:SQL查询集合

需积分: 9 6 下载量 15 浏览量 更新于2024-07-31 收藏 214KB PDF 举报
"Oracle DBA常用SQL查询" 在Oracle数据库管理中,DBA(Database Administrator)经常需要使用SQL查询语句来监控和管理数据库的状态。以下是一些Oracle DBA经常会用到的SQL查询示例,涵盖了表空间、回滚段、控制文件、日志文件以及数据库对象的使用情况。 1. 查看表空间及其大小 ```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; ``` 这个查询可以帮助DBA了解数据库中各个表空间的名称和总大小(以MB为单位)。 2. 查看表空间物理文件及其大小 ```sql SELECT tablespace_name, file_id, file_name, ROUND(bytes / (1024 * 1024), 0) total_space FROM dba_data_files ORDER BY tablespace_name; ``` 通过这个查询,可以获取每个表空间下的数据文件名以及它们占用的空间大小。 3. 查看回滚段信息 ```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. 查看控制文件 ```sql SELECT name FROM v$controlfile; ``` 控制文件是Oracle数据库的关键组件,用于记录数据库结构和状态。此查询列出所有控制文件的位置和名称。 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; ``` 通过这个查询,DBA可以了解各表空间的剩余自由空间。 7. 表空间的使用率 ```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 = "表空间名称"; ``` 此查询不仅提供表空间的总大小,还计算了已使用和未使用的空间,以及它们占总空间的百分比。 这些SQL查询语句对于日常的数据库维护和性能优化至关重要。DBA需要根据实际情况调整查询,例如替换特定的表空间名称或筛选条件,以满足特定的监控需求。同时,了解如何解读查询结果也是DBA必备的技能,以便及时发现并解决可能存在的问题。