常用的DB2命令

chinayuan發表於2020-04-05
================================= 常用的DB2命令: ================================= db2cmd, db2cee, db2cc, 例項與資料庫的概念。(與oracle比較) Db2一個例項可以對應多個資料庫,一個資料庫只能對應一個例項。Oracle 一個例項只能對應一個資料庫。但是一個資料庫可以對應多個例項。 1.檢視db2 version: select * from sysibmadm.env_inst_info db2level select * from sysibm.sysversions db2pd -version 2.執行sql指令碼: db2 -tvf c:/1.sql db2 -td/ -vf F:/db2-sql/stored-procedure/db2universal.sql 以/作為statement terminator character 3.db2服務 允許遠端連線ControlCenter: db2admin start 關閉遠端連線ControlCenter: db2admin stop 4.查詢license是否過期 db2licm -l 5.有哪些db2 instance: db2 get instance db2ilist 6.對instance的管理 db2 get instance db2ilist db2icrt db2idrop 啟動DB2 instance服務:db2start 關閉DB2 instance 服務: db2stop 強制db2 instance stop: db2stop force automatically start instance: db2iauto -on 設定例項系統啟動時是否自動啟動。 $ db2iauto -on 自動啟動 $ db2iauto -off 不自動啟動 7.編目維護: 本地連線本地資料庫: 為資料庫建立編目 $ db2 catalog db btpdbs on /db2catalog 取消已編目的資料庫btpdbs $ db2 uncatalog db btpdbs 本地連線遠端資料庫: 建立編目 db2 catalog tcpip node mynode1 remote 9.186.116.171 server 50000 db2 catalog db adapter as adapter at node mynode1 db2 terminate db2 connect to adapter user db2admin using wbiadmin 取消編目 db2 uncatalog node mynode1 db2 uncatelog db adapter 8.檢視有哪些functions和stored procedure: syscat.functions被syscat.routines所取代。 db2 select * from sysibm.sysfunctions where schema='DB2ADMIN' >>C:/TEMP/1.TXT db2 select funcname from syscat.functions where funcschema='DB2ADMIN' >>C:/TEMP/1.TXT ---- STORED PROCEDURES: SELECT ROUTINESCHEMA,ROUTINENAME FROM SYSCAT.ROUTINES WHERE ROUTINETYPE ='P' AND ROUTINESCHEMA = 'DB2ADMIN' ---FUNCTIONS SELECT ROUTINESCHEMA,ROUTINENAME FROM SYSCAT.ROUTINES WHERE ROUTINETYPE ='F' AND ORIGIN != 'S' AND ROUTINESCHEMA = 'DB2ADMIN' 9. schema的操作: db2 set schema btp 修改當前模式為"btp" db2 SELECT NAME FROM SYSIBM.SYSSCHEMATA 列出所有SCHEMA or db2 select schemaname from syscat.schemata db2 describe table syscat.schemata db2 list tables for all 列出當前資料庫下所有的表 db2 list tables for user db2 list tables for system db2 list tables for schema btp 列出當前資料庫中schema為btp的表 DB2 LIST TABLES [FOR {USER | ALL | SYSTEM | SCHEMA schema-name}] [SHOW DETAIL] 刪除schema: DROP SCHEMA RPW RESTRICT; 建立Schema: CREATE SCHEMA RPW; 10.如何檢視一些記憶體中的資訊(dbm和database) db2pd -dynamic -db adapter -file c:/temp.txt 檢視記憶體中的sql語句 Returns information the execution of dynamic SQL in "adapter" db. db2pd -db adapter -dynamic 檢視記憶體中的sql statements ---------非常有用 db2 get snapshot for dynamic sql on adapter >c:/temp/stmt.txt ---------非常有用 db2 SELECT * FROM TABLE( SNAPSHOT_DYN_SQL( 'SAMPLE', -1 )) as SNAPSHOT_DYN_SQL ---------非常有用 db2pd -static -db adapter Returns information about the execution of static SQL and packages in "adapter" db. db2 SELECT * FROM TABLE( SNAPSHOT_STATEMENT( 'SAMPLE', -1 )) as SNAPSHOT_STATEMENT db2 select * from syscat.statements db2pd -activestatements -db adapter db2pd -catalogcache -db adapter db2pd -reopt -db adapter db2pd -transaction -db adapter db2 list tablespaces show detail 檢視當前資料庫表空間分配狀況 db2 list tablespace containers for 2 show detail 檢視tablespace id=2使用容器所在目錄 db2 list application db2 list db directory 列出所有資料庫 db2 list active databases 列出所有活動的資料庫 db2 list packages for all 11.檢視application: db2 list applications 顯示所有的session db2 Force application all; 強行使使用者斷開 與資料庫的連線 db2 force application(hangle_id) 殺掉一個session db2 connect to user using 連線資料庫 db2 connect reset 退出資料庫 db2 disconnect db2 terminate 斷開資料庫連線 12.檢視執行計劃 db2expln –d 資料庫名 –q "sql語句" -t for example: db2expln -d adapter -q "select * from customer" -t db2expln建議你把執行路徑和索引情況分析分析 db2expln -d dbname -u db2inst1 password -t -g -f select.sql > explain.out 13.tablespace: create tablespace userspace1 managed by system using('f:/test/user') bufferpool test_bp create system temporary tablespace managed by system using('f:/test/systmp') bufferpool test_bp create user temporary tablespace managed by system using('f:/test/usertmp') bufferpool test_bp create bufferpool test_bp size 250 pagesize 32k not EXTENDED STORAGE create bufferpool pool_test size 250 pagesize 32k not EXTENDED STORAGE create bufferpool size [pagesize 4096] {[not] EXTENDED STORAGE} drop tablespace userspace1 13.資料庫管理: db2 create database test drop database test db2 create database jhtest catalog tablespace managed by system using('d:/db2/jhtest/catalog') system temporary tablespace managed by system using('d:/db2/jhtest/systmp') 14.隔離級的更改 1)語句級別: db2 "select * from table WITH UR" 2)session級別:db2 set current isolation level = UR 3)永久:需要rebind package,具體請查詢相關語法 4)CLI: TxnIsolation = 1 | 2 | 4 | 8 | 32 5) : db2 change isolation to ur 15.Runstats runstats on table table_name for detailed indexes all 16. 主題:db2的where條件執行順序問題 前幾天有個老師給講sql語句的優化問題,提到oracle在處理where條件的時候是先處理最右邊的比如select * from table where a>'**' and b<'**',資料庫在執行的時候是先篩選b<'**'的條件,之後再篩選前面的條件 現在在用db2,請問, db2裡面是怎麼樣的執行順序呢? db2與ORACLE的機制不同,在ORACLE中可以在SQL指定很多優化器提示什麼的,也有執行謂詞的順序。在db2中根據RUNSTAT的統計資訊自己確定優化的,可能會重寫,所以不一定是固定順序。所以db2是基於統計資訊的優化,不可以像ORACLE那樣可以基於成本或效能等等靈活。 ============================ 幫助資訊: ============================ db2set -h db2 ? db2 ? options db2 ? help db2 ? list tables db2 ? SQL0104N db2 ? DB21004E db2 ? list applications db2 list command options ------------------------------------- db2 [option ...] [db2-command | sql-statement |[? [phrase | message | sqlstate | class-code]]] option:-a、-c、-d、-e{c|s}、-finfile、-i、-lhistfile、-o、-m、-n、-p、-q、-rreport、-s、-t、-td;、-v、-w、-x 和 -zoutputfile。 db2-command: ACTIVATE DATABASE GET CONTACTS RECOVER ADD CONTACT GET/UPDATE DB CFG REDISTRIBUTE DB PARTITION ADD CONTACTGROUP GET/UPDATE DBM CFG REFRESH LDAP ADD DATALINKS MANAGER GET DBM MONITOR SWITCHES REGISTER LDAP ============================ 檢視process或者thread情況: ============================ AIX,HP-UX,Linux: ps -fu or db2_local_ps Solaris: db2ptree General: db2pd -edus -allpartitionnums ========================= 檢視記憶體分佈情況: ========================= db2mtrk -i -v 檢視instance memory db2mtrk -d -v 檢視database memory db2mtrk -a -v 檢視application memory db2 select * from syscat.bufferpools 檢視tablespace上的bufferpool db2 get dbm cfg show detail ----INSTANCE_MEMORY db2 get db for adapter show detail ---DATABASE_MEMORY OR APP_MEMORY db2 "select * from table (sysproc.admin_get_dbp_mem_usage(-1)) as t" query overall memory consumption 一、載入資料: 1、 以預設分隔符載入,預設為“,”號 db2 "import from btpoper.txt of del insert into btpoper" 2、 以指定分隔符“|”載入 db2 "import from btpoper.txt of del modified by coldel| insert into btpoper" 二、解除安裝資料: 1、 解除安裝一個表中全部資料 db2 "export to btpoper.txt of del select * from btpoper" db2 "export to btpoper.txt of del modified by coldel| select * from btpoper" 2、 帶條件解除安裝一個表中資料 db2 "export to btpoper.txt of del select * from btpoper where brhid='907020000'" db2 "export to cmmcode.txt of del select * from cmmcode where codtp='01'" db2 "export to cmmcode.txt of del modified by coldel| select * from cmmcode where codtp='01'" 三、查詢資料結構及資料: db2 "select * from btpoper" db2 "select * from btpoper where brhid='907020000' and oprid='0001'" db2 "select oprid,oprnm,brhid,passwd from btpoper" 四、刪除表中資料: db2 "delete from btpoper" db2 "delete from btpoper where brhid='907020000' or brhid='907010000'" 五、修改表中資料: db2 "update svmmst set prtlines=0 where brhid='907010000' and jobtp='02'" db2 "update svmmst set prtlines=0 where jobtp='02' or jobtp='03'" 六、聯接資料庫 db2 connect to btpdbs db2 -tvf c:/1.sql 七、清除資料庫聯接 db2 connect reset 斷開資料庫連線 db2 terminate 斷開資料庫連線 db2 force applications all 斷開所有資料庫連線 八、備份資料庫 1、 db2 backup db btpdbs 2、 db2move btpdbs export db2look -d btpdbs -e -x [-a] -o crttbl.sql 九、恢復資料庫 1、 db2 restore db btpdbs without rolling forward 2、 db2 -tvf crtdb.sql crtdb.sql檔案內容:create db btpdbs on /db2catalog db2 -stvf crttbl.sql db2move btpdbs import 十、DB2幫助命令: db2 ? db2 ? restroe db2 ? sqlcode (例:db2 ? sql0803) 注:code必須為4位數,不夠4位,前面補0 十一、bind命令:將應用程式與資料庫作一捆綁,每次恢復資料庫後,建議都要做一次bind (1) db2 bind br8200.bnd (2) /btp/bin/bndall /btp/bnd /btp/bin/bndall /btp/tran/bnd 十二、檢視資料庫引數: db2 get dbm cfg db2 get db cfg for btpdbs 十三、修改資料庫引數: db2 update db cfg for btpdbs using LOGBUFSZ 20 db2 update db cfg for btpdbs using LOGFILSIZ 5120 改完後,應執行以下命令使其生效: db2 stop db2 start 補充: db2 "import from tab76.ixf of ixf commitcount 5000 insert into achact" db2 "create table achact_t like achact" db2 "rename table achact_t to achact" db2 "insert into achact_t select * from achact where txndt>=(select lstpgdt from acmact where actno=achact.actno)" db2 get snapshot for dynaimic sql on jining 資料庫優化命令: reorg、runstats 當資料庫經過一段時間使用,資料空間會變得越來越龐大。一些delete掉的資料仍存放在資料庫中,佔用資料空間,影響系統效能。因此需要定期 執行reorg、runstats命令,清除已delete的資料,優化資料結構。 db2 reorg table 表名 db2 runstats on table 表名 with distribution and indexes all 因為要優化的表比較多,所以在/btp/bin目錄下提供了一個sh程式runsall, 可在當天業務結束後,執行runsall,對資料庫進行優化 ================================================ 快速參考: DB2命令列處理器(CLP)中的常用命令 ================================================ 這篇文章的讀者是那些參與專案的人員,他們用 DB2 Everyplace 進行計劃、設定和執行一個機動專案。計劃要描述用 DB2 Everyplace 的機動專案的生命週期,進而減少開發強度和降低專案成本。我們的提示和建議都以參與用 DB2 Everyplace 版本 7.2 和 版本 7.2.1 的各種機動專案的現場人員的經驗為依據。 簡介 以下是最常用的 DB2 CLP 命令的快速參考。雖然不是一份完整的參考,但這篇文件對於任何剛接觸 DB2 的使用者來說,可以證明是案邊有價值的參考材料。 方括號中的引數是可選引數,尖括號中的內容表示變數。例如,CONNECT 的語法是: connect to [ [user ] using ] 這意味著,通過 CONNECT 命令以 user1 身份使用密碼 mypass 與資料庫 sample 連線可以有下列形式: Connect to sample Connect to sample user user1 Connect to sample user user1 using mypass 根據命令的作用域來組織所有命令。對於任何 CLP 命令,您都可以輸入加上字首問號(“?”)的關鍵字,以檢視其完整的語法。 例項 CLP 命令 描述 db2start 啟動資料庫管理器例項。 db2stop 停止資料庫管理器例項。 get dbm cfg 返回資料庫管理器配置設定。 get dbm cfg show detail 顯示資料庫管理器引數的當前值和延遲值(從 V8 起)。 update dbm cfg using

