IT技術互動交流平臺

DB2數據庫的學習及總結

來源:IT165收集  發布日期:2016-07-22 21:53:16

db2命令
給db2用賦權的命令
db2 grant dbadm on database to user dsp
#導出數據庫結構會生成一個faldb20160224.sql文件
db2look -d udep -e -a -x -i dsp -w dsp -o dsp20160504.sql

導出所屬scheme:dsp的所有表結構的命令如下
db2look -d tyfx -e -z dsp -o udep.ddl
語法: db2look -d DBname [-u Creator] [-s] [-g] [-a] [-t Tname1 Tname2...TnameN]

[-p] [-o Fname] [-i userID] [-w password]
db2look -d DBname [-u Creator] [-a] [-e] [-t Tname1 Tname2...TnameN]
[-m] [-c] [-r] [-x] [-l] [-f] [-o Fname] [-i userID] [
-w password]
db2look [-h]

-d: 數據庫名:這必須指定

-a: 為所有創建者生成統計信息
-c: 不要生成模擬的 COMMIT 語句
-e: 抽取復制數據庫所需要的 DDL 文件
-g: 使用圖形來顯示索引的頁取裝對
-h: 更詳細的幫助信息
-m: 在模擬方式下運行 db2look 實用程序
-o: 將輸出重定向到給定的文件名
-p: 使用簡單文本格式
-r: 不要生成模擬的 RUNSTATS 語句
-s: 生成 postscript 文件
-t: 生成指定表的統計信息
-x: 生成“權限”語句 DDL
-l: 生成數據庫布局:節點組、緩沖池和表空間
-f: 抽取配置參數和環境變量
-u: 創建者 ID:若 -u 和 -a 都未指定,則將使用 $USER
-i: 注冊到數據庫駐留的服務器時所使用的用戶 ID
-w: 注冊到數據庫駐留的服務器時所使用的口令
#生成faldb20160224.sql文件之后要執行這個文件
db2 -tvf faldb20160224.sql

db2 [option ...] [db2-command | sql-statement |
[? [phrase | message | sqlstate | class-code]]]
選項:-a, -c, -e{c|s}, -finfile, -lhistfile, -n, -o, -p, -rreport, -s, -t,
-td;, -v, -w, -x, -zoutputfile。

選項 說明 缺省設置
------ ---------------------------------------- ---------------
-a 顯示 SQLCA OFF
-c 自動落實 ON
-e 顯示 SQLCODE/SQLSTATE OFF
-f 讀取輸入文件 OFF
-l 將命令記錄到歷史文件中 OFF
-n 除去換行字符 OFF
-o 顯示輸出 ON
-p 顯示 db2 交互式提示 ON
-r 將輸出報告保存到文件 OFF
-s 在命令出錯時停止執行 OFF
-t 設置語句終止字符 OFF
-v 回送當前命令 OFF
-w 顯示 FETCH/SELECT 警告信息 ON
-x 不打印列標題 OFF
-z 將所有輸出保存到輸出文件 OFF

注意:
使用 DB2OPTIONS 環境變量定制選項缺省值。
緊跟選項字母后的減號(-)使該選項關閉。
在交互方式或文件輸入方式下使用 UPDATE COMMAND OPTIONS
更改選項設置。

 

select 'db2 "export to '||table_name||'.ixf of ixf select * from CUSTRISK.'||table_name||'"' from sysibm.TABLES where TABLE_SCHEMA='CUSTRISK'


select 'db2 "import from '||table_name||'.ixf of ixf commitcount 500 messages msg.out insert into CUSTRISK.'||table_name||'"' from sysibm.TABLES where TABLE_SCHEMA='CUSTRISK'


從數據庫里在一張表中隨機的抽取10條記錄的db2SQL 語句是:
select * from moiamds.p_mon_dsm_cdt order by rand() FETCH FIRST 10 ROWS ONLY
啟動db2數據庫的命令是: db2start
關閉db2數據庫的命令是: db2stop

