00600在oracle触发器中移动表空间时

当客户端用指定的表空间创建表时,我需要更改表空间,所以我编写了以下触发器:

CREATE OR REPLACE TRIGGER TRIG_MON_DDL
AFTER CREATE OR ALTER ON DATABASE
DECLARE
SQL_TABLESPACE_NAME VARCHAR2(60);
INDEX_TABSP_NAME VARCHAR2(60);
CUR_USER VARCHAR2(100);
SQL_TEXT VARCHAR2(2000);
V_SQL VARCHAR2(2000);
BEGIN
SELECT NVL(SYS_CONTEXT('USERENV','CURRENT_SCHEMA'),'') INTO CUR_USER FROM DUAL;
IF SYSEVENT = 'CREATE' OR SYSEVENT = 'ALTER' THEN
    IF ORA_DICT_OBJ_TYPE ='TABLE' THEN
            SELECT TABLESPACE_NAME INTO SQL_TABLESPACE_NAME FROM USER_TABLES WHERE TABLE_NAME=ORA_DICT_OBJ_NAME;
            IF INSTR(SQL_TABLESPACE_NAME,'_'||CUR_USER)=0 THEN
                V_SQL:='ALTER TABLE ' || 'FOO.' || ORA_DICT_OBJ_NAME||' MOVE TABLESPACE '||SQL_TABLESPACE_NAME||'_'||CUR_USER||'';
                EXECUTE IMMEDIATE V_SQL;
            END IF;
    END IF;
END IF;
END;
/

并运行create语句

CREATE TABLE FOO.ADMIN_EMP1 (id  NUMBER(5), name VARCHAR2(15) NOT NULL) TABLESPACE TB;

CUR_USER是FOO。 所以触发器会将表从表空间TB移动到TB_FOO,但是当触发器运行EXECUTE IMMEDIATE V_SQL时,结果如下。

ERROR at line 1:
ORA-00600: internal error code, arguments: [17058], [0x06406F530], [], [], [],
[], [], [], [], [], [], []

我无法弄清楚为什么。 我正在寻找是否有其他解决方案来解决我的问题。

链接地址: http://www.djcxy.com/p/36933.html

上一篇: 00600 when moving tablespace in oracle trigger

下一篇: 00600, join tables limited only to 5 tables