當前位置:首頁 » 參考文獻 » db2資料庫分區

db2資料庫分區

發布時間: 2021-03-21 23:41:38

1. db2 表數據分區 是否可以修改

1.創建分區表,INCLUSIVE(包含),exclusive(不包含)
CREATE TABLE "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" ( "REPORT_DATE" DATE, "MA_ACCT_NO" VARCHAR(100), "TRANS_DATE" DATE, "ORG_UNIT_ID" VARCHAR(15), "ORG_PROD_ID" VARCHAR(15), "CURR_CD" VARCHAR(15), "ACCT_NO" VARCHAR(15), "TRANS_NUM" VARCHAR(15), "TRANS_NO" VARCHAR(15), "TRANS_DIF" VARCHAR(15), "DEPOSIT_CHAR" VARCHAR(15), "DEPOSIT_BAL" DECIMAL(18,2), "TRANS_AMT" DECIMAL(18,2), "TRANS_TYPE" CHARACTER(1), "FLG" CHARACTER(1), "RATE" DECIMAL(18,6), "TRXMEM" DECIMAL(4,0)) IN "MA_DATA" INDEX IN "MA_INDEX" PARTITION BY RANGE ( "REPORT_DATE" NULLS LAST ) ( PARTITION PART0 STARTING '2010-12-10' INCLUSIVE ENDING '2010-12-20' INCLUSIVE ) ;
ALTER TABLE "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" DATA CAPTURE NONE LOCKSIZE ROW APPEND OFF NOT VOLATILE;
COMMENT ON TABLE "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" IS '活期交易明細表';
COMMENT ON "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" ( "REPORT_DATE" IS '數據日期', "MA_ACCT_NO" IS '管會賬號', "TRANS_DATE" IS '營業日期', "ORG_UNIT_ID" IS '行所號', "ORG_PROD_ID" IS '業務品種 ', "CURR_CD" IS '幣別', "ACCT_NO" IS '帳號', "TRANS_NUM" IS '交易序號', "TRANS_NO" IS '交易代號', "TRANS_DIF" IS '交易區別', "DEPOSIT_CHAR" IS '存款性質 ', "DEPOSIT_BAL" IS '存款余額', "TRANS_AMT" IS '交易金額', "TRANS_TYPE" IS '交易別', "FLG" IS '連動標志', "RATE" IS '匯率' );
GRANT CONTROL ON TABLE "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" TO USER "DB2INST2";
GRANT SELECT, INSERT, UPDATE, ALTER, DELETE, INDEX, REFERENCES ON TABLE "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" TO USER "DB2INST2" WITH GRANT OPTION;
GRANT SELECT, INSERT, UPDATE, ALTER, DELETE, INDEX, REFERENCES ON TABLE "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" TO USER "DB2INST2" WITH GRANT OPTION;
GRANT SELECT, INSERT, UPDATE, ALTER, DELETE, INDEX, REFERENCES ON TABLE "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" TO USER "MAPUB" WITH GRANT OPTION;
2.增加分區,注意這里的INCLUSIVE,exclusive,這時只有2011-01-31的數據可以進行insert
alter table MABAS.BAS_MID_TRANS_LIST_CK_BAK add partition LIST_CK_bak0131 STARTING '2011-01-31' INCLUSIVE ENDING '2011-02-01' exclusive
3.insert 數據
insert into MABAS.BAS_MID_TRANS_LIST_CK_BAK select * from MABAS.BAS_MID_TRANS_LIST_CK where report_date=date('2011-01-31');
4.轉移分區到臨里表
alter table MABAS.BAS_MID_TRANS_LIST_CK_BAK detach partition LIST_CK_bak0131 into MABAS.BAS_MID_TRANS_LIST_CK_BAK1
5.刪除生成的分區遷移表,注意這時分區表的分區(LIST_CK_bak0131)己經不存在了,如果要insert必須新增該分區
drop table MABAS.BAS_MID_TRANS_LIST_CK_BAK1
以下為應用寫的shell腳本,並參照syscat.datapartitions 進行判斷,如果有則刪除分區,否則進行新建,以下為具體的腳本。
. /home/odSUSEr1/.profile#配置文件SYSNAME=GDBMAMADS_HOME=/home/odsuser1/gdbma/etl#DS ConfigDSConfigFile=$MADS_HOME/dsconfig_gdbma#MARPT ETL2資料庫#DB信息DBNAME=`awk 'FS="=" {if ($0~/^MABASDBName/) print $2}' $DSConfigFile`DBUSR=`awk 'FS="=" {if ($0~/^MABASDBUser/) print $2}' $DSConfigFile`DBPWD=`awk 'FS="=" {if ($0~/^MABASDBPassword/) print $2}' $DSConfigFile`DBSCHEMA=`awk 'FS="=" {if ($0~/^MABASDBSchema/) print $2}' $DSConfigFile`DBPWD=`$MADS_HOME/Encrypt/discrypt.sh $DBPWD`dbname=$DBNAMEuser=$DBUSRpasswd=$DBPWD#連接資料庫db2 connect to $DBNAME user $DBUSR using $DBPWD >/dev/nulldb2 set schema=$DBSCHEMA;#傳遞參數JOB_NAME=$1DELETE_DATE=$2#DELETE_DBSCHEMA=$1#DELETE_TAB=$2#DELETE_COL=$3#DELETE_TYPE=$4#DELETE_DATE=$5#DELETE_VALUE=$6
delete_tab="select SCH_NAME,TAB_NAME,IF_PARTITION,TAB_DATE,DEL_VALUE from mabas.s_job_info_m t where JOB_NAME = '"$JOB_NAME"' "DEL_DATA=`db2 -t "$delete_tab"`if [ $? -ne 0 ]thenecho "$SDATA"fiecho "$DEL_DATA" | sed -e '4,/^$/!d;/^$/d'|#循環讀取job,然後調度while read SCH_NAME TAB_NAME IF_PARTITION TAB_DATE DEL_VALUEdo#判斷刪除方式#分區欄位拼寫if [ "$IF_PARTITION" = 'Y' ] then #分區進行拼寫 partiton_name=`db2 -tx "select upper('p'||replace(varchar(date('"$DELETE_DATE"')),'-','')) from sysibm.sysmmy1 "` tmp_tab=`db2 -tx "select upper('tmp'||substr(replace(replace(varchar(current timestamp),'-',''),'.',''),5,10)) from sysibm.sysmmy1 "` #判斷分區是否存在 vi_result=`db2 -tx "select count(*) from syscat.datapartitions t where tabschema = upper('"$SCH_NAME"') and tabname = upper('"$TAB_NAME"') and datapartitionname=upper('"$partiton_name"') "` #對分區進行操作 if [ "$DEL_VALUE" = '-' ] then #判斷分區是否存在 if [ $vi_result -ne 0 ] then #進行分區數據到臨時表 alter_parition=`db2 -tx "alter table $SCH_NAME.$TAB_NAME detach partition $partiton_name into $SCH_NAME.$tmp_tab"` #刪除臨時表 drop_tmp=`db2 -tx "drop table $SCH_NAME.$tmp_tab"` #分區結束 partition_end=`db2 -tx "select varchar(date('"$DELETE_DATE"') +1 days) from sysibm.sysmmy1"` #增加分區 add_partition=`db2 -tx "alter table $SCH_NAME.$TAB_NAME add partition $partiton_name STARTING '"$DELETE_DATE"' INCLUSIVE ENDING '"$partition_end"' exclusive "` else #分區結束 partition_end=`db2 -tx "select varchar(date('"$DELETE_DATE"') +1 days) from sysibm.sysmmy1"` #增加分區 add_partition=`db2 -tx "alter table $SCH_NAME.$TAB_NAME add partition $partiton_name STARTING '"$DELETE_DATE"' INCLUSIVE ENDING '"$partition_end"' exclusive "` fi else if [ $vi_result -ne 0 ] then #進行分區數據到臨時表 drop_parition=`db2 -tx "alter table $SCH_NAME.$TAB_NAME detach partition $partiton_name into $SCH_NAME.$tmp_tab "` #備份臨時表中不屬於該條件的數據 delete_tab_date=`db2 -tx "delete from $SCH_NAME.$tmp_tab where "$DEL_VALUE" "` #分區結束 partition_end=`db2 -tx "select varchar(date('"$DELETE_DATE"') +1 days) from sysibm.sysmmy1"` #增加分區 add_partition=`db2 -tx "alter table $SCH_NAME.$TAB_NAME add partition $partiton_name STARTING '"$DELETE_DATE"' INCLUSIVE ENDING '"$partition_end"' exclusive "` #insert 不符合刪除條件的數據 insert_date=`db2 -tx "insert into $SCH_NAME.$TAB_NAME select * from $SCH_NAME.$tmp_tab "` else #分區結束 partition_end=`db2 -tx "select varchar(date('"$DELETE_DATE"') +1 days) from sysibm.sysmmy1"` #增加分區 add_partition=`db2 -tx "alter table $SCH_NAME.$TAB_NAME add partition $partiton_name STARTING '"$DELETE_DATE"' INCLUSIVE ENDING '"$partition_end"' exclusive "` fi fielse #直接刪除表 if [ "$DEL_VALUE" = "-" ] then delete_tab_data=`db2 -tx "delete from $SCH_NAME.$TAB_NAME where date("$TAB_DATE") = DATE('"$DELETE_DATE"') "` else delete_tab_data=`db2 -tx "delete from $SCH_NAME.$TAB_NAME where date("$TAB_DATE") = DATE('"$DELETE_DATE"') and $DEL_VALUE "` fifidone

