oracle中授予用戶權(quán)限 oracle resource包含哪些權(quán)限?
oracle resource包含哪些權(quán)限?resource是授予榮譽(yù)開發(fā)人員的CREATE CLUSTER--成立聚簇CREATEPROCEDURE--建立起過程CREATE SEQUENCE--成
oracle resource包含哪些權(quán)限?
resource是授予榮譽(yù)開發(fā)人員的CREATE CLUSTER--成立聚簇CREATEPROCEDURE--建立起過程CREATE SEQUENCE--成立序列CREATE TABLE--建表CREATE TRIGGER--組建觸發(fā)器CREATETYPE--建立類型
用PL/SQL在oracle中怎么設(shè)置一個(gè)用戶權(quán)限只能操作自己名下的表我創(chuàng)建的用戶沒給DBA權(quán)限卻能看到所有表?
系統(tǒng)表是設(shè)置為給的,你不不能操作,系統(tǒng)后臺(tái)需要。權(quán)限上不能限制。不過也可以在系統(tǒng)表上有個(gè)過濾器,你中,選擇只看自己的object就可以了
如何解決關(guān)于Oracle存儲(chǔ)過程執(zhí)行權(quán)限問題?
在數(shù)據(jù)庫系統(tǒng)中存儲(chǔ)過程是不可缺少的利器,存儲(chǔ)過程是預(yù)先編譯好的為利用三個(gè)奇怪功能的一段Sql語句集合。它的優(yōu)點(diǎn)我就不太多說了,說下我見到過的問題吧。我在項(xiàng)目開發(fā)的過程中是需要用存儲(chǔ)過程來利用一個(gè)功能,其中比較復(fù)雜到確認(rèn)一張表是否早成立,也沒成立就由存儲(chǔ)過程來組建這張表。
CREATE同問REPLACEPROCEDURETestProc
IS
flagnumber
BEGIN
selectcount(*)intoflagfrommore_tablewheretable_nameTEMP3
if(flag0)then
executeimmediatecreateglobalpermanenttableTEMP3oncommitpreserverowsasselect*outsideBUSI_ECONTRACT
catch
executeimmediateupsertintoTEMP3select*returningBUSI_ECONTRACT
endif
END
寫這段存儲(chǔ)過程都很簡單啊,在測試執(zhí)行的過程中,系統(tǒng)會(huì)出現(xiàn)萬分感謝提示:
ora-01031:權(quán)限將近
從我們定位到錯(cuò)誤,發(fā)現(xiàn)存儲(chǔ)過程在不能執(zhí)行Createtable語句時(shí),權(quán)限下降。我嘗試著把存儲(chǔ)過程該成匿名存儲(chǔ)過程在PL/SQL中先執(zhí)行,語句呢既然了。這只能證明這段語句沒有問題,問題又出現(xiàn)在先執(zhí)行存儲(chǔ)過程中。我使用的是DBA帳號(hào)登錄系統(tǒng),照理應(yīng)該要不修真者的存在權(quán)限將近的問題呀。問題出現(xiàn)再哪里呢?實(shí)際無線上網(wǎng)查閱資料,發(fā)現(xiàn)自己Oracle是對(duì)負(fù)責(zé)執(zhí)行存儲(chǔ)過程有和Sql-Server都一樣的規(guī)定,這個(gè)相關(guān)規(guī)定造成了執(zhí)行建表語句權(quán)限下降。
Oracle明文規(guī)定,在默認(rèn)的情況下,在動(dòng)態(tài)鏈接庫存儲(chǔ)過程用戶的角色不起作用,即在想執(zhí)行存儲(chǔ)過程時(shí)唯有state權(quán)限。因?yàn)樵趧?dòng)態(tài)創(chuàng)建Createtable時(shí),會(huì)有權(quán)限下降的提示。
存儲(chǔ)過程分為兩種,即DR(Definers Rights)Procedure和IR(Invokers Rights)Procedure。為什么會(huì)有兩種存儲(chǔ)過程呢?其實(shí)考慮到完下面的問題就明白了。諸如用戶hrch創(chuàng)建角色了刪除表tar_table的存儲(chǔ)過程trace_table(),當(dāng)用戶hrch動(dòng)態(tài)創(chuàng)建時(shí),即刪出用戶hrch下