Встреча ORA-00600 при перемещении табличного пространства в триггер оракула
Мне нужно изменить табличное пространство, когда клиент создает таблицу с указанным табличным пространством, поэтому я пишу следующий триггер:
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 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], [], [], [],
[], [], [], [], [], [], []
Я не могу понять, почему. И я нахожу, есть ли другие решения для решения моего дела.