国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

用SYS執行全文索引的建立時出現權限不足

2024-07-21 02:42:06
字體:
來源:轉載
供稿:網友
在Oracle中,SYS用戶是整個數據庫的所有者,SYS擁有數據庫中幾乎所有的權限。今天我們就來介紹一下使用SYS執行全文索引的建立時,出現了權限不足的錯誤。

許多人剛剛接觸Oracle時,對于權限并不是很了解,如果有時候報錯ORA-1031缺少足夠的權限,且找不到所需要的授權的權限時,就會嘗試使用SYS來執行這個錯誤。由于SYS時整個數據庫的所有者,因此不會出現缺少權限的問題。

下面我們來介紹一個錯誤案例:在測試一個全文索引例子的時候,由于忘記切換用戶,使用了SYS用戶執行,結果出現ORA-1031錯誤,數據庫測試版本為9204:

SQL> SHOW USER

USER 為"SYS"

SQL> CREATE TABLE T (ID NUMBER, NAME VARCHAR2(60));

表已創建。

SQL> INSERT INTO T VALUES (1, 'A SIMPLE TEST FOR SYS CREATE CONTEXT INDEX');

已創建 1 行。

SQL> CREATE INDEX IND_T_NAME ON T(NAME) INDEXTYPE IS CTXSYS.CONTEXT;

CREATE INDEX IND_T_NAME ON T(NAME) INDEXTYPE IS CTXSYS.CONTEXT

*

ERROR 位于第 1 行:

ORA-29855: 執行 ODCIINDEXCREATE 例行程序時出錯

ORA-20000: Oracle Text 錯誤:

DRG-50857: oracle error in drixtab.create_index_tables

ORA-01031: 權限不足

ORA-06512: 在"CTXSYS.DRUE", line 157

ORA-06512: 在"CTXSYS.TEXTINDEXMETHODS", line 204

注意:這個例子在普通用戶下并不會報錯:

SQL> CONN YANGTK/YANGTK@TEST1已連接。

SQL> CREATE TABLE T (ID NUMBER, NAME VARCHAR2(60));

表已創建。

SQL> INSERT INTO T VALUES (1, 'A SIMPLE TEST FOR SYS CREATE CONTEXT INDEX');

已創建 1 行。

SQL> CREATE INDEX IND_T_NAME ON T(NAME) INDEXTYPE IS CTXSYS.CONTEXT;

索引已創建。

通過EVENTS 10046進行跟蹤,發現在創建DR$IND_T_NAME$K表的時候報錯,而這個表是一個索引組織表。

根據這些信息查詢了METALINK,發現Bug No. 1366361對這個問題進行了比較清晰的闡述。缺少權限的不是SYS用戶,而是CTXSYS所建立的存儲過程沒有權限。不過此處并沒有解釋清楚為什么普通表沒有問題,而建立一個索引組織表報錯。

下面給出了對應的解決方法,將數據庫的O7_DICTIONARY_accessIBILITY設置為TRUE,重起后,就不會報錯了。

SQL> CONN /@TEST1 AS SYSDBA已連接。

SQL> SHOW PARAMETER O7

NAME TYPE VALUE

------------------------------------ ----------- --------------------------

O7_DICTIONARY_ACCESSIBILITY boolean FALSE

SQL> ALTER SYSTEM SET O7_DICTIONARY_ACCESSIBILITY = TRUE SCOPE = SPFILE;

系統已更改。

SQL> SHUTDOWN IMMEDIATE數據庫已經關閉。已經卸載數據庫。

ORACLE 例程已經關閉。

SQL> STARTUP

ORACLE 例程已經啟動。

Total System Global Area 110173900 bytes

Fixed Size 454348 bytes

Variable Size 83886080 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes數據庫裝載完畢。數據庫已經打開。

最后刪除剛才建立索引失敗留下的垃圾表,就可以重建索引了:

SQL> DROP INDEX IND_T_NAME;

索引已丟棄。

SQL> CREATE INDEX IND_T_NAME ON T(NAME) INDEXTYPE IS CTXSYS.CONTEXT;

索引已創建。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长寿区| 石嘴山市| 曲沃县| 伊宁市| 巢湖市| 铅山县| 嘉禾县| 宜城市| 巴彦淖尔市| 中牟县| 凤山市| 沈阳市| 高阳县| 七台河市| 泰州市| 宣化县| 泸定县| 娱乐| 封丘县| 临猗县| 碌曲县| 苗栗市| 宁陵县| 中江县| 沧州市| 尚志市| 潜江市| 达尔| 清水河县| 怀安县| 盐源县| 项城市| 北宁市| 台中市| 留坝县| 林西县| 武义县| 嘉禾县| 宜春市| 龙陵县| 泸定县|