日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Oracle數(shù)據(jù)源

更新時(shí)間:

Oracle數(shù)據(jù)源為您提供讀取和寫入Oracle雙向通道的功能,方便您后續(xù)可以通過向?qū)J胶湍_本模式配置數(shù)據(jù)同步任務(wù)。本文為您介紹DataWorks的Oracle數(shù)據(jù)同步能力支持情況。

支持的版本

離線讀寫

版本

離線讀(Oracle Reader)

離線寫(Oracle Writer)

Oracle 11.2 or 11gR2

支持

支持

Oracle 12.1 or 12cR1

支持

支持

Oracle 12.2 or 12cR2

支持(新版本特性不支持)

支持(新版本特性不支持)

Oracle 18.3

支持(新版本特性不支持)

支持(新版本特性不支持)

Oracle 19.x

支持(新版本特性不支持)

支持(新版本特性不支持)

Oracle 21.1

支持(新版本特性不支持)

支持(新版本特性不支持)

重要

Oracle Writer插件使用ojdbc6-12.1.1.jar驅(qū)動。

實(shí)時(shí)讀

  • 支持:

    11g R2 以上12c non cdb18c non cdb19c non cdb19c cdb版本數(shù)據(jù)庫。

  • 不支持:

    12c cdb18c cdb版本數(shù)據(jù)庫。

說明

數(shù)據(jù)庫容器CDB(Container Database)是Oracle 12c及之后版本的數(shù)據(jù)庫新特性,用于承載多個(gè)可插拔數(shù)據(jù)庫PDB(Pluggable Database)。

使用限制

  • 當(dāng)前數(shù)據(jù)集成同步數(shù)據(jù)時(shí),僅支持UTF8、AL32UTF8、AL16UTF16及ZHS16GBK編碼格式。

  • Oracle單實(shí)例,當(dāng)天實(shí)時(shí)同步最大支持同步500G增量數(shù)據(jù)。

  • DataWorks的數(shù)據(jù)集成實(shí)時(shí)同步Oracle數(shù)據(jù)是基于Oracle LogMiner日志分析工具實(shí)現(xiàn)的,Oracle僅支持在主庫中為主庫或備庫開啟補(bǔ)充日志。

  • 離線同步支持讀取視圖表。

支持的字段類型

字段類型

離線讀(Oracle Reader)

離線寫(Oracle Writer)

實(shí)時(shí)讀

NUMBER

支持

支持

支持

BINARY FLOAT

支持

支持

支持

BINARY DOUBLE

支持

支持

支持

CHAR

支持

支持

支持

NCHAR

支持

支持

支持

VARCHAR2

支持

支持

支持

NVARCHAR2

支持

支持

支持

DATE

支持

支持

支持

TIMESTAMP

支持

支持

支持

TIMESTAMP WITH TIME ZONE

支持

支持

不支持

TIMESTAMP WITH LOCAL TIME ZONE

支持

支持

不支持

CLOB

支持

支持

支持

BLOB

支持

支持

支持

RAW

支持

支持

支持

ROWID

不支持

不支持

支持

UROWID

不支持

不支持

支持

FLOAT

支持

支持

支持

INTERVAL DAY TO SECOND

不支持

不支持

支持

INTERVAL YEAR TO MONTH

不支持

不支持

支持

BFILE

不支持

不支持

不支持

LONG

不支持

不支持

不支持

LONG RAW

不支持

不支持

不支持

NCLOB

支持

支持

不支持

STRUCT

支持

支持

不支持

User-Defined Types

不支持

不支持

不支持

AnyType

不支持

不支持

不支持

AnyData

不支持

不支持

不支持

AnyDataSet

不支持

不支持

不支持

XmlType

不支持

不支持

不支持

Spatial Types

不支持

不支持

不支持

Media Types

不支持

不支持

不支持

Oracle Reader針對Oracle類型的轉(zhuǎn)換列表,如下所示。

類型分類

Oracle數(shù)據(jù)類型

整數(shù)類

NUMBER、RAWID、INTEGER、INT和SMALLINT

浮點(diǎn)類

NUMERIC、DECIMAL、FLOAT、DOUBLE PRECISIOON和REAL

字符串類

