oracle學(xué)習(xí)資料說課材料_第1頁
oracle學(xué)習(xí)資料說課材料_第2頁
oracle學(xué)習(xí)資料說課材料_第3頁
oracle學(xué)習(xí)資料說課材料_第4頁
oracle學(xué)習(xí)資料說課材料_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Good is good, but better carries it.精益求精,善益求善。oracle學(xué)習(xí)資料-載道名師課堂網(wǎng)()前言:Oracle9i與10g的區(qū)別不大,可以說很小很小,如果真要說區(qū)別的話,那估計就是性能,功能的增加.差別不大,學(xué)習(xí)好了9i也就學(xué)習(xí)好了10g。權(quán)限管理:oracle9里面默認(rèn)的三個用戶名和密碼:syschange_on_install/權(quán)限最高的管理員systemmanager/普通的管理員scotttiger/普通用戶在oracle10中,仍然使用這三個用戶作為默認(rèn)用戶。但sys和system用戶的密碼不再默認(rèn)。在安裝數(shù)據(jù)庫的時權(quán)限管理:oracle9里面

2、默認(rèn)的三個用戶名和密碼:syschange_on_install/權(quán)限最高的管理員systemmanager/普通的管理員scotttiger/普通用戶在oracle10中,仍然使用這三個用戶作為默認(rèn)用戶。但sys和system用戶的密碼不再默認(rèn)。在安裝數(shù)據(jù)庫的時候,可以由用戶指定。從安全角度考慮,scott用戶默認(rèn)被鎖定,所以要使用該用戶,需要先解除鎖定。注意:我們要使用oracle數(shù)據(jù)庫,至少要啟動兩個服務(wù),一個是監(jiān)聽服務(wù),一個是數(shù)據(jù)庫實例。創(chuàng)建用戶;以系統(tǒng)管理員的身份登陸。使用語句:createuserlisiidentifiedbylisi;/創(chuàng)建了一個叫l(wèi)isi的用戶,密碼也為lis

3、i雖然創(chuàng)建了用戶,但該用戶現(xiàn)在并無任何權(quán)限。就連登陸數(shù)據(jù)庫的權(quán)限都沒有。假如使用:sqlpluslisi/lisi登陸數(shù)據(jù)庫,會報錯,顯示沒有createsession的權(quán)限。所以還是先使用系統(tǒng)管理員給lisi這個用戶指定登陸的權(quán)限。語句為:grantcreatesessiontolisi;授權(quán)過后,lisi可以登陸數(shù)據(jù)庫了。但是現(xiàn)在還沒有創(chuàng)建數(shù)據(jù)庫表的權(quán)限,仍需指定。語句為:grantcreatetabletolisi;使用lisi賬號,創(chuàng)建數(shù)據(jù)庫表:createtablemytable(idint);執(zhí)行后卻提示錯誤:對表空間USERS無權(quán)限。每個數(shù)據(jù)庫表都有自己的表空間,相當(dāng)于文件必須位

4、于某個文件夾下。雖然lisi用戶具有創(chuàng)建表的權(quán)限,但沒有使用表空間的權(quán)限,最終還是創(chuàng)建不了表。這就好比你有我房間的鑰匙,但是沒有我家大門的鑰匙,你最終還是進(jìn)不了我的房間。通過系統(tǒng)管理員授予lisi用戶使用表空間的權(quán)限:grantunlimitedtablespacetolisi;這樣用戶lisi對表空間的使用就沒有限制了。在lisi賬戶下,創(chuàng)建表:createtablemytable(idint);插入一條記錄:insertintomytablevalues(1);插入成功。也可以刪除表:droptablemytable;有人可能會產(chǎn)生疑問,既然數(shù)據(jù)庫的權(quán)限管理這么嚴(yán)格,上面我們只是授予lis

