數(shù)據(jù)操作和控制語(yǔ)言詳解_第1頁(yè)
數(shù)據(jù)操作和控制語(yǔ)言詳解_第2頁(yè)
數(shù)據(jù)操作和控制語(yǔ)言詳解_第3頁(yè)
數(shù)據(jù)操作和控制語(yǔ)言詳解_第4頁(yè)
數(shù)據(jù)操作和控制語(yǔ)言詳解_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Oracle數(shù)據(jù)操作和控制語(yǔ)言詳解Oracle數(shù)據(jù)操作和控制語(yǔ)言詳解SQL語(yǔ)言共分為四大類(lèi):數(shù)據(jù)查詢(xún)語(yǔ)言DQL,數(shù)據(jù) 操縱語(yǔ)言DHL,數(shù)據(jù)定義語(yǔ)言DDL,數(shù)據(jù)控制語(yǔ)言DCL。其中用于定義數(shù)據(jù)的結(jié) 構(gòu),比如創(chuàng)建、修改或者刪除數(shù)據(jù)庫(kù);DCL用于定義數(shù)據(jù)庫(kù)用戶的權(quán)限;在這篇文 章中我將詳細(xì)講述這兩種語(yǔ)言在Oracle中的使用方法。DML語(yǔ)言DML是SQL的一個(gè)子集,主要用于修改數(shù)據(jù),下表列岀了 ORACLE支持的DML語(yǔ) 句。語(yǔ)句用途INSERT向表中添加行UPDATE更新存儲(chǔ)在表中的數(shù)據(jù)DELETE刪除行SELECT FOR UPDATE禁止其他用戶訪問(wèn)DHL語(yǔ)句正在處理的行。LOCK TABLE

2、禁止其他用戶在表中使用DML語(yǔ)句插入數(shù)據(jù)INSERT語(yǔ)句常常用于向表中插入行,行中可以有特殊數(shù)據(jù)字段,或者可以用子查 詢(xún)從己存在的數(shù)據(jù)中建立新行。列目錄是可選的,缺省的列的目錄是所有的列名,包括comlumn_id, comlumn_id可 以在數(shù)據(jù)字典視圖 ALL_TAB_COLUMXS, USER_TAB_COLUMNS,或者 DBA_TAB_COLUMXS 中 找到。插入行的數(shù)據(jù)的數(shù)量和數(shù)據(jù)類(lèi)型必須和列的數(shù)量和數(shù)據(jù)類(lèi)型相匹配。不符合列定義 的數(shù)據(jù)類(lèi)型將對(duì)插入值實(shí)行隱式數(shù)據(jù)轉(zhuǎn)換。NULL字符串將一個(gè)NULL值插入適當(dāng)?shù)?列中。關(guān)鍵字NULL常常用于表示將某列定義為NULL值。下而的兩個(gè)例子

3、是等價(jià)的。DE INSERT INTO customers(cust_id, state, post_code)VALUE ('Ariel', NULL,'94501'); DEDE INSERT INTO customers (cust_id, state, post_code)VALUE('Ariel','94501'); DE更新數(shù)據(jù)UPDATE命令用于修改表中的數(shù)據(jù)。DE UPDATE order_rollup SET (qty, price) = (SELECT SUM(qty), SUM(price)FROM orde

4、r_lines WHERE customer_id=,KOHL*WHERE cust_id二'KOHL*AND order_period=TO_DATE(,01-0社-2000' )DE刪除數(shù)據(jù)DELETE語(yǔ)句用來(lái)從表中刪除一行或多行數(shù)據(jù),該命令包含兩個(gè)語(yǔ)句:1、關(guān)鍵字DELETE FROM后跟準(zhǔn)備從中刪除數(shù)據(jù)的表名。2、WHERE后跟刪除條件DE DELETE FROM po_lines WHERE ship_to_state IN('TX',' NY','IL')AND order_date td DE清空表如果你想刪除表中所