2. 資料庫方面的專家們:oracle中的列表分區就是 BY LIST(XX) 在db2中如何表示

PARTITION BY RANGE (REPLY_MONTH)
(
PARTITION P201301 STARTING 201301 INCLUSIVE ENDING 201302 EXCLUSVE ,
PARTITION P201302 STARTING 201302 INCLUSIVE ENDING 201304 EXCLUSVE ,
PARTITION P201303 STARTING 201303 INCLUSIVE ENDING 201305 EXCLUSVE
);

3. 請教db2分區功能

在信息管理行業慶祝資料庫管理系統的第 40 個生日時,IBM 邀請了顧客和合作夥伴來測試 DB2 「Viper」,這是一種混合型的數據伺服器,它標志著信息管理技術的又一次進化。

信息管理技術始於 20 世紀 60 年代早期,也就是美國總統肯尼迪制訂 10 年內實現人類登月目標的時候。1966 年,IBM 與 North American Rockwell(它贏得了發射第一艘登月飛船的合同)合作創建了一個自動化系統來管理建造飛船所需的大量資料。層次化的 Information Management System(IMS)和資料庫管理技術本身由此誕生了。

下一個重要的里程碑也是在 IBM 出現的,即 20 世紀 70 年代關系模型和結構化查詢語言(Structured Query Language,SQL)的發明。1982 年,IBM 在大型機上引入了 DB2,直到現在這仍然是世界各地的大銀行和金融機構選用的資料庫。隨著市場開始在非大型機平台上實現應用程序,IBM 於 1987 年在 OS/2 上引入了 DB2,90 年代又在 AIX、AS/400、HP-UX、Solaris、Windows 和 Linux 上引入了 DB2。DB2 在這么多平台上的實現使得顧客可以選擇最適合自己應用程序需要的版本。

