ich eine Oracle 11g Datenbank, runnint auf einem Windows Server 2008:Warum erhalte ich diese Fehlermeldung: "ORA-22813: Operand Wert überschreitet Systemgrenzen"
Oracle Database 11g Enterprise Edition Veröffentlichung 11.1.0.6 .0 - Produktion
ich habe zwei Tabellen und drei Ansichten:
CREATE TABLE UTILS.SEG_ROLES
(
APLICACION VARCHAR2(12 BYTE),
ROL VARCHAR2(12 BYTE),
USUARIOS VARCHAR2(255 BYTE)
)
SET DEFINE OFF;
Insert into SEG_ROLES (APLICACION, ROL, USUARIOS) Values ('MULTIPLAN', 'ADMIN', 'ADMIN');
Insert into SEG_ROLES (APLICACION, ROL, USUARIOS) Values ('MULTIPLAN', 'CAR01', 'PATY ');
Insert into SEG_ROLES (APLICACION, ROL, USUARIOS) Values ('MULTIPLAN', 'CAR02', 'FABIOLA, ERIKA');
Insert into SEG_ROLES (APLICACION, ROL, USUARIOS) Values ('MULTIPLAN', 'CON01', 'LUCY, PATY');
Insert into SEG_ROLES (APLICACION, ROL, USUARIOS) Values ('MULTIPLAN', 'CON02', 'VALERIA');
COMMIT;
CREATE TABLE UTILS.SEG_ACCESOS
(
APLICACION VARCHAR2(12 BYTE),
ADMROL VARCHAR2(12 BYTE),
MENU VARCHAR2(20 BYTE),
OPCION VARCHAR2(20 BYTE),
TIPO VARCHAR2(5 BYTE),
OBJETO_MENU VARCHAR2(40 BYTE),
ACCESO VARCHAR2(2 BYTE),
ROLES_ACCESOS VARCHAR2(255 BYTE)
)
SET DEFINE OFF;
Insert into SEG_ACCESOS (APLICACION, ADMROL, MENU, OPCION, TIPO, OBJETO_MENU, ACCESO, ROLES_ACCESOS)
Values ('MULTIPLAN', 'ADMIN', 'COLOCA', NULL, 'M', 'm_coloca', 'S', 'CAR01, CAR02');
Insert into SEG_ACCESOS (APLICACION, ADMROL, MENU, OPCION, TIPO, OBJETO_MENU, ACCESO, ROLES_ACCESOS)
Values ('MULTIPLAN', 'ADMIN', 'COLOCA', 'PREVALIDA', 'SM', 'sm_prevalida', 'S', 'CAR01, CAR02');
Insert into SEG_ACCESOS (APLICACION, ADMROL, MENU, OPCION, TIPO, OBJETO_MENU, ACCESO, ROLES_ACCESOS)
Values ('MULTIPLAN', 'ADMIN', 'COLOCA', 'PRECOLOCA', 'SM', 'sm_preColocacion', 'S', 'CAR01, CAR02');
Insert into SEG_ACCESOS (APLICACION, ADMROL, MENU, OPCION, TIPO, OBJETO_MENU, ACCESO, ROLES_ACCESOS)
Values ('MULTIPLAN', 'ADMIN', 'COLOCA', 'COLOCACION', 'SM', 'sm_colocacion', 'S', 'CAR01');
Insert into SEG_ACCESOS (APLICACION, ADMROL, MENU, OPCION, TIPO, OBJETO_MENU, ACCESO, ROLES_ACCESOS)
Values ('MULTIPLAN', 'ADMIN', 'COLOCA', 'REGCOLOCA', 'SM', 'sm_regcoloca', 'S', 'CAR01');
Insert into SEG_ACCESOS (APLICACION, ADMROL, MENU, OPCION, TIPO, OBJETO_MENU, ACCESO, ROLES_ACCESOS)
Values ('MULTIPLAN', 'ADMIN', 'PLD', NULL, 'M', 'm_PLD', 'S', 'CAR01, CAR02, CON01, CON02');
Insert into SEG_ACCESOS (APLICACION, ADMROL, MENU, OPCION, TIPO, OBJETO_MENU, ACCESO, ROLES_ACCESOS)
Values ('MULTIPLAN', 'ADMIN', 'PLD', 'LN_CONSULTA', 'SM', 'sm_PLD_LNConsulta', 'S', 'CAR01, CAR02');
Insert into SEG_ACCESOS (APLICACION, ADMROL, MENU, OPCION, TIPO, OBJETO_MENU, ACCESO, ROLES_ACCESOS)
Values ('MULTIPLAN', 'ADMIN', 'PLD', 'LN_BARRIDOMASIVO', 'SM', 'sm_PLD_LNBarridoMasivo', 'S', 'CAR01');
Insert into SEG_ACCESOS (APLICACION, ADMROL, MENU, OPCION, TIPO, OBJETO_MENU, ACCESO, ROLES_ACCESOS)
Values ('MULTIPLAN', 'ADMIN', 'PLD', 'REP_INICICLO', 'SM', 'sm_PLD_ReporIniciclo', 'S', 'CON01, CON02');
Insert into SEG_ACCESOS (APLICACION, ADMROL, MENU, OPCION, TIPO, OBJETO_MENU, ACCESO, ROLES_ACCESOS)
Values ('MULTIPLAN', 'ADMIN', 'PLD', 'LN_BITACORA', 'SM', 'sm_PLD_LNBitacora', 'S', 'CON01');
COMMIT;
--- und machte diese Ansichten:
CREATE VIEW UTILS.VW_ROL_USER AS
select distinct APLICACION, ROL, trim(column_value) USUARIO
from ( SELECT APLICACION, ROL, USUARIOS USUARIO
FROM UTILS.SEG_ROLES
WHERE USUARIOS IS NOT NULL
ORDER BY APLICACION, ROL
) t,
xmltable(('"' || replace(USUARIO, ',', '","') || '"'))
order by APLICACION, ROL, trim(column_value)
CREATE VIEW UTILS.VW_ACC_ROL AS
select distinct APLICACION, ADMROL, MENU, OPCION, TIPO, OBJETO_MENU, ACCESO, trim(column_value) ROL
from ( SELECT APLICACION, ADMROL, MENU, OPCION, TIPO, OBJETO_MENU, ACCESO, ROLES_ACCESOS ROL
FROM UTILS.SEG_ACCESOS
WHERE ROLES_ACCESOS IS NOT NULL
ORDER BY APLICACION, ADMROL, MENU, OPCION
) t,
xmltable(('"' || replace(ROL, ',', '","') || '"'))
order by APLICACION, MENU, TIPO, OPCION, trim(column_value)
CREATE VIEW UTILS.VW_SEG_ACCESOS AS
SELECT VACR.APLICACION, VACR.MENU, VACR.TIPO, VACR.OPCION, VACR.OBJETO_MENU, VACR.ACCESO, VACR.ROL, VUSR.USUARIO
FROM UTILS.VW_ACC_ROL VACR,
UTILS.VW_ROL_USER VUSR
WHERE VACR.ROL = VUSR.ROL
ORDER BY VACR.APLICACION, VACR.ROL, VACR.MENU, VUSR.USUARIO, VACR.TIPO, VACR.OPCION
Wenn ich die letzte Ansicht abfragen, es funktioniert gut:
SELECT VSEG.* FROM UTILS.VW_SEG_ACCESOS VSEG
Aber wenn ich Bedingungen hinzufügen:
SELECT VSEG.* FROM UTILS.VW_SEG_ACCESOS VSEG
WHERE VSEG.APLICACION = 'MULTIPLAN'
AND VSEG.USUARIO = 'PATY'
Es wirft diesen Fehler:
**ORA-22813: Operand value exceeds system limits**
Cause: Object or Collection value was too large. The size of the value might have exceeded 30k in a SORT context, or the size might be too big for available memory.
Action: Choose another value and retry the operation.
Auch nur nur eine einfache Ansicht der Abfrage führt den Fehler:
SELECT * FROM UTILS.VW_ROL_USER WHERE USUARIO = 'PATY'
sein würde. Es gibt einige Oracle-Fehler das wirft diesen Fehler. Sie müssen vielleicht nach einem Patch graben. http://www.dba-oracle.com/t_ora_22813_operand_value_exceeds_system_limits.htm –
Kompilieren die Ansichten für Sie wie gezeigt? In 10gR2 rufen die Aufrufe von xmltable() "ORA-19102: XQuery-String-Literal erwartet" ab, und in 11gR2 erhalten sie "ORA-02000: fehlendes COLUMNS-Schlüsselwort". Ich habe keine 11gR1-Instanz, um das zu versuchen. Wenn Sie das ausführen, erhalten Sie einen vollständigen Fehler-Stack, der auf eine dieser Klauseln in Ihren Ansichten verweist? –
Danke Alex, die Views wurden kompiliert ok ... wie bekomme ich den vollen Fehler Stack? – Arzamm