5、有數(shù)據(jù),清空表,可以考慮使用DDL語(yǔ)言的TRUNCATE語(yǔ)句。 TRUNCATE就像沒(méi)有WHERE子句的DELETE命令一樣。TRUNCATE將刪除表中所有行。 TRUNCATE不是DHL語(yǔ)句是DDL語(yǔ)句,他和DELETE右不同的特點(diǎn)。DE TRUNCATE TABLE (schema) table DROP (REUSE) STORAGE DE STORAGE 子串是可選 的,缺省是DROP STORAGEo當(dāng)使用DROP STORAGE時(shí)將縮短表和表索引,將表收縮 到最小范圍,并重新設(shè)置NEXT參數(shù)。REUSE STORAGE不會(huì)縮短表或者調(diào)整NEXT參 數(shù)。TRUNCATE和DELETE

6、有以下幾點(diǎn)區(qū)別1、TRUNCATE在各種表上無(wú)論是大的還是小的都非??臁H绻蠷OLLBACK命令 DELETE將被撤銷(xiāo),而TRUNCATE則不會(huì)被撤銷(xiāo)。2、TRUNCATE是一個(gè)DDL語(yǔ)言,向其他所有的DDL語(yǔ)言一樣,他將被隱式提交,不 能對(duì)TRUNCATE使用ROLLBACK命令。3、TRUNCATE將重新設(shè)置高水平線和所有的索引。在對(duì)整個(gè)表和索引進(jìn)行完全瀏覽 時(shí),經(jīng)過(guò)TRUNCATE操作后的表比DELETE操作后的表要快得多。4、TRUNCATE不能觸發(fā)任何DELETE觸發(fā)器。5、不能授予任何人清空他人的表的權(quán)限。6、當(dāng)表被清空后表和表的索引講重新設(shè)置成初始大小,而delete則不能。7

7、、不能清空父表。SELECT FOR UPDATE select for update語(yǔ)句用于鎖定行,阻止其他用戶在該行上 修改數(shù)據(jù)。當(dāng)該行被鎖定后其他用戶可以用SELECT語(yǔ)句查詢(xún)?cè)撔械臄?shù)據(jù),但不能 修改或鎖定該行。鎖定表LOCK語(yǔ)句常常用于鎖定整個(gè)表。當(dāng)表被鎖定后,大多數(shù)DML語(yǔ)言不能在該表上使 用。LOCK語(yǔ)法如下:DE LOCK schema table IN lock_modeDE其中l(wèi)ock_mode有兩個(gè)選項(xiàng):share共享方式exclusive 唯'方式例:DE LOCK TABLE intentory IN EXCLUSIVE MODEDE死鎖當(dāng)兩個(gè)事務(wù)都被鎖定,并且

8、互相都在等待另一個(gè)被解鎖,這種情況稱(chēng)為死鎖。當(dāng)岀現(xiàn)死鎖時(shí),ORACLE將檢測(cè)死鎖條件,并返回一個(gè)界常。事務(wù)控制 事務(wù)控制包括協(xié)調(diào)對(duì)相同數(shù)據(jù)的多個(gè)同步的訪問(wèn)。當(dāng)一個(gè)用戶改變了另一個(gè)用戶正 在使用的數(shù)據(jù)時(shí),oracle使用事務(wù)控制誰(shuí)可以操作數(shù)據(jù)。事務(wù)事務(wù)表示工作的一個(gè)基本單元,是一系列作為一個(gè)單元被成功或不成功操作的SQL 語(yǔ)句。在SQL和PL/SQL中有很多語(yǔ)句讓程序員控制事務(wù)。程序員可以:1、顯式開(kāi)始一個(gè)事物,選擇語(yǔ)句級(jí)一致性或事務(wù)級(jí)一致性2、設(shè)置撤銷(xiāo)回滾點(diǎn),并回滾到回滾點(diǎn)3、完成事務(wù)永遠(yuǎn)改變數(shù)據(jù)或者放棄修改。事務(wù)控制語(yǔ)句語(yǔ)句用途Commit完成事務(wù),數(shù)據(jù)修改成功并對(duì)其他用戶開(kāi)放Rollbac

9、k撤銷(xiāo)事務(wù),撤銷(xiāo)所有操作rollback to savepoint撤銷(xiāo)在設(shè)置的回滾點(diǎn)以后的操作set transaction響應(yīng)事務(wù)或語(yǔ)句的一致性;特別對(duì)于事務(wù)使用回滾段例:DE BEGIN UPDATE checking SET balance二balance-5000 WHERE accountKieesha,;INSERT INTO checking_log(action_date, action, amount)VALUES(SYSDATE, * Transfer to brokerage*, -5000);UPDATE brokerage SET cash_balance=cash_

