Оракл выдает ошибку !!!

Jordi
Дата: 10.08.2005 13:10:37
Господа, добрый день

У меня есть система мониторинга, которая кладет свои логи в Оракл. При работе данного комплекса я обнаружил следующиую ошибку:

: query: INSERT INTO data (sid,cid,data_payload) VALUES ('22','5229',utl_raw.cast_to_raw('FFD8FFFE000857414E473202FFE000104A46494600010101006000600000FFDB004300100B0C0E0C0A100E0D0E1211101318281A181616183123251D283A333D3C3933383740485C4E404457453738506D51575F626768673E4D71797064785C656763FFDB0043011112121815182F1A1A2F634238426363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363FFC00011080026009E03012100021101031101FFC4001F0000010501010101010100000000000000000102030405060708090A0BFFC400B5100002010303020403050504040000017D01020300041105122131410613516107227114328191A1082342B1C11552D1F02433627282090A161718191A25262728292A3435363738393A434445464748494A535455565758595A636465666768696A737475767778797A838485868788898A92939495969798999AA2A3A4A5A6A7A8A9AAB2B3B4B5B6B7B8B9BAC2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8D9DAE1E2E3E4E5E6E7E8E9EAF1F2F3F4F5F6F7F8F9FAFFC4001F0100030101010101010101010000000000000102030405060708090A0BFFC400B51100020102040403040705040400010277000102031104052131061241510761711322328108144291A1B1C109233352F0156272D10A162434E125F11718191A262728292A35363738393A434445464748494A535455565758595A636465666768696A737475767778797A82838485868788898A92939495969798999AA2A3A4A5A6A7A8A9AAB2B3B4B5B6B7B8B9BAC2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8D9DAE2E3E4E5E6E7E8E9EAF2F3F4F5F6F7F8F9FAFFDA000C03010002110311003F00ED356D4A1D234D96FAE16468A2C6E11805B92071923D6AAE81E22B2F104733598950C240749540233D0F048EC7BF6A00D6AE75FC67A62EB634A58EE5E6F3C41BD506CDE4E3B9CF078E9DBBD00686A7ADDB6977B616B3A4ACF7D2797194008072A39C91FDE1EB5A54005140051400514005140051400D92448A3692475444059998E0281D4935CCDBF8F349B9D462B3862BB6696511249B142924E01E5B38FC33ED401BD6BA8DA5E5D5CDB5B4EB24B6A42CCAA0FC84E78CF43D0F4E98AB5401CFF8EFFE450BEFFB67FF00A316B99F0C11A1F8A2C61DCA96FAA5844E0798400E501C907A92CAC00FF6F8F4A00EF353BD4D374DB9BD936910465F6B36DDC40E173EE703F1AF2DD3ACDA39FC3BA84CDBE7BED419DA42C4B30578C739EFBB79FC6803D135AD77FB2751D2ED3ECDE6FDBE5F2F76FDBB39519C60E7EF7B74AB5ABEAF69A2D97DAAF5D9509DAA15492CD82401F5C1EB81401CEFFC271347FE9171A05F47A79E45CE0F2A7EE9C1007391FC5DFBD7452EA907F624BAA5AB2DC429034CBB4E376D04E3DBA63DA8039DB6F1C4D7E900D37449EEE76FF5C88E76C24B10A0B6DC7206727007AF5C6D7883C4169A05A892E773CB206F262507F78463BF41D475FD7A50062AF8DEE2DE688EABA0DDD85ABBEC69DF710A4FB1519FE78CF5AE99F51B48F4D1A8C93AA5A18C4BE63023E523238EBCE471D680399FF84D6F2E3F7BA7F86EFAE6D5BEE4BC8DDEBD148EB91D7B56C7873C456BE21B791EDD248A5876896371F7491D8F71C1F43C7414011F887C4D6FA2325BAC325D5F4BB7CBB64041604919CE0FA1181939C71DEB360F1C186E923D6B49B9D2E2901DB2C819B247B6D07F2CF51F5A00B9E34D4AE6CB4A920834E96E92E60952495338806DC6E3807D49EDD2B9BF0C7882FF004DD0E1B7B4F0DDCDD26598DC4418090963CF08738E075ED4015FC3FAF5FD96ABAC4F06877374F733EF9224DD980EE73B4E14FA91DBA57A750073FE3BFF009142FBFED9FF00E8C5AC1F11DB4ABE0ED0755B62C26B08E160DC614155E707AFCC13F334016BC6FA935F687A65A592C9BF567464560A32BC10A493C1DCC9F91E7D5BE28B64B3D57C236B1962904E2352DD480D1019FCA8026F1A7FC8C3E18FFAFBFF00D9E3A8FC450AEA3E3FD1B4FB93BAD5623379781827E627391C83B1411E9401D85C411DCDBCB6F32EE8A5428EB9C64118238AC397488744F07EA7676F34F2C5F679997CE60C572878180303BFD49A006F806344F0959B222A9732331031B8EF6193EBC003F0ACD485751F8A1702E8EF5B1B757854818070B8CF1CE0BB1F5CE3D2803ACBFB28751B19ECEE17314C855B8191EE33DC751EE2B89F0C59CFAEFC3EBCD344CA844E5222CBC2E0ABE0E3D493CF3D7DB14010DBF89B5FF0CDBC569AB693BEDE0411249CA64E32A378CA9C0E300678F635B9E1AD43C3DAA6AF7377A6DBC906A12213287520B2E572D804AF271EF9CD0053F0BC2B7BE33D7AFEE4EF9EDA5F263240C28CB2FA750A8067D09EB9ADCF16D9437BE1ABE59973E544D321006559412319E9D31F4268032F4B9E4B8F864EF2B6E61653A038C70A1940FC80AB9E04FF009142C7FEDA7FE8C6A00CFF0005FF00C8C3E27FFAFBFF00D9E4AEC28039FF001DFF00C8A17DFF006CFF00F462D4D65649A9782ED6CA4DA04F611A6E65DDB494186C7B1C1FC28038DF05C136A1ADD943711489168F13EE491495F30BB1E41FBADF37D7F77F96E78D3FE461F0C7FD7DFF00ECF1D001E34FF9187C31FF005F7FFB3C75378C2C2F62BAB2D774885A5BDB43B19150BEF439ED9ED923819F9B3918A00ABFF0B061BAB7F2B4FD36EE5D41D3E48B6865DD8E7A1C90393D0671DBB5E86C6F6C3C0B7F1EA5712CF76F6D33C86494C9B32870A0FB003D79CD004DE04FF9142C7FEDA7FE8C6ACDF1359DEE91AF47E24D36069916322F230C46546064F39E98E8303664D004777E353ABDAC963E1FB1BC92F661B033285F2D4F05B2AC'))
database: oracle_error: ORA-01704: ÑÑÑоковÑй лиÑеÑал ÑлиÑком длиннÑй