將資料庫管理器配置引數

更新為值 。 get instance 返回 DB2INSTANCE 環境變數的值。 list active databases 列出活動的資料庫和連線數。 list application [show detail] 返回關於當前連線的應用程式的資訊。 force application (h1 [,h2,..,hn]) 根據控制程式碼號與特定應用程式斷開連線。 force application all 斷開所有應用程式與資料庫的連線。 attach to user using 以使用者 通過使用密碼 與標識為 的遠端例項連線。 list database directory 資料庫 create database 建立名為 的資料庫。 activate database 顯式地啟用資料庫。 deactivate database 顯式地使資料庫失效。 connect to [ [user ] using ] 根據需要,顯式地以使用者 和密碼 與資料庫 連線。 update dbm cfg using

將資料庫管理器配置引數

更新為值 。 connect reset 斷開與當前資料庫的連線。 get db cfg show detail 顯示資料庫配置引數的當前值和延遲值(僅適用於 V8)。 get db cfg for 返回資料庫 的資料庫配置設定。 update db cfg for using

將資料庫 的資料庫配置引數

更新為值 。 list tables[for {user | all | system | schema }][show detail] 列出資料庫中的表。如果沒有指定任何引數,則預設情況是列出當前使用者的表。 describe table 顯示一個表或檢視的列資訊。 list tablespaces [show detail] 顯示錶空間的標識、名稱、型別、內容和狀態。 list tablespace containers for [show detail] 顯示用 指定的表空間的容器資訊。 quiesce tablespaces for table reset 將表空間的狀態復位成正常(normal)。 連線性 catalog [admin] node … 為協議 在節點目錄中建立一項。 list [admin] node directory 返回節點目錄的內容。 catalog database … 為資料庫 在資料庫目錄中建立一項。 list database directory [on ] 返回資料庫目錄的內容。 db2 catalog tcpip node mynode1 remote 9.186.116.171 server 50000 db2 catalog db adapter as adapter at node mynode1 db2 terminate db2 connect to adapter user db2admin using wbiadmin drop: db2 uncatalog node mynode1 db2 uncatelog db adapter 效能 get monitor switches 返回會話監控開關的狀態。 update monitor switches using 為 設定會話監控開關的狀態。 reset monitor all 復位效能監控程式值。 get snapshot for dbm 返回例項級別的效能資訊。 get snapshot for all on 為資料庫 在資料庫級別返回所有效能資訊。 get snapshot for dynamic sql on 返回動態 SQL 快取記憶體的內容。 runstats on table . 收集表 的統計資訊。表名必須是用 全限定的。 reorgchk on table all 確定是否需要對錶進行重組。這對於對所有表自動執行 runstats 很有用。 reorg table 通過重構行來消除“碎片”資料並壓縮資訊,對錶進行重組。 管理 export 將資料庫資料抽取到一個平面檔案中。 import 通過使用 IMPORT 實用程式,將資料匯入到資料庫。 load query table [to local-message-file][nosummary | summaryonly] [showdelta] 返回 LOAD 實用程式的進度。 backup database [to ] 執行資料庫備份。 restore database [from ] 執行資料庫恢復。 get health snapshot for dbm 返回例項的正常快照資訊(僅適用於 V8)。 get health snapshot for all on 返回資料庫 的所有正常快照(僅適用於 V8)。 管理伺服器 get admin cfg 返回管理伺服器的配置設定。 update admin cfg using