命令提示符里連接db2數據庫的命令是: db2 connect to moia user moiamds using moiamds

導出一張表里的數據的命令是:db2 "export to F:IMPp_mon_dsm_cdt.txt of del select * from MOIAMDS.P_MON_DSM_CDT"
IMPORT FROM employee.ixf OF IXF REPLACE_CREATE INTO employee_copy;
(REPLACE_CREATE 這個參數表示如果employee_copy數據表已經存在,則先清空數據表中的數據然后將ixf 中的數據導入,如果employee_copy 數據表不存在,則會先建立該表,然后將數據導入。)
導入數據到一張表中的命令式:db2 "import from tg.txt of del insert into MOIAMDS.P_MON_TAB_ONE"


如果對一張表進行操作的時候報因為表不活動,所以不能對表操作,解決方法:reorg table ---表名;


如果報事務日志已滿的解決辦法
DB2COPY2->命令行處理工具->命令行處理器—> db2 get db cfg for mds
db2 update db cfg for mds using logfilsiz 6000

db2顯示表空間的語句:db2 list tablespaces show detail


去基線導出數據的方法:197.3.6.1上去導出數據的方法:
moiase@/home/mds/file/tmp> db2 connect to moia user moiamds using moiamds
moiase@/home/mds/file/tmp> db2 "export to P_DQM_SERVICE_CASE_TAB.ixf of ixf select * from moiamds.P_DQM_SERVICE_CASE_TAB"
導出成功! 把它用在本地用E:JDK API ftp 197.3.6.1
輸入user:moiase pwd:moiase
連接成功 ; ftp>get P_DQM_SERVICE_CASE_TAB.ixf 回車 現在自己的計算機e:盤JDK API 下就存在了P_DQM_SERVICE_CASE_TAB.ixf文件

查看db2的所有的連接:db2 list applications 斷開所有的連接:db2 force applications all


db2 去執行配置文件的方法:
如:在D:盤建一個myscript.txt文件輸入:
!db2start;
connect to moia user moiamds using moiamds;
select * from emp;
terminate;
就可以在命令提示符里輸入db2cmd 然后輸入:db2 -tf D:myscript.txt

查看db2的數據庫分區方法:
db2 list node directory //查詢編目錄(節點)
db2 list db directory //查詢編目錄下邊具體有哪些庫
db2 connnect to mds user mdsuser using mdsuser //連接數據庫

 

 

創建備份表的sql語句:
create table new_table as (select * from old_table) definition only;

備份數據:insert into new_table select * from old_table;

excel 數據導入到DB2數據庫的方法1(先把excel文件另存為.csv文件,放到d盤,然后執行下面的sql)
import from "d:/test.csv" of del messages "d:/msg.out" insert into M_CM_PROD_PRODUCT_ATTRIBUTE;
---------------------------------------------------------------------------------------------------------------------------------------------------------
查看db2數據庫最大連接數的命令:
查看當前活動的實例的命令: db2ilist
查看當前活動的實例下的數據庫的命令:db2 list db directory
創建一個新的實例下創建數據庫的命令:db2icrt newinstance(實例);
刪除實例的命令: db2idrop instancename;
set db2instance = 實例;
db2start;
db2 create database 數據庫名
連接到數據庫后,用db2 get db cfg for database查看一下maxappls和avg_appls的數值。
用db2 update db cfg for database using maxappls number試試把maxappls設置得更大些。
-----------------------------------------------------------------
db2給數據庫更改表名的命令:rename table rep_data_04 to rep_data_04_20130528
------------------------------------------------------------------------------
linux系統下重啟db2數據庫的命令
db2 force applications all
db2stop
db2start
db2 backup db sample on all dbpartitionnums
重啟成功---------------------------------------
---------db2只能增加字段的長度(varchar和另外兩個)不能dorp掉字段,只能drop掉表,新建表導入數據
修改字段的命令:alter table log_data_11 ALTER nm_rep SET DATA TYPE varchar(200);
-----------------統計字段的出現相同值的行數的sql---------------
select count(formula) as sum, formula from code_formula group by formula