10、balance+5000 WHERE accountKiesha";INSERT INTO brokerage_log(action_date, action, amount)VALUES(SYSDATE,' Tracfer from checking', 5000)COMMIT EXCEPTION WHEN OTHERS ROLLBACK ENDDE Savepoint 和部分回滾(Partial Rollback)在SQL和PL/SQL中Savepoint是在一事務(wù)范圍內(nèi)的中間標(biāo)志。經(jīng)常用于將一個(gè)長(zhǎng) 的事務(wù)劃分為小的部分。保留點(diǎn)Savepoint可標(biāo)志長(zhǎng)事務(wù)中的任

11、何點(diǎn),允許可回滾 該點(diǎn)之后的操作。在應(yīng)用程序中經(jīng)常使用Savepoint;例如一過(guò)程包含幾個(gè)函數(shù), 在每個(gè)函數(shù)前可建立一個(gè)保留點(diǎn),如果函數(shù)失敗,很容易返回到每一個(gè)函數(shù)開(kāi)始的 情況。在回滾到一個(gè)Savepoint之后,該Savepoint之后所獲得的數(shù)據(jù)封鎖被釋 放。為了實(shí)現(xiàn)部分回滾可以用帶TO Savepoint子句的ROLLBACK語(yǔ)句將事務(wù)回滾到 指定的位置。例DE BEGIN INSERT INTO ATM_LOG(who, when, what, where)VALUES (' Kiesha,, SYSDATE,' Withdrawal ofO',' A

12、TM54')SAVEPOINT ATM_LOGGED;UPDATE checking SET balance二balanceTOO RETURN balance INTO new_balance;IF new_balance 0THEN ROLLBACK TO ATM_LOGGED;COMMIT RAISE insufficient_funda;END IF END DE關(guān)鍵字SAVEPOINT是可選的,所以下而兩個(gè)語(yǔ)句是等價(jià)的:DE ROLLBACK TO ATM_LOGGED:ROLLBACK TO SAVEPOINT ATM_LOGGED; DE一致性和事務(wù)一致性是事物控制的關(guān)鍵

13、慨念。掌握了 oracle的一致性模型,能使您更好的,更 恰當(dāng)?shù)氖褂檬聞?wù)控制。oracle通過(guò)一致性保證數(shù)據(jù)只有在事務(wù)全部完成后才能被 用戶看見(jiàn)和使用。這項(xiàng)技術(shù)對(duì)多用戶數(shù)據(jù)庫(kù)有巨大的作用。oracle常常使用語(yǔ)句級(jí)(state-level) 一致性,保證數(shù)據(jù)在語(yǔ)句的生命期之間是可 見(jiàn)的但不能被改變。事務(wù)由多個(gè)語(yǔ)句組成,當(dāng)使用事務(wù)時(shí),事物級(jí)(transactionlevel)- 致性在整個(gè)事務(wù)生命期中保證數(shù)據(jù)對(duì)所有語(yǔ)句都是可見(jiàn)的。oracle通過(guò)SCN(syatem change number)實(shí)施一致性。一個(gè)SCN是一個(gè)面向時(shí)間的 數(shù)據(jù)庫(kù)內(nèi)部鍵。SCN只會(huì)增加不會(huì)減少,SCN表示了時(shí)間上的一個(gè)

14、點(diǎn),每個(gè)數(shù)據(jù)塊 都有一個(gè)SCN,通過(guò)比較這個(gè)點(diǎn)實(shí)施操作。事務(wù)級(jí)一致性SET TRANSACTION的一個(gè)作用是確保事務(wù)級(jí)一致或語(yǔ)句級(jí)一致中有一個(gè)實(shí)施。 ORACLE使用這些術(shù)語(yǔ):ISOLATION LEVEL READ COMMIT 表示語(yǔ)句級(jí)一致ISOLATION LEVEL SERIALIZABLE 表示事務(wù)級(jí)一致。例:DE SET TRANSACTION ISOLATION LEVEL READ COMMIT;SET TRANSACTION ISOLATION LEVEL READ COWITDE下而的語(yǔ)句也能確保事務(wù)級(jí)一致:DE SET TRANSCATION READ ONLYDE任

