DB2 命令 資料庫操作

2021-08-11 14:17:55 字數 3749 閱讀 5503

標籤(空格分隔): db2例項 db2授權 資料庫

# 資料庫名稱

database_name=lqr

# 使用者名稱

user_name=lqr

# 檢視表空間名稱

# db2 "list tablespaces show detail"

# 表空間名稱 需要大寫

tablesapce_name=userspace1

# 例項或者資料庫管理員使用者登入,不然許可權不足

instance_name=db2inst1

instance_passwd=qwe123

db2 connect to $database_name user $instance_name using $instance_passwd

# 資料庫授權

db2 "grant connect on database to user $user_name"

# 表空間授權

db2 "grant use of tablespace $tablesapce_name to user $user_name"

# 需要先db2 connect to $database_name user $instance_name using $instance_passwd(用資料庫管理員許可權)

db2 "grant dbadm, createtab, bindadd, connect, create_not_fenced_routine, implicit_schema, load, create_external_routine, quiesce_connect, quiesce_connect, secadm on database to user $user_name"

echo

"$user_name

$database_name 授權成功"

time:2017-02-18

echo

"---- 資料庫資料匯入&匯出指令碼 -----"

# 一次性匯出資料庫中所有表,並生成對應的ex.sh匯出指令碼和lo.sh匯入指令碼

# 操作:1.修改引數 2.執行指令碼export.sh得到ex.sh和lo.sh以及columns.txt

# 3.執行ex.sh匯出資料得到大量del檔案 4.使用lo.sh匯入del資料到資料庫

#引數db_name=dwdb #資料庫名稱

user_name=lqr #使用者名稱

user_passwd=qwe123 #使用者密碼

tabschema_name=lqr #使用者名稱 #必須大寫

#db2 "select schemaname,owner,create_time from syscat.schemata" 檢視當前存在的schema

#db2 connect to lqr user lqr using qwe123;

db2 connect to $db_name user $user_name using $user_passwd;

rm -rf columns.txt

rm -rf ex.sh

rm -rf lo.sh

#db2 -x "select tabname,colname,row_number() over(partition by tabname order by colno desc) from syscat.columns where tabschema = 'lqr' and left(tabname,2) = 'fb' order by tabname,colno with ur" > columns.txt

db2 -x "select tabname,colname,row_number() over(partition by tabname order by colno desc) from syscat.columns where tabschema = '$tabschema_name' order by tabname,colno with ur" > columns.txt

#echo "db2 connect to lqr user lqr using qwe123;" >> ex.sh

echo

"db2 connect to $db_name user $user_name using $user_passwd;" >> ex.sh

echo

"db2 connect to $db_name user $user_name using $user_passwd;" >> lo.sh

sql=""

cat columns.txt|while

read tabname colname num

doif [ $num == 1 ]

then

echo

"db2 \"export to $tabname.del of del select $sql

$colname from $tabname\"">> ex.sh

echo

"db2 \"load from $tabname.del of del insert into $tabname ($sql

$colname)\"">> lo.sh

sql=""

else

sql="$sql

$colname,"

fidone

備註:匯出的資料,用txt檔案檢視中文正常,xshell檢視亂碼,匯入亂碼,由於linux預設的讀取編碼問題導致的,在使用者目錄下的.vimrc中加入set encoding=utf-8 fileencodings=ucs-bom,utf-8,gbk,cp936設定讀取的編碼格式

執行後的結果:

—– 未測試

1、檢視資料庫頁大小

db2 get db cfg

2、收集表狀態資訊

db2 runstats on table schema.table_name

3、查詢資料表占用頁的數量

select tabname, npages from syscat.tables where tabname = 『table_name』

4、計算表占用磁碟空間大小

表占用磁碟空間大小 = 資料頁大小 * 頁數量

檢視表佔磁碟空間大小:select tabname, npages*16384/(1024*1024) from syscat.tables where tabname = 『******』

db2 v9以上檢視表佔磁碟邏輯空間大小:select sum(x.data_object_p_size+x.index_object_p_size+x.lob_object_p_size+x.long_object_p_size+x.xml_object_p_size) from sysibmadm.admintabinfo x where tabname=』******x』;

select tabname,sum(x.data_object_p_size+x.index_object_p_size+x.lob_object_p_size+x.long_object_p_size+x.xml_object_p_size) from sysibmadm.admintabinfo x group by tabname;

db2 v9以上檢視資料庫占用空間大小:db2 「call sysproc.get_dbsize_info(?,?,?,10)」

DB2資料庫相關操作

自增字段的建立 start with 1 increment by 1 cache 20 no cycle no order 設定自增序列從20001開始 alter sequence linkage seq restart with 20001 使用自增字段 插入一條資料insert into l...

全新db2資料庫操作

前提 乙個全新的資料庫沒有任何庫。1 通過遠端桌面連線到資料庫所在的電腦,2 執行db2cmd administartor.由於使用的是administrator登入的遠端桌面,在登入進去的時候就administrator就是db2的超級管理員。首先要明白乙個道理,資料庫的超級管理員才能給使用者授權...

DB2操作樣例資料庫

在linux終端輸入db2fs,系統開啟db2 first step 工具。然後選擇database creation create sample database 即可以建立樣例資料庫。然後在命令列執行 db2 connect to sample 可以連線上資料庫,再執行 db2 select f...