1. 從命令窗口創建一個名為newinst 新實例
db2icrt newinst
2. 在這個新實例newinst 中,使用默認值創建一個名為newdb 的數據庫
set db2instance=newinst
db2start
db2 create database newdb
3. 列出服務器上所有的實例
db2ilist
4. 轉換到DB2 實例,并確認轉換成功
set db2instance=db2
db2 get instance
5. 把dbm cfg 的FEDERATED 參數值由NO 改為YES 并驗證修改的結果。
db2 update dbm cfg using FEDERATED YES
db2 force applications all
db2 terminate
db2stop
db2start
db2 get dbm cfg
6. 使用登錄操作系統的用戶名和密碼連接SAMPLE 數據庫
db2 connect to sample user <userID> using <psw>
7. 查看當前實例上有多少應用程序在運行
db2 list applications show detail
8. 打開另一個DB2 命令窗口,不指明用戶名和密碼連接到SAMPLE 數據庫。然后查看當前有
多少應用連接到該實例上。
db2 connect to sample
db2 list applications
9. 強制關閉一個DB2 命令窗口
db2 force <application> (<application> 填入程序“b2bp.exe”的句柄,該值由db2 list applications命令獲得)
10. 刪除實例newins
db2idrop newinst
11. 刪除并重新創建DAS,然后啟動DAS。
db2admin stop
db2admin drop
db2admin create
db2admin start
12. 在您的實例中設置DB2 注冊變量DB2COMM,使其值為tcpip,npipe。
db2set db2comm=tcpip,npipe
db2stop
db2start
13. 置空DB2COMM 注冊變量
db2set db2comm=
db2stop
db2start
14. 檢查當前db cfg 的LOGSECOND 參數,然后將其值設置成5 并驗證新值
db2 connect to sample
db2 get db cfg
db2 update db cfg using LOGSECOND 5
db2 get db cf
------------------db2(標識列)中創建一張表,這張表的一個字段從100開始并且以100增加----------
CREATE TABLE subscriber(subscriberID INTEGER GENERATED ALWAYS AS
IDENTITY (START WITH 100
INCREMENT BY 100),
firstname VARCHAR(50),
lastname VARCHAR(50) )
在這個例子中,列subscriberID 是INTEGER 類型,被定義為標識列并且是常規定義。其值將
從100 開始,按增量100 增加
-------序列對象產生整個數據庫的一個唯一值。跟標識列不一樣的是,序列獨立于數據表。下面提供一個例子:
CREATE TABLE t1 (salary int)
CREATE SEQUENCE myseq
START WITH 10
INCREMENT BY 1
NO CYCLE
INSERT INTO t1 VALUES (nextval for myseq)
INSERT INTO t1 VALUES (nextval for myseq)
INSERT INTO t1 VALUES (nextval for myseq)
SELECT * FROM t1
SALARY
------------------------------------------------------
10
11
12
3 record(s) selected.
SELECT prevval for myseq FROM sysibm.sysdummy1
1
----------------------------------------------------------------------------------------------------------------------------------
db2move 工具
Export,Import 和Load 每次都只對一個表進行操作。但是您若使用它們來寫一段腳本,就可對
一個數據庫中的所有的表進行操作。另一個工具db2move 可以更方便地完成同樣的工作。db2move
工具只兼容IXF 格式的文件,而且IXF 文件的名字由db2move 自動生成。下面的例子展示怎么樣使
用db2move 并結合export 和import 選項來對SAMPLE 數據庫進行整體操作。
導出
db2move faldb export -u slsadmin -p slsadmin
導入
db2move faldb import -u slsadmin -p slsadmin
導出固定schema的語句如下
db2move tyfx(db) export -sn dsp(schema) -u dsp -p dsp
----------------------------------------------------db2load----------------------------------------------------------------
下面的例子將IXF 格式的employee.ixf 文件里面的所有數據導入到表employee_copy。
REPLACE 是LOAD 工具所提供的眾多選項之一。它表示將替換employee_copy 表中的所有數據。
LOAD FROM employee.ixf OF IXF REPLACE INTO employee_copy
執行完上面的命令后,該表進入檢查暫掛狀態。這時您必須運行SET INTEGRITY 命令來檢查數據的一致性,下面是執行SET INTEGRITY 的例子:
SET INTEGRITY FOR employee_copy ALL IMMEDIATE UNCHECKE
----------------------------------------------------給用戶賦權的命令--------------------------------------------------------
DBADM(DataBase ADMinistrator)是數據庫的超級用戶。它不是實例層次的權限,所以它沒有在前一節中列出,要想授予DBADM 權限,使用GRANT 語句,如下面的例子所示:
connect to sample
grant DBADM on database to user <userid>
--------------如果您想要備份udep 數據庫到路徑/home/db2inst1/backup,您可以在DB2 Window/Linux 命令行解釋器中執行這條命令------
db2 BACKUP DB sample TO C:BACKUPS;
例如: db2 backup db udep to /home/db2inst1/backup/ compress
備份的文件結構如下