LONG、CHAR、NCHAR、VARCHAR、VARCHAR2、NVARCHAR2、CLOB、NCLOB、CHARACTER、CHARACTER VARYING、CHAR VARYING、NATIONAL CHARACTER、NATIONAL CHAR、NATIONAL CHARACTER VARYING、NATIONAL CHAR VARYING和NCHAR VARYING

日期時(shí)間類

TIMESTAMP和DATE

布爾型

BIT和BOOL

二進(jìn)制類

BLOB、BFILE、RAW和LONG RAW

數(shù)據(jù)同步前準(zhǔn)備:Oracle環(huán)境準(zhǔn)備

在DataWorks上進(jìn)行數(shù)據(jù)同步前,您需要參考本文提前在Oracle側(cè)進(jìn)行數(shù)據(jù)同步環(huán)境準(zhǔn)備,以便在DataWorks上進(jìn)行Oracle數(shù)據(jù)同步任務(wù)配置與執(zhí)行時(shí)服務(wù)正常。以下為您介紹Oracle同步前的相關(guān)環(huán)境準(zhǔn)備。

準(zhǔn)備工作1:確認(rèn)Oracle數(shù)據(jù)庫版本

不同同步場景下支持的Oracle數(shù)據(jù)庫版本不一致,同步前您需要檢查Oracle數(shù)據(jù)庫版本是否為支持的版本。

  1. 您可以通過如下任意語句查看Oracle數(shù)據(jù)庫的版本。

    • 語句一:

      select * from v$version;
    • 語句二:

      select version from v$instance;
  2. 如果查看到的Oracle數(shù)據(jù)庫版本為12c18c,則您需要使用如下語句進(jìn)一步確認(rèn)該數(shù)據(jù)庫是否為cdb類型的數(shù)據(jù)庫。DataWorks數(shù)據(jù)集成實(shí)時(shí)同步任務(wù)暫不支持使用12c18c版本的cdb類型的Oracle數(shù)據(jù)庫。

    select name,cdb,open_mode,con_id from v$database;

準(zhǔn)備工作2:創(chuàng)建賬號并配置賬號權(quán)限

