2015-04-20 2 views
0

Я выполняю извлечение данных из удаленной базы данных в свою локальную базу данных, используя ссылку базы данных. Извлечение отлично работает для других таблиц удаленной базы данных, но когда я пытаюсь вставить в получать данные из удаленной базы данных SOAP_MONITORING @ FONIC_RETAIL таблицы и попытаться вставить данные локально, то я получаю сообщение об ошибке, как:Как вставить значение столбца типа данных CLOB локально из удаленной базы данных в oracle

EXCEPTION START EXT_SOAP_MONITORING 20.04.15 09:16:02,070559000 +02:00 
EXCEPTION ORA-03113: end-of-file on communication channel 
ORA-02063: preceding 
line from FONIC_RETAIL 
ERROR CODE-3113 

ERROR: 
ORA-00600: internal error code, arguments: [729], [33464], [space leak], [], 
[], [], [], [], [], [], [], [] 

Это серьезная проблема, я столкнулся и не нашел какой-либо способ от этого. В столбце [email protected]_RETAIL есть столбцы REQUEST_XML,RESPONSE_XML, которые содержат большое строковое значение xml и имеют CLOB тип данных. И я думаю, проблема состоит в том, что из-за этих двух столбцов, поскольку это тип данных clob и содержит большие строки xml, а clob имеет проблемы при работе с удаленной базой данных. SOAP_MONI[email protected]_RETAIL содержит столбец идентификатора, который сгенерирован в последовательности, и я сохраняю максимальный идентификатор в CAPTURING table, а затем во время следующего извлечения 15minute scheduling job time, я получаю данные, где ID больше, чем последний сохраненный ID. Вот моя процедура:

PROCEDURE "EXT_SOAP_MONITORING" AS 
LAST_SM_ID Number := 0; 

BEGIN 

--DELETE DATA FROM TEMP_SOAP_MONITORING 
EXECUTE IMMEDIATE 'TRUNCATE TABLE TEMP_SOAP_MONITORING'; 

-- first retrieve the last id (of the newest record) which has been imported at last extraction 
SELECT LAST_TASK_ID INTO LAST_SM_ID FROM CAPTURING where DB_TABLE='TEMP_SOAP_MONITORING'; 

-- retrieve all new records from remote [email protected]_RETAIL and insert it into TEMP_SOAP_MONITORING using MERGE statement 
-- MERGE statement is able to retrieve CLOB fields: 

merge into TEMP_SOAP_MONITORING TSM 
using (
    select * from 
(select DISTINCT(ID),REQUEST_XML,RESPONSE_XML,WEB_SERVICE_NAME,WEB_METHOD_NAME,CREATE_DATE,ERROR_CODE,ERROR_MESSAGE from 
[email protected]_RETAIL WHERE WEB_SERVICE_NAME='RatorWebShopService' and WEB_METHOD_NAME='placeShopOrder' and ID > LAST_SM_ID order by ID desc) where rownum <=1000 
) data 
ON (TSM.ID = data.ID) 
when not matched then 
insert(ID,REQUEST_XML,RESPONSE_XML,WEB_SERVICE_NAME,WEB_METHOD_NAME,CREATE_DATE,ERROR_CODE,ERROR_MESSAGE) 
values(data.ID,data.REQUEST_XML,data.RESPONSE_XML,data.WEB_SERVICE_NAME,data.WEB_METHOD_NAME,data.CREATE_DATE,data.ERROR_CODE,data.ERROR_MESSAGE); 


-- Set the newest extracted ID as LAST_TASK_ID for TEMP_SOAP_MONITORING in the Capturing table 
update 
CAPTURING set LAST_TASK_ID= 
CASE WHEN (SELECT MAX(ID) from TEMP_SOAP_MONITORING) IS NULL THEN LAST_TASK_ID + 1 ELSE (SELECT MAX(ID) from TEMP_SOAP_MONITORING) END, 
CAPTURING_DATE = CURRENT_TIMESTAMP where DB_TABLE='TEMP_SOAP_MONITORING'; 

-- Extract SUBSCCRIPTION_ID, ORDER_NUMBER and ORDER_TYPE from XML (CLOB) fields and store it separately in TMP_SOAP_MONITORING_IDS table: 

-- first delete the last extraction data 
DELETE FROM TMP_SOAP_MONITORING_IDS WHERE CREATE_DATE < SYSDATE - 7; 

COMMIT; 
END EXT_SOAP_MONITORING; 
+0

Лучше проконсультируйтесь с сайтом поддержки Oracle. В нем есть документация относительно ошибки ORA-00600 [729]. – Rene

+0

Моя добыча обычно запускается для таблицы SOAP_MONITORING @ FONIC_RETAIL, но после некоторой продолжительности она не работает и дает такие ошибки. Вы знаете какой-либо другой способ, где я могу оптимизировать свой запрос здесь? Это похоже на тайм-аут и неудачное соединение с базой данных, поскольку SOAP_MONITORING @ FONIC_RETAIL содержит большую строку xml, которая является типом данных clob – Andrew

ответ

1

Как утверждает Рене, вы должны связаться со службой поддержки Oracle и/или прочитать некоторые документы поддержки, относящиеся к этой ошибке. Это может быть ошибка, которая может быть решена , совершив обновление

Смежные вопросы