中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

catalog.sql腳本怎么編寫

發布時間:2021-11-05 17:11:34 來源:億速云 閱讀:104 作者:柒染 欄目:建站服務器

這篇文章給大家介紹catalog.sql腳本怎么編寫,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

        前面介紹了如何通過手工創建數據庫,在創建數據庫之后執行了腳本$ORACLA_HOME/rdbms/admin/catalog.sql腳本,這里著重介紹一下該腳本的作用。

        該腳本用戶創建oracle動態性能視圖,比如v$session,v$session_wait,v$transactoin等。這類性能視圖主要用于監控oracle實例運行的狀態,腳本文件開始時的注釋已經說明其作用:

    Rem NAME
    Rem   CATALOG.SQL
    Rem FUNCTION
    Rem   Creates data dictionary views.
    Rem NOTES
    Rem   Must be run when connected AS SYSDBA

必須采用sysdba角色的用戶才可以執行該腳本。

     下面分析一下常用的v$session來分析一下

     create or replace view v_$session as select * from v$session;
     create or replace public synonym v$session for v_$session;
     grant select on v_$session to select_catalog_role;

      可以發現數據庫通過該執行該腳本對底層的v$session視圖進一步作了封裝。

通過創建一個新的視圖v_$session,并將該v_$session視圖的查詢權限分配了

select_catalog_role這個角色,任何user只要擁有select_catalog_role這個角色,都可以通過sys.v_$session來訪問sys用戶的v_$session視圖,但是考慮到用戶訪問的不便,同時也考慮對sys用戶對應視圖的封裝,創建了一個public 同義詞。

擁有select_catalog_role角色的用戶其實訪問的只是v$session這個public同義詞,實現了對底層v$session視圖的封裝隱藏,用戶本身并不知道該視圖時sys用戶還是其他用戶。

        進一步向下查看,所有的動態性能視圖都是通過這種方式對sys用戶下的視圖做了封裝隱藏。我們可以參照這種做法實現類似的封裝

       
SQL> conn / as sysdba

SQL>create table test(t number(10));

SQL>conn scott/tiger

SQL>select count(*) from test;

ERROR at line 1:
ORA-00942: table or view does not exist

切回到sys用戶

SQL>conn / as sysdba

SQL>create view test_ as select * from test;

View created.

SQL>create public synonym test for test_;

Synonym created.

SQL>grant select on test_ to tiger;

Grant succeeded.

對中間視圖test_查詢權限分配完畢。切回到scott用戶試下

SQL>conn scott/tiger

Connected.

SQL>select count(*) from test;

  COUNT(*)
----------
         0

可見scott用戶已經可以查詢sys用戶下的test表。但是實際上用戶查詢的僅僅是這個public synonym。

catalog腳本中還需要注意一點,所有的v_$視圖的查詢權限都分配給了select_catalog_role這個角色,意味著只要用戶分配給了該角色,就能查詢該腳本中所有的v$性能視圖。

SQL> grant select_catalog_role to scott;

Grant succeeded.
SQL> conn scott/tiger
Connected.
SQL> select count(*) from v$session;

  COUNT(*)
----------
        17

scott用戶已經可以查詢v$session視圖,否則scott用戶按照utlsampl.sql創建之后不允許查詢v$之類的性能視圖。

而select_catalog_role這個角色是在執行創建oracle數據庫腳本時自動創建的,由于oracle創建數據庫時會自動執行$ORACLE_HOME/rdbms/admin/sql.bsq腳本。我們通過該腳本,可以看到具體如下:
/
create role select_catalog_role
/
create role execute_catalog_role
/
create role delete_catalog_role
/
grant select_catalog_role to dba with admin option
/
grant execute_catalog_role to dba with admin option
/
grant delete_catalog_role to dba with admin option

可以看到建庫時oracle自動創建了select_catalog_role這個角色,將該角色賦予給dba角色,并允許dba角色的用戶賦予權限。

關于catalog.sql腳本怎么編寫就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

霍林郭勒市| 肃南| 如东县| 临朐县| 哈尔滨市| 平度市| 锡林浩特市| 沂水县| 余江县| 澎湖县| 高要市| 垣曲县| 柘荣县| 天津市| 荥阳市| 文化| 昌乐县| 伊金霍洛旗| 玉环县| 罗田县| 沅陵县| 莎车县| 综艺| 肃宁县| 治多县| 香港| 常州市| 嘉祥县| 徐州市| 盘山县| 哈尔滨市| 康保县| 石渠县| 兴宁市| 三明市| 山西省| 平舆县| 西乡县| 郸城县| 湟源县| 准格尔旗|