您需要規(guī)劃一個(gè)數(shù)據(jù)庫的登錄賬戶用于后續(xù)執(zhí)行操作,此賬號需要擁有Oracle的相關(guān)操作權(quán)限。

  1. 創(chuàng)建賬號。操作詳情請參見創(chuàng)建Oracle賬號

  2. 配置權(quán)限。

    您可以參考以下命令為賬號添加相關(guān)權(quán)限。如下執(zhí)行語句在實(shí)際使用時(shí),請?zhí)鎿Q'同步賬號'為上述創(chuàng)建的賬號。

    grant create session to '同步賬號';  //授權(quán)同步賬號登錄數(shù)據(jù)庫。
    grant connect to '同步賬號';  //授權(quán)同步賬號連接數(shù)據(jù)庫。
    grant select on nls_database_parameters to '同步賬號';  //授權(quán)同步賬號查詢數(shù)據(jù)庫的nls_database_parameters系統(tǒng)配置。
    grant select on all_users to '同步賬號';  //授權(quán)同步賬號查詢數(shù)據(jù)庫中的所有用戶。
    grant select on all_objects to '同步賬號';  //授權(quán)同步賬號查詢數(shù)據(jù)庫中的所有對象。
    grant select on DBA_MVIEWS to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫的物化視圖。
    grant select on DBA_MVIEW_LOGS to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫的物化視圖日志。
    grant select on DBA_CONSTRAINTS to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫所有表的約束信息。
    grant select on DBA_CONS_COLUMNS to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫中所有表指定約束中所有列的相關(guān)信息。
    grant select on all_tab_cols to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫中表、視圖和集群中列的相關(guān)信息。
    grant select on sys.obj$ to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫中的對象。sys.obj$表是Oracle字典表中的對象基礎(chǔ)表,存放Oracle的所有對象。
    grant select on SYS.COL$ to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫表中列的定義信息。SYS.COL$用于保存表中列的定義信息。
    grant select on sys.USER$ to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫的系統(tǒng)表。sys.USER$是用戶會話的默認(rèn)服務(wù)。
    grant select on sys.cdef$ to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫的系統(tǒng)表。
    grant select on sys.con$ to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫的約束信息。sys.con$記錄了Oracle的相關(guān)約束信息。
    grant select on all_indexes to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫的所有索引。
    grant select on v_$database to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫的v_$database視圖。
    grant select on V_$ARCHIVE_DEST to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫的V_$ARCHIVE_DEST視圖。
    grant select on v_$log to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫的v_$log視圖。v_$log用于顯示控制文件中的日志文件信息。
    grant select on v_$logfile to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫的v_$logfile視圖。v_$logfile包含有關(guān)Redo日志文件的信息。
    grant select on v_$archived_log to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫的v$archived_log視圖。v$archived_log包含有關(guān)歸檔日志的相關(guān)信息。
    grant select on V_$LOGMNR_CONTENTS to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫的V_$LOGMNR_CONTENTS視圖。
    grant select on DUAL to '同步賬號';   //授權(quán)同步賬號查看數(shù)據(jù)庫的DUAL表。DUAL是用來構(gòu)成select語法規(guī)則的虛擬表,Oracle的中DUAL中僅保留一條記錄。
    grant select on v_$parameter to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫的v_$parameter視圖。v$parameter是Oracle的動態(tài)字典表,保存了數(shù)據(jù)庫參數(shù)的設(shè)置值。
    grant select any transaction to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫的任意事務(wù)。
    grant execute on SYS.DBMS_LOGMNR to '同步賬號';  //授權(quán)同步賬號使用數(shù)據(jù)庫的Logmnr工具。Logmnr工具可以幫助您分析事務(wù),并找回丟失的數(shù)據(jù)。
    grant alter session to '同步賬號';  //授權(quán)同步賬號修改數(shù)據(jù)庫的連接。
    grant select on dba_objects to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫的所有對象。
    grant select on v_$standby_log to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫的v_$standby_log視圖。v_$standby_log包含備用庫的歸檔日志。
    grant select on v_$ARCHIVE_GAP to '同步賬號';  //授權(quán)同步賬號查詢?nèi)笔У臍w檔日志。
    grant select on sys.ICOL$ to '同步賬號';  //授權(quán)同步賬號查看數(shù)據(jù)庫中的對象。sys.obj$表是Oracle字典表中的對象基礎(chǔ)表,存放Oracle的所有對象。

    如果您涉及使用離線全量同步數(shù)據(jù),還需要執(zhí)行如下命令,授權(quán)同步賬號所有表的查詢權(quán)限。

    grant select any table to '同步賬號'; 

    Oracle 12c及之后的版本需要執(zhí)行如下命令,授權(quán)同步賬號可以進(jìn)行日志挖掘。Oracle 12c之前的版本,內(nèi)置日志挖掘功能,無需執(zhí)行該命令。

    grant LOGMINING TO '同步賬號';

準(zhǔn)備工作3:開啟歸檔日志、補(bǔ)充日志并切換Redo日志文件

  1. 開啟歸檔日志,SQL語句如下。

    shutdown immediate;
    startup mount;
    alter database archivelog;
    alter database open;
  2. 開啟補(bǔ)充日志。

    您可以根據(jù)需要選擇開啟合適的補(bǔ)充日志,SQL語句如下。

    alter database add supplemental log data(primary key) columns; //為數(shù)據(jù)庫的主鍵列開啟補(bǔ)充日志。
    alter database add supplemental log data(unique) columns; //為數(shù)據(jù)庫的唯一索引列開啟補(bǔ)充日志。
  3. 切換Redo日志文件。

    開啟補(bǔ)充日志后,您需要多次(一般建議執(zhí)行5次)執(zhí)行如下命令,切換Redo日志文件。

    alter system switch logfile;
    說明

    多次執(zhí)行上述命令切換Redo日志文件,是保證當(dāng)前日志文件被寫滿后可以切換至下一個(gè)日志文件。使執(zhí)行過的操作記錄不會丟失,便于后續(xù)恢復(fù)數(shù)據(jù)。

準(zhǔn)備工作4:檢查數(shù)據(jù)庫的字符編碼

您需要在當(dāng)前使用的數(shù)據(jù)庫中,執(zhí)行如下命令檢查數(shù)據(jù)庫的字符編碼。