15、何企圖在只讀(READ ONLY)事務(wù)中修改數(shù)據(jù)的操作都會(huì)拋出一個(gè)并常。但是, READ ONLY事務(wù)只能在下列語(yǔ)句中使用:DE SELECT (沒(méi)有 FOR UPDATE 子句)LOCK TABLE SET ROLE ALTER SYSTEM ALTER ALARMDE即使沒(méi)有改變?nèi)魏螖?shù)據(jù),READ O'LY事務(wù)依然必須使用一個(gè)COMMIT或ROLLBACK以 結(jié)束整個(gè)事務(wù)。SET TRANSCTION的另外一個(gè)應(yīng)用是在回滾時(shí)直接使用回滾段(ROLLBACKSEGMENT) o回滾段是ORACLE的一個(gè)特殊的數(shù)據(jù)對(duì)象,回滾段的頭部包含正在使用 該回滾段事務(wù)的信息。當(dāng)用戶回滾事務(wù)(RO

16、LLBACK)時(shí),ORACLE將會(huì)利用回滾段中 的數(shù)據(jù)前影像來(lái)將修改的數(shù)據(jù)恢復(fù)到原來(lái)的值。oracle用round-robin給事務(wù)隨 機(jī)分配回滾段。一個(gè)大的事務(wù)可以分配任何回滾段,這也許會(huì)導(dǎo)致回滾段的大小變 得很大。因此要避免讓大的事務(wù)隨機(jī)分配回滾段。事務(wù)以SET TRANSACTION開(kāi)始,象下而這樣:DE SET TRANSACTION USE ROLLBACK SEGMENT rb_large; DE rb_large 是一個(gè)大的 回滾段的名稱(chēng),現(xiàn)在就給一個(gè)大的事務(wù)分配了一個(gè)大的回滾段,其他的小的回滾段 將不由動(dòng)態(tài)空間管理,這樣就更有效率。下而我們看一個(gè)例子.我們有一個(gè)回滾段表空間大小

17、是2G,在高峰時(shí)期需要10個(gè) 回滾段以滿足用戶的需要,這些高峰在線用戶只有小的事務(wù)。一周我們連續(xù)運(yùn)行了 4個(gè)大的事務(wù),這些事務(wù)需要?jiǎng)h除和加載數(shù)據(jù),每一個(gè)撤銷(xiāo)需要1G,回滾段的大小 如下:DE rb_large(initial 100M minextenta 2)rbl (initial IM next minextents 5)rb2 (initial IM next minextents 5)rb3 (initial IM next minextents 5)rb4 (initial IM next minextents 5)rb5 (initial IM next minextents 5

18、)rb6(initial IM next minextents 5)rb7 (initial IM next minextents 5)rb8(initial IM next minextents 5)rb9 (initial IM next minextents 5)rblO(initial IM next minextents 5)DE所有的都非常恰當(dāng)?shù)陌才旁?G的表空間中,如果我們?nèi)笔〉膔ound-robin給事務(wù) 分配回滾段,4個(gè)大事務(wù)將有4個(gè)獨(dú)立的回滾段,每個(gè)回滾段的大小將是1G,如果 這樣我們的2G表空間就不夠,而數(shù)據(jù)庫(kù)管理員就不得不在夜晚2點(diǎn)起來(lái)工作,每 個(gè)事務(wù)都由以下而的語(yǔ)句開(kāi)

19、始:DE SET TRANSACTION USE ROLLBACK SEGMENT rb_large DE現(xiàn)在4個(gè)事務(wù)重用相同的表空間,保正4個(gè)回滾段的表空間在2G以?xún)?nèi)。數(shù)據(jù)庫(kù)管 理員可以睡到天亮。建立和修改用戶CREATE USER語(yǔ)句將建立一個(gè)用戶。當(dāng)一個(gè)用戶連接到ORACLE數(shù)據(jù)庫(kù)時(shí),它必須 被驗(yàn)證。ORACLE中驗(yàn)證有三種類(lèi)型:Database external Global缺省是數(shù)據(jù)庫(kù)驗(yàn)證,當(dāng)用戶連接到數(shù)據(jù)庫(kù)時(shí),oracle將檢測(cè)用戶是否是數(shù)據(jù)庫(kù)的 合法用戶,并且要提供正確的password, external驗(yàn)證,oracle將只檢測(cè)用戶是 否是合法用戶,password已經(jīng)被網(wǎng)絡(luò)