5、i用戶創(chuàng)建表的權(quán)限。并沒有授予其插入,刪除等權(quán)限呀。這里我們可以這樣理解:當(dāng)前用戶創(chuàng)建了一個表,那么該表就屬于該用戶,用戶既然創(chuàng)建了表,自然就對該表擁有一切權(quán)限啦。而且:數(shù)據(jù)庫并沒有droptable的權(quán)限。使用:grantdroptabletolisi;出現(xiàn):權(quán)限缺失或無效的錯誤提示。上面是授予權(quán)限,那么如何撤銷用戶的某個權(quán)限呢?使用如下語句可以撤銷lisi的創(chuàng)建表的權(quán)限:revokecreatetablefromlisi;再使用lisi賬號創(chuàng)建表,就會出現(xiàn)錯誤提示:權(quán)限不足。在大多情況下,如果我們對用戶的權(quán)限經(jīng)常修改,我們?nèi)绾沃烙脩粲心男?quán)限呢?數(shù)據(jù)庫默認(rèn)維護(hù)了一個視圖對外提供一些系統(tǒng)信

6、息(叫數(shù)據(jù)字典),可以查看用戶的具體權(quán)限。使用如下語句查看當(dāng)前用戶的系統(tǒng)權(quán)限:select*fromuser_sys_privs;USRENAMEPRIVILEGEADM-LISICREATESESSIONNOLISIUNLIMITEDTABLESPACENOoracle中的權(quán)限分為系統(tǒng)權(quán)限和對象權(quán)限。系統(tǒng)權(quán)限就是我們上面所講的一些權(quán)限。對象權(quán)限是指:比如用戶lisi創(chuàng)建了一個表,該表就可以作為一個對象看待。另外一個用戶是否有訪問該表的權(quán)限呢。這就是所謂的對象權(quán)限管理。我們在創(chuàng)建一個用戶wangwu。密碼也為wangwu。在該用戶下,創(chuàng)建一個表mytab。如果lisi用戶向訪問表mytab,是

7、否會成功呢?在lisi的窗口下,輸入:select*frommytab;報錯:表或視圖不存在。我們知道表屬于表的創(chuàng)建者。這里我們直接查詢表mytab,數(shù)據(jù)庫會到當(dāng)前用戶下尋找該表,顯然當(dāng)前用戶lisi沒有表mytab。所以提示表或視圖不存在。那我們指定表的所有者,再次查詢:select*fromwangwu.mytab;窗口顯示“權(quán)限不足”的錯誤提示。由此可知,雖然找到了mytab表,卻沒有訪問的權(quán)限。只有表的擁有者才可以授予該表的相關(guān)權(quán)限給其他用戶。使用用戶wangwu的操作窗口,使用如下語句,把查詢語句授予lisi;grantselectonmytabtolisi;執(zhí)行此語句后,lisi就

8、可以查詢用戶wangwu的mytab表了。如果要獲得其他對于mytab表的權(quán)限,仍然需要指定(多個權(quán)限同時指定,用逗號分隔):grantupdate,select,deleteonmytabtolisi;如果要把表的所有權(quán)限都賦予給用戶lisi,可以這樣寫;grantallonmytabtolisi;在wangwu的窗口下,向mytab插入幾條數(shù)據(jù)。然后查詢,卻顯示“未選定行”。說明剛才的插入沒有同步到數(shù)據(jù)庫中去。在oracle下,默認(rèn)需要對sql語句手動進(jìn)行提交。所以在幾條插入語句后,可以執(zhí)行commit;語句提交。再次查詢,表中就有數(shù)據(jù)了。如果要把某個權(quán)限授予所有的用戶,可以使用publi

9、c關(guān)鍵字:grantcreatesessiontopublic;查看當(dāng)前用戶的對象權(quán)限,使用如下語句:select*fromuser_tab_privs;oracle的權(quán)限控制粒度很細(xì),甚至可以精確到某一列的權(quán)限。grantupdate(name)onmytabtolisi;這句執(zhí)行的效果就是,lisi用戶對表mytab僅擁有更新name這一列的權(quán)限。grantinsert(id)onmytabtolisi;查看當(dāng)前用戶對數(shù)據(jù)庫表的列的權(quán)限:select*fromuser_col_privs;在lisi權(quán)限下,執(zhí)行:updatewangwu.mytabsetname=fdsfa,id=dfsw

