1. 程式人生 > 其它 >Oracle 資料字典

Oracle 資料字典

資料字典是整個oracle的核心, 記錄了資料庫的最基本的資訊。 資料字典包括資料字典基本表和資料字典檢視。

資料字典基本表由ORACLE_HOME\RDBMS\ADMIN\sal.bsq建立, 資料字典基本表大多以結尾, 屬於sys使用者, 存放在system表空間。

使用者不能手動去修改資料字典基本表。

E.g:
select table_name from USER_table;   當前使用者所擁有的表名
select table_name from ALL_table;    當前使用者有權訪問的表名

4.1資料字典檢視總覽(通用概要檢視)

select * from
dict; 查詢全部資料字典檢視的名稱和解釋 select * from dict_columns; 檢視字典檢視中欄位的名稱和解釋

4.2 常用的靜態檢視

通用檢視名作用

dba_ 上帝視角

all_ 能訪問到的

user_ 自己所擁有的

users 描述使用者資訊,包含使用者名稱、賬戶狀態、預設表空間、建立日期等
tablespaces 查看錶空間資訊
tables 查看錶資訊
views 檢視檢視資訊
objects 檢視所有物件的資訊,包含序列、過程與函式、觸發器、索引等
errors 檢視所擁有的物件中發生的錯誤

4.3資料字典常用SQL查詢語句

1. 查看錶空間、物理檔案、表空間大小、剩餘空間等

select a.* , (a.表空間大小-b.剩餘空間) 已用空間 , b.剩餘空間
from
(select tablespace_name 表空間名稱 ,file_name 物理檔案路徑, round(bytes/(1024*1024),0) 表空間大小
from dba_data_files ) a
left join
(select tablespace_name,round(sum(bytes) / 1024 / 1024, 2) AS 剩餘空間
from dba_free_space group by
tablespace_name) b on a.表空間名稱=b.tablespace_name;

表空間名稱 物理檔案路徑 表空間大小 已用空間 剩餘空間
-----------------------------------------------------------------------------------------------------------------------
TB1 /u01/app/oracle/oradata/orcl/testtbs01.dbf         10        1.06           8.94
SYSAUX   /u01/app/oracle/oradata/orcl/sysaux01.dbf        1040       984.87          55.13
UNDOTBS1    /u01/app/oracle/oradata/orcl/undotbs01.dbf        295        23.25          271.75
USERS      /u01/app/oracle/oradata/orcl/users01.dbf         363       204.62          158.38
SYSTEM     /u01/app/oracle/oradata/orcl/system01.dbf        780        773.62         6.38
EXAMPLE     /u01/app/oracle/oradata/orcl/example01.dbf        346        310.44         35.56
UNDOTBS2    /u01/app/oracle/oradata/orcl/undotbs02.dbf      10          2.25          7.75

2. 檢視控制檔案路徑

select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/control01.ctl
/u01/app/oracle/fast_recovery_area/orcl/control02.ctl

3. 檢視日誌檔案路徑

select member from v$logfile;

4.檢視消耗資源最多的SQL

SELECT hash_value,executions,buffer_gets,disk_reads,parse_calls
FROM V$SQLAREA
WHERE buffer_gets > 10000000
OR disk_reads > 1000000
ORDER BY buffer_gets + 100 * disk_reads DESC;

5.檢視還未提交的事務

select * from v$locked_object;
select * from v$transaction;

6. 查詢資料庫伺服器的主機名、例項名、資料庫系統版本;

select host_name,instance_name,version from v$instance;

HOST_NAME                          INSTANCE_NAME           VERSION
----------------------- ------------------------ -----------------
test1                                       orcl        11.2.0.4.0