[ODS-DB/home/dw]$db2 list db directory --查看所有數據庫名等信息,
2. 啓動數據庫實例
db2start --啓動實例
3. 連接到數據庫
[ODS-DB/home/dw]$db2 connect to edp user dw using dw
4. 查看數據庫端口號(數據庫管理配置)
[localhost/db-ods/dw]$db2 get dbm cfg|grep -i svcename
5. 查看數據庫配置
[localhost/db-ods/dw]$db2 get db cfg for edp
6. 停止數據庫
db2stop force(停止進程關閉實例)
7. 修改數據庫參數
Db2 update dbm cfg/db2 update db cfg
8. 獲取快照信息(snapshot)
[localhost/db-ods/dw]$db2 get snapshot for application agentid 2805
[localhost/db-ods/dw]$db2 get snapshot for locks on edp
9. DB2LOOK命令
[localhost/db-ods/dw]$db2look -d edp -z dw -t zj_test –e
該命令可以獲取表的定義信息,還可以導出表(可以多個表)結構到一個文件中:
[localhost/db-ods/dw]$db2look -d edp -z dw -t zj_test dim_time -e -o ./zj_crt_tb.sql
10. DB2EXPORT命令
[localhost/db-ods/dw]$
導出表數據,格式可以定製,del:帶分隔符,數據可見
10. db2load
11. 查看sqlcodedb2 "load client from ./zj.del of del MODIFIED BY COLDEL0X1D NOCHARDEL NOROWWARNINGS insert into dw.zj_test nonrecoverable CPU_PARALLELISM 8"
[localhost/db-ods/dw]$db2 ? sql30081n
12. 壓縮表空間
db2 alter tablespace <tabsp ace_name> reduce --收縮表空間,壓縮表空間
13. 列出指定用戶下的表
[localhost/db-ods/dw]$db2 "list tables for schema dw"
14. 命令行下編譯存儲過程:
db2 –td@ -vf xxx.sql ------ -td指定結束符 –v顯示 –f指定文件
15. 創建數據庫:db2 "CREATE DATABASE EDP AUTOMATIC STORAGE YES ON '/home/dw' DBPATH ON '/home/dw' USING CODESET GBK TERRITORY CN COLLATE USING SYSTEM PAGESIZE 32768 DFT_EXTENT_SZ 6"
16. 創建表空間:
db2 "CREATE LARGE TABLESPACE "TBS_SDM_DATA" IN DATABASE PARTITION GROUP IBMDEFAULTGROUP
PAGESIZE 32768 MANAGED BY AUTOMATIC STORAGE
AUTORESIZE YES
INITIALSIZE 30 M
MAXSIZE NONE
EXTENTSIZE 64
PREFETCHSIZE AUTOMATIC
BUFFERPOOL TBSSDMBUF32K
OVERHEAD 7.500000
TRANSFERRATE 0.060000
NO FILE SYSTEM CACHING
DROPPED TABLE RECOVERY ON";
17. db2 查看錶空間容器:
21. identity字段id int generated always as identity (start with 100 increment by 1)
和sequence都可以
1. db2查看死鎖
(1) db2 get snapshot for locks on EDP>zj_lock.txt
(2) select * from SYSIBMADM.LOCKS_HELD
(3) db2 list applications show detail | grep -i lock
2. 解除鎖定
db2 "force application (10131,10132)"
3. 手動給表上鎖
[localhost/db-ods/dw]$db2 +c lock table zj_test in exclusive mode
1. DELETE FROM <TABLENAME>--適合數據量小的表
2. TRUNCATE TABLE EBD.AFA_BATINFO IMMEDIATE;
Db2 v9支持該語句,同時會壓縮空間,但是是異步操作。
3. db2 alter table S_CRD_DBT_TRS_BRN_D ACTIVATE NOT LOGGED INITIALLY with empty table
4. [localhost/db-ods/dw]$IMPORT FROM /dev/null OF DEL REPLACE INTO zj_test
IMPORT可以創建表、索引、支持觸發器記錄日誌,入庫方式支持insert、insert_update、replace、replace_create(不需要表存在、ixf格式)、create(導入新表、ixf格式)
5. [localhost/db-ods/dw]$db2 load from /dev/null of del replace into zj_test nonrecoverable
LOAD不記錄日誌,速度較快,支持(insert、replace)但是建議用import
6. DROP/CREATE TABLE
7. SELECT CARD,TABNAME FROM SYSCAT.TABLES
WHERE TABSCHEMA='EBD'
清空某個SCHEMA下的表之後可以用該語句查看是否成功,注意壓縮的延遲動作。
1. 修改表名
RENAME TABLE <TBNAME> TO <NEW-TBNAME>
2. 修改字段類型
ALTER TABLE ZJ_TEST ALTER NAME SET DATA TYPE VARCHAR(2)
注意:修改後的數據類型和長度要對照表中已有數據,否則報錯
3. 修改字段名
ALTER TABLE ZJ_TEST RENAME COLUMN ID TO NAME
4. 增加字段
alter table zj_test add column id varchar(10);
5. 更新字段值
update zj_test set (name,id)=('jk','123') where name='a'
6. 增加約束
ALTER TABLE "CUSTOMER" ADD CONSTRAINT CUST_ID_PK PRIMARY KEY (CUST_ID)--創建約束
1. 刪除重複的行(數據量較小)
delete from (select * from(select a,b,c,row_number() over(partition by a,b,c order by a,b,c) as row_num from tab) as e where row_num >1)
如果數據量太大:如果數據量太大可以採用如下方法:
Create table emp_profile_temp like emp_profile;
LOAD FROM CURSUR
DECLARE mycursor CURSOR FOR SELECT distinct * FROM emp_profile;
LOAD FROM mycursor OF CURSOR INSERT INTO emp_profile_temp;
drop table emp_profile;
rename table emp_profile_temp to emp_profile
2. DB2 MERGE的用法
db2 "merge into zj_test as a
using (select name,id from zj_test1) as b
on a.id=b.id
when matched then update set name=b.name
when not matched then insert (name,id) values (b.name,b.id)"
3.db2後臺導出存儲過程的辦法
db2 "EXPORT TO PROCUDURE.DEL OF DEL MODIFIED BY LOBSINFILE SELECT 'SET CURRENT SCHEMA '||RTRIM(PROCSCHEMA)||'@'||CHR(10)||'SET CURRENT PATH = SYSIBM,SYSFUN,SYSPROC,'||RTRIM(PROCSCHEMA)||' @'||CHR(10)||TEXT||CHR(10)||'@'||CHR(10) FROM SYSCAT.PROCEDURES WHERE PROCNAME='SP_S_GL_BAL_D';"
注意:SYSCAT.PROCEDURES的TEXT爲lob字段類型
4.自定義異常
分區
1. 刪除分區
ALTER TABLE ZJ_TEST DETACH PARTITION UPPER('P20130731') INTO ZJ_TEST_TMP_20130926;--異步操作,需等待
2. Commit;--commit很重要
3. 刪除臨時表
DROP TABLE ZJ_TEST_TMP_20130926;
4. 重建分區
ALTER TABLE ZJ_TEST ADD PARTITION 'P20130731' STARTING '20130731' INCLUSIVE ENDING '20130801' EXCLUSIVE;--包括‘20130731’,不包括‘20130801’
5. 遷出分區之後必須要有個等待操作(可以參考db2官方文檔“waitingfordetach”)