| 導購 | 订阅 | 在线投稿
分享
 
 
 

執行全文索引時出現權限不足的解決方法

來源:互聯網  2008-06-24 08:57:16  評論

在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;

索引已創建。

在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; 索引已創建。
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有