20、或系統(tǒng)驗(yàn)證了。global驗(yàn)證也是只檢測(cè)是否 是合法用戶,password 由 oraclesecurity server 驗(yàn)證。Database驗(yàn)證用戶賬號(hào)數(shù)據(jù)庫(kù)驗(yàn)證賬號(hào)是張好的缺省類(lèi)型,也是最普通的類(lèi)型。建立一個(gè)賬號(hào)是piyush, 口令是welcome的賬號(hào),只需執(zhí)行下而的命令:DE CREATE USE piyush IDENTIFIED BY welcomeDE piyush 可以通過(guò)下而的語(yǔ)句將 口令改變?yōu)閟araswatt:DE ALTER USER piyush IDENTIFIED BY saraswati; DE外部驗(yàn)證用戶賬號(hào)用戶賬號(hào)進(jìn)入數(shù)據(jù)庫(kù)時(shí)可以不提供口令,這種情況下

21、代替數(shù)據(jù)庫(kù)識(shí)別口令的是客戶 端操作系統(tǒng)。外部驗(yàn)證賬號(hào)有時(shí)也叫OPS$賬號(hào),當(dāng)他們最初在oracle6開(kāi)始介紹 時(shí),oracle賬號(hào)都有關(guān)鍵字前綴OPS$,這也就是為什么init. ora參數(shù) os_authent_pref ix 是 OPS$-默認(rèn)特征與 oracle6 保持一致。os_authent_pref ix 定及的字符串必須被預(yù)處理為用于Oracle外部識(shí)別賬號(hào)的操作紊統(tǒng)賬號(hào)名。創(chuàng)建 操作系統(tǒng)用戶appl的語(yǔ)句是:DE CREATE USER ops$appl IDENTIFIED EATERNALLYDE但在通常情況下,os_authent_prefix將被設(shè)置為空,像下而這樣:D

22、E CREATE USER appl IDENTIFIED EATERNALLYDE這樣效果是一樣的,關(guān)鍵字IDENTIFIED EXTERNALLY告訴ORACLE這是一個(gè)外部識(shí)別 賬號(hào)。GLOBAL用戶賬號(hào)GLOBAL類(lèi)型的用戶賬號(hào)數(shù)據(jù)庫(kù)不檢測(cè)口令,而是由X. 509目錄服務(wù)器檢測(cè)口令。 創(chuàng)建一個(gè)GLOBAL類(lèi)型的用戶賬號(hào)的方法是:DE CREATE USER scott IDENTIFIED GLOBALLYAS"CN二scott, OU二divisional, 0二sybex, C=US"DE關(guān)鍵字IDENTIFIED GLOBALLY AS表示建立的是一個(gè)GLOB

23、AL類(lèi)型的用戶賬號(hào).創(chuàng)建和更改用戶賬號(hào)CREATE USER用于建立用戶賬號(hào)和給用戶賬號(hào)的屬性賦值。ALTER USER用于更改用 戶賬號(hào)和屬性。但CREATE USER語(yǔ)句必須包括用戶名和口令。有部分屬性能用CREATER USER和ALTER USER語(yǔ)句設(shè)置,下而對(duì)是這些的屬性具體 描述:給用戶分配缺省表空間表空間(tablespace)是放置表、索引、叢等用戶對(duì)象的。如果在create user語(yǔ)句 中沒(méi)有包含表空間,那么缺省的是系統(tǒng)表空間。DE CREATE USER piyush IDENTIFIED BY saraswati DEFAULTE TABLESPACE user_da

24、ta;ALTER USER manoj DEFAULTE TABLESPACE devl_data; DE給用戶分配臨時(shí)表空間臨時(shí)表空間,顧名思義是臨時(shí)存放表、索引等用戶對(duì)象的臨時(shí)段。建立方法一樣DE CREATE USER piyush IDENTIFIED BY saraswati Temporary TABLESPACE user_data;ALTER USER manoj Temporary TABLESPACE devl_data; DE給用戶分配表空間的使用定額使用定額限制用戶在表空間中使用磁盤(pán)的數(shù)量。定額可以按字節(jié)、千字節(jié)、兆字節(jié) 或者無(wú)限制來(lái)制定。DE CREATE USER