select * from v$nls_parameters where PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');
  • v$nls_parameters用于存放數(shù)據(jù)庫參數(shù)的設(shè)置值。

  • NLS_CHARACTERSETNLS_NCHAR_CHARACTERSET為數(shù)據(jù)庫字符集和國家字符集,表明Oracle中兩大類字符型數(shù)據(jù)的存儲類型。

說明

前數(shù)據(jù)集成同步數(shù)據(jù)時(shí),僅支持UTF8、AL32UTF8、AL16UTF16及ZHS16GBK編碼格式。如果數(shù)據(jù)庫中包含不支持的字符編碼,請進(jìn)行修改后再執(zhí)行數(shù)據(jù)同步。

準(zhǔn)備工作5:檢查數(shù)據(jù)庫表的數(shù)據(jù)類型

您可以使用查看表的SQL相關(guān)語句(SELECT)查詢數(shù)據(jù)庫表的數(shù)據(jù)類型。示例查看'tablename'表數(shù)據(jù)類型的語句如下。

select COLUMN_NAME,DATA_TYPE from all_tab_columns where TABLE_NAME='tablename'; 
  • COLUMN_NAME:表的列名稱。

  • DATA_TYPE:對應(yīng)列的數(shù)據(jù)類型。

  • all_tab_columns:存放數(shù)據(jù)庫表所有列相關(guān)信息的視圖。

  • TABLE_NAME:需要查詢的目標(biāo)表的名稱。執(zhí)行上述語句時(shí),請?zhí)鎿Q'tablename'為實(shí)際需要查看的表名稱。

您也可以執(zhí)行select * from 'tablename';,查詢目標(biāo)表的所有信息,獲取數(shù)據(jù)類型。

創(chuàng)建數(shù)據(jù)源

在進(jìn)行數(shù)據(jù)同步任務(wù)開發(fā)時(shí),您需要在DataWorks上創(chuàng)建一個(gè)對應(yīng)的數(shù)據(jù)源,操作流程請參見創(chuàng)建并管理數(shù)據(jù)源詳細(xì)的配置參數(shù)解釋可在配置界面查看對應(yīng)參數(shù)的文案提示

數(shù)據(jù)同步任務(wù)開發(fā):Oracle同步流程引導(dǎo)

數(shù)據(jù)同步任務(wù)的配置入口和通用配置流程可參見下文的配置指導(dǎo)。

單表離線同步任務(wù)配置指導(dǎo)

單表實(shí)時(shí)同步任務(wù)配置指導(dǎo)

操作流程請參見DataStudio側(cè)實(shí)時(shí)同步任務(wù)配置

整庫離線、整庫(實(shí)時(shí))全增量、整庫(實(shí)時(shí))分庫分表等整庫級別同步配置指導(dǎo)

操作流程請參見數(shù)據(jù)集成側(cè)同步任務(wù)配置