目前,IBM 正在將數據伺服器的進化推進到下一層次,引入了一種可以管理純 XML 和純關系數據的混合型引擎,即 DB2 Viper。DB2 Viper 中的新技術使公司能夠充分利用非關系業務數據(比如 Excel 電子表格中的金融信息或通常存在於紙上或字處理文檔中的重要合同)。利用 DB2 Viper,一個聯結語句就可以將這些業務數據與傳統的關系數據合並在一個完整的視圖中。對電子表格、合同、傳真圖像或收據的手工搜索可以由一個簡單的語句替代。對 XML 數據的標准化訪問機制確保現有的報告工具和介面可以將這些新數據直接提交到桌面。純 XML 技術提供了對業務成功很重要的敏捷性。

新的混合型 XML-關系功能不是 DB2 Viper for Linux, Unix, and Windows 上惟一的新特性。我將討論 DB2 Viper 上可用的主要特性。您可以自己通過 Viper 的開放測試來嘗試這些特性(ibm.com/db2/viper)。

4. 如何知道db2一個分區裡面有多少條表數據

資料庫中還有大量系統表的,所以我覺得你查某些模式下的表比較好: select count(*) from syscat.tables where tabschema='GP' GP為某用戶模式。 當然也可以用 select count(*) from syscat.tables where tabschema='GP' 查出所有表的數量。 再...

