




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、.oracle數(shù)據(jù)字典.txt男人應該感謝20多歲陪在自己身邊的女人。因為20歲是男人人生的最低谷,沒錢,沒事業(yè);而20歲,卻是女人一生中最燦爛的季節(jié)。只要鋤頭舞得好,哪有墻角挖不到? ORACLE數(shù)據(jù)字典是ORACLE數(shù)據(jù)庫的重要組成部分,它提供了諸如數(shù)據(jù)庫結(jié)構(gòu)、數(shù)據(jù)庫對象空間分配和數(shù)據(jù)庫用戶等等有關(guān)數(shù)據(jù)庫的信息。本文試圖從數(shù)據(jù)庫管理系統(tǒng)的若干基本概念出發(fā),具體介紹從ORACLE數(shù)據(jù)字典來了解ORACLE的方法。不同的操作系統(tǒng)、不同版本的ORACLE數(shù)據(jù)字典有所差異,本文均以UNIX操作系統(tǒng)、ORAE7為例加以說明。數(shù)據(jù)庫系統(tǒng)實例和數(shù)據(jù)庫標識ORACLE數(shù)據(jù)庫系統(tǒng)包含兩個方面,即ORACLE
2、數(shù)據(jù)庫和ORACLE實例,用戶是通過ORACLE實例來訪問ORACLE數(shù)據(jù)庫的。1.數(shù)據(jù)庫(DATABASE)數(shù)據(jù)庫是作為整體看待的數(shù)據(jù)集合,通常在安裝ORACLE軟件的最后階段創(chuàng)建,用數(shù)據(jù)庫名加以標識(允許18個字符),數(shù)據(jù)庫名在創(chuàng)建數(shù)據(jù)庫時確認,且保存在控制文件中。2.實例(INSTANCE,也譯作例程)實例是存取和控制數(shù)據(jù)庫的軟件機制。它由系統(tǒng)全局區(qū)(System Global Area,即SGA)和ORACLE進程兩部分組成,和數(shù)據(jù)庫名一樣,實例也要唯一標識,并且在安裝ORACLE軟件時確認。我們可以采用下述方法來了解實例標識。有的系統(tǒng)管理員有意無意地將數(shù)據(jù)庫名和實例標識取相同的標識符
3、,當然是可以的,有時甚至會帶來某些方便,但筆者認為,還是取不同標識符為宜。數(shù)據(jù)庫的初始化參數(shù)文件在數(shù)據(jù)庫的建立和運行中,都要閱讀一個初始化參數(shù)文件,它是個文本文件,可以用一般的編輯程序編輯。每一個數(shù)據(jù)庫至少有一個初始化參數(shù)文件,一般命名為INIT.ORA,在UNIX系統(tǒng)下,按照缺省規(guī)定,其初始化參數(shù)文件名的命名原則為INIT后緊跟實例的標識,再加ORA后綴,例如,某實例標識為TEST,其初始化參數(shù)文件名為INITTEST.ORA。數(shù)據(jù)庫的初始化參數(shù)有100多個,前面提到的DB_NAME即是其中之一。此外,還有許多其他參數(shù),如CONTROL-FILES 控制文件名ROLLBACK-SEGMENT
4、S 分配給實例的回滾段名INIT-SQL-FILES 數(shù)據(jù)庫建立時執(zhí)行的命令文件PROCESSES 多進程系統(tǒng)中最大進程數(shù)數(shù)據(jù)庫的物理結(jié)構(gòu)數(shù)據(jù)庫的物理結(jié)構(gòu)是面向操作系統(tǒng)的,它描述數(shù)據(jù)庫中的數(shù)據(jù)的存儲形式。在物理上OACLE數(shù)據(jù)庫文件包括數(shù)據(jù)文件、日志文件和控制文件。1.數(shù)據(jù)文件(DATA FILES)ORACLE數(shù)據(jù)庫中的數(shù)據(jù),邏輯上存放在表空間里,但物理上卻是存放在數(shù)據(jù)文件里的,數(shù)據(jù)文件有如下特點,即每一個數(shù)據(jù)文件只與一個數(shù)據(jù)庫相聯(lián)系,數(shù)據(jù)庫文件一旦建立,就不能改變大小,一個表空間可以包含一個或多個數(shù)據(jù)文件等。我們可以用下述方法來了解數(shù)據(jù)庫的全部數(shù)據(jù)文件。(1)SQLDBA>SELEC
5、T*FROM DBA-DATA-FILES;結(jié)果中,列名FILE-NAME即為數(shù)據(jù)文件名。(2)SQLDBA>SELECT*FROM V$DATAFILE;結(jié)果中,列名NAME即為數(shù)據(jù)文件名。(3)SQLDBA>SELECT*FROM V$DBFILE;結(jié)果中,列名NAME即為數(shù)據(jù)文件名。2.日志文件(REDO LOG FILES)日志文件用于記錄數(shù)據(jù)庫所做的全部變更,以便在系統(tǒng)發(fā)生故障時進行恢復。每一個數(shù)據(jù)庫至少有兩個日志文件。3.控制文件(CONTROL FILES)控制文件雖然是一個較小的二進制文件,但很重要。如果控制文件一旦被破壞,則無法對數(shù)據(jù)庫進行操作。為防止控制文件被破
6、壞,一般一個數(shù)據(jù)庫應至少有二個控制文件,且分別放在不同的磁盤上,控制文件的名字是記錄在參數(shù)CONTROL_FILES中的。數(shù)據(jù)庫的邏輯結(jié)構(gòu)數(shù)據(jù)庫的邏輯結(jié)構(gòu)是面向用戶的,數(shù)據(jù)庫的邏輯結(jié)構(gòu)包含表空間、段、范圍、數(shù)據(jù)塊和模式對象。從邏輯上看數(shù)據(jù)庫有以下特點。一個數(shù)據(jù)庫(DATABASE)由一個或多個表空間所組成。一個表空間(TABLESPACE)由段組成,作為SYSTEM表空間,它由自舉段、回滾段、數(shù)據(jù)段、臨時段等多個段組成,而作為非SYSTEM表空間,則因用途而異由不同段組成。一個段(SEGMENT)由一組范圍組成。一個范圍(EXTENT)由一組連續(xù)的數(shù)據(jù)塊組成。一個數(shù)據(jù)塊(DATABASE BL
7、OCK)對應磁盤上的一個或多個物理塊。在數(shù)據(jù)庫的邏輯結(jié)構(gòu)中,表空間和回滾段比較重要,下面分別加以介紹。1.表空間每一個數(shù)據(jù)庫都必須包含一個名為SYSTEM的表空間。該表空間在創(chuàng)建數(shù)據(jù)庫時由系統(tǒng)自動創(chuàng)建,為了保證數(shù)據(jù)庫能正常運行,SYSTEM表空間必須處于在線狀態(tài)。為了增強對數(shù)據(jù)庫的控制和維護,一般一個數(shù)據(jù)庫都包含多個表空間。使用多個表空間有許多優(yōu)點,例如可以使用戶數(shù)據(jù)與數(shù)據(jù)字典相分離,可以在不同的磁盤上存儲不同表空間的數(shù)據(jù)文件,從而減少I/O沖突,還可以使一些表空間在線,而使另一些表空間離線等等。2.回滾段每一個表空間是都由段組成。ORACLE數(shù)據(jù)庫中的段有數(shù)據(jù)段、索引段、臨時段、回滾段和自舉
8、段。比較重要的是回滾段,它記錄數(shù)據(jù)庫的變更信息,以實現(xiàn)數(shù)據(jù)庫的讀一致性及恢復工作。在SYSTEM表空間里有一個SYSTEM回滾段,是在創(chuàng)建數(shù)據(jù)庫時隨之產(chǎn)生的。如果使用多個表空間,至少還應有一個另外的回滾段?;貪L段分專用和公用兩種,要使用專用回滾段,需要在初始化參數(shù)文件的ROLLBACK-SEGMENTS參數(shù)上寫上專用回滾段的段名并且重新啟動數(shù)據(jù)庫,或者通過回滾段在線命令使它在線。數(shù)據(jù)庫的用戶ORACLE數(shù)據(jù)庫是個多用戶系統(tǒng)。為了保證數(shù)據(jù)庫系統(tǒng)的安全,ORACLE數(shù)據(jù)庫管理系統(tǒng)配制了良好的安全機制。例如,每一個ORACLE數(shù)據(jù)庫都有一個用戶表,它記載著每一個用戶的有關(guān)信息,一旦用戶進入系統(tǒng),OR
9、ACLE系統(tǒng)會通過這張表來檢查用戶的合法性。又如,ORACL系統(tǒng)通過合理分配用戶的權(quán)限來管理用戶。通常,ORACLE將用戶分為三類,即DBA、RESOUCE和CONNECT三類角色,使不同的用戶的權(quán)限各不相同。在創(chuàng)建數(shù)據(jù)庫時,系統(tǒng)自動建立了兩個用戶,即SYS和SYSTEM用戶,且授給這兩個用戶DB權(quán)限,由于DBA具有最高權(quán)限,建議將它們的口令及時修改,以免個別用戶以DBA角色進入系統(tǒng),有意無意地給系統(tǒng)造成損害。除了SYS、SYSTEM用戶外,其余用戶都要一一建立,建立用戶的方法如下:假設要建的用戶名為RSXT,口令為RSPASS;默認的表空間為USER,臨時表空間為TEMP,表空間限額為3M,
10、其余默認,則可用下面方法創(chuàng)建新用戶:SQLDBA>CREATE USER RSXT IDENTIFIED BY RSPASSDEFAULT TABLESPACE USERTEMPORARY TABLESPACE TEMPQUOTA 3M ON USER;請注意,該用戶建立后,還要及時授權(quán),否則像上述剛剛建成的用戶,則一無所為,甚至都不能連接數(shù)據(jù)庫。對一般用戶,通常授予CONNECT和RESOURCE角色權(quán)限,命令如下:SQLDBA>GRANT CONNECT,RESOURCE TO RSXT;對于一個有著許多用戶的數(shù)據(jù)庫系統(tǒng),我們可以通過下述方法來了解數(shù)據(jù)庫的用戶情況。1.對于非D
11、BA用戶對于非DBA用戶,有兩條命令,即:(1)SQL>SELECT*FROM ALL-USERS;(2)SQL>SELECT*FROM USER-USERS;其中,從USER-USERS表中,可以了解到該用戶的默認表空間和臨時表空間等信息。2.對于DBA用戶對于DBA用戶,有三條命令,即:(1)SQLDBA>SELECT*FROM ALL-USERS;(2)SQLDBA>SELECT*FROM USER-USERS;(3)SQLDBA>SELECT*FROM DBA-USERS;其中,從DBA-USERS中,可以了解到所有用戶的詳細信息,因而該命令對于數(shù)據(jù)庫管理
12、員來說是很有用的。關(guān)于非DBA用戶的信息由于DBA用戶具有最高權(quán)限,為安全起見,只有系統(tǒng)管理員才授予DBA權(quán)限,大多數(shù)用戶均為非DBA用戶。盡管相應的權(quán)限少了,但是從ORACLE數(shù)據(jù)字典中,還是可以得到 很多關(guān)于非DBA用戶的有用信息。我們可以采用下述方法來了解有關(guān)非DBA用戶的信息。1.SQL>SELECT*FROM USER-USERS;可以查看該用戶的默認表空間,臨時表空間和用戶創(chuàng)建時間。2.SQL>SELECT*FROM USER-TABLES;可以查看該用戶創(chuàng)建的所有表的詳細信息,由于列名較多,一屏看不了幾個表。如果僅僅想查看用戶所建表的表名,可以用下面的命令:SQL&g
13、t;SELECT TABLE-NAME FROM USER-TABLES;3.SQLSELECT*FROM USER-VIEWS;可以查看該用戶所創(chuàng)建的視圖,包括創(chuàng)建視圖的文本。同樣,如果僅僅想查看用戶所建視圖的視圖名,可以用下面的命令:SQL>SELECT VIEW-NAME FROM USER-VIEWS;4.SQL>SELECT*FROM USER-TABLESPACES;可以查看該用戶可存取的表空間的信息。5.SQL>SELECT TABLESPACE-NAME,SUM(BYTES),SUM(BLOCKS)FROM USER-FREE-SPACE GROUP BY T
14、ABLESPACE-NAME;可以查看該用戶可存取的表空間的剩余空間。6.SQL>SELECT *FROM USER-TS-QUOTAS;可以查看該用戶的表空間的份額。7.SQL>SELECT *FROM USER-ROLE-PRIVS;可以查看該用戶被授予的角色。8.SQL>SELECT *FROM USER-SYS-PRIVS;可以查看該用戶的系統(tǒng)權(quán)限及能否再授予其它用戶的權(quán)限。9.SQL>SELECT *FROM USER-TAB-PRIVS-RECD;可以查看該用戶能訪問其它用戶的表、視圖等的對象權(quán)限。10.SQL>SELECT *FROM USER-TA
15、B-PRIVS-MADE;可以查看該用戶授予其它用戶的表、視圖等的對象權(quán)限。有關(guān)用戶的信息還有很多,這里不再一一列舉,請查看ORACLE數(shù)據(jù)字典。 ORACLE的數(shù)據(jù)字典是數(shù)據(jù)庫的重要組成部分之一,它隨著數(shù)據(jù)庫的產(chǎn)生而產(chǎn)生, 隨著數(shù)據(jù)庫的變化而變化, 表達為sys用戶下的一些表和視圖。數(shù)據(jù)字典名稱是大寫的英文字符。 數(shù)據(jù)字典里存有用戶信息、用戶的權(quán)限信息、所有數(shù)據(jù)對象信息、表的約束條件、統(tǒng)計分析數(shù)據(jù)庫的視圖等。我們不能手工修改數(shù)據(jù)字典里的信息。很多時候,一般的ORACLE用戶不知道如何有效地利用它。dictionary全部數(shù)據(jù)字典表的名稱和解釋,它有一個同義詞dict dict_column
16、全部數(shù)據(jù)字典表里字段名稱和解釋 如果我們想查詢跟索引有關(guān)的數(shù)據(jù)字典時,可以用下面這條SQL語句: SQL>select * from dictionary where instr(comments,'index')>0; 如果我們想知道user_indexes表各字段名稱的詳細含義,可以用下面這條SQL語句: SQL>select column_name,comments from dict_columns where table_name='USER_INDEXES' 依此類推,就可以輕松知道數(shù)據(jù)字典的詳細名稱和解釋,不用查看ORACLE的其
17、它文檔資料了。 下面按類別列出一些ORACLE用戶常用數(shù)據(jù)字典的查詢使用方法。 一、用戶 查看當前用戶的缺省表空間 SQL>select username,default_tablespace from user_users;查看當前用戶的角色SQL>select * from user_role_privs;查看當前用戶的系統(tǒng)權(quán)限和表級權(quán)限SQL>select * from user_sys_privs;SQL>select * from user_tab_privs; 二、表 查看用戶下所有的表 SQL>select * from user_tables; 查
18、看名稱包含log字符的表 SQL>select object_name,object_id from user_objects where instr(object_name,'LOG')>0; 查看某表的創(chuàng)建時間 SQL>select object_name,created from user_objects where object_name=upper('&table_name'); 查看某表的大小 SQL>select sum(bytes)/(1024*1024) as "size(M)" from u
19、ser_segments where segment_name=upper('&table_name'); 查看放在ORACLE的內(nèi)存區(qū)里的表 SQL>select table_name,cache from user_tables where instr(cache,'Y')>0; 三、索引 查看索引個數(shù)和類別 SQL>select index_name,index_type,table_name from user_indexes order by table_name; 查看索引被索引的字段 SQL>select * fro
20、m user_ind_columns where index_name=upper('&index_name'); 查看索引的大小 SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&index_name'); 四、序列號 查看序列號,last_number是當前值 SQL>select * from user_sequences; 五、視圖 查看視圖的名稱 SQL>selec
21、t view_name from user_views; 查看創(chuàng)建視圖的select語句 SQL>set view_name,text_length from user_views; SQL>set long 2000; 說明:可以根據(jù)視圖的text_length值設定set long 的大小 SQL>select text from user_views where view_name=upper('&view_name'); 六、同義詞 查看同義詞的名稱 SQL>select * from user_synonyms; 七、約束條件 查看某表
22、的約束條件 SQL>select constraint_name, constraint_type,search_condition, r_constraint_name from user_constraints where table_name = upper('&table_name'); SQL>select c.constraint_name,c.constraint_type,cc.column_name from user_constraints c,user_cons_columns cc where c.owner = upper('
23、;&table_owner') and c.table_name = upper('&table_name') and c.owner = cc.owner and c.constraint_name = cc.constraint_name order by cc.position; 八、存儲函數(shù)和過程 查看函數(shù)和過程的狀態(tài) SQL>select object_name,status from user_objects where object_type='FUNCTION' SQL>select object_name,s
24、tatus from user_objects where object_type='PROCEDURE' 查看函數(shù)和過程的源代碼 SQL>select text from all_source where owner=user and name=upper('&plsql_name'); Oracle數(shù)據(jù)庫沒有提供直接修改表中列名稱的功能,但在實際使用時常需要修改表的列名和列順序,不得已有些Oracle的使用人員用重新創(chuàng)建一個新的具有正確列名和順序的數(shù)據(jù)庫表,再將舊表的數(shù)據(jù)轉(zhuǎn)儲進來,最后刪除舊表并將新表重命名為舊表的方法來完成此功能。此方法的最大
25、問題是要求有雙倍的存儲空間、較大的回滾段和較長的時間,如果表中數(shù)據(jù)量較大,這項工作開銷會很大。實際上我們可以從數(shù)據(jù)字典中直接修改表列的名稱和順序。下面是具體的實現(xiàn)步驟: 1以internal用戶名登錄Oracle數(shù)據(jù)庫,并創(chuàng)建一測試表。 SQL>CREATE TABLE SCOTT.TEST AS SELECT EMPNO,ENAME FROM SCOTT.EMP; SQL>DESC SCOTT.TEST Name Type Nullable Default Comments - - - EMPNO NUMBER(4) Y ENAME VARCHAR2(10) Y 下面我們要把SC
26、OTT.TEST表中EMPNO和ENAME兩列調(diào)換順序,并把ENAME列更名為EMP_NAME,EMPNO改為EMP_NO。 2查詢表中列的實際存儲位置或表。 SQL>SET LONG 9999 由于TEXT列是LONG類型,只有“SET”之后才能完全顯示。 SQL>SELECT TEXT FROM ALL_VIEWS WHERE VIEW_NAME = USER_TAB_COLUMNS; 數(shù)據(jù)字典視圖USER_TAB_COLUMNS中存儲有表列的定義信息,從該語句的查詢結(jié)果可以看出,列定義信息是存儲在表SYS.COL$中的,即如果修改表中列的定義,應該在SYS.COL$表中修改。
27、 3從數(shù)據(jù)字典視圖ALL_OBJECTS中查找對象SCOTT.TEST對象ID。 SQL> SELECT * FROM ALL_OBJECTS WHERE OWNER =SCOTT AND OBJECT_NAME=TEST; 4根據(jù)SCOTT.TEST對象的ID,從SYS.COL$檢索出表中列的定義信息。 SQL> SELECT OBJ#,COL#,NAME FROM SYS.COL$ WHERE OBJ# =13888; OBJ# COL# NAME - - - 13888 1 EMPNO 13888 2 ENAME 5使用Update語句來進行修改。 UPDATE SYS.COL$ SET COL# = 2,NAME=EMP_NO WHERE OBJ# = 13888 AND NAME=EMPNO; UPDATE SYS.COL$ SET COL# = 1,NAME=EMP_NAME WHERE OBJ# = 13888 AND NAME =ENAME; COMMIT; 6 重啟數(shù)據(jù)庫服務。 由于數(shù)據(jù)字典是在數(shù)據(jù)庫啟動時加載到SQL中的,所以修改了它之后,如果使用“SELECT * FROM SCOTT.TEST; ”,會發(fā)現(xiàn)好像并沒有修改。因此,修改完成之后,還需要重啟數(shù)據(jù)庫服務。 SQL>SHUTDOWN
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025租房合同樣本匯編范本
- 2025保密合同范本
- 2025裝修涂料供貨合同書
- 2025辦公室室內(nèi)裝修合同書
- 2025建筑工程設計版合同
- 2025青年創(chuàng)業(yè)者夏季招聘困局:合同簽訂難題多維權(quán)之路漫漫
- 2025個人借款合同協(xié)議書
- 2025有關(guān)貨車司機勞動合同
- 2025幕墻工程的采購合同范本
- 2025標準商業(yè)代理合同范本
- 政府績效評估 課件 蔡立輝 第6-10章 政府績效評估的結(jié)果應用與改進 -政府績效評估在當代中國的推進
- 2025年職教高考對口升學 護理類 專業(yè)綜合模擬卷(3)(原卷版)(四川適用)
- 煙霧病教學查房
- 我的家鄉(xiāng)成都課件
- 延長石油集團招聘筆試
- 風機及塔筒吊裝工程吊裝方案
- 交流電機控制原理及控制系統(tǒng) 習題及答案 第2-12章 交流電機調(diào)速系統(tǒng)功率電子電路- 全數(shù)字交流電機調(diào)速系統(tǒng)設計
- Java開發(fā)工程師招聘筆試題及解答(某大型國企)2025年
- 【MOOC】電子線路設計、測試與實驗(二)-華中科技大學 中國大學慕課MOOC答案
- 2024年人大題庫考試中國特色社會主義理論題庫答案
- 給青年的十二封信讀書分享
評論
0/150
提交評論