当我尝试在表格中插入一些数据时,出现错误:ORACLE execute error: ORA-08103: object no longer exists
查询:
INSERT
INTO MA_USER.RESPONCES_NEW_2016_10_17_22_10
(
GCC_CONTACT_ID,
GCC_PARENT_CONTACT_ID,
GCC_SESSION_ID,
GCC_REQUEST_ID,
GCC_REGISTRY_ID,
CONTACT_ID,
CREATE_DTTM,
GCC_RESULT_CD,
CONTACT_DTTM,
"TYPE",
GCC_RESULT_TERMINAL_FLG,
CUSTOMER_GCC_ID,
SMARTSCRIPT_CD ,
COMMUNICATION_TYPE,
"FIRST_NM" ,
"LAST_NM" ,
"MIDDLE_NM" ,
"GENDER_CD" ,
"BIRTH_DT" ,
"IIN_NUM" ,
"MOBILE_PHONE_NUM" ,
"HOME_PHONE_NUM" ,
"REGION_NM" ,
"CITY_NM" ,
"COMMENT" ,
"QUEUE_ADDED_DTTM" ,
"OPERATOR_NM" ,
"QUEUE_EXTRACT_DTTM" ,
"REQUEST_START_DTTM" ,
"REQUEST_END_DTTM" ,
"CALL_DURATION_TOTAL" ,
"INFO_SOURCE_DESC" ,
"APPOINTMENT_FLG" ,
"APPOINTMENT_DTTM" ,
"REMINDER_DTTM" ,
"APPOINTMENT_PLACE_DESC" ,
"SOLD_PRODUCT_NM" ,
"LANGUAGE_CD" ,
"TOPIC" ,
"REQUESTED_PRODUCT_NM" ,
"VISIT_REASON_NM"
)
SELECT GCC_CONTACT_ID AS GCC_CONTACT_ID,
MAX(GCC_PARENT_CONTACT_ID) AS GCC_PARENT_CONTACT_ID,
MAX(GCC_SESSION_ID) AS GCC_SESSION_ID ,
MAX(GCC_REQUEST_ID) AS GCC_REQUEST_ID,
MAX(GCC_REGISTRY_ID) AS GCC_REGISTRY_ID,
MAX(CONTACT_ID_test) AS CONTACT_ID,
sysdate AS CREATE_DTTM,
MAX(GCC_RESULT_CD) AS GCC_RESULT_CD,
MAX(CONTACT_DTTM) AS CONTACT_DTTM,
MAX("TYPE") AS TYPE,
MAX(GCC_RESULT_TERMINAL_FLG) AS GCC_RESULT_TERMINAL_FLG ,
MAX(CUSTOMER_GCC_ID) AS CUSTOMER_GCC_ID,
MAX(SMARTSCRIPT_CD) AS SMARTSCRIPT_CD ,
MAX(COMMUNICATION_TYPE) AS COMMUNICATION_TYPE ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('FIRST_NM')
THEN PARAM_VALUE
ELSE NULL
END) AS "FIRST_NM" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('LAST_NM')
THEN PARAM_VALUE
ELSE NULL
END) AS "LAST_NM" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('MIDDLE_NM')
THEN PARAM_VALUE
ELSE NULL
END) AS "MIDDLE_NM" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('GENDER_CD')
THEN PARAM_VALUE
ELSE NULL
END) AS "GENDER_CD" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('BIRTH_DT')
THEN PARAM_VALUE
ELSE NULL
END) AS "BIRTH_DT" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('IIN_NUM')
THEN PARAM_VALUE
ELSE NULL
END) AS "IIN_NUM" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('MOBILE_PHONE_NUM')
THEN PARAM_VALUE
ELSE NULL
END) AS "MOBILE_PHONE_NUM" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('HOME_PHONE_NUM')
THEN PARAM_VALUE
ELSE NULL
END) AS "HOME_PHONE_NUM" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('REGION_NM')
THEN PARAM_VALUE
ELSE NULL
END) AS "REGION_NM" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('CITY_NM')
THEN PARAM_VALUE
ELSE NULL
END) AS "CITY_NM" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('COMMENT')
THEN PARAM_VALUE
ELSE NULL
END) AS "COMMENT" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('QUEUE_ADDED_DTTM')
THEN PARAM_VALUE
ELSE NULL
END) AS "QUEUE_ADDED_DTTM" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('OPERATOR_NM')
THEN PARAM_VALUE
ELSE NULL
END) AS "OPERATOR_NM" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('QUEUE_EXTRACT_DTTM')
THEN PARAM_VALUE
ELSE NULL
END) AS "QUEUE_EXTRACT_DTTM" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('REQUEST_START_DTTM')
THEN PARAM_VALUE
ELSE NULL
END) AS "REQUEST_START_DTTM" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('REQUEST_END_DTTM')
THEN PARAM_VALUE
ELSE NULL
END) AS "REQUEST_END_DTTM" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('CALL_DURATION_TOTAL')
THEN PARAM_VALUE
ELSE NULL
END) AS "CALL_DURATION_TOTAL" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('INFO_SOURCE_DESC')
THEN PARAM_VALUE
ELSE NULL
END) AS "INFO_SOURCE_DESC" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('APPOINTMENT_FLG')
THEN PARAM_VALUE
ELSE NULL
END) AS "APPOINTMENT_FLG" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('APPOINTMENT_DTTM')
THEN PARAM_VALUE
ELSE NULL
END) AS "APPOINTMENT_DTTM" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('REMINDER_DTTM')
THEN PARAM_VALUE
ELSE NULL
END) AS "REMINDER_DTTM" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('APPOINTMENT_PLACE_DESC')
THEN PARAM_VALUE
ELSE NULL
END) AS "APPOINTMENT_PLACE_DESC" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('SOLD_PRODUCT_NM')
THEN PARAM_VALUE
ELSE NULL
END) AS "SOLD_PRODUCT_NM" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('LANGUAGE_CD')
THEN PARAM_VALUE
ELSE NULL
END) AS "LANGUAGE_CD" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('TOPIC')
THEN PARAM_VALUE
ELSE NULL
END) AS "TOPIC" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('REQUESTED_PRODUCT_NM')
THEN PARAM_VALUE
ELSE NULL
END) AS "REQUESTED_PRODUCT_NM" ,
MAX(
CASE
WHEN UPPER(param_nm) = UPPER('VISIT_REASON_NM')
THEN PARAM_VALUE
ELSE NULL
END) AS "VISIT_REASON_NM"
FROM
(SELECT h.*,
hp.*,
con.contact_id AS contact_id_test,
dict.GCC_RESULT_TERMINAL_FLG
FROM INTEGRATION_PROD.GCC_HISTORY h
LEFT JOIN INTEGRATION_PROD.GCC_HISTORY_PARAMS HP
ON H.INT_GCC_ID = HP.INT_GCC_ID
LEFT JOIN CDM.MA_CONTACT con
ON h.GCC_SESSION_ID = con.GCC_SESSION_ID
LEFT JOIN INTEGRATION_PROD.DICT_GCC_RESULT dict
ON h.GCC_RESULT_CD = dict.GCC_RESULT_CD
WHERE TYPE != 'SAS'
AND GCC_PARENT_CONTACT_ID IS NULL
AND h.GCC_request_id IS NULL
AND con.CONTACT_ID IS NULL
AND h.INT_STATUS = 'NEW'
) rs_new
WHERE rs_new.gcc_session_id IS NULL
OR ( rs_new.gcc_session_id IS NOT NULL
AND rs_new.CONTACT_DTTM =
(SELECT MIN(rs_min_date.CONTACT_DTTM)
FROM
(SELECT h.CONTACT_DTTM,
h.GCC_SESSION_ID
FROM INTEGRATION_PROD.GCC_HISTORY h
LEFT JOIN INTEGRATION_PROD.GCC_HISTORY_PARAMS HP
ON H.INT_GCC_ID = HP.INT_GCC_ID
LEFT JOIN CDM.MA_CONTACT con
ON h.GCC_SESSION_ID = con.GCC_SESSION_ID
LEFT JOIN INTEGRATION_PROD.DICT_GCC_RESULT dict
ON h.GCC_RESULT_CD = dict.GCC_RESULT_CD
WHERE TYPE != 'SAS'
AND GCC_PARENT_CONTACT_ID IS NULL
AND h.GCC_request_id IS NULL
AND con.CONTACT_ID IS NULL
AND h.INT_STATUS = 'NEW'
) rs_min_date
WHERE rs_new.GCC_SESSION_ID = rs_min_date.GCC_SESSION_ID
))
GROUP BY gcc_contact_id;
我认为在此查询中没有对表进行任何截断或删除操作。此查询大约需要30分钟。也许“对象不再存在” - 因为长时间运行查询?
答案 0 :(得分:1)
当查询在另一个会话中运行时,它看起来其他一些用户/会话/应用程序进程正在执行TRUNCATE(或DROP或RECREATE)。
INTEGRATION_PROD.GCC_HISTORY h
JOIN CDM.MA_CONTACT con
JOIN INTEGRATION_PROD.DICT_GCC_RESULT dict
JOIN INTEGRATION_PROD.GCC_HISTORY_PARAMS HP
我怀疑,这很可能是' DICT_GCC_RESULT'根据其名称。请检查。
答案 1 :(得分:0)
我在互联网上找到了这个:
ORA-08103对象不再存在
原因:自操作开始以来,该对象已被其他用户删除。或者先前的不完全恢复将数据库恢复到删除对象期间的某个时间点。