我在使用
SYS用户:
execute
dbms_logmnr_d.build(DICTIONARY_FILENAME=>'dict.ora',DICTIONARY_LOCATION=>'/export/home/oracle/admin/iiip/logmnr_log');
(其中utl_file_dir已经定义)
生成数据字典时报出以下错误,不知道那位高手能给予解答:
ORA-06532 Subscript outside of limit
Cause: A subscript was greater than the limit of a VARRAY or non-positive for a VARRAY
or nested table.
Action: Check the program logic and increase the VARRAY limit if necessary.
Problem Description: ====================You attempt to create a LogMiner dictionary file in Oracle RDBMS version 8.1.7.0.0 or 8.1.7.1.0 using DBMS_LOGMNR_D.BUILD and it fails with an ORA-6532 "subscript outside of limit" error.For example:SQL>execute sys.dbms_logmnr_d.build(dictionary_filename=>'xyz.txt', dictionary_location=>'/d03/oracle8i');ERROR at line 1: ORA-06532: Subscript outside of limit ORA-06512: at "SYS.DBMS_LOGMNR_D", line 777 ORA-06512: at line 1 Solution Description: =====================Do one of the following:A. Obtain the fix for [BUG:1529107] by upgrading to Oracle9i or applying the8.1.7.2.0 (or greater) patchset. - OR - B. If you are unable to apply the bug fix, you can workaround the problem bymodifying the package body of DBMS_LOGMNR_D.BUILD as follows: ** Please note: this workaround involves making a small change to anOracle supplied script. You should only make changes to these scripts when directed to do so by Oracle Support1. Edit the file "dbmslmd.sql" located in the "$ORACLE_HOME/rdbms/admin" directory. Change the line:
TYPE col_desc_array IS VARRAY(513) OF col_description;
to
TYPE col_desc_array IS VARRAY(700) OF col_description; Save the file.
2. Run the newly modified script:
SQLPLUS> Connect internal
SQLPLUS> @$ORACLE_HOME/rdbms/admin/dbmslmd.sql 3. Recompile the package body DBMS_LOGMNR_D:
SQLPLUS> alter package DBMS_LOGMNR_D compile body;Explanation: ============The error occurs due to [BUG:1529107], which is fixed in Oracle9i and for which a fix exists starting in the 8.1.7.2.0 patchset.The number of objects handled by the DBMS_LOGMNR_D.BUILD procedure goes beyondthe currently defined limit for VARRAY.
我把sir liang贴的内容整了一下:
Problem Description:
====================
You attempt to create a LogMiner dictionary file in Oracle RDBMS version 8.1.7.0.0 or 8.1.7.1.0 using DBMS_LOGMNR_D.BUILD and it fails with an ORA-6532 "subscript outside of limit" error.
For example:
SQL>execute sys.dbms_logmnr_d.build(dictionary_filename=>'xyz.txt', dictionary_location=>'/d03/oracle8i');
ERROR at line 1:
ORA-06532: Subscript outside of limit
ORA-06512: at "SYS.DBMS_LOGMNR_D", line 777
ORA-06512: at line 1
Solution Description:
=====================
Do one of the following:
A. Obtain the fix for [BUG:1529107] by upgrading to Oracle9i or applying the 8.1.7.2.0 (or greater) patchset.
- OR -
B. If you are unable to apply the bug fix, you can workaround the problem by modifying the package body of DBMS_LOGMNR_D.BUILD as follows:
** Please note: this workaround involves making a small change to an Oracle supplied script. You should only make changes to these scripts when directed to do so by Oracle Support
1. Edit the file "dbmslmd.sql" located in the "$ORACLE_HOME/rdbms/admin" directory.
Change the line:
TYPE col_desc_array IS VARRAY(513) OF col_description;
to
TYPE col_desc_array IS VARRAY(700) OF col_description;
Save the file.
2. Run the newly modified script:
SQLPLUS> Connect internal
SQLPLUS> @$ORACLE_HOME/rdbms/admin/dbmslmd.sql
3. Recompile the package body DBMS_LOGMNR_D:
SQLPLUS> alter package DBMS_LOGMNR_D compile body;
Explanation:
============
The error occurs due to [BUG:1529107], which is fixed in Oracle9i and for which a fix exists starting in the 8.1.7.2.0 patchset. The number of objects handled by the DBMS_LOGMNR_D.BUILD procedure goes beyond the currently defined limit for VARRAY.