DB2數(shù)據(jù)庫(kù)部分日常實(shí)用操
以下的文章主要向大家講述的是DB2數(shù)據(jù)庫(kù)部分日常實(shí)用操作,前幾天無(wú)意間在一網(wǎng)站找到一個(gè)關(guān)于DB2數(shù)據(jù)庫(kù)部分日常實(shí)用操作,所以今天拿出來(lái)以供大家分享,以下就是具體方案的描述,希望在你今后的學(xué)習(xí)中會(huì)有所幫助。
1、Load 方法裝入數(shù)據(jù):
export to tempfile of del select * from TABLENAME where not 清理?xiàng)l件;
- load from tempfile of del modified by delprioritychar replace into TABLENAME nonrecoverable;
說(shuō)明:
在不相關(guān)的數(shù)據(jù)表export數(shù)據(jù)時(shí),可以采取并發(fā)的形式,以提高效率;
TABLENAME指待清理table的名稱(chēng);
modified by delprioritychar防止數(shù)據(jù)庫(kù)記錄中存在換行符,導(dǎo)致數(shù)據(jù)無(wú)法裝入的情況;
replace into對(duì)現(xiàn)DB2數(shù)據(jù)庫(kù)中的內(nèi)容進(jìn)行替換,即將現(xiàn)行的數(shù)據(jù)記錄清理,替換為數(shù)據(jù)文件內(nèi)容;
nonrecoverable無(wú)日志方式裝入;
2、查找當(dāng)前的應(yīng)用:
- db2 list application |grep BTPDBS;
3、刪除當(dāng)前正在使用的application:
- db2 "force application (Id1,Id2,Id3)"
Id1,Id2,Id3 是List顯示的應(yīng)用號(hào);
4、查看當(dāng)前應(yīng)用號(hào)的執(zhí)行狀態(tài):
- db2 get snapshot for application agentid 299 |grep Row
5、查看數(shù)據(jù)庫(kù)參數(shù):
db2 get db cfg for //當(dāng)前DB2數(shù)據(jù)庫(kù)可以省略
6、修改數(shù)據(jù)庫(kù)的Log數(shù)據(jù):
db2 update db cfg using <參數(shù)名> <參數(shù)值>#p#
7、Db2Stop Force的用法:
在進(jìn)行Bind的時(shí)候出現(xiàn)如下錯(cuò)誤:
- SQL0082CAn error has occurred which has terminated processing.
- SQL0092NNo package was created because of previous errors.
- SQL0091NBinding was ended with "3" errors and "0" warnings.
主要是表文件被加鎖,不能繼續(xù)使用;
在進(jìn)行stop的時(shí)候報(bào)錯(cuò):db2stop
- 8/03/2005 21:46:530 0 SQL1025NThe database manager was not stopped because databases are still active.
- SQL1025NThe database manager was not stopped because databases are still active.
需要使用如下命令可以解決這個(gè)問(wèn)題: db2stop force
- 08/03/2005 21:47:49 0 0 SQL1064NDB2STOP processing was successful.
- SQL1064NDB2STOP processing was successful.
然后啟動(dòng)數(shù)據(jù)庫(kù)db2start,連接DB2數(shù)據(jù)庫(kù)db2s后,重新進(jìn)行bind即可。
8、緩沖池參數(shù)修改:
db2 alter bufferpool ibmdefaultbp size 10240呵呵
查看本表的數(shù)據(jù)內(nèi)容如下:
- db2 "select * from syscat.bufferpools";
9、DB2 日志處理:
DB2日志是以文件的形式存放在文件系統(tǒng)中,分為兩種模式:循環(huán)日志和歸檔日志。當(dāng)創(chuàng)建新數(shù)據(jù)庫(kù)時(shí),日志的缺省模式是循環(huán)日志。在這種模式下,只能實(shí)現(xiàn)數(shù)據(jù)庫(kù)的脫機(jī)備份和恢復(fù)。如果要實(shí)現(xiàn)聯(lián)機(jī)備份和恢復(fù),必須設(shè)為歸檔日志模式。
目前在綜合業(yè)務(wù)系統(tǒng)中,設(shè)置的均是歸檔日志模式;其它系統(tǒng)(如事后監(jiān)督、經(jīng)營(yíng)決策、中間業(yè)務(wù)等)一般都設(shè)置為循環(huán)日志模式。至于采用何種模式,可以通過(guò)修改數(shù)據(jù)庫(kù)配置參數(shù)(LOGRETAIN)來(lái)實(shí)現(xiàn): 歸檔日志模式:db2 update db cfg for using logretain on 注:改為on后,查看數(shù)據(jù)庫(kù)配置參數(shù)logretain的值時(shí),實(shí)際顯示的是recovery。改變此參數(shù)后,再次連接數(shù)據(jù)庫(kù)會(huì)顯示數(shù)據(jù)庫(kù)處于備份暫掛(BACKUP PENDING)狀態(tài)。這時(shí),需要做一次對(duì)數(shù)據(jù)庫(kù)的脫機(jī)備份(db2 backup db ),才能使DB2數(shù)據(jù)庫(kù)狀態(tài)變?yōu)檎!?/p>
循環(huán)日志模式:
- db2 update db cfg for using logretain off
10、Db2 日志處理
必須按照以下正確的步驟進(jìn)行操作:
要求必須使用DB2命令PRUNE進(jìn)行清理,不建議使用rm命令刪除。
刪除前應(yīng)保證應(yīng)用已停止(即聯(lián)機(jī)已下來(lái))。
查看當(dāng)前使用的日志文件目錄及***活動(dòng)日志文件
用 “db2 get db cfg for ”命令查看日志文件目錄(Path to log files)參數(shù),確定DB2數(shù)據(jù)庫(kù)當(dāng)前使用的日志文件目錄。 例如:Path to log files = /db2log/,說(shuō)明DB2日志存放目錄是/db2log
用 “db2 get db cfg for ”命令查看***活動(dòng)日志文件(First active log file)參數(shù),該參數(shù)對(duì)應(yīng)的日志文件之前的日志文件均為歸檔日志文件,如果確認(rèn)沒(méi)有用,可以刪除。 例如:First active log file = S0015913.LOG,說(shuō)明當(dāng)前***活動(dòng)日志文件是S0015913.LOG。#p#
備份好要?jiǎng)h除的歸檔日志
刪除歸檔日志 以應(yīng)用用戶(hù)(如BTP)登錄,執(zhí)行:
- $ db2 connect to
- $ db2 prune logfile prior to S???????.LOG
注:S???????.LOG為查看到的***活動(dòng)日志文件。此命令可以將當(dāng)前***活動(dòng)日志文件之前的歸檔日志文件全部刪除。
11、如何清理db2diag.log文件
db2diag.log,是用來(lái)記錄DB2數(shù)據(jù)庫(kù)運(yùn)行中的信息的文件。可以通過(guò)此文件,查看記錄的有關(guān)DB2數(shù)據(jù)庫(kù)詳細(xì)的錯(cuò)誤信息。此文件也是不斷增大的,需要定期進(jìn)行清理。
可以通過(guò)查看實(shí)例的配置參數(shù)DIAGPATH,來(lái)確定db2diag.log文件是放在哪個(gè)目錄下:db2 get dbm cfg 如果Diagnostic data directory path(DIAGPATH) = /home/db2inst1/sqllib/db2dump,則此文件是放在/home/db2inst1/sqllib/db2dump目錄下。當(dāng)文件系統(tǒng)/home的使用率達(dá)到80%-90%左右時(shí),應(yīng)及時(shí)刪除db2diag.log文件。
請(qǐng)按以下正確步驟操作:確認(rèn)應(yīng)用(如BTP)、DB2已經(jīng)停止。
將原db2diag.log文件備份到其它文件系統(tǒng)下。
刪除db2diag.log文件。刪除后,DB2會(huì)自動(dòng)創(chuàng)建一個(gè)新的文件。#p#
12、Load 操作
在進(jìn)行l(wèi)oad的時(shí)候
- db2 "load from acmmst.txt of del modified by coldel| replace into acmmst nonrecoverable ”
由于數(shù)據(jù)不規(guī)范出現(xiàn)錯(cuò)誤,強(qiáng)行中斷以后,進(jìn)行操作的時(shí)候出現(xiàn)如下錯(cuò)誤:
- SQL0668NOperation not allowed for reason code "3" on table "BTP.ACMMST".
- SQLSTATE=57016
此時(shí),進(jìn)行反方向操作即可:
- db2 "load from /dev/null of del terminate into acmmst nonrecoverable"。
如果沒(méi)有使用參數(shù)nonrecoverable,則會(huì)出現(xiàn)DB2數(shù)據(jù)庫(kù)狀態(tài)不正確的情況,使用:
db2 list tablesapces show detail 查看狀態(tài),如果不是正常狀態(tài),則脫機(jī)狀態(tài)進(jìn)行備份即可。
兩個(gè)表文件之間UPDATE的方法:
- db2 "update cdmcrd set offset = (select cdmlsl.offset from cdmlsl where cdmlsl.crdno=cdmcrd.crdno) where cdmcrd.crdno in (select cdmlsl.crdno from cdmlsl)
13、多字段條件查詢(xún)和修改
表A中的字段有actno, cnlno,bal,pwd;表B中的字段為Actno,Cnlno,TxnAmt;目的是將A表中的bal修改為B表中的TxnAmt,命令:
- db2 "update A set bal=(select txnamt from B where actno=A.actno and cnlno=A.Cnlno) where A.actno||A.cnlno in (select Actno||cnlno from B );
14、多條件匹配查詢(xún)
查詢(xún)某個(gè)表中條件是B?AAA的記錄:
- db2 "select * from A where actno like 'B_AAA%'".
查詢(xún)數(shù)據(jù)中存在某些字符的記錄:
- db2 "select * from A where actno like '%-AAA%".
15、數(shù)據(jù)庫(kù)恢復(fù)的處理
進(jìn)行DB2數(shù)據(jù)庫(kù)恢復(fù)的時(shí)候使用以下的命令:
以下是引用片段:
- restore db db1 to /tstdb2/catalog into db newlogpath /tstdb2/db2log buffer 2048
- replace existing redirect parallelism 16;
- set tablespace containers for 1 using (path '/tstdb2/db2tmp');
- set tablespace containers for 2 using
- (device '/dev/rtstcontlv00' 2621440, device '/dev/rtstcontlv01' 2621440,
- device '/dev/rtstcontlv02' 2621440, device '/dev/rtstcontlv03' 2621440 ) ;
- restore db db1 continue;
恢復(fù)完成以后執(zhí)行命令db2s時(shí)報(bào)如下的錯(cuò)誤:
以下是引用片段:
- P570:>db2s
- SQL1117N A connection to or activation of database "DB" cannot be made
- because of ROLL-FORWARD PENDING. SQLSTATE=57019
- DB21034E The command was processed as an SQL statement because it was not a
- valid Command Line Processor command. During SQL processing it returned:
- SQL1024N A database connection does not exist. SQLSTATE=08003
解決辦法如下:
以下是引用片段:
- P570:>db2 rollforward db db to end of logs and complete
- Rollforward Status
- Input database alias = db
- Number of nodes have returned status = 1
- Node number = 0
- Rollforward status = not pending
- Next log file to be read =
- Log files processed = -
- Last committed transaction = 2005-11-20-10.59.23.000000
- DB20000I The ROLLFORWARD command completed successfully.
以上的相關(guān)內(nèi)容就是對(duì)DB2數(shù)據(jù)庫(kù)部分日常實(shí)用操作的介紹,望你能有所收獲。
【編輯推薦】
- 實(shí)現(xiàn)DB2HADRv8.2 EE實(shí)施的正確操作步驟
- DB2 優(yōu)化器中針對(duì) JOIN 語(yǔ)句的結(jié)果集估計(jì)
- DB2在線(xiàn)增量備份 還原增量備份及前滾恢復(fù)
- 對(duì)DB2管理頁(yè)大小限制的詳細(xì)解析
- Windows平臺(tái)下DB2 Express-C的安裝