一些db2的資料

yurunping發表於2009-07-27
Load 方法裝入資料: export to tempfile of del select * from TABLENAME where not 清理條件; load from tempfile of del modified by delprioritychar replace into TABLENAME nonrecoverable; 說明: 在不相關的資料表export資料時,可以採取併發的形式,以提高效率; TABLENAME指待清理table的名稱; modified by delprioritychar防止資料庫記錄中存在換行符,導致資料無法裝入的情況; replace into對現資料庫中的內容進行替換,即將現行的資料記錄清理,替換為資料檔案內容; nonrecoverable無日誌方式裝入; 2、查詢當前的應用:db2 list application |grep BTPDBS; 3、刪除當前正在使用的application: db2 "force application (Id1,Id2,Id3)" Id1,Id2,Id3 是List顯示的應用號; 4、檢視當前應用號的執行狀態: db2 get snapshot for application agentid 299 |grep Row 5、檢視資料庫引數: db2 get db cfg for //當前資料庫可以省略 6、修改資料庫的Log資料: db2 update db cfg using 7、Db2Stop Force的用法: 在進行Bind的時候出現如下錯誤: 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. 主要是表檔案被加鎖,不能繼續使用; 在進行stop的時候報錯: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. 需要使用如下命令可以解決這個問題: db2stop force 08/03/2005 21:47:49 0 0 SQL1064NDB2STOP processing was successful. SQL1064NDB2STOP processing was successful. 然後啟動資料庫db2start,連線資料庫db2s後,重新進行bind即可。 8、緩衝池引數修改: db2 alter bufferpool ibmdefaultbp size 10240 檢視本表的資料內容如下:db2 "select * from syscat.bufferpools"; 9、DB2 日誌處理: DB2日誌是以檔案的形式存放在檔案系統中,分為兩種模式:迴圈日誌和歸檔日誌。當建立新資料庫時,日誌的預設模式是迴圈日誌。在這種模式下,只能實現資料庫的離線備份和恢復。如果要實現聯機備份和恢復,必須設為歸檔日誌模式。 目前在綜合業務系統中,設定的均是歸檔日誌模式;其它系統(如事後監督、經營決策、中間業務等)一般都設定為迴圈日誌模式。至於採用何種模式,可以透過修改資料庫配置引數(LOGRETAIN)來實現: 歸檔日誌模式:db2 update db cfg for using logretain on 注:改為on後,檢視資料庫配置引數logretain的值時,實際顯示的是recovery。改變此引數後,再次連線資料庫會顯示資料庫處於備份暫掛(BACKUP PENDING)狀態。這時,需要做一次對資料庫的離線備份(db2 backup db ),才能使資料庫狀態變為正常。 迴圈日誌模式:db2 update db cfg for using logretain off 10、Db2 日誌處理 必須按照以下正確的步驟進行操作: 要求必須使用DB2命令PRUNE進行清理,不建議使用rm命令刪除。 刪除前應保證應用已停止(即聯機已下來)。 檢視當前使用的日誌檔案目錄及第一活動日誌檔案 用 “db2 get db cfg for ”命令檢視日誌檔案目錄(Path to log files)引數,確定資料庫當前使用的日誌檔案目錄。 例如:Path to log files = /db2log/,說明DB2日誌存放目錄是/db2log 用 “db2 get db cfg for ”命令檢視第一活動日誌檔案(First active log file)引數,該引數對應的日誌檔案之前的日誌檔案均為歸檔日誌檔案,如果確認沒有用,可以刪除。 例如:First active log file = S0015913.LOG,說明當前第一活動日誌檔案是S0015913.LOG。 備份好要刪除的歸檔日誌 刪除歸檔日誌 以應用使用者(如BTP)登入,執行: $ db2 connect to $ db2 prune logfile prior to S???????.LOG 注:S???????.LOG為檢視到的第一活動日誌檔案。此命令可以將當前第一活動日誌檔案之前的歸檔日誌檔案全部刪除。 11、如何清理db2diag.log檔案 db2diag.log,是用來記錄DB2資料庫執行中的資訊的檔案。可以透過此檔案,檢視記錄的有關DB2資料庫詳細的錯誤資訊。此檔案也是不斷增大的,需要定期進行清理。 可以透過檢視例項的配置引數DIAGPATH,來確定db2diag.log檔案是放在哪個目錄下:db2 get dbm cfg 如果Diagnostic data directory path(DIAGPATH) = /home/db2inst1/sqllib/db2dump,則此檔案是放在/home/db2inst1/sqllib/db2dump目錄下。當檔案系統/home的使用率達到80%-90%左右時,應及時刪除db2diag.log檔案。 請按以下正確步驟操作:確認應用(如BTP)、DB2已經停止。 將原db2diag.log檔案備份到其它檔案系統下。 刪除db2diag.log檔案。刪除後,DB2會自動建立一個新的檔案。 12、Load 操作 在進行load的時候 db2 "load from acmmst.txt of del modified by coldel| replace into acmmst nonrecoverable ” 由於資料不規範出現錯誤,強行中斷以後,進行操作的時候出現如下錯誤: SQL0668NOperation not allowed for reason code "3" on table "BTP.ACMMST". SQLSTATE=57016 此時,進行反方向操作即可: db2 "load from /dev/null of del terminate into acmmst nonrecoverable"。 如果沒有使用引數nonrecoverable,則會出現資料庫狀態不正確的情況,使用: db2 list tablesapces show detail 檢視狀態,如果不是正常狀態,則離線狀態進行備份即可。 兩個表檔案之間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、多欄位條件查詢和修改 表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、多條件匹配查詢 查詢某個表中條件是B?AAA的記錄: db2 "select * from A where actno like 'B_AAA%'". 查詢資料中存在某些字元的記錄: db2 "select * from A where actno like '%-AAA%". 15、資料庫恢復的處理 進行資料庫恢復的時候使用以下的命令: restore db db1 to /tstdb2/catalog into db newlogpath /tstdb2/db2log buffer 2048replace 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; 恢復完成以後執行命令db2s時報如下的錯誤: P570:>db2sSQL1117N A connection to or activation of database "DB" cannot be madebecause of ROLL-FORWARD PENDING. SQLSTATE=57019DB21034E The command was processed as an SQL statement because it was not avalid 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 completeRollforward StatusInput database alias = dbNumber of nodes have returned status = 1Node number = 0Rollforward status = not pendingNext log file to be read =Log files processed = -Last committed transaction = 2005-11-20-10.59.23.000000DB20000I The ROLLFORWARD command completed successfully. (  [@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15031690/viewspace-1024645/,如需轉載,請註明出處,否則將追究法律責任。

相關文章