1. 程式人生 > >db2部署與數據倉庫應用

db2部署與數據倉庫應用

varchar 部署 應用 header sel path amp times -a

  • 概念特性
  • 安裝
  • 基礎命令
    • 連接
    • 監控
  • 存儲過程

數據合並

Merge Into是增量備份

結果集分組

row_number() OVER (PARTITION BY COL1 ORDER BY COL2)
seletc row_number() over(partition by log_user_id order by id desc) as tmpid, o.* from ope_match_his_log o
表示根據COL1分組,在分組內部根據 COL2排序

tmpid id log_user_id
1 5616 111122222
2 5613 111122222
3 5611 111122222
1 5681 345678900
2 5654 345678900

syscat.routines

存儲所有的存儲過程和用戶自定義函數(UDF)信息
sysproc

call

調用存儲過程

分區特性

DISTRIBUTE BY HASH
原則上,盡量將大表分布在所有的分區上,提高並行處理能力;將小表放置在盡量少的分區上,一般是建議放在單一分區上;盡量減少分區間的通信

create or replace procedure

load from insert into PARTITIONED

專用寄存器(special register)

專用寄存器是 DBA 定義的一個存儲塊,供一個應用程序過程使用,寄存器中的值可以在 SQL 語句或 SQL PL 語句中訪問和引用
最常用的專用寄存器有:

  • CURRENT DATE
  • CURRENT TIME
  • CURRENT TIMESTAMP
  • CURRENT USER
  • CURRENT PATH

多節點多分區數據庫配置的幾個要點

節點認證文件

[root@sjck-node00 ~]# cat /etc/hosts.equiv 
sjck-node00 sjck
sjck-node01 sjck

實例用戶的實例目錄下添加.rhosts文件

[sjck@sjck-node00 sjck]# cat .rhosts 
sjck-node00 sjck
sjck-node01 sjck

節點文件

[root@sjck-node00 sqllib]# cat db2nodes.cfg 
0 sjck-node00 0
1 sjck-node00 1
2 sjck-node01 0
3 sjck-node01 1

啟動

[sjck@sjck-node00 root]$ db2start
01/20/2019 17:32:01     0   0   SQL1063N  DB2START processing was successful.
01/20/2019 17:32:01     1   0   SQL1063N  DB2START processing was successful.
01/20/2019 17:32:08     3   0   SQL1063N  DB2START processing was successful.
01/20/2019 17:32:09     2   0   SQL1063N  DB2START processing was successful.
SQL1063N  DB2START processing was successful.

連接數據庫

[sjck@sjck-node00 ~]$ db2 connect to sjck

  Database Connection Information

Database server        = DB2/LINUXX8664 9.7.4
SQL authorization ID   = SJCK
Local database alias   = SJCK

連接db2

su sjck
db2 connect to sjckdb user sjck using sjck
db2

退出db2

quit

顯示所有數據庫

db2 list db directory

顯示所有表名

db2 list tables

列出當前數據庫下所有的表

db2 list tables for all
db2 list tables for schema sjck

查看表結構

db2 describe table sjck.ccrd_card

查看當前數據庫表空間分配狀況

db2 list tablespaces show detail

查看數據庫配置參數

db2 get dbm cfg

查看當前連接到數據庫的應用

db2 list application

查詢分頁

db2 "select * from sjck.CORE_BHFMCMRM FETCH FIRST 501 ROWS ONLY"

存儲過程

增量表和歷史拉鏈表,生成新的拉鏈表

create or replace procedure tbbak.CREDITOR_ACCREDIT_LIMIT_to_his_proc(in dt_etl varchar(8))   
begin     
declare etldt date;     
declare sql varchar(1000);     
declare ct integer;     
declare del_ct integer;     
set etldt = to_date(dt_etl,‘YYYYMMDD‘);   
select count(1) into del_ct from tbbak.XDZX_CREDITOR_ACCREDIT_LIMIT_his where bg_dt_test=etldt;   
if del_ct > 0 then  delete from tbbak.XDZX_CREDITOR_ACCREDIT_LIMIT_his where bg_dt_test>=etldt;   
update tbbak.XDZX_CREDITOR_ACCREDIT_LIMIT_his set ed_dt_test = ‘9999-12-31‘ 
where ed_dt_test >= etldt - 1 days and ed_dt_test < ‘9999-12-31‘and etl_flag <> ‘D‘;   
commit;   
end if;   
select count(1) into ct from tmp.XDZX_CREDITOR_ACCREDIT_LIMIT;    
 if ct > 0 then   
merge into  tbbak.XDZX_CREDITOR_ACCREDIT_LIMIT_his a   
using tmp.XDZX_CREDITOR_ACCREDIT_LIMIT b on a.ID=b.ID and    a.ed_dt_test=‘9999-12-31‘ when MATCHED then update set a.ed_dt_test=etldt -1 DAYS;   
commit;   
insert into tbbak.XDZX_CREDITOR_ACCREDIT_LIMIT_his select etldt, ‘9999-12-31‘, a.* from tmp.XDZX_CREDITOR_ACCREDIT_LIMIT a;   
commit;   
update tbbak.XDZX_CREDITOR_ACCREDIT_LIMIT_his set ed_dt_test = etldt where etl_flag = ‘D‘ and bg_dt_test = etldt;   
commit;   
end if ;   
end 

db2部署與數據倉庫應用