內容來自《Spring Batch 批處理框架》,作者:劉相。
一、spring batch 框架進行元數據管理共有六張表,三張SEQUENCE用來分配主鍵的,九張表分別是:
BATCH_JOB_INSTANCE
BATCH_JOB_EXECUTION
BATCH_JOB_EXECUTION_PARAMS
BATCH_STEP_EXECUTION
BATCH_STEP_EXECUTION_CONTEXT
BATCH_JOB_EXECUTION_CONTEXT
BATCH_STEP_EXECUTION_SEQ
BATCH_JOB_EXECUTION_SEQ
BATCH_JOB_SEQ
這幾張表的建表腳本可以從框架中獲取。我的在:spring-batch-core-3.0.9.RELEASE\org\springframework\batch\core\schema-oracle10g.sql。
下面對每張表的作用做個說明:
BATCH_JOB_INSTANCE | 作業實例表。用於存放Job的實例信息。 |
BATCH_JOB_EXECUTION | 作業執行器表。用於存放當前作業的執行信息,比如創建時間。執行開始時間,執行結束時間,執行的哪個Job實例,執行狀態等。 |
BATCH_JOB_EXECUTION_PARAMS | 作業參數表。用於存放每個Job執行時候的參數信息,該參數實際上是對應Job實例的。 |
BATCH_STEP_EXECUTION | 作業步執行器表。用於存放每個Step執行器的信息,比如作業步的開始時間、執行完成時間、執行狀態、讀/寫次數、跳過次數等。 |
BATCH_STEP_EXECUTION_CONTEXT | 作業步執行上下文表。用於存放每個作業步的上下文信息。 |
BATCH_JOB_EXECUTION_CONTEXT | 作業執行上下文表。用於存放作業執行器上下文的信息。 |
BATCH_STEP_EXECUTION_SEQ | 作業步序列表。用於給表BATCH_STEP_EXECUTION和BATCH_STEP_EXECUTION_CONTEXT提供主鍵。 |
BATCH_JOB_EXECUTION_SEQ | 作業執行器序列表。用於給表BATCH_JOB_EXECUTION和BATCH_JOB_EXECUTION_CONTEXT提供主鍵。 |
BATCH_JOB_SEQ | 作業序列表。用於給表BATCH_JOB_INSTANCE和BATCH_JOB_EXECUTION_PARAMS提供主鍵。 |
二、每個表字段說明:
1.BATCH_JOB_INSTANCE
1.1 建表SQL:
CREATE TABLE BATCH_JOB_INSTANCE ( JOB_INSTANCE_ID NUMBER(19,0) NOT NULL PRIMARY KEY , VERSION NUMBER(19,0) , JOB_NAME VARCHAR2(100) NOT NULL, JOB_KEY VARCHAR2(32) NOT NULL, constraint JOB_INST_UN unique (JOB_NAME, JOB_KEY) ) ;
1.2 字段說明:
JOB_INSTANCE_ID :主鍵。作業實例ID編號,根據BATCH_JOB_SEQ自動生成。
VERSION :版本號。
JOB_NAME :作業名稱。即在配置文件中定義的 job id 字段的內容。
JOB_KEY :作業標識。根據作業參數序列化生成的標識。需要注意通過 JOB_NAME +JOB_KEY 能夠唯一區分一個作業實例。如果是同一個Job,則JOB KEY一定不能相通,即作業參數不能相同。如果不是同一個JOB則KEY可以相同,也就說可以是同一個作業參數。
2.BATCH_JOB_EXECUTION
2.1 建表SQL:
CREATE TABLE BATCH_JOB_EXECUTION ( JOB_EXECUTION_ID NUMBER(19,0) NOT NULL PRIMARY KEY , VERSION NUMBER(19,0) , JOB_INSTANCE_ID NUMBER(19,0) NOT NULL, CREATE_TIME TIMESTAMP NOT NULL, START_TIME TIMESTAMP DEFAULT NULL , END_TIME TIMESTAMP DEFAULT NULL , STATUS VARCHAR2(10) , EXIT_CODE VARCHAR2(2500) , EXIT_MESSAGE VARCHAR2(2500) , LAST_UPDATED TIMESTAMP, JOB_CONFIGURATION_LOCATION VARCHAR(2500) NULL, constraint JOB_INST_EXEC_FK foreign key (JOB_INSTANCE_ID) references BATCH_JOB_INSTANCE(JOB_INSTANCE_ID) ) ;
2.2 字段說明:
JOB_EXECUTION_ID :主鍵。作業執行器ID編號。
VERSION :版本號。
JOB_INSTANCE_ID :作業實例ID編號。
CREATE_TIME :作業執行器創建時間。
START_TIME :作業執行器開始執行時間。
END_TIME :作業執行器結束時間。
STATUS :作業執行器的狀態。如:COMPLETED,STARTING,STARTED,STOPPING,STOPTED,FAILED,ABANDED,UNKNOWN。這些狀態在類org.springframework.batch.core.ExitStatus中。
EXIT_CODE :作業執行器退出編碼。如:UNKNOWN,EXEXCUTION,COMPLETED,NOOP,FAILED,STOPPED。這些狀態在類org.springframework.batch.core.ExitStatus中定義的。
EXIT_MESSAGE :作業執行器退出描述,詳細描述退出的信息,如果發生異常,通常包含異常的堆棧信息。
LAST_UPDATED :本條記錄上次更新時間。
JOB_CONFIGURATION_LOCATION :Job本地配置信息。
3.BATCH_JOB_EXECUTION_PARAMS
3.1 建表SQL:
CREATE TABLE BATCH_JOB_EXECUTION_PARAMS ( JOB_EXECUTION_ID NUMBER(19,0) NOT NULL , TYPE_CD VARCHAR2(6) NOT NULL , KEY_NAME VARCHAR2(100) NOT NULL , STRING_VAL VARCHAR2(250) , DATE_VAL TIMESTAMP DEFAULT NULL , LONG_VAL NUMBER(19,0) , DOUBLE_VAL NUMBER , IDENTIFYING CHAR(1) NOT NULL , constraint JOB_EXEC_PARAMS_FK foreign key (JOB_EXECUTION_ID) references BATCH_JOB_EXECUTION(JOB_EXECUTION_ID) ) ;
3.2 字段說明:
JOB_EXECUTION_ID:外鍵,作業執行器ID編號。一個作業實例可能會有多行參數記錄,主要根據參數的個數決定的。
TYPE_CD :參數類型,可能是如下四種當中的一種:date、string、long、double。
KEY_NAME :參數的名字。
STRING_VAL :如果參數是String類型此處存放是String類型的參數值。
DATE_VAL :如果參數是date類型,此處存放的是date類型的參數值。
LONG_VAL :如果參數是long類型,此處存放是long類型的參數值。
DOUBLE_VAL :如果參數是double類型,則此處存放double類型的參數值。
IDENTIFYING :用於標識作業參數是否標識作業實例。
4.BATCH_STEP_EXECUTION
4.1 建表SQL:
CREATE TABLE BATCH_STEP_EXECUTION ( STEP_EXECUTION_ID NUMBER(19,0) NOT NULL PRIMARY KEY , VERSION NUMBER(19,0) NOT NULL, STEP_NAME VARCHAR2(100) NOT NULL, JOB_EXECUTION_ID NUMBER(19,0) NOT NULL, START_TIME TIMESTAMP NOT NULL , END_TIME TIMESTAMP DEFAULT NULL , STATUS VARCHAR2(10) , COMMIT_COUNT NUMBER(19,0) , READ_COUNT NUMBER(19,0) , FILTER_COUNT NUMBER(19,0) , WRITE_COUNT NUMBER(19,0) , READ_SKIP_COUNT NUMBER(19,0) , WRITE_SKIP_COUNT NUMBER(19,0) , PROCESS_SKIP_COUNT NUMBER(19,0) , ROLLBACK_COUNT NUMBER(19,0) , EXIT_CODE VARCHAR2(2500) , EXIT_MESSAGE VARCHAR2(2500) , LAST_UPDATED TIMESTAMP, constraint JOB_EXEC_STEP_FK foreign key (JOB_EXECUTION_ID) references BATCH_JOB_EXECUTION(JOB_EXECUTION_ID) ) ;
4.2 字段說明:
STEP_EXECUTION_ID :主鍵,作業步實例ID編號。
VERSION :版本。
STEP_NAME :操作步的名字。
JOB_EXECUTION_ID :外鍵。操作執行器ID。
START_TIME :操作步執行器開始執行時間。
END_TIME :操作步執行器結束時間。
STATUS :操作步執行器執行狀態,如:COMPLETED,STARTING,STARTED,STOPPING,STOPPED,FAILED,ABANDED,UNKNOWN。這些狀態在類:org.springframework.batch.core.ExitStatus中。
COMMIT_COUNT :事務提交次數。
READ_COUNT :讀數據的次數。
FILTER_COUNT :過濾掉的數據次數。
WRITE_COUNT :寫數據的次數。
READ_SKIP_COUNT :讀數據跳過的次數。
WRITE_SKIP_COUNT :寫數據跳過的次數。
PROCESS_SKIP_COUNT :處理數據跳過的次數。
ROLLBACK_COUNT :事務回滾次數。
EXIT_CODE :操作步執行器的退出編碼。如:UNKNOWN,EXEXCUTION,COMPLETED,NOOP,FAILED,STOPPED。這些狀態在類org.springframework.batch.core.ExitStatus中定義的。
EXIT_MESSAGE :操作步執行器退出描述,詳細描述退出的信息。如異常的堆棧信息等。
LAST_UPDATED :本條記錄上次更新時間。
5.BATCH_STEP_EXECUTION_CONTEXT
5.1 建表SQL:
CREATE TABLE BATCH_STEP_EXECUTION_CONTEXT ( STEP_EXECUTION_ID NUMBER(19,0) NOT NULL PRIMARY KEY, SHORT_CONTEXT VARCHAR2(2500) NOT NULL, SERIALIZED_CONTEXT CLOB , constraint STEP_EXEC_CTX_FK foreign key (STEP_EXECUTION_ID) references BATCH_STEP_EXECUTION(STEP_EXECUTION_ID) ) ;
5.2 字段說明:
STEP_EXECUTION_ID :外鍵。操作步執行器ID編號。
SHORT_CONTEXT :作業執行器上下文字符串格式。
SERIALIZED_CONTEXT :序列化的作業執行器上下文。
6.BATCH_JOB_EXECUTION_CONTEXT
6.1 建表SQL:
CREATE TABLE BATCH_JOB_EXECUTION_CONTEXT ( JOB_EXECUTION_ID NUMBER(19,0) NOT NULL PRIMARY KEY, SHORT_CONTEXT VARCHAR2(2500) NOT NULL, SERIALIZED_CONTEXT CLOB , constraint JOB_EXEC_CTX_FK foreign key (JOB_EXECUTION_ID) references BATCH_JOB_EXECUTION(JOB_EXECUTION_ID) ) ;
6.2 字段說明:
JOB_EXECUTION_ID :外鍵。作業執行器ID編號。
SHORT_CONTEXT :作業執行器上下文字符串格式。
SERIALIZED_CONTEXT :序列化的作業執行器上下文。