Dan*_*ath 4 oracle ddl toad oracle11g
在 IDR 9.6.3 HotFix 1 中运行 Applier 将数据加载到 Oracle 目标时,将分区添加到目标表后\n问题描述
\n\n将 INTERVAL 分区添加到目标表列后,Informatica Data Replication (IDR) 应用程序进程无法将数据插入到目标,并出现 Ora-14300 错误。
\n\n分区详细信息:
\n\nPARTITION BY RANGE ("column_name") INTERVAL (NUMTODSINTERVAL(1,\'DAY\')) \nRun Code Online (Sandbox Code Playgroud)\n\n记录错误的 Applier 日志如下:
\n\n"\n* Informatica Data Replication Oracle Applier, Version 9.6.3 HF1 Build 4825416\n* Production Version \n* This copy of Data Replication is registered to IDR_0104, licensed for 1 machine \n* Copyright (C) 1993-2016 Informatica LLC. All Rights Reserved.\n* See patents at https://www.informatica.com/legal/patents.html.\n* Contact support at support@informatica.com\n* Data Replication is running on host [cesp001] system [Linux] \n* Release [2.6.32-642.3.1.el6.x86_64] version [#1 SMP Sun Jun 26 18:16:44 EDT 2016]\n* Machine [x86_64] CPU cores [4]\n\n2016-10-07 13:58:12.399 (E2EE23E0) IDR-000240 I Started loading the configuration from the configuration SQLite database.\n2016-10-07 13:58:12.406 (E2EE23E0) IDR-000239 I Finished loading the configuration from the configuration SQLite database.\n2016-10-07 13:58:12.446 (E2EE23E0) IDR-000263 I Runtime settings: \n apply.direct_load_for_audit_tables 0\n apply.local_time_zone_hours 8\n apply.recovery_table "IDR_TGT_USER"."IDR_RECOVERY"\n\n Target database:\n ORACLE\n Connection string for target database:\n IDR_TGT_USER/********@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.14)(PORT=1835))(CONNECT_DATA=(SERVER=DEDICATED)(ORACLE_SID=O1P)))\n Character set: AL32UTF8\n Ncharacter set: AL16UTF16\n NLS_LANG environment variable: AMERICAN_AMERICA.AL32UTF8\n Process ID: 26346\n Run ID: 350887\n Target ID: 118\n Multiple targets: no\n Continuous mode: disabled\n Number of threads: 1\n Path to the DBSYNC_HOME directory: /apps/idradmin/dbsync_home/DataReplication.linux.x86_64\n Path to the configuration file: /apps/idradmin/dbsync_home/DataReplication.linux.x86_64/configs/PRD.db\n Path to the Applier SQLite database: /apps/idradmin/dbsync_home/DataReplication.linux.x86_64/configs/PRD_loader.db\n Path to the intermediate file directory:/apps/idradmin/dbsync_home/DataReplication.linux.x86_64/output/PRD\n2016-10-07 13:58:12.579 (E2EE23E0) IDR-070288 I Begin scan transaction file: \'./output/PRD_records1.trn\'\n2016-10-07 13:58:12.583 (E2EE23E0) IDR-070289 I End scan transaction file: \'./output/PRD_records1.trn\'\n2016-10-07 13:58:12.587 (E2EE23E0) IDR-000384 I Started loading metadata revisions.\n2016-10-07 13:58:12.587 (E2EE23E0) IDR-000385 I Finished loading metadata revisions.\n2016-10-07 13:58:12.663 (E2EE23E0) IDR-070161 I Recovery run started.\n2016-10-07 13:58:12.691 (E2EE23E0) IDR-070174 I Started parsing the intermediate file \'./output/PRD_records1.dat\'.\n2016-10-07 13:58:12.693 (E2EE23E0) IDR-070164 I Connecting to the target database.\n2016-10-07 13:58:12.757 (E2EE23E0) IDR-070238 I Connected to the target database.\n2016-10-07 13:58:12.759 (E2EE23E0) IDR-070175 I Completed parsing the intermediate file \'./output/PRD_records1.dat\'. Processed 1706 records.\n2016-10-07 13:58:12.777 (000D6700) IDR-070231 E The Applier thread 878336 encountered an error in the function \'MyOtlStream::flush\'.\n2016-10-07 13:58:12.777 (000D6700) IDR-009002 E The following error occurred when working with the database: \n\nORA-14300: partitioning key maps to a partition outside maximum permitted number of partitions\n\n SQL statement: INSERT INTO "ODS_CRM"."TAB_REPL"(OP_TIME,OP_CODE,OP_CMT_SCN,OP_CMT_TIME,OP_XID,OP_NUM_IN_TX,"UPDATE_STAMP_O",\n"FORMATTED_NAME_O","S_FORMATTED_NAME_O","PERSON_ID_TYPE2HGBST_ELM_O","GENDER2HGBST_ELM_O","CONT_LANG2HGBST_ELM_O","X_NATIONALITY2HGBST_ELM_O","X_RACE2HGBST_ELM_O",\n"X_VIP_CODE2HGBST_ELM_O","X_BLCKLST_RSN2HGBST_ELM_O","OBJID_O","FIRST_NAME_O","S_FIRST_NAME_O","LAST_NAME_O","S_LAST_NAME_O","PHONE_O","FAX_NUMBER_O","E_MAIL_O","MAIL_STOP_O",\n"EXPERTISE_LEV_O","TITLE_O","HOURS_O","SALUTATION_O","MDBK_O","STATE_CODE_O","STATE_VALUE_O","ADDRESS_1_O","ADDRESS_2_O","CITY_O","STATE_O","ZIPCODE_O","COUNTRY_O","STATUS_O",\n"ARCH_IND_O","ALERT_IND_O","DEV_O","MOBILE_PHONE_O","MAIN_RSRC_O","BLG_EVT_GEN_STS_O","ID_VALUE_O","S_ID_VALUE_O","CONTACT_ID_O","LEGAL_NAME_O","PREVIOUS_NAME_O") \nVALUES (:COT ,:COP ,:CCS ,:CCT ,:CXD ,:CNTX ,:P1 ,:P2 ,:P3 ,:P4 ,:P5 ,:P6 ,:P7 ,:P8 \n,:P9 ,:P10 ,:P11 ,:P12 ,:P13 ,:P14 ,:P15 ,:P16 ,:P17 ,:P18 ,:P19 ,:P20 ,:P21 ,:P22 ,:P23 ,:P24 ,:P25 ,:P26 ,:P27 ,:P28 ,:P29 ,:P30 ,:P31 ,:P32 ,:P33 ,:P34 ,:P35 ,:P36 ,:P37 ,:P38 ) \n Additional info: \n Error code: 14300\n2016-10-07 13:58:12.778 (000D6700) IDR-070229 E Row index: 1. Columns: 142. Total columns: 142.\n2016-10-07 13:58:12.778 (000D6700) IDR-070057 E The Applier thread 878336 encountered an OTL or database error when applying a row to the target.\n2016-10-07 13:58:12.780 (000D6700) IDR-070062 E The Applier thread 878336 encountered an OTL or database error in the function \'ParallelPostRecordTask::FlushChangeRecordToDestination\'.\n2016-10-07 13:58:12.780 (000D6700) IDR-070061 E The Applier thread 878336 encountered an OTL or database error in the function \'ParallelPostRecordTask::svc\'.\n2016-10-07 13:58:12.785 (E2EE23E0) IDR-070090 E The Applier thread 0 returned the error code 5.\n2016-10-07 13:58:12.787 (E2EE23E0) IDR-070082 E The Applier encountered a fatal error.\n2016-10-07 13:58:12.794 (E2EE23E0) IDR-070132 E Could not finalize the \'PostTaskExecutor\' mechanism that distributes records from the intermediate files across Applier threads.\n"\n\xe2\x80\x8b\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\x8b\n原因
\n\n出现此问题的原因是创建分区条件的列是在 IDR 中创建的虚拟列,并且该值是使用 SQL 表达式更新的。它不是源自来源的专栏。
\n\n使用虚拟列时,Applier 首先插入物理列,然后使用基于物理列计算的值更新虚拟列。
\n\n因此,分区列首先插入 NULL 值,这会使分区条件无效并导致 Oracle 错误\xe2\x80\x8b。
\n\n解决方案\n若要解决此问题,请执行以下操作之一:
\n\nDrop the current partition and use a different column [not a virtual column originated from IDR] as partition key and restart applier task.\nRun Code Online (Sandbox Code Playgroud)\n\n或者
\n\nBased on the SQL expression being used to update the virtual column value, alter the column to include a DEFAULT value. Thus, on insert, the default value will be inserted first and the update will apply the value from the SQL expression.\nRun Code Online (Sandbox Code Playgroud)\n\n您需要为表启用行移动,以便在 Applier 发出后续更新时将该行移动到适当的分区。
\n| 归档时间: |
|
| 查看次数: |
24117 次 |
| 最近记录: |