Как ее исправить?
lazy cat
Дата: 10.08.2005 13:15:20
А почитать описание ошибки и посчитать длину строки? За 4000 зашкалило. Бейте на части.
Просто так
Дата: 10.08.2005 13:20:08
Ваша программа мониторинга формирует недопустимо длинные строчные константы. Оракл больше 4000 символов между одиночными кавычками не допускает, а у Вас эта константа за горизонт уходит...
Jordi
Дата: 10.08.2005 13:21:38
Просто так
Ваша программа мониторинга формирует недопустимо длинные строчные константы. Оракл больше 4000 символов между одиночными кавычками не допускает, а у Вас эта константа за горизонт уходит...


Как эту проблему решить?
Можно "горизон расширить в конфигурации Оракла"?

Обнаружил еще одну ошиьку:

database: oracle_error: ORA-06502: PL/SQL: : длина raw-пеÑеменной ÑлиÑком болÑÑÐ°Ñ Ð¾Ñибка ÑиÑла или знаÑениÑ
ORA-06512: на "SYS.UTL_RAW", line 186

: query: INSERT INTO data (sid,cid,data_payload) VALUES ('22','5349',utl_raw.cast_to_raw('0100005257E8C9B2FDFF83C40C83F8FE751C6A00685C9CF5676A196A006A055657E8ED95FFFF83C41CBBFEFFFFFF8B450C565057E89AB2FDFF83C40C83F8FE751C6A0068689CF5676A196A006A055657E8BE95FFFF83C41CBBFEFFFFFF5F8BC35E5B5DC3909090909090909090909090909090E9CB6DFFFF9090909090909090909090558BECE8B86DFFFF8B40085DC3909090558BEC8B45108B4D080FAFC103450C0FAFC15DC3909090909090909090909090558BEC83EC0C8B45085685C057744A8B480485C974438B7D108D4DF45150897D08E89A01000083C40883F8FF742B8B750C8B451485FF894630741E8D55086A00528D4D106A08516A008D55F45052E84DE7FEFF83C41C8946305F5E8BE55DC390558BEC83EC108B450853565785C0750A83C8FF5F5E5B8BE55DC38B700485F6750A83C8FF5F5E5B8BE55DC38B188DBE400100008D8644010000575053897D088945F8E8F9F8FFFF8845FC8B460883C40C85C00F85E50000008D45F0506A016A00E8B7B4010083C40C89460885C0751C8B4DFC8B55F851575253E802F9FFFF83C41083C8FF5F5E5B8BE55DC36A008D7E106A005057E87DB40100C745F41C0100008B460C83C41085C00F858C0000008D45F46A005053E8D669FFFF83C40C89460C85C0752F57E846B401008B4DFC8B55088B45F883C404C746080000000051525053E89AF8FFFF83C41083C8FF5F5E5B8BE55DC38B96380100005785D250750AE81EB4010083C408EB168BFA83C9FF33C0F2AEF7D1495152E850B5010083C4108B560C8D4610508D8E3C0100006A04516A3D52E81BB4010083C4148B7D088B45FC8B4DF850575153E834F8FFFF83C41033C05F5E5B8BE55DC39090909090909090558BEC83EC0C8B450853565785C0750A83C8FF5F5E5B8BE55DC38B700485F6750A83C8FF5F5E5B8BE55DC38B0850894DFCE86AFEFFFF83C40483F8FF75090BC05F5E5B8BE55DC38B55FC8DBE400100008D9E44010000575352E882F7FFFF8B4E0883C40C8845F48D46106A006A0051508945F8E83EB301008B55088B450C8B760C83C4108B0A8B55F889088B4DFC8970048950088B45F450575351E880F7FFFF83C41033C05F5E5B8BE55DC390909090558BEC8B450885C0740B6A0150E83E93000083C4085DC3909090909090909090558BEC83EC208B450853565785C00F844D0100008B5D0C85DB0F84420100008B480485C9894DF40F84340100008B308D7B1483C318575356E8D3F6FFFF8B4DF483C40C8845F08D814001000081C1440100005051568945F8894DF4E8B0F6FFFF8845FC8B451483C40C85C0751B8B4D0C8B45103B410C750C8B451885C07509E9B900000085C074348B55088D4DE05152E89BFEFFFF83C40883F8FF0F84C00000008B45208D4DEC508D55E05152E8EEDAFEFF83C40C89452085C0751B8B45FC8B4DF88B55F450515256E882F6FFFF8B45F083C41050EB7F8B4D1C8B5518508B4514518B4D10528B550C508B4508515250E83B8EFFFF83C41C85C0752D8B4DFC8B55F88B45F451525056E842F6FFFF8B4DF083C41051575356E833F6FFFF83C41033C05F5E5B8BE55DC38B45208D55EC528D4DE05051E806E4FEFF83C40C8B55FC8B45F88B4DF452505156E801F6FFFF8B55F083C41052575356E8F2F5FFFF83C4105F5E83C8FF5B8BE55DC39090909090558BEC8B5510535683FA0457770AC74510040000008B55108B45148B7D0C8D48038B470483E1FC8B30894D1483C1088B5E088B46043BD98B5D1C737B03CA894D0C8D04893D002000007305B8002000008B4D188B55085351505752E8F00100008BF083C41485F60F85EA0000008B45188B4D0C8B55085350515752E8D00100008BF083C41485F60F85CA0000008B4D08508B451868749CF5676A1950535668710200006A03515656E81301000083C42C33C05F5E5B5DC38B1885DB7D042BC3EB067E048D4403088D5C10074AF7D223DA8B55142BD803DA8B56083BDA767E8B551003CA894D0C8D04893D002000007305B8002000008B5D1C8B4D188B5508535150'))
VasyakinM
Дата: 10.08.2005 13:23:35
Рекомедую для подобного рода сообщений использовать BLOB(если двоичные)
и CLOB(если чисто текстовые). У данных типов ограничение вам врядли удасться преодолеть :)). Правда это потребует доработки клиента соотвественно.
Просто так
Дата: 10.08.2005 13:34:04
VasyakinM
Рекомедую для подобного рода сообщений использовать BLOB(если двоичные)
и CLOB(если чисто текстовые). У данных типов ограничение вам врядли удасться преодолеть :)). Правда это потребует доработки клиента соотвественно.
Не в типах данных проблема, а в текстовой константе, литерале в одиночных кавычках. Строчные литералы всегда относились и относятся к типу CHAR c ограничителем в 4000, и через это никак не перепрыгнуть.