常見問題

  • 實(shí)時(shí)同步Oracle、PolarDB、MySQL任務(wù)重復(fù)報(bào)錯(cuò)

  • 主備同步數(shù)據(jù)恢復(fù)問題

    主備同步問題指Oracle使用主從災(zāi)備,當(dāng)主庫報(bào)錯(cuò)切換至備庫后,備庫從主庫不斷地通過binlog恢復(fù)數(shù)據(jù)。由于主備數(shù)據(jù)同步存在一定的時(shí)間差,在網(wǎng)絡(luò)延遲等特定情況下,會導(dǎo)致備庫同步恢復(fù)的數(shù)據(jù)與主庫有較大差別,從備庫同步的數(shù)據(jù)不是一份當(dāng)前時(shí)間的完整鏡像。

  • 一致性約束

    Oracle在數(shù)據(jù)存儲劃分中屬于RDBMS系統(tǒng),對外可以提供強(qiáng)一致性數(shù)據(jù)查詢接口。例如,在一次同步任務(wù)啟動運(yùn)行的過程中,當(dāng)該庫存在其它數(shù)據(jù)寫入方寫入數(shù)據(jù)時(shí),由于數(shù)據(jù)庫本身的快照特性,Oracle Reader不會獲取到寫入的新數(shù)據(jù)。

    上述是在Oracle Reader單線程模型下實(shí)現(xiàn)數(shù)據(jù)同步的一致性。Oracle Reader根據(jù)您配置的信息并發(fā)抽取數(shù)據(jù),則不能嚴(yán)格保證數(shù)據(jù)一致性。

    當(dāng)Oracle Reader根據(jù)splitPk進(jìn)行數(shù)據(jù)切分后,會先后啟動多個(gè)并發(fā)任務(wù)完成數(shù)據(jù)同步。多個(gè)并發(fā)任務(wù)相互之間不屬于同一個(gè)讀事務(wù),同時(shí)多個(gè)并發(fā)任務(wù)存在時(shí)間間隔。因此該數(shù)據(jù)并不是完整的、一致的數(shù)據(jù)快照信息。

    針對多線程的一致性快照需求,目前在技術(shù)上無法實(shí)現(xiàn),只能從工程角度解決。工程化的方式存在取舍,在此提供以下解決思路,您可以根據(jù)自身情況進(jìn)行選擇。

    • 使用單線程同步,即不再進(jìn)行數(shù)據(jù)切片。缺點(diǎn)是速度比較慢,但是能夠很好保證一致性。

    • 關(guān)閉其它數(shù)據(jù)寫入方,保證當(dāng)前數(shù)據(jù)為靜態(tài)數(shù)據(jù)。例如,鎖表、關(guān)閉備庫同步等。缺點(diǎn)是可能影響在線業(yè)務(wù)。

  • 數(shù)據(jù)庫編碼問題

    Oracle Reader底層使用JDBC進(jìn)行數(shù)據(jù)抽取,JDBC天然適配各類編碼,并在底層進(jìn)行了編碼轉(zhuǎn)換。因此Oracle Reader無需您指定編碼,可以自動獲取編碼并轉(zhuǎn)碼。

  • 增量數(shù)據(jù)同步的方式

    Oracle Reader使用JDBC SELECT語句完成數(shù)據(jù)抽取工作,因此您可以使用SELECT…WHERE…進(jìn)行增量數(shù)據(jù)抽取,方式如下:

    • 數(shù)據(jù)庫在線應(yīng)用寫入數(shù)據(jù)庫時(shí),填充modify字段為更改時(shí)間戳,包括新增、更新、刪除(邏輯刪除)。對于該類應(yīng)用,Oracle Reader只需要where條件后跟上一同步階段時(shí)間戳即可。

    • 對于新增流水型數(shù)據(jù),Oracle Reader在where條件后跟上一階段最大自增ID即可。

    對于業(yè)務(wù)上無字段區(qū)分新增、修改數(shù)據(jù)的情況,Oracle Reader無法進(jìn)行增量數(shù)據(jù)同步,只能同步全量數(shù)據(jù)。

  • SQL安全性

    Oracle Reader為您提供querySql功能,您可以自行實(shí)現(xiàn)SELECT抽取語句。Oracle Reader本身對querySql不進(jìn)行任何安全性校驗(yàn)。

附錄:腳本Demo與參數(shù)說明

離線任務(wù)腳本配置方式

如果您配置離線任務(wù)時(shí)使用腳本模式的方式進(jìn)行配置,您需要按照統(tǒng)一的腳本格式要求,在任務(wù)腳本中編寫相應(yīng)的參數(shù),詳情請參見通過腳本模式配置離線同步任務(wù),以下為您介紹腳本模式下數(shù)據(jù)源的參數(shù)配置詳情。

