1. 程式人生 > >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