5. db2跨分區是什麼意思

db2跨分區就抄是指的db2多分區環境。db2有一種特性叫多分區(dpf)。形象點說,是一個 「邏輯上的資料庫」 由多個 「物理上的資料庫」 組成。這些 「物理上的資料庫」 可以分步在不同的機器上。表數據是按照演算法分步在不同的 「物理上的資料庫」中。該特性的好處是,有更多的IO和cpu可以用,同時能擴大一些硬限制。

相對db2多分區,自然有單分區。我們常見的實例(如安裝db2之後,默認創建的),是多分區環境的一種特例,就是一個分區,自然只能在一個機器上……

6. db2資料庫 怎麼按日或者按月 自動創建表分區

CREATE TABLE lineitem(l_orderkey DECIMAL(10,0) NOT NULL, l_cpartkey INTEGER, l_suppkey INTEGER, l_linenumber INTEGER, l_quantity DECIMAL(12,2), l_extendedprice DECIMAL(12,2), l_discount DECIMAL(12,2), l_tax DECIMAL(12,2), l_returnflag CHAR(1), l_linestatus CHAR(1), l_shipdate DATE, l_commitdate DATE, l_receiptdate DATE, l_shipinstruct CHAR(25), l_shipmode CHAR(10), l_comment VARCHAR(44)) PARTITION BY RANGE(l_shipdate) (STARTING MINVALUE, STARTING '1/1/2000' ENDING '31/12/2020' EVERY 1 YEAR(按月就是 MONTH), ENDING MAXVALUE);

7. db2 查看錶分區語句與創建表分區

創建分區:ALTER TABLE tablename ADD PARTITION statis_month STARTING'201301'
INCLUSIVE ENDING '20090102' INCLUSIVE。

查詢分區select * from syscat.datapartitions t where tabschema =模式名 and tabname = 表名

8. db2 表分區剝離 是刪除數據嗎