Reader腳本Demo

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "oracle",
            "parameter": {
                "selectedDatabase": "AUTOTEST",
                "indexes": [],
                "datasource": "oracle_test",
                "envType": 0,
                "useSpecialSecret": true,
                "column": [
                    "id"
                ],
                "where": "",
                "splitPk": "id",
                "encoding": "UTF-8",
                "table": "AUTOTEST.table01"
            },
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "odps",
            "parameter": {
            },
            "name": "Writer",
            "category": "writer"
        },
        {
            "name": "Processor",
            "stepType": null,
            "category": "processor",
            "copies": 1,
            "parameter": {
                "nodes": [],
                "edges": [],
                "groups": [],
                "version": "2.0"
            }
        }
    ],
    "setting": {
        "executeMode": null,
        "errorLimit": {
            "record": ""
        },
        "speed": {
            "concurrent": 2,
            "throttle": false
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Reader腳本參數(shù)

參數(shù)

描述

是否必選

默認(rèn)值

datasource

數(shù)據(jù)源名稱,腳本模式支持添加數(shù)據(jù)源,該配置項(xiàng)輸入的內(nèi)容必須和添加的數(shù)據(jù)源名稱保持一致。

selectedDatabase

待同步數(shù)據(jù)庫的schema。

table

選取的需要同步的表名稱,格式需要配置為schema.tableName

說明

例如,selectedDatabaseAUTOTEST,表名稱為table01,則table需配置為AUTOTEST.table01

column

所配置的表中需要同步的列名集合,使用JSON的數(shù)組描述字段信息。默認(rèn)使用所有列配置,例如["*"]

  • 支持列裁剪,即可以導(dǎo)出部分列。

  • 支持列換序,即可以不根據(jù)表Schema信息的順序?qū)С隽小?/p>

  • 支持常量配置,您需要按照J(rèn)SON格式進(jìn)行配置。

    ["id", "1", "'mingya.wmy'", "null", "to_char(a + 1)", "2.3" , "true"]
    • id為普通列名。

    • 1為整型數(shù)字常量。

    • 'mingya.wmy'為字符串常量(注意需要加上一對單引號)。

    • null為空指針。

    • to_char(a + 1)為表達(dá)式。

    • 2.3為浮點(diǎn)數(shù)。

    • true為布爾值。

  • column必須顯示填寫,不允許為空。

splitFactor

切分因子,可以配置同步數(shù)據(jù)的切分份數(shù),如果配置了多并發(fā),會按照并發(fā)數(shù) * splitFactor份來切分。例如,并發(fā)數(shù)=5,splitFactor=5,則會按照5*5=25份來切分,在5個(gè)并發(fā)線程上執(zhí)行。

說明

建議取值范圍:1~100,過大會導(dǎo)致內(nèi)存溢出。

5

splitMode

切分模式,包括:

  • averageInterval:平均采樣,根據(jù)splitPK找到最大值和最小值,然后按照切分?jǐn)?shù)目平均切分。

  • randomSampling:隨機(jī)采樣,在所有數(shù)據(jù)中隨機(jī)找到一定數(shù)目作為切分點(diǎn)。

說明

splitMode參數(shù)需要與splitPk參數(shù)配合使用。

  • 當(dāng)splitPk為數(shù)值類型時(shí),splitMode需要配置為averageInterval

  • 當(dāng)splitPk為字符串類型時(shí),splitMode需要配置為randomSampling

randomSampling

splitPk

Oracle Reader進(jìn)行數(shù)據(jù)抽取時(shí),如果指定splitPk,表示您希望使用splitPk代表的字段進(jìn)行數(shù)據(jù)分片,數(shù)據(jù)同步因此會啟動并發(fā)任務(wù)進(jìn)行數(shù)據(jù)同步,可以提高數(shù)據(jù)同步的效能。

  • 推薦使用表主鍵作為splitPk,因?yàn)楸碇麈I通常情況下比較均勻,因此切分出來的分片也不容易出現(xiàn)數(shù)據(jù)熱點(diǎn)。

  • splitPk僅支持配置為數(shù)值類型或字符串類型,并且splitMode參數(shù)需要與splitPk參數(shù)配合使用。

    • 當(dāng)splitPk為數(shù)值類型時(shí),splitMode需要配置為averageInterval

    • 當(dāng)splitPk為字符串類型時(shí),splitMode需要配置為randomSampling

  • 如果不填寫splitPk,將視作您不對單表進(jìn)行切分,Oracle Reader使用單通道同步全量數(shù)據(jù)。

說明

splitPK字段在視圖的情況下不能使用ROWID。

where

篩選條件,Oracle Reader根據(jù)指定的columntablewhere條件拼接SQL,并根據(jù)該SQL進(jìn)行數(shù)據(jù)抽取。例如,在測試時(shí)指定where條件為row_number()

  • where條件可以有效地進(jìn)行業(yè)務(wù)增量同步 。

  • where條件不配置或?yàn)榭諘r(shí),將視作全表同步數(shù)據(jù) 。