25、piyush IDENTIFIED BY saraswati DEFAULT TABLESPACE user_data QUOTA UNLIMITED ON user_data QUOTA 20M ON tools;ALTER USER manoj QUOTA 2500K ON tools: DE給用戶分配一個(gè)簡(jiǎn)表簡(jiǎn)表可以限制用戶在會(huì)話時(shí)消耗的資源。這些資源包括:連接數(shù)據(jù)庫(kù)的時(shí)間,空閑 時(shí)間,每次會(huì)話的邏輯讀數(shù)據(jù)的數(shù)量等等,缺省的簡(jiǎn)表對(duì)資源無(wú)限制。DE CREATE USER piyush IDENTIFIED BY saraswati PROFILE TABLESPACE user_data

26、;ALTER USER manoj Temporary TABLESPACE devl_data; DE為用戶響應(yīng)指定角色這個(gè)屬性只能由ALTER USER語(yǔ)句設(shè)置,試圖用CREATE USER語(yǔ)句設(shè)置將回返回一 個(gè)例外。DE ALTER USER manoj DEFAULT ROLE ALL EXCEPT salary_adm: DE為用戶的password設(shè)定到期時(shí)間以便在用戶下次登錄時(shí)更改當(dāng)用戶的password到期,在下一次登錄時(shí)將強(qiáng)迫修改password, oracle提示用戶 輸入舊的password,然后輸入新的password。這項(xiàng)功能常用于新用戶,當(dāng)新用戶用 缺省的passw

27、ord登錄時(shí)必須修改立即修改password.DE ALTER USER manoj IDENTIFIED BY welcome;ALTER USER manoj PASSWORD EXPIRE; DE鎖定賬號(hào),是用戶不能登錄DE ALTER USER ql AC COUNT LOCK DE對(duì)賬號(hào)解鎖,以便用戶能登錄數(shù)據(jù)庫(kù)DE ALTER USER ql ACCOUNT UNLOCK DE DE權(quán)限和角色權(quán)限允許用戶訪問(wèn)屬于其它用戶的對(duì)象或執(zhí)行程序,ORACLE系統(tǒng)提供三種權(quán)限:Object對(duì)象級(jí)System系統(tǒng)級(jí)Role角色級(jí)這些權(quán)限可以授予給用戶、特殊用戶public或角色,如果授予一個(gè)權(quán)

28、限給特殊用 戶,Public,/(用戶public是oracle預(yù)定義的,每個(gè)用戶享有這個(gè)用戶享有的權(quán)限), 那么就意味作將該權(quán)限授予了該數(shù)據(jù)庫(kù)的所有用戶。對(duì)管理權(quán)限而言,角色是一個(gè)工具,權(quán)限能夠被授予給一個(gè)角色,角色也能被授予 給另一個(gè)角色或用戶。用戶可以通過(guò)角色繼承權(quán)限,除了管理權(quán)限外角色服務(wù)沒(méi)有 其它目的。權(quán)限可以被授予,也可以用同樣的方式撤銷(xiāo)。建立和使用角色如前所訴,角色存在的目的就是為了使權(quán)限的管理變得輕松。建立角色使用 CREATE ROLE語(yǔ)句,他的語(yǔ)法如下:DE CREATE ROLE role_name IDENTIFIED BY password CREATE ROLE r

29、ole_name IDENTIFIED EXTERNALLY CREATE ROLE role_name IDENTIFIED GLOBALLYDE缺省情況下建立的角色沒(méi)有password或者其他的識(shí)別。如果使用IDENTIFIED BY 子句建立,那么角色不會(huì)自動(dòng)響應(yīng),必須用SET ROLE激活。DE SET ROLE role_name IDENTIFIED BY passwordDE EXTERNALLY 和 GLOBALLY 類(lèi) 型的角色由操作系統(tǒng)和ORACLE Service server驗(yàn)證。通常用戶需要權(quán)限修改應(yīng)用 程序中使用的表單中的數(shù)據(jù),但是只有在應(yīng)用程序運(yùn)行時(shí)而不是在使用a

