原文出處:小寶馬的爸爸 - 夢想的家園
前面呢,也斷斷續續的介紹了一些諸如 Sql*Plus 等等關於 Oracle 的基本的內容,
對於 Oracle 這樣的大型數據庫呢,自身的運行和維護也是個不得了的事情,
所以在 Oracle 中存在 n 多的數據字典,數據字典作為一種元數據呢,
在 Oracle 中的作用就是存放整個數據庫實例的基本信息,實質上也就是一組表,
這些數據字典呢,很多都是歸 SYS 用戶所有的。
這一篇博文呢就是針對 Oracle 的數據字典做一個比較全面的介紹,
介紹方法,就是列出一些常用的數據字典了,
下面列出的這些數據字典,本人均在 Oracle 11g R1 上,
通過 Oracle Sql Developer 進行過測試的,全部通過。
其中很多的數據字典都必須以 system 或者是 sysdba 用戶登錄才能夠使用的。
---數據庫實例的基本信息 desc v$instance; select * from v$instance; --數據文件的基本信息 desc v$datafile; select * from v$datafile; desc dba_data_files; select file_name,file_id,tablespace_name,bytes,blocks, status,online_status from dba_data_files; --臨時文件的基本信息 desc dba_temp_files; select file_name,file_id,tablespace_name,status, bytes/1024/1024 大小MB from dba_temp_files; --控制文件的基本信息 desc v$controlfile; select name,status,is_recovery_dest_file, block_size,file_size_blks from v$controlfile; --日志文件的基本信息 desc v$logfile; select group#,status,type,member,is_recovery_dest_file from v$logfile; --數據庫的基本信息 desc v$database; select * from v$database; select dbid,name,created,resetlogs_time,log_mode, open_mode,checkpoint_change#,archive_change#, controlfile_created,controlfile_type, controlfile_sequence#,controlfile_change#, controlfile_time,protection_mode,database_role from v$database; --日志文件參數信息 show parameter log_archive_dest; --訪問參數文件 desc v$parameter; select num,name,type,value,display_value, isdefault,isses_modifiable, issys_modifiable,isinstance_modifiable from v$parameter; select * from v$parameter; select name,value,description from v$parameter; --后台進程信息 desc v$bgprocess; select paddr,pserial#,name,description,error from v$bgprocess; --DBA 用戶的所有的表的基本信息 desc dba_tables; desc dba_tab_columns; select owner,table_name,column_name,data_type,data_length, global_stats,data_upgraded,histogram from dba_tab_columns; --DBA 用戶的所有的視圖的基本信息 desc dba_views; select owner,view_name,read_only from dba_views; --DBA 用戶的所有的同義詞的基本信息 desc dba_synonyms; select owner,synonym_name,table_owner, table_name,db_link from dba_synonyms; --DBA 用戶的所有的序列的信息 desc dba_sequences; select sequence_owner,sequence_name,min_value,max_value, cycle_flag from dba_sequences; --DBA 用戶的所有的約束的信息 desc dba_constraints; select owner,constraint_name,constraint_type, table_name,status from dba_constraints; --DBA 用戶的所有的索引的基本信息 desc dba_indexes; select owner,index_name,index_type,table_owner,table_name, table_type,uniqueness,compression,logging,status from dba_indexes; --DBA 用戶的所有的觸發器的基本信息 desc dba_triggers; select owner,trigger_name,trigger_type, table_owner,table_name,column_name from dba_triggers; --DBA 用戶的所有的存儲過程的基本信息 desc dba_source; select owner,name,type,line,text from dba_source; --DBA 用戶的所有的段的基本信息 desc dba_segments; select owner,segment_name,segment_type, tablespace_name,blocks,extents from dba_segments; --DBA 用戶的所有的區的基本信息 desc dba_extents select owner,segment_name,segment_type, tablespace_name,extent_id,file_id,blocks from dba_extents; --DBA 用戶的所有的對象的基本信息 desc dba_objects; select owner,object_name,subobject_name, object_id,data_object_id,object_type, created,status,namespace from dba_objects; --當前用戶可以訪問的所有的基表 desc cat; select table_name from cat; --當前用戶可以訪問的所有的基表,視圖,同義詞 desc system.tab; select tname,tabtype,clusterid from system.tab; --構成數據字典的所有的表信息 desc dict; select table_name,comments from dict; -- 查詢關於表空間的一些基本的數據字典 desc dba_tablespaces; select tablespace_name,block_size,status, logging,extent_management from dba_tablespaces; desc dba_free_space; select tablespace_name,file_id,block_id, bytes/1024/1024 大小MB,blocks,relative_fno from dba_free_space; --歸檔狀態的一些基本信息 desc v$archived_log; select name,dest_id,blocks,block_size, archived,status,backup_count from v$archived_log; --關於內存結構的一些信息 desc v$sga; select name,value/1024/1024 大小MB from v$sga; desc v$sgastat; select pool,name,bytes from v$sgastat; desc v$db_object_cache; select owner,name,db_link,type,namespace,locks from v$db_object_cache; desc v$sql; select sql_text,sql_id,cpu_time from v$sql;
上面的呢就是 Oracle 中較常使用的數據字典了,
需要提一下的是,上面有很多都是以 “dba_”開頭的數據字典,
比如有 dba_tables ,其實呢,這個是列出了數據庫中所有的數據,
比如使用 dba_tables 就會列出數據庫中所有的數據表(n 多),
但是您可以使用 user_tables 或者 all_tables 來代替 dba_tables,當然有一些是沒有與之對應的,
這樣呢,就只會列出當前登錄用戶允許查看的數據表了,
對於以“dba_”基本上都是有與之相對應的“user_”和“all_”,
其中“user_”對應的是記錄當前登陸用戶的對象,
而“all_”則是記錄當前登陸用戶的對象信息以及被授權訪問的對象信息,
而“dba_”是包含數據庫實例的所有對象信息!!!