天天看點

DB2常用指令(一)大版本更新指令:安裝:添加使用者:執行個體更改資料庫參數建立資料庫:列出所有表:db2同一主機下一個執行個體連接配接另一個執行個體表空間:建立buffer pools權限控制強制斷開所有應用連接配接脫機備份退出執行個體删除資料庫恢複重定向恢複HADR檢視監控開關打開監控開關檢視快照檢視資料庫bufferpools資訊調整緩沖池大小檢視錯誤詳細資訊建庫事件螢幕分析sql執行計劃Sql優化建議執行sql檔案檢視db2指令的幫助檢視db2版本和更新檔資訊檢視資料庫、表定義指令彙總設定相關常見路徑強制中斷指令

大版本更新指令:

db2iupgrade
$DB2DIR/instance/db2iupgrade InstName
           

安裝:

tar -xzvf file.tar.gz
cd server_t
./db2_inistall
SERVER
purescale選NO
           

添加使用者:

groupadd -g 10000 db2igrp
grouped -g 10001 db2fgrp

useradd -u 10000 -g db2igrp -m -d /home/db2inst1 db2inst1
useradd -u 10001 -g db2fgrp -m -d /home/db2fenc1 db2fenc1
./db2icrt -s ese -p 60000 -u db2fenc1 db2inst1

groupadd -g 20000 db2igrp2
groupadd -g 20001 db2fgrp2

useradd -u 20000 -g db2igrp -m -d /home/db2inst2 db2inst2
useradd -u 20001 -g db2fgrp -m -d /home/db2fenc2 db2fenc2

建立fence user是為了防止使用者寫的存儲過程中包含非sql的可能會破壞db2資料結構,使db2引擎崩潰的代碼,讓這些存儲過程在單獨的程序下運作,起到隔離和保護作用
           

執行個體

建立執行個體:

建立失敗時檢視是否ping通127.0.0.1,如果不行,在/etc/hosts檔案裡增加127.0.0.1 主機名。

cd /opt/IBM/db2/V10.5/instance
./db2icrt -s ese -p 50000 -u db2fenc2 db2inst2
           

檢視db2所有執行個體:

db2ilist
           

檢視機器上的執行個體

db2greg -dump
           

檢視執行個體參數

db2 get dbm cfg show detail
對于那些無法立即生效的參數,Show detail可以用來顯示它們的deferred value。
           

更改執行個體參數

db2 update dbm cfg using mon_heap_sz 1024 automatic
           

更改資料庫參數

db2 update db cfg  for sample using sortheap 1024
           

db2diag.log路徑

/home/db2inst1/sqllib/db2dump/DIAG0000
           

重要參數

diagpath: Location of the log files
diaglevel: Types of errors to be written to log
           

删除執行個體

db2stop force
Db2idrop 執行個體名
           

執行個體啟停

db2start
db2stop
           

建立資料庫:

db2 create database sample using codeset utf-8 territory CN
或者
db2sampl
           

列出所有表:

db2 list tables for all
           

db2同一主機下一個執行個體連接配接另一個執行個體

db2 catalog tcpip node N1 remote 127.0.0.1 server 60000(要連接配接的執行個體端口)
db2 catalog database sample as sinst1 at node N1 (别名盡量不要超過8位)

db2 connect to sample user db2inst1 using 登入密碼
           

表空間:

表空間是邏輯上的概念,實體存儲是容器。
容器可以是裸裝置(比如沒有格式化的磁盤),也可以是檔案、目錄。
           

建立表空間

  • sms

    使用 CREATE TABLESPACE 語句的 MANAGED BY SYSTEM 子句建立 (重要) sms

    要求将容器定義為目錄名。

    性能差一點,一般用作臨時表空間

  • dms

    使用 CREATE TABLESPACE 語句的 MANAGED BY DATABASE 子句建立 dms

    要求将容器定義為檔案或裝置。(重要)

    dms性能通常高于sms

    自動存儲管理表空間不需要指定容器,對于資料表空間會自動選擇dms,對臨時表空間會選擇sms,建立自動存儲管理表空間時必須要先開啟自動存儲管理。

建立buffer pools

db2 CREATE BUFFERPOOL bp8k size 1000 PAGESIZE 8192
db2 "create tablespace mytbs 
       pagesize 8192
       managed by database
       using  (file  '/home/db2inst2/tablespace/aa' 10000 )  
       bufferpool bp8k"
           