將管理伺服器配置引數

更新為值 。 應用程式開發 get routine into from [specific] procedure [hide body] 將 SQL 過程抽取成二進位制檔案。 put routine from [owner [use registers]] 從二進位制檔案部署 SQL 過程。 連線資料庫: connect to [資料庫名] user [操作使用者名稱] using [密碼] 建立緩衝池(8K): create bufferpool ibmdefault8k IMMEDIATE SIZE 5000 PAGESIZE 8 K ; 建立緩衝池(16K)(OA_DIVERTASKRECORD): create bufferpool ibmdefault16k IMMEDIATE SIZE 5000 PAGESIZE 16 K ; 建立緩衝池(32K)(OA_TASK): create bufferpool ibmdefault32k IMMEDIATE SIZE 5000 PAGESIZE 32 K ; 建立表空間: CREATE TABLESPACE exoatbs IN DATABASE PARTITION GROUP IBMDEFAULTGROUP PAGESIZE 8K MANAGED BY SYSTEM USING ('/home/exoa2/exoacontainer') EXTENTSIZE 32 PREFETCHSIZE 16 BUFFERPOOL IBMDEFAULT8K OVERHEAD 24.10 TRANSFERRATE 0.90 DROPPED TABLE RECOVERY OFF; CREATE TABLESPACE exoatbs16k IN DATABASE PARTITION GROUP IBMDEFAULTGROUP PAGESIZE 16K MANAGED BY SYSTEM USING ('/home/exoa2/exoacontainer16k' ) EXTENTSIZE 32 PREFETCHSIZE 16 BUFFERPOOL IBMDEFAULT16K OVERHEAD 24.1 TRANSFERRATE 0.90 DROPPED TABLE RECOVERY OFF; CREATE TABLESPACE exoatbs32k IN DATABASE PARTITION GROUP IBMDEFAULTGROUP PAGESIZE 32K MANAGED BY SYSTEM USING ('/home/exoa2/exoacontainer32k' ) EXTENTSIZE 32 PREFETCHSIZE 16 BUFFERPOOL IBMDEFAULT32K OVERHEAD 24.1 TRANSFERRATE 0.90 DROPPED TABLE RECOVERY OFF; GRANT USE OF TABLESPACE exoatbs TO PUBLIC; GRANT USE OF TABLESPACE exoatbs16k TO PUBLIC; GRANT USE OF TABLESPACE exoatbs32k TO PUBLIC; 建立系統表空間: CREATE TEMPORARY TABLESPACE exoasystmp IN DATABASE PARTITION GROUP IBMTEMPGROUP PAGESIZE 8K MANAGED BY SYSTEM USING ('/home/exoa2/exoasystmp' ) EXTENTSIZE 32 PREFETCHSIZE 16 BUFFERPOOL IBMDEFAULT8K OVERHEAD 24.10 TRANSFERRATE 0.90 DROPPED TABLE RECOVERY OFF; CREATE TEMPORARY TABLESPACE exoasystmp16k IN DATABASE PARTITION GROUP IBMTEMPGROUP PAGESIZE 16K MANAGED BY SYSTEM USING ('/home/exoa2/exoasystmp16k' ) EXTENTSIZE 32 PREFETCHSIZE 16 BUFFERPOOL IBMDEFAULT16K OVERHEAD 24.10 TRANSFERRATE 0.90 DROPPED TABLE RECOVERY OFF; CREATE TEMPORARY TABLESPACE exoasystmp32k IN DATABASE PARTITION GROUP IBMTEMPGROUP PAGESIZE 32K MANAGED BY SYSTEM USING ('/home/exoa2/exoasystmp32k') EXTENTSIZE 32 PREFETCHSIZE 16 BUFFERPOOL IBMDEFAULT32K OVERHEAD 24.10 TRANSFERRATE 0.90 DROPPED TABLE RECOVERY OFF; 注意db2不同於Oracle,user和schema是不同的概念。 1. 啟動例項(db2inst1): db2start 2. 停止例項(db2inst1): db2stop 3. 列出所有例項(db2inst1) db2ilist 5.列出當前例項: db2 get instance 4. 察看示例配置檔案: db2 get dbm cfg|more 5. 更新資料庫管理器引數資訊: db2 update dbm cfg using para_name para_value 6. 建立資料庫: db2 create db test 7. 察看資料庫配置引數資訊 db2 get db cfg for test|more 8. 更新資料庫引數配置資訊 db2 update db cfg for test using para_name para_value 10.刪除資料庫: db2 drop db test 11.連線資料庫 db2 connect to test 12.列出所有表空間的詳細資訊。 db2 list tablespaces show detail 13.查詢資料: db2 select * from tb1 14.刪除資料: db2 delete from tb1 where id=1 15.建立索引: db2 create index idx1 on tb1(id); 16.建立檢視: db2 create view view1 as select id from tb1 17.查詢檢視: db2 select * from view1 18.節點編目 db2 catalog tcp node node_name remote server_ip server server_port 19.察看埠號 db2 get dbm cfg|grep SVCENAME 20.測試節點的附接 db2 attach to node_name 21.察看本地節點 db2 list node direcotry 22.節點反編目 db2 uncatalog node node_name 23.資料庫編目 db2 catalog db db_name as db_alias at node node_name 24.察看資料庫的編目 db2 list db directory 25.連線資料庫 db2 connect to db_alias user user_name using user_password 26.資料庫反編目 db2 uncatalog db db_alias 27.匯出資料 db2 export to myfile of ixf messages msg select * from tb1 28.匯入資料 db2 import from myfile of ixf messages msg replace into tb1 29.匯出資料庫的所有表資料 db2move test export 30.生成資料庫的定義 db2look -d db_alias -a -e -m -l -x -f -o db2look.sql 31.建立資料庫 db2 create db test1 32.生成定義 db2 -tvf db2look.sql 33.匯入資料庫所有的資料 db2move db_alias import 34.重組檢查 db2 reorgchk 35.重組表tb1 db2 reorg table tb1 36.更新統計資訊 db2 runstats on table tb1 37.備份資料庫test db2 backup db test 38.恢復資料庫test db2 restore db test 399/.列出容器的資訊 db2 list tablespace containers for tbs_id show detail 40.建立表: db2 ceate table tb1(id integer not null,name char(10)) 41.列出所有表 db2 list tables 42.插入資料: db2 insert into tb1 values(1,’sam’); db2 insert into tb2 values(2,’smitty’); 一、常用命令 1. 建立資料庫DB2_GCB CREATE DATABASE DB2_GCB ON G: ALIAS DB2_GCB USING CODESET GBK TERRITORY CN COLLATE USING SYSTEM DFT_EXTENT_SZ 32 2. 連線資料庫 connect to sample1 user db2admin using 8301206 3. 建立別名 create alias db2admin.tables for sysstat.tables; CREATE ALIAS DB2ADMIN.VIEWS FOR SYSCAT.VIEWS create alias db2admin.columns for syscat.columns; create alias guest.columns for syscat.columns; 4. 建立表 create table zjt_tables as (select * from tables) definition only; create table zjt_views as (select * from views) definition only; 5. 插入記錄 insert into zjt_tables select * from tables; insert into zjt_views select * from views; 6. 建立檢視 create view V_zjt_tables as select tabschema,tabname from zjt_tables; 7. 建立觸發器 CREATE TRIGGER zjt_tables_del AFTER DELETE ON zjt_tables REFERENCING OLD AS O FOR EACH ROW MODE DB2SQL Insert into zjt_tables1 values(substr(o.tabschema,1,8),substr(o.tabname,1,10)) 8. 建立唯一性索引 CREATE UNIQUE INDEX I_ztables_tabname [size=3]ON zjt_tables(tabname); 9. 檢視錶 select tabname from tables where tabname='ZJT_TABLES'; 10. 檢視列 select SUBSTR(COLNAME,1,20) as 列名,TYPENAME as 型別,LENGTH as 長度 from columns where tabname='ZJT_TABLES'; 11. 檢視錶結構 db2 describe table user1.department db2 describe select * from user.tables 12. 檢視錶的索引 db2 describe indexes for table user1.department 13. 檢視檢視 select viewname from views where viewname='V_ZJT_TABLES'; 14. 檢視索引 select indname from indexes where indname='I_ZTABLES_TABNAME'; 15. 檢視存貯過程 SELECT SUBSTR(PROCSCHEMA,1,15),SUBSTR(PROCNAME,1,15) FROM SYSCAT.PROCEDURES; 16. 型別轉換(cast) ip datatype:varchar select cast(ip as integer)+50 from log_comm_failed 17. 重新連線 connect reset 18. 中斷資料庫連線 disconnect db2_gcb 19. view application LIST APPLICATION; 20. kill application FORCE APPLICATION(0); db2 force applications all (強迫所有應用程式從資料庫斷開) 21. lock table lock table test in exclusive mode 22. 共享 lock table test in share mode 23. 顯示當前使用者所有表 list tables 24. 列出所有的系統表 SELECT NAME FROM SYSIBM.SYSSCHEMATA 列出所有SCHEMA list tables for system 25. 顯示當前活動資料庫 list active databases 26. 檢視命令選項 list command options 27. 系統資料庫目錄 LIST DATABASE DIRECTORY 28. 表空間 list tablespaces 29. 表空間容器 LIST TABLESPACE CONTAINERS FOR Example: LIST TABLESPACE CONTAINERS FOR 1 30. 顯示使用者資料庫的存取許可權 GET AUTHORIZATIONS 31. 啟動例項 DB2START 32. 停止例項 db2stop 33. 表或檢視特權 grant select,delete,insert,update on tables to user grant all on tables to user WITH GRANT OPTION 34. 程式包特權 GRANT EXECUTE ON PACKAGE PACKAGE-name TO PUBLIC 35. 模式特權 GRANT CREATEIN ON SCHEMA SCHEMA-name TO USER 36. 資料庫特權 grant connect,createtab,dbadm on database to user 37. 索引特權 grant control on index index-name to user 38. 資訊幫助 (? XXXnnnnn ) 例:? SQL30081 39. SQL 幫助(說明 SQL 語句的語法) help statement 例如,help SELECT 40. SQLSTATE 幫助(說明 SQL 的狀態和類別程式碼) ? sqlstate 或 ? class-code 41. 更改與"管理伺服器"相關的口令 db2admin setid username password 42. 建立 SAMPLE 資料庫 db2sampl db2sampl F:(指定安裝盤) 43. 使用作業系統命令 ! dir 44. 轉換資料型別 (cast) SELECT EMPNO, CAST(RESUME AS VARCHAR(370)) FROM EMP_RESUME WHERE RESUME_FORMAT = 'ascii' 45. UDF 要執行DB2 Java儲存過程或 UDF,還需要更新伺服器上的 DB2 資料庫管理程式配置,以包括在該機器上安裝 JDK 的路徑 db2 update dbm cfg using JDK11_PATH d:sqllibjavajdk TERMINATE update dbm cfg using SPM_NAME sample 46. 檢查 DB2 資料庫管理程式配置 db2 get dbm cfg 47. 檢索具有特權的所有授權名 SELECT DISTINCT GRANTEE, GRANTEETYPE, 'DATABASE' FROM SYSCAT.DBAUTH UNION SELECT DISTINCT GRANTEE, GRANTEETYPE, 'TABLE ' FROM SYSCAT.TABAUTH UNION SELECT DISTINCT GRANTEE, GRANTEETYPE, 'PACKAGE ' FROM SYSCAT.PACKAGEAUTH UNION SELECT DISTINCT GRANTEE, GRANTEETYPE, 'INDEX ' FROM SYSCAT.INDEXAUTH UNION SELECT DISTINCT GRANTEE, GRANTEETYPE, 'COLUMN ' FROM SYSCAT.COLAUTH UNION SELECT DISTINCT GRANTEE, GRANTEETYPE, 'SCHEMA ' FROM SYSCAT.SCHEMAAUTH UNION SELECT DISTINCT GRANTEE, GRANTEETYPE, 'SERVER ' FROM SYSCAT.PASSTHRUAUTH ORDER BY GRANTEE, GRANTEETYPE, 3 create table yhdab (id varchar(10), password varchar(10), ywlx varchar(10), kh varchar(10)); create table ywlbb (ywlbbh varchar(8), ywmc varchar(60)) 48. 修改表結構 alter table yhdab alter kh set DATA TYPE varchar(13); alter table yhdab alter ID set DATA TYPE varchar(13); alter table lst_bsi alter bsi_money set data type int; insert into yhdab values ('20000300001','123456','user01','20000300001'), ('20000300002','123456','user02','20000300002'); 49. 業務型別說明 insert into ywlbb values ('user01','業務申請'), ('user02','業務撤消'), ('user03','費用查詢'), ('user04','費用自繳'), ('user05','費用預存'), ('user06','密碼修改'), ('user07','發票列印'), ('gl01','改使用者基本資訊'), ('gl02','更改支付資訊'), ('gl03','日統計功能'), ('gl04','沖帳功能'), ('gl05','對帳功能'), ('gl06','計費功能'), ('gl07','綜合統計') 二. 目錄檢視說明 說明 目錄檢視 檢查約束 SYSCAT.CHECKS 列 SYSCAT.COLUMNS 檢查約束引用的列 SYSCAT.COLCHECKS 關鍵字中使用的列 SYSCAT.KEYCOLUSE 資料型別 SYSCAT.DATATYPES 函式引數或函式結果 SYSCAT.FUNCPARMS 參考約束 SYSCAT.REFERENCES 模式 SYSCAT.SCHEMATA 表約束 SYSCAT.TABCONST 表 SYSCAT.TABLES 觸發器 SYSCAT.TRIGGERS 使用者定義函式 SYSCAT.FUNCTIONS 檢視 SYSCAT.VIEWS 三. 字串型別 二進位制大物件 (BLOB) 字串。 字元大物件 (CLOB) 字串,它的字元序列可以是單位元組字元或多位元組字元, 或這兩者的組合。 雙位元組字元大物件 (DBCLOB) 字串,它的字元序列是雙位元組字元。 四. 資料庫正規化 第一種規範形式:表中的每一行和每一列均有一個值,永遠不會是一組值。 第二種規範形式:不在關鍵字中的每一列提供取決於整個關鍵字的事實。 第三種規範形式:每個非關鍵字列提供與其他非關鍵字列無關並只取決於該關鍵字的事實。 第四種規範形式:沒有行包含有關一個實體的兩個或更多個獨立的多值事實。 五. 資料型別 資料型別 型別 特性 示例或範圍 CHAR(15) 定長字串 最大長度為 254 'Sunny day ' VARCHAR(15) 變長字元 最大長度為 4000 'Sunny day' SMALLINT 數字 長度為 2 位元組精度為 5 位範圍為-32768 至 32767 INTEGER 數字 長度為 4 位元組精度為 10 位範圍為-2147483648 至 2147483647 REAL 數字 單精度浮點32 位近似值 範圍為-3.402E+38至-1.175E-37或 1.175E-37 至-3.402E+38或零 DOUBLE 數字 雙精度浮點64 位近似值 範圍為-1.79769E+308 至-2.225E-307或 2.225E-307 至 1.79769E+308或零 DECIMAL(5,2) 數字 精度為 5小數位為 2 範圍為 -10**31+1 至 10**31-1 DATE 日期時間 三部分值 1991-10-27 TIME 日期時間 三部分值 13.30.05 TIMESTAMP 日期時間 七部分值 1991-10-27-13.30.05.000000 六. 列函式 列函式對列中的一組值進行運算以得到單個結果值。下列就是一些列函式的示例。 AVG 返回某一組中的值除以該組中值的個數的和 COUNT 返回一組行或值中行或值的個數 MAX 返回一組值中的最大值 MIN 返回一組值中的最小值 七. 標量函式 標量函式對值進行某個運算以返回另一個值。 下列就是一些由DB2 通用資料庫提供的標量函式的示例。 ABS 返回數的絕對值 HEX 返回值的十六進位制表示 LENGTH 返回自變數中的位元組數(對於圖形字串則返回雙位元組字元數。) YEAR 抽取日期時間值的年份部分 備份資料庫: CONNECT TO EXOA; QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS; CONNECT RESET; BACKUP DATABASE EXOA TO "/home/exoa2/db2bak/" WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 WITHOUT PROMPTING; CONNECT TO EXOA; UNQUIESCE DATABASE; CONNECT RESET; 以下是小弟在使用db2move中的一些經驗,希望對大家有所幫助。 db2 connect to YOURDB 連線資料庫 db2look -d YOURDB -a -e -x -o creatab.sql 匯出建庫表的SQL db2move YOURDB export 用db2move將資料備份出來 vi creatab.sql 如要匯入的資料庫名與原資料庫不同,要修改creatab.sql中CONNECT 項 如相同則不用更改 db2move NEWDB load 將資料匯入新庫中 在匯入中可能因為種種原因發生中斷,會使資料庫暫掛 db2 list tablespaces show detail 如: 詳細說明: 裝入暫掛 總頁數 = 1652 可用頁數 = 1652 已用頁數 = 1652 空閒頁數 = 不適用 高水位標記(頁) = 不適用 頁大小(位元組) = 4096 盤區大小(頁) = 32 預讀取大小(頁) = 32 容器數 = 1 狀態更改表空間標識 = 2 狀態更改物件標識 = 59 db2 select tabname,tableid from syscat.tables where tableid=59 檢視是哪張表掛起 表名知道後到db2move.lst(在db2move YOURDB export的目錄中)中找到相應的.ixf檔案 db2 load from tab11.ixf of ixf terminate into db2admin.xxxxxxxxx tab11.ixf對應的是xxxxxxxxx表 資料庫會恢復正常,可再用db2 list tablespaces show detail檢視 30.不能通過GRANT授權的許可權有哪種? SYSAM SYSCTRL SYSMAINT 要更該述許可權必須修改資料庫管理器配置引數 31.表的型別有哪些? 永久表(基表) 臨時表(說明表) 臨時表(派生表) 32.如何知道一個使用者有多少表? SELECT* FROM SYSIBM.SYSTABLESWHERECREATOR='USER' 33.如何知道使用者下的函式? select * from IWH.USERFUNCTION select * from sysibm.SYSFUNCTIONS 34.如何知道使用者下的VIEW數? select * from sysibm.sysviews WHERECREATOR='USER' 35.如何知道當前DB2的版本? select * from sysibm.sysversions 36.如何知道使用者下的TRIGGER數? select * from sysibm.SYSTRIGGERS WHERE SCHEMA='USER' 37.如何知道TABLESPACE的狀況? select * from sysibm.SYSTABLESPACES 38.如何知道SEQUENCE的狀況? select * from sysibm.SYSSEQUENCES 39.如何知道SCHEMA的狀況? select * from sysibm.SYSSCHEMATA 40.如何知道INDEX的狀況? select * from sysibm.SYSINDEXES 41.如何知道表的欄位的狀況? select * from sysibm.SYSCOLUMNS WHERE TBNAME='AAAA' 42.如何知道DB2的資料型別? select * from sysibm.SYSDATATYPES 43.如何知道BUFFERPOOLS狀況? select * from sysibm.SYSBUFFERPOOLS 44.DB2表的欄位的修改限制? 只能修改VARCHAR2型別的並且只能增加不能減少. 45.如何檢視錶的結構? DESCRIBE TABLE TABLE_NAME OR DESCRIBE SELECT * FROM SCHEMA.TABLE_NAME ===================== db2所有命令: ===================== ACTIVATE DATABASE GET CONTACTS RECOVER ADD CONTACT GET/UPDATE DB CFG REDISTRIBUTE DB PARTITION ADD CONTACTGROUP GET/UPDATE DBM CFG REFRESH LDAP ADD DATALINKS MANAGER GET DBM MONITOR SWITCHES REGISTER LDAP ADD DBPARTITIONNUM GET DESCRIPTION FOR HEALTH REGISTER XMLSCHEMA ADD XMLSCHEMA GET NOTIFICATION LIST REGISTER XSROBJECT ARCHIVE LOG GET HEALTH SNAPSHOT REORG INDEXES/TABLE ATTACH GET INSTANCE REORGCHK AUTOCONFIGURE GET MONITOR SWITCHES RESET ADMIN CFG BACKUP DATABASE GET RECOMMENDATIONS RESET ALERT CFG BIND GET ROUTINE RESET DB CFG CATALOG APPC NODE GET SNAPSHOT RESET DBM CFG CATALOG APPN NODE HELP RESET MONITOR CATALOG DATABASE HISTORY RESTART DATABASE CATALOG DCS DATABASE IMPORT RESTORE DATABASE CATALOG LDAP DATABASE INITIALIZE TAPE REWIND TAPE CATALOG LDAP NODE INSPECT ROLLFORWARD DATABASE CATALOG LOCAL NODE LIST ACTIVE DATABASES RUNCMD CATALOG NPIPE NODE LIST APPLICATIONS RUNSTATS CATALOG NETBIOS NODE LIST COMMAND OPTIONS SET CLIENT CATALOG ODBC DATA SOURCE LIST DATABASE DIRECTORY SET RUNTIME DEGREE CATALOG TCPIP NODE LIST DB PARTITION GROUPS SET TABLESPACE CONTAINERS CHANGE DATABASE COMMENT LIST DATALINKS MANAGERS SET TAPE POSITION CHANGE ISOLATION LEVEL LIST DBPARTITIONNUMS SET UTIL_IMPACT_PRIORITY COMPLETE XMLSCHEMA LIST DCS APPLICATIONS SET WRITE CREATE DATABASE LIST DCS DIRECTORY START DATABASE MANAGER CREATE TOOLS CATALOG LIST DRDA INDOUBT START HADR DEACTIVATE DATABASE LIST HISTORY STOP DATABASE MANAGER DECOMPOSE XML DOCUMENT LIST INDOUBT TRANSACTIONS STOP HADR DEREGISTER LIST NODE DIRECTORY TAKEOVER HADR DESCRIBE LIST ODBC DATA SOURCES TERMINATE DETACH LIST PACKAGES/TABLES UNCATALOG DATABASE DROP CONTACT LIST TABLESPACE CONTAINERS UNCATALOG DCS DATABASE DROP CONTACTGROUP LIST TABLESPACES UNCATALOG LDAP DATABASE DROP DATABASE LIST UTILITIES UNCATALOG LDAP NODE DROP DATALINKS MANAGER LOAD UNCATALOG NODE DROP DBPARTITIONNUM LOAD QUERY UNCATALOG ODBC DATA DROP TOOLS CATALOG MIGRATE DATABASE UNQUIESCE DATABASE ECHO PING UNQUIESCE INSTANCE EDIT PREP/PRECOMPILE UPDATE ALERT CFG EXPORT PRUNE HISTORY/LOGFILE UPDATE COMMAND OPTIONS FORCE APPLICATION PUT ROUTINE UPDATE CONTACT GET/UPDATE ADMIN CFG QUERY CLIENT UPDATE CONTACTGROUP GET ALERT CFG QUIESCE DATABASE UPDATE NOTIFICATION LIST GET AUTHORIZATIONS QUIESCE INSTANCE UPDATE HISTORY GET/UPDATE CLI CFG QUIESCE TABLESPACES UPDATE LDAP NODE GET CONNECTION STATE QUIT UPDATE MONITOR SWITCHES GET CONTACTGROUP REBIND XQUERY GET CONTACTGROUPS RECONCILE Note: Some commands are operating system specific and may not be available. For further help: ? db2-command - help for specified command ? OPTIONS - help for all command options ? HELP - help for reading help screens The preceding three options can be run as db2 from an OS prompt. !db2ic - DB2 Information Center (Windows only) This command can also be run as db2ic from an OS prompt.