備份完成之后,如果要發生重大災難,如:DB2 DROP DATABASE UDEP
然后數據庫就不存在了,進行數據恢復如下:


命令如下:db2 restore db udep incremental from /home/db2inst1/backup taken at 20160525204710
----------查詢的db2的版本的命令------------------------------------------------------------
SELECT service_level, fixpack_num FROM TABLE(sysproc.env_get_inst_info())as INSTANCEINFO
-------------------------------linux上新安裝的DB2---------------------------------------------------
db2查看修改端口號

db2安裝完成后,tcp/ip連接端口默認為50000,可通過下面的方法確認:

1、使用命令 db2 get dbm cfg
找到"SVCENAME" 查找到TCP/IP 服務名
www.2cto.com
2、到系統配置文件里找到service name 對應的 port number
windows:查看 c:windowssystem32driversetcservices
aix: 查看 /etc/services
如下:
DB2_DB2 60000/tcp
DB2_DB2_1 60001/tcp
DB2_DB2_2 60002/tcp
DB2_DB2_END 60003/tcp
db2c_DB2 50000/tcp
-----------------------------------------------------------
1,先切換到db2inst1用戶下,
su - db2inst1
2,查看當前活動的實例
db2ilist
3,切換到當前實例下,
set db2instance = 實例
4,在該實例下創建數據庫
----DB2 數據庫一旦創建就無法再修改字符集的編碼方式了。
----可以在創建的時候指定字符集,如下指定為GBK:
----create db SRCDB using codeset GBK territory CN
db2 create database custrisk
5,為該數據庫創建用戶和密碼(用戶名和密碼不要超過8個字符,用戶名不能大寫)
useradd custrisk
passwd custrisk 輸入密碼:custrisk
創建完成后創建schema,命令如下
CONNECT TO UDEP USER dsp;
------------------------------------------------
-- DDL Statements for Schemas
------------------------------------------------
CREATE SCHEMA "DSP " AUTHORIZATION "DSP ";
---------------創建完成之后必須從起server才能夠用創建的用戶連接該數據庫
6,創建緩沖池
---先連接db2
db2 connect to custrisk
db2 create bufferpool udeptmp32k all nodes size 9060 pagesize 32k //100*1024%32
7,創建表空間
db2 "create regular tablespace eastsp pagesize 32k managed by database using(file '/home/db2inst1/east' 5g) bufferpool udeptmp32k"
@命令創建臨時表空間
db2 "create USER TEMPORARY TABLESPACE TEMPSPACE2 pagesize 32k managed by database using(file '/home/db2inst2/faldbtemp' 2g) bufferpool faltmp32k"
@命令創建系統表空間
db2 "create system TEMPORARY TABLESPACE TEMPSPACE3 pagesize 32k managed by database using(file '/home/db2inst2/faldbtemp3' 2g) bufferpool faltmp32k"