10、hereid=1;執(zhí)行后顯示權(quán)限不足。updatewangwu.mytabsetname=fsawhereid=1;這樣就可以了。同樣執(zhí)行:insertintowangwu.mytabvalues(4,asf);執(zhí)行后也顯示權(quán)限不足。修改語句為:insetintowangwu.mytab(id)values(4);成功執(zhí)行。只能對更新和插入設(shè)定精確到某列的權(quán)限控制,不能對查詢和刪除設(shè)定。命令:showuser可以查看當(dāng)前用戶數(shù)據(jù)庫有三種類型的語句:ddl:數(shù)據(jù)定義語言,指定是數(shù)據(jù)庫表的創(chuàng)建,刪除之類的操作。dml:數(shù)據(jù)操縱語言,針對表的增刪改查操作,只有dml需要進(jìn)行提交操作。dcl:數(shù)據(jù)控制

11、語言,對系統(tǒng)權(quán)限和對象權(quán)限的管理。權(quán)限的傳遞:系統(tǒng)權(quán)限的傳遞:sys用戶把一些系統(tǒng)權(quán)限授權(quán)給lisi用戶.grantalteranytabletolisi;查看lisi的系統(tǒng)權(quán)限,就有了alteranytable的權(quán)限?,F(xiàn)在lisi想把該權(quán)限傳遞授權(quán)給wangwu用戶執(zhí)行以下語句:grantalteranytabletowangwu;執(zhí)行后報“權(quán)限不足”。要想lisi也可以傳遞權(quán)限,可以在sys用戶授權(quán)時加上withadminoption的選項,該選項就說明了還擁有權(quán)限的管理能力。即:grantalteranytabletolisiwithadminoption;這樣lisi就可以把alter

12、anytable的權(quán)限傳遞給wangwu了。要想wangwu也可以傳遞該權(quán)限,也使用該admin選項即可。查看lisi的系統(tǒng)權(quán)限,他的alteranytable權(quán)限的同一行的adm字段取值由NO變?yōu)閅ES,說明lisi對該權(quán)限具有分配功能了。對象權(quán)限的傳遞:與系統(tǒng)權(quán)限的傳遞類似,不過后面的選項有所改變:加入sys創(chuàng)建了一個A表。授予lisi的select權(quán)限:grantselectOnAtolisi;如果想讓lisi擁有對A表的select權(quán)限的分配能力,只需修改為:grantselectOnAtolisiwithgrantoption;思考:如果sys管理員撤銷了lisi的權(quán)限,那么wang

13、w的權(quán)限是否也被撤銷了呢?通過角色對權(quán)限進(jìn)行管理如果按照上面的權(quán)限管理方法,對每個用戶逐一的分配權(quán)限,必然會很混亂,導(dǎo)致管理的困難。所以oracle提供了角色來對權(quán)限進(jìn)行集合化的管理。角色就是權(quán)限的集合。在sys下創(chuàng)建角色:createrolemyrole;給角色添加權(quán)限:grantcreatesessiontomyrole;grantcreatetabletomyrole;創(chuàng)建用戶:createuserzhangsan;grantmyroletozhangsan;/賦予以上的兩個權(quán)限給zhangsan有些系統(tǒng)權(quán)限無法直接賦予角色,因為該權(quán)限太大了,比如unlimitedtablespace。

14、例如:執(zhí)行g(shù)rantunlimitedtablespacetomyrole;出現(xiàn)錯誤提示:無法將unlimitedtablespace授予角色刪除角色:droprolemyrole;權(quán)限舉例:createtablecreateanytablealtertablealteranytabledeletetabledeleteanytable補充:oracle數(shù)據(jù)庫不含紫色的權(quán)限類型。因為有了createtable權(quán)限,說明表的一切都?xì)w創(chuàng)建者。不需要還指定altertable和droptable權(quán)限了,默認(rèn)就有了。而createanytable這個權(quán)限表明該用戶可以給其他用戶創(chuàng)建表。示例:wangw

