資料字典是oracle存放有關資料庫資訊的地方,其用途是用來描述資料的。比如乙個表的建立者資訊,建立時間資訊,所屬表空間資訊,使用者訪問許可權資訊等。當使用者在對資料庫中的資料進行操作時遇到困難就可以訪問資料字典來檢視詳細的資訊。
oracle中的資料字典有靜態和動態之分。靜態資料字典主要是在使用者訪問資料字典時不會發生改變的,但動態資料字典是依賴資料庫執行的效能的,反映資料庫執行的一些內在資訊,所以在訪問這類資料字典時往往不是一成不變的。以下分別就這兩類資料字典來論述。
1. 靜態資料字典
這類資料字典主要是由表和檢視組成,應該注意的是,資料字典中的表是不能直接被訪問的,但是可以訪問資料字典中的檢視。靜態資料字典中的檢視分為三類,它們分別由三個字首夠成:user_*、 all_*、 dba_*。
user_*
該檢視儲存了關於當前使用者所擁有的物件的資訊。(即所有在該使用者模式下的物件)
all_*
該試圖儲存了當前使用者能夠訪問的物件的資訊。(與user_*相比,all_* 並不需要擁有該物件,只需要具有訪問該物件的許可權即可)
dba_*
該檢視儲存了資料庫中所有物件的資訊。(前提是當前使用者具有訪問這些資料庫的許可權,一般來說必須具有管理員許可權)
從上面的描述可以看出,三者之間儲存的資料肯定會有重疊,其實它們除了訪問範圍的不同以外(因為許可權不一樣,所以訪問物件的範圍不一樣),其他均具有一致性。具體來說,由於資料字典檢視是由sys(系統使用者)所擁有的,所以在卻省情況下,只有sys和擁有dba系統許可權的使用者可以看到所有的檢視。沒有dba許可權的使用者只能看到user_*和all_*視。如果沒有被授予相關的select許可權的話,他們是不能看到 dba_*檢視的。
由於三者具有相似性,下面以user_為例介紹幾個常用的靜態檢視:
user_users檢視
主要描述當前使用者的資訊,主要包括當前使用者名稱、帳戶id、帳戶狀態、表空間名、建立時間等。例如執行下列命令即可返回這些資訊。
select * from user_users
user_tables檢視
主要描述當前使用者擁有的所有表的資訊,主要包括表名、表空間名、簇名等。通過此檢視可以清楚了解當前使用者可以操作的表有哪些。執行命令為:select * from user_tables
user_objects檢視
主要描述當前使用者擁有的所有物件的資訊,物件包括表、檢視、儲存過程、觸發器、包、索引、序列等。該檢視比user_tables檢視更加全面。例如, 需要獲取乙個名為「package1」的物件型別和其狀態的資訊,可以執行下面命令:
select object_type,status
from user_objects
where object_name=upper(『package1』);
這裡需注意upper的使用,資料字典裡的所有物件均為大寫形式,而pl/sql裡不是大小寫敏感的,所以在實際操作中一定要注意大小寫匹配。
user_tab_privs檢視
該檢視主要是儲存當前使用者下對所有表的許可權資訊。比如,為了了解當前使用者對table1的許可權資訊,可以執行如下命令:
select * from user_tab_privs where table_name=upper('table1')
了解了當前使用者對該錶的許可權之後就可以清楚的知道,哪些操作可以執行,哪些操作不能執行。
前面的檢視均為user_開頭的,其實all_開頭的也完全是一樣的,只是列出來的資訊是當前使用者可以訪問的物件而不是當前使用者擁有的物件。對於dba_開頭的需要管理員許可權,其他用法也完全一樣,這裡就不再贅述了。
2. 動態資料字典
以上是oracle的資料字典方面的基本內容,還有很多有用檢視因為篇幅原因這裡不能一一講解,希望大家在平時使用中多留心。總之,運用好資料字典技術,可以讓資料庫開發人員能夠更好的了解資料庫的全貌,這樣對於資料庫優化、管理等有極大的幫助。
Oracle資料字典使用入門
每個oracle資料庫中包括乙個被稱為 元資料 的集合,或者說包含用來描述資料庫有關資料結構的資料。包含這些元資料的表和檢視稱為oracle資料字典。本文列出了一些常用的oracle資料字典的查詢方法。下面按類別列出一些oracle使用者常用資料字典的查詢使用方法。一 使用者 檢視當前使用者的預設表...
Oracle 資料字典
資料字典包括以下內容 1.所有資料庫schema物件的定義 表,檢視,索引,聚簇,同義詞,序列,過程,函式,包,觸發器 2.資料庫的空間分配和使用情況 3.欄位的預設值 4.完整性約束資訊 5.oracle使用者名稱,角色,許可權等資訊 6.審計資訊 7.其他資料庫資訊 資料字典有4部分組成 內部r...
oracle 資料字典
oracle資料字典 select from user tab columns 檢視使用者列物件 select from user tab comments 檢視使用者表的備註 select from user tab statistics select from all users 所有使用者 s...