И поэтому, Jordi, проблему смогут разрешить только разработчики программы мониторинга. В частности, вместо формирования одной длиннющей текстовой константы 'xxxxyyyy' надо бы записывать выражение 'xxxx' || 'yyyy', используя константы более короткие, не более 4000 символов. Второй вариант - вместо константы использовать связанную переменную, формируемую программно, но это опять вопрос к разработчикам.
Stax.
Дата: 10.08.2005 14:05:09
Просто так

Второй вариант - вместо константы использовать связанную переменную, формируемую программно, но это опять вопрос к разработчикам.

Мах длина связной роде тож 4000?
SQL> var v varchar2(5000)
Bind variable length cannot exceed 4000
Vadim Zh
Дата: 10.08.2005 14:16:10

Connected to Oracle8 Enterprise Edition Release 8.0.5.1.0 
Connected as apps


SQL> 
SQL> -- Created on 10.08.2005 by VADIMZH
SQL> declare
  2    -- Local variables here
  3    v_dummy VARCHAR2(32000);
  4  begin
  5    -- Test statements here
  6    NULL;
  7  end;
  8  /

PL/SQL procedure successfully completed

SQL> 


С уважением, Вадим.
JuraCZ
Дата: 10.08.2005 14:24:52
>> Vadim Zh
Dla DML varchar max 4000
Vadim Zh
Дата: 10.08.2005 14:32:59
JuraCZ

>> Vadim Zh
Dla DML varchar max 4000


Для DML длина переменной может быть > 4000.
Для DDL при объявлении типа varchar2 для Column согласен.
соответственно в таблицу мы не вставим строку более 4000.
Мой ответ касался переменной.

С уважением, Вадим.