1.創建分區表,INCLUSIVE(包含),exclusive(不包含)
CREATE TABLE "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" ( "REPORT_DATE" DATE, "MA_ACCT_NO" VARCHAR(100), "TRANS_DATE" DATE, "ORG_UNIT_ID" VARCHAR(15), "ORG_PROD_ID" VARCHAR(15), "CURR_CD" VARCHAR(15), "ACCT_NO" VARCHAR(15), "TRANS_NUM" VARCHAR(15), "TRANS_NO" VARCHAR(15), "TRANS_DIF" VARCHAR(15), "DEPOSIT_CHAR" VARCHAR(15), "DEPOSIT_BAL" DECIMAL(18,2), "TRANS_AMT" DECIMAL(18,2), "TRANS_TYPE" CHARACTER(1), "FLG" CHARACTER(1), "RATE" DECIMAL(18,6), "TRXMEM" DECIMAL(4,0)) IN "MA_DATA" INDEX IN "MA_INDEX" PARTITION BY RANGE ( "REPORT_DATE" NULLS LAST ) ( PARTITION PART0 STARTING '2010-12-10' INCLUSIVE ENDING '2010-12-20' INCLUSIVE ) ;
ALTER TABLE "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" DATA CAPTURE NONE LOCKSIZE ROW APPEND OFF NOT VOLATILE;
COMMENT ON TABLE "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" IS '活期交易明細表';
COMMENT ON "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" ( "REPORT_DATE" IS '數據日期', "MA_ACCT_NO" IS '管會賬號', "TRANS_DATE" IS '營業日期', "ORG_UNIT_ID" IS '行所號', "ORG_PROD_ID" IS '業務品種 ', "CURR_CD" IS '幣別', "ACCT_NO" IS '帳號', "TRANS_NUM" IS '交易序號', "TRANS_NO" IS '交易代號', "TRANS_DIF" IS '交易區別', "DEPOSIT_CHAR" IS '存款性質 ', "DEPOSIT_BAL" IS '存款余額', "TRANS_AMT" IS '交易金額', "TRANS_TYPE" IS '交易別', "FLG" IS '連動標志', "RATE" IS '匯率' );
GRANT CONTROL ON TABLE "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" TO USER "DB2INST2";
GRANT SELECT, INSERT, UPDATE, ALTER, DELETE, INDEX, REFERENCES ON TABLE "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" TO USER "DB2INST2" WITH GRANT OPTION;
GRANT SELECT, INSERT, UPDATE, ALTER, DELETE, INDEX, REFERENCES ON TABLE "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" TO USER "DB2INST2" WITH GRANT OPTION;
GRANT SELECT, INSERT, UPDATE, ALTER, DELETE, INDEX, REFERENCES ON TABLE "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" TO USER "MAPUB" WITH GRANT OPTION;
2.增加分區,注意這里的INCLUSIVE,exclusive,這時只有2011-01-31的數據可以進行insert
alter table MABAS.BAS_MID_TRANS_LIST_CK_BAK add partition LIST_CK_bak0131 STARTING '2011-01-31' INCLUSIVE ENDING '2011-02-01' exclusive
3.insert 數據
insert into MABAS.BAS_MID_TRANS_LIST_CK_BAK select * from MABAS.BAS_MID_TRANS_LIST_CK where report_date=date('2011-01-31');
4.轉移分區到臨里表
alter table MABAS.BAS_MID_TRANS_LIST_CK_BAK detach partition LIST_CK_bak0131 into MABAS.BAS_MID_TRANS_LIST_CK_BAK1
5.刪除生成的分區遷移表,注意這時分區表的分區(LIST_CK_bak0131)己經不存在了,如果要insert必須新增該分區
drop table MABAS.BAS_MID_TRANS_LIST_CK_BAK1
以下為應用寫的shell腳本,並參照syscat.datapartitions 進行判斷,如果有則刪除分區,否則進行新建,以下為具體的腳本。
. /home/odSUSEr1/.profile#配置文件SYSNAME=GDBMAMADS_HOME=/home/odsuser1/gdbma/etl#DS ConfigDSConfigFile=$MADS_HOME/dsconfig_gdbma#MARPT ETL2資料庫#DB信息DBNAME=`awk 'FS="=" {if ($0~/^MABASDBName/) print $2}' $DSConfigFile`DBUSR=`awk 'FS="=" {if ($0~/^MABASDBUser/) print $2}' $DSConfigFile`DBPWD=`awk 'FS="=" {if ($0~/^MABASDBPassword/) print $2}' $DSConfigFile`DBSCHEMA=`awk 'FS="=" {if ($0~/^MABASDBSchema/) print $2}' $DSConfigFile`DBPWD=`$MADS_HOME/Encrypt/discrypt.sh $DBPWD`dbname=$DBNAMEuser=$DBUSRpasswd=$DBPWD#連接資料庫db2 connect to $DBNAME user $DBUSR using $DBPWD >/dev/nulldb2 set schema=$DBSCHEMA;#傳遞參數JOB_NAME=$1DELETE_DATE=$2#DELETE_DBSCHEMA=$1#DELETE_TAB=$2#DELETE_COL=$3#DELETE_TYPE=$4#DELETE_DATE=$5#DELETE_VALUE=$6
delete_tab="select SCH_NAME,TAB_NAME,IF_PARTITION,TAB_DATE,DEL_VALUE from mabas.s_job_info_m t where JOB_NAME = '"$JOB_NAME"' "DEL_DATA=`db2 -t "$delete_tab"`if [ $? -ne 0 ]thenecho "$SDATA"fiecho "$DEL_DATA" | sed -e '4,/^$/!d;/^$/d'|#循環讀取job,然後調度while read SCH_NAME TAB_NAME IF_PARTITION TAB_DATE DEL_VALUEdo#判斷刪除方式#分區欄位拼寫if [ "$IF_PARTITION" = 'Y' ] then #分區進行拼寫 partiton_name=`db2 -tx "select upper('p'||replace(varchar(date('"$DELETE_DATE"')),'-','')) from sysibm.sysmmy1 "` tmp_tab=`db2 -tx "select upper('tmp'||substr(replace(replace(varchar(current timestamp),'-',''),'.',''),5,10)) from sysibm.sysmmy1 "` #判斷分區是否存在 vi_result=`db2 -tx "select count(*) from syscat.datapartitions t where tabschema = upper('"$SCH_NAME"') and tabname = upper('"$TAB_NAME"') and datapartitionname=upper('"$partiton_name"') "` #對分區進行操作 if [ "$DEL_VALUE" = '-' ] then #判斷分區是否存在 if [ $vi_result -ne 0 ] then #進行分區數據到臨時表 alter_parition=`db2 -tx "alter table $SCH_NAME.$TAB_NAME detach partition $partiton_name into $SCH_NAME.$tmp_tab"` #刪除臨時表 drop_tmp=`db2 -tx "drop table $SCH_NAME.$tmp_tab"` #分區結束 partition_end=`db2 -tx "select varchar(date('"$DELETE_DATE"') +1 days) from sysibm.sysmmy1"` #增加分區 add_partition=`db2 -tx "alter table $SCH_NAME.$TAB_NAME add partition $partiton_name STARTING '"$DELETE_DATE"' INCLUSIVE ENDING '"$partition_end"' exclusive "` else #分區結束 partition_end=`db2 -tx "select varchar(date('"$DELETE_DATE"') +1 days) from sysibm.sysmmy1"` #增加分區 add_partition=`db2 -tx "alter table $SCH_NAME.$TAB_NAME add partition $partiton_name STARTING '"$DELETE_DATE"' INCLUSIVE ENDING '"$partition_end"' exclusive "` fi else if [ $vi_result -ne 0 ] then #進行分區數據到臨時表 drop_parition=`db2 -tx "alter table $SCH_NAME.$TAB_NAME detach partition $partiton_name into $SCH_NAME.$tmp_tab "`