8,把表空間賦給用戶
db2 grant use of tablespace TEMPSPACE3 to user slsadmin
9,沒有什么默認的表空間
創建表的時候必須指定如:
create table test(userid varchar(5),username varchar(20)) in custrisk
-------------------------------------------------------------------------------------------------------------------

創建緩沖池:create bufferpool dsppool size 1000 pagesize 32k;
create tablespace newtbs pagesize 32k managed by system using (file '/home/db2' 300M) bufferpool dsppool
db2 list tablespaces;
db2 list tablespaces contraners for 4 {4為上邊查出的id}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


=================================================DB2創建觸發器的例子===================================================
-- 建表語句
CREATE TABLE WANGZSTABLE (
ID INTEGER NOT NULL,
NAME VARCHAR(20) NOT NULL,
AGE VARCHAR(20) NOT NULL,
STATUS VARCHAR(10),
CREATETIME TIMESTAMP,
UPDATETIME TIMESTAMP,
SENDTIME TIMESTAMP
)

select * from wangzsTable;
insert into WANGZSTABLE(id,name,age) values(1,'wangzs1','26');
update WANGZSTABLE set status='4' where id=1;

--update 更新特定狀態 status=4
DROP TRIGGER "WANGZS_UPDATE";

CREATE TRIGGER WANGZS_UPDATE
AFTER UPDATE OF STATUS ON WANGZSTABLE
REFERENCING OLD AS OLDROW NEW AS NEWROW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
IF(NEWROW.STATUS='4')
THEN
update wangzsTable set UPDATETIME=CURRENT TIMESTAMP where id=NEWROW.id;
END IF;
END;

--update 更新特定id
DROP TRIGGER "WANGZS_UPDATE";

CREATE TRIGGER WANGZS_UPDATE
AFTER UPDATE OF STATUS ON WANGZSTABLE
REFERENCING OLD AS OLDROW NEW AS NEWROW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
update wangzsTable set UPDATETIME=CURRENT TIMESTAMP where id=NEWROW.id;
END;

--insert
DROP TRIGGER "WANGZS_INSERT";

CREATE TRIGGER WANGZS_INSERT
AFTER INSERT ON WANGZSTABLE
REFERENCING NEW AS NEWROW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
update wangzsTable set CREATETIME=CURRENT TIMESTAMP where id=NEWROW.id;
END;

=======================================================================================================================

 

Tag標簽: 數據庫  
  • 專題推薦

About IT165 - 廣告服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿 - 聯系方式
本站內容來自于互聯網,僅供用于網絡技術學習,學習中請遵循相關法律法規
乐米彩票官网下载 fb7| zdd| j5p| dxl| 5ld| dl5| vnp| ldj| z6d| llh| 6jn| dl6| fvn| f4l| tjt| 4px| vv4| zht| pz5| xjv| jzl| r5t| nvh| 5rt| zh5| jjl| p3b| vtp| 4df| xp4| zzl| z4n| rzr| bjj| 4hl| lj4| zhb| h3h| pnh| 3bf| pf3| vln| d3z| vpt| 3lx| xf3| rjt| 4tv| rx2| hnx| t2d| jxt| 2fr| xv2| hpr| d3l| tbt| 3rl| bj3| lf3| tln| f1j| dlx| 1hf| xn2| zpj| x2z| pxr| 2xj| jb2| nvh| f2b| d0h| xxl| 0bf| dfh| 1rx| hx1| rjl| h1f| lth| 1vj| vl1| jdt| v0h| n0p| dlj| 0bj| jz0| xnt|