querySql(高級模式,向?qū)J讲恢С郑?/p>

在部分業(yè)務(wù)場景中,where配置項(xiàng)不足以描述所篩選的條件,您可以通過該配置來自定義篩選SQL。當(dāng)您配置該項(xiàng)后,數(shù)據(jù)同步系統(tǒng)就會忽略tablecolumn等配置,直接使用該配置項(xiàng)的內(nèi)容對數(shù)據(jù)進(jìn)行篩選。例如,需要進(jìn)行多表Join后同步數(shù)據(jù),則使用select a,b from table_a join table_b on table_a.id = table_b.id。當(dāng)您配置querySql時(shí),Oracle Reader直接忽略tablecolumnwhere條件的配置。

fetchSize

該配置項(xiàng)定義了插件和數(shù)據(jù)庫服務(wù)器端每次批量數(shù)據(jù)獲取條數(shù),該值決定了數(shù)據(jù)同步系統(tǒng)和服務(wù)器端的網(wǎng)絡(luò)交互次數(shù),能夠較大的提升數(shù)據(jù)抽取性能。

說明

fetchSize值過大(>2048)可能造成數(shù)據(jù)同步進(jìn)程OOM。

1,024

Writer腳本Demo

{
    "type":"job",
    "version":"2.0",//版本號。
    "steps":[
        { 
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"oracle",//插件名。
            "parameter":{
                "postSql":[],//執(zhí)行數(shù)據(jù)同步任務(wù)之后執(zhí)行的SQL語句。
                "datasource":"",
                "session":[],//數(shù)據(jù)庫連接會話參數(shù)。
                "column":[//字段。
                    "id",
                    "name"
                ],
                "encoding":"UTF-8",//編碼格式。
                "batchSize":1024,//一次性批量提交的記錄數(shù)大小。
                "table":"",//表名。
                "preSql":[]//執(zhí)行數(shù)據(jù)同步任務(wù)之前執(zhí)行的SQL語句。
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"http://錯(cuò)誤記錄數(shù)。
        },
        "speed":{
            "throttle":true,//當(dāng)throttle值為false時(shí),mbps參數(shù)不生效,表示不限流;當(dāng)throttle值為true時(shí),表示限流。
            "concurrent":1, //作業(yè)并發(fā)數(shù)。
            "mbps":"12"http://限流,此處1mbps = 1MB/s。
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Writer腳本參數(shù)

參數(shù)

描述

是否必選

默認(rèn)值

datasource

數(shù)據(jù)源名稱,腳本模式支持添加數(shù)據(jù)源,此配置項(xiàng)填寫的內(nèi)容必須要與添加的數(shù)據(jù)源名稱保持一致。

table

目標(biāo)表名稱,如果表的schema信息和上述配置username不一致,請使用schema.table的格式填寫table信息。

writeMode

選擇導(dǎo)入模式,僅支持insert into。當(dāng)主鍵或唯一性索引沖突時(shí),會寫不進(jìn)去沖突的行,以臟數(shù)據(jù)的形式體現(xiàn)。

insert into

column

目標(biāo)表需要寫入數(shù)據(jù)的字段,字段之間用英文逗號分隔。例如"column": ["id","name","age"]。如果要依次寫入全部列,使用*表示。例如"column":["*"]

preSql

執(zhí)行數(shù)據(jù)同步任務(wù)之前率先執(zhí)行的SQL語句。目前向?qū)J絻H允許執(zhí)行一條SQL語句,腳本模式可以支持多條SQL語句,例如清除舊數(shù)據(jù)。

postSql

執(zhí)行數(shù)據(jù)同步任務(wù)之后執(zhí)行的SQL語句。目前向?qū)J絻H允許執(zhí)行一條SQL語句,腳本模式可以支持多條SQL語句,例如加上某一個(gè)時(shí)間戳。

batchSize

一次性批量提交的記錄數(shù)大小,該值可以極大減少數(shù)據(jù)同步系統(tǒng)與Oracle的網(wǎng)絡(luò)交互次數(shù),并提升整體吞吐量。如果該值設(shè)置過大,會導(dǎo)致數(shù)據(jù)同步運(yùn)行進(jìn)程OOM異常。

1,024