用來檢視表空間的大小頁數等重要資訊

db2 "LIST TABLESPACES SHOW DETAIL"
           

能夠自動增加表空間大小

CREATE TABLESPACE mytabs MANAGED BY DATABASE USING (FILE '/db2files/DMS1' 10 M) AUTORESIZE YES 
db2 ALTER TABLESPACE mytbs AUTORESIZE YES
           

權限控制

db2 "grant select on db2inst1.x1 to user test" #将對表db2inst1.t的select權限賦予testusr (重要)

db2 "revoke select on db2inst1.x1 from user test" #将對表db2inst1.t的select權限從dbuser收回

Db級權限示例:
GRANT DBADM ON DATABASE TO USER "asd"
GRANT CONNECT ON DATABASE TO USER "asd"
           

強制斷開所有應用連接配接

db2 force applications all
           

脫機備份

db2 BACKUP DATABASE sample TO /home/db2inst2/backup
           

退出執行個體

db2 terminate
           

删除資料庫

db2 drop db sample
           

恢複

db2 RESTORE DATABASE sample FROM /home/db2inst2/backup TAKEN AT 20180816232659 WITHOUT ROLLING FORWARD WITHOUT PROMPTING 
           

重定向恢複

db2 list tablespaces檢視表空間id

db2 RESTORE DATABASE sample FROM /home/db2inst2/backup TAKEN AT 20180816232659 redirect WITHOUT ROLLING FORWARD WITHOUT PROMPTING 

db2 "set tablespace containers for 表空間id using (file '/home/db2inst2/backup/dd’ 10000)"

db2 restore db sample continue
           

HADR

db2 start hadr on database hadr_db as standby (重要) 先啟動備份機再啟動主機
db2 start hadr on database hadr_db as primary
           

檢視監控開關

db2 get monitor switches

打開監控開關

db2 update monitor switches using bufferpool on
           

檢視快照

db2 get snapshot for database on sample
           

檢視資料庫bufferpools資訊

db2 "select * from syscat.bufferpools with ur"
           

調整緩沖池大小

db2 "alter bufferpool bp8k immediate size 2000"
           

檢視錯誤詳細資訊

db2 ? SQL0104N
           

建庫

db2sampl
db2 connect to sample
db2 list tables for all | grep -i empmdc
           

事件螢幕

建立

db2 "create event monitor dlmon for deadlocks with details 
write to file '/home/db2inst1/evmon'"
           

開啟

db2 SET EVENT MONITOR monitor-name STATE 0 / 1
           

導出

db2evmon -path directory path >1.out
           

分析sql執行計劃

vi 1.sql
select * from empmdc where empno=500 with ur
db2expln -d sample -f 1.sql -z ";" -g -o 1.exp
           

Sql優化建議

cd /home/db2inst2/sqllib/misc
db2 -tvf EXPLAIN.DDL 生成相關庫
db2advis -d sample -n db2inst2 -i 1.sql > 1.adv
           

執行sql檔案

db2 -tvf 1.adv
           

檢視db2指令的幫助

db2 ? 
           

檢視db2指令所有參數解釋的幫助

db2 ? OPTIONS
           

檢視db2版本和更新檔資訊

db2level
           

檢視資料庫、表定義

Db2look
           

指令彙總

db2start
db2stop
db2 list db directory
db2 ? <command>
db2 connect to <database>
db2 list tables [for <schema> / for all]
db2 list tablespaces [show detail]
db2 list tablespace containers for <tablespace ID>
           

設定相關

Database Manager Configuration
db2 get dbm cfg
db2 update dbm cfg using <parameter> <value>
DIAGLEVEL & DIAGPATH
Database Configuration
db2 get db cfg for <database>
db2 update db cfg for <database> using <parameter> <value>
Environment
db2set -all
db2set <parameter>=<value>
System tables and views
           

常見路徑

Code /opt/IBM/db2/V10.5/*
Instance home /home/<instance>/sqllib
Diagnostic data /home/<instance>/sqllib/db2dump
Database directory
db2 list db directory
Tablespace containers
db2 list tablespaces show detail
db2 list tablespace containers for <tablespace id>
Database transaction logs 
db2 get db cfg for <db> | grep "Path to log files"
           

強制中斷指令

db2 force application all / db2stop
db2stop force
db2_kill
ipclean