9. oracle與db2分區的區別

oracle和SQL SERVER都是用抄SQL語句可以編襲寫資料庫,但語法有區別,我樓上說的SQL SERVER說不穩定,也不一定吧~這里我說的都是正版,不過ORACLE確實是現在企業用的多~不過ORACLE可不只是能用JAVA寫,要弄清楚ORACLE和SQL SERVER都是資料庫,每個軟體都有針資料庫編程的語法。真正編資料庫可以用ORACLE中SQL語句來寫。而且真正完全用SQL SERVER的功能也不一定是容易。現在微軟的SQL 2000 有一個比較好的特點就是能處理100用戶內的並發問題~最新SQL SERVER2005情況還真沒過~它們在國際上價格差不多。

熱點內容
塗鴉論文 發布:2021-03-31 13:04:48 瀏覽:698
手機資料庫應用 發布:2021-03-31 13:04:28 瀏覽:353
版面217 發布:2021-03-31 13:04:18 瀏覽:587
知網不查的資源 發布:2021-03-31 13:03:43 瀏覽:713
基金贖回參考 發布:2021-03-31 13:02:08 瀏覽:489
懸疑故事範文 發布:2021-03-31 13:02:07 瀏覽:87
做簡單的自我介紹範文 發布:2021-03-31 13:01:48 瀏覽:537
戰略地圖參考 發布:2021-03-31 13:01:09 瀏覽:463
收支模板 發布:2021-03-31 13:00:43 瀏覽:17
電氣學術會議 發布:2021-03-31 13:00:32 瀏覽:731