15、u給lisi創(chuàng)建一個表tempcreatetablelisi.temp(idint);/有可能報“超出表空間USERS的空間限額”錯誤提示,那是因為lisi用戶可能還沒有表空間權(quán)限,執(zhí)行賦予lisi用戶unlimitedtablespace的權(quán)限,問題即可解決。注意:表是屬于某個用戶的。而角色不屬于某個用戶。oracle三種登陸驗證機(jī)制操作系統(tǒng)驗證密碼文件驗證數(shù)據(jù)庫驗證對于絕大多少的普通用戶而言,數(shù)據(jù)庫啟動后,用戶登陸時采用的是數(shù)據(jù)庫驗證。而對應(yīng)sys用戶,它的權(quán)限是最大的。它的權(quán)限甚至包括啟動和關(guān)閉數(shù)據(jù)庫。它在oracle數(shù)據(jù)庫還沒啟動時,就連接到oracle數(shù)據(jù)庫中去,進(jìn)行啟動。這樣我們不

16、難理解,sys的身份驗證不可能采用數(shù)據(jù)庫驗證,因為當(dāng)時數(shù)據(jù)庫還沒有啟動呢。所以sys的身份驗證使用的是操作系統(tǒng)驗證和密碼文件驗證(這樣說不是很嚴(yán)格,應(yīng)該是以SYSDBA和SYSOPER連接身份登陸都會以這兩種方式進(jìn)行驗證)。當(dāng)一個用戶連接數(shù)據(jù)庫的時候,客戶端首先連接到監(jiān)聽服務(wù),監(jiān)聽把請求發(fā)送到數(shù)據(jù)庫,如果驗證通過了,以后就不需要監(jiān)聽了,客戶端直接和數(shù)據(jù)庫實例通信。早期在linux和unix上運行的oracle,它有嚴(yán)格的啟動順序:先啟動監(jiān)聽(只需要敲個命令即可,不需要什么權(quán)限),后啟動數(shù)據(jù)庫實例(需要權(quán)限)執(zhí)行的命令序列:lsnrctlstart/啟動監(jiān)聽服務(wù)sqlplussys/oracle

17、assysdba/啟動數(shù)據(jù)庫實例的請求,發(fā)現(xiàn)以sysdba的身份連接,所以不進(jìn)行數(shù)據(jù)庫驗證,而是采用操作系統(tǒng)和密碼文件驗證。如果驗證通過,運行啟動數(shù)據(jù)庫實例startup/啟動數(shù)據(jù)庫實例早期版本命令得這樣寫:lsnrctlstartsqlplus/nologconnsys/oracleassysdbastartup在windows下oracle的啟動過程,進(jìn)行了傻瓜式的封裝:lsnrctlstartoradim-starup-sidorcl補充:在連接到數(shù)據(jù)庫時,可以這樣寫:conn/assysdba也可以連連上,甚至胡亂指定用戶名和密碼,如:connabc/abcassysdba都可以登陸。

18、這是因為連接是以sysdba身份,首先采用操作系統(tǒng)驗證。在我們安裝數(shù)據(jù)庫時,會把當(dāng)前系統(tǒng)的賬號添加到oracle的系統(tǒng)管理員組中去。按以上方式連接,它是默認(rèn)根據(jù)系統(tǒng)的當(dāng)前賬戶驗證通過的。把管理員組中的該系統(tǒng)賬號刪去后,他就會采用密碼驗證機(jī)制,就必須要指定用戶名和密碼了。問題:丟失密碼怎么辦?我們知道如果普通用戶的密碼忘記了,我們可以管理員的身份對該用戶的密碼進(jìn)行修改(無法查看,因為密碼都是加了密的,只能修改)可以在圖形化的工具下直接進(jìn)行修改。也可以以命令的方式:alteruserscottidentifiedbytiger;在實際開發(fā)中,我們要把操作系統(tǒng)驗證給取消掉。那以后就會采用密碼驗證了。但是假如我們把密碼忘記了,又如何解決呢?我們可以把密碼文件刪掉,在生成一個密碼文件即可。找到密碼文件的所在地:.db_2databasepwdorcl.ora,紅色部分是該密碼文件命名的固定部分,orcl指的是數(shù)據(jù)庫的sid,可能不一樣刪除密碼文件后,再生成一個。使用orapwd命令,具體如下:orapwdfile=password=entries=force=只是否強(qiáng)制覆蓋文件

溫馨提示

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

評論

0/150

提交評論