30、d hoc工 具時(shí),這種上下文敏感安全可以通過(guò)有PASSWORD的角色來(lái)實(shí)現(xiàn)。當(dāng)用戶在應(yīng)用程 序內(nèi)部連結(jié)數(shù)據(jù)庫(kù)時(shí),代碼將執(zhí)行SET ROLE命令,通過(guò)安全驗(yàn)證。所以用戶不需 要知道角色的password,也不需要自己輸入SET ROLE命令。對(duì)象權(quán)限對(duì)象權(quán)限就是指在表、視圖、序列、過(guò)程、函數(shù)或包等對(duì)象上執(zhí)行特殊動(dòng)作的權(quán) 利。有九種不同類(lèi)型的權(quán)限可以授予給用戶或角色。如下表:權(quán)限 ALTERDELETEEXECUTEINDEXINSERTREADREFERENCESELECTUPDATEDirectorynononononoyesnonono functionnonoyesnononononon

31、o procedurenonoyesnononononono packagenonoyesnononononono DBObjectnonoyesnononononono LibarynonoyesnonononononoOperationnonoyesnononononono Sequenceyesnononononononono Tableyesyesnoyesyesnoyesyesyes Typenonoyesnononononono Viewnoyesnonoyesnonoyesyes對(duì)象由不止一個(gè)權(quán)限,特殊權(quán)限ALL可以被授了或撤銷(xiāo)。如TABLE的ALL權(quán)限就包 括:SELECT,

32、INSERT, UPDATE 和 DELETE,還有 INDEX, ALTER,和 REFERENCE o如何看這個(gè)表我們以ALTER權(quán)限為例進(jìn)行說(shuō)明ALTER權(quán)限允許執(zhí)行ALTER TABLE和LOCK TABLE操作,ALTER TABLE可以進(jìn)行如下操作:.更改表名.增加或刪除列 .改變列的數(shù)據(jù)類(lèi)型或大小.將表轉(zhuǎn)變?yōu)榉謪^(qū)表 在SEQUENCE上的ALTER權(quán)限允許執(zhí)行ALTER Sequence語(yǔ)句,重新給sequence分 配最小值、增量和緩沖區(qū)大小。系統(tǒng)權(quán)限系統(tǒng)權(quán)限需要授予者有進(jìn)行系統(tǒng)級(jí)活動(dòng)的能力,如連接數(shù)據(jù)庫(kù),更改用戶會(huì)話、建 立表或建立用戶等等。你可以在數(shù)據(jù)字典視圖system_

33、privilege_map上獲得完整 的系統(tǒng)權(quán)限。對(duì)象權(quán)限和系統(tǒng)權(quán)限都通過(guò)GRANT語(yǔ)句授予用戶或站色。需要注意的 是在授予對(duì)象權(quán)限時(shí)語(yǔ)句應(yīng)該是WITH GRANT OPTION子句,但在授了系統(tǒng)權(quán)象時(shí)語(yǔ) 句是WITH ADMIN OPTION,所以在你試圖授予系統(tǒng)權(quán)限時(shí),使用語(yǔ)句WITH GRANT OPTION 系統(tǒng)會(huì)報(bào)告一個(gè)錯(cuò)誤:ONLY ADMIN OPTION can be specified。在考試中 要特別注意這個(gè)語(yǔ)法和錯(cuò)誤信息。角色和角色權(quán)限角色權(quán)限就是將屬于用戶的權(quán)限授予一個(gè)角色。任何權(quán)限都可以授予給一個(gè)角色。 授予系統(tǒng)權(quán)限給被授T者必須使用WITH_ADMIN_OPTION子句,在會(huì)話期間通過(guò)SET ROLE語(yǔ)句授予或撤銷(xiāo)角色權(quán)限。然而,站色權(quán)頑不能依靠存儲(chǔ)在SQL中的權(quán)限。 如果函數(shù)、程序、包、觸發(fā)器或者方法使用另一個(gè)計(jì)劃擁有的對(duì)象,那么就必須直 接給對(duì)象的擁有者授權(quán),這是因?yàn)闄?quán)限不會(huì)在會(huì)話之間改變。授了和撤銷(xiāo)權(quán)限 給用戶或者角色授了權(quán)限使用GRANT語(yǔ)句,GRANT語(yǔ)句的語(yǔ)法如下:DE GRANT ROLE(或 s

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論