【正文】
200I The SQL mand pleted successfully. 用戶(hù)臨時(shí)表空間用于存儲(chǔ)已說(shuō)明的臨時(shí)表(用 DECLARE GLOBAL TEMPORARY TABLE 語(yǔ)句定義) 例十 :用 RENAME 語(yǔ)句給表空間重命名 db2 rename tablespace resource to tbsp DB20200I The SQL mand pleted successfully. 用該語(yǔ)句給表空間重命名之后,將自動(dòng)更改所有引用 該表空間的目錄記錄,所以無(wú)須關(guān)心該表空間中的個(gè)別對(duì)象。 例十 一 :在 tbsp 表空間中創(chuàng)建一張名為 T1 的表 db2 create table t1 (abc int) in tbsp DB20200I The SQL mand pleted successfully. 27 檢查數(shù)據(jù)庫(kù)中有沒(méi)有死鎖 使用如下命令檢查數(shù)據(jù)庫(kù)中是否有死鎖。 $db2 get snapshot for all on kms SQL1611W No data was returned by Database System Monitor. SQLSTATE=00000 以上信息表示數(shù)據(jù)庫(kù)中沒(méi)有死鎖。 可以將命令執(zhí)行結(jié)果輸出到文件 $db2 get snapshot for all on kms 用 grep 命令查看輸出的文件中是否有死鎖的記錄,比如 grep n Deadlocks detected | grep v = 0 | more 查看緩沖池的命中率 通過(guò)使用 get snapshot for all on dbname,可以為數(shù)據(jù)庫(kù)上的每個(gè)緩沖池生成一個(gè)快照,下 面代碼展示了這樣一個(gè)快照: $db2 get snapshot for all on kms1 Bufferpool Snapshot Bufferpool name = IBMDEFAULTBP Database name = kms1 Database path = C:\DB2\NODE0000\SQL00002\ Input database alias = kms1 Snapshot timestamp = 02202020 06:24: Buffer pool data logical reads = 370 Buffer pool data physical reads = 54 Buffer pool temporary data logical reads = 0 Buffer pool temporary data physical reads = 0 Buffer pool data writes = 3 Buffer pool index logical reads = 221 Buffer pool index physical reads = 94 Buffer pool temporary index logical reads = 0 Buffer pool temporary index physical reads = 0 Total buffer pool read time (ms) = 287 Total buffer pool write time (ms) = 1 Asynchronous pool data page reads = 9 Asynchronous pool data page writes = 0 28 Buffer pool index writes = 0 Asynchronous pool index page reads = 0 Asynchronous pool index page writes = 0 Total elapsed asynchronous read time = 0 Total elapsed asynchronous write time = 0 Asynchronous data read requests = 3 Asynchronous index read requests = 0 No victim buffers available = 0 Direct reads = 86 Direct writes = 4 Direct read requests = 14 Direct write requests = 2 Direct reads elapsed time (ms) = 247 Direct write elapsed time (ms) = 56 Database files closed = 0 Data pages copied to extended storage = 0 Index pages copied to extended storage = 0 Data pages copied from extended storage = 0 Index pages copied from extended storage = 0 Unread prefetch pages = 0 Vectored IOs = 3 Pages from vectored IOs = 9 Block IOs = 0 Pages from block IOs = 0 Physical page maps = 0 Node number = 0 Tablespaces using bufferpool = 4 Alter bufferpool information: Pages left to remove = 0 Current size = 250 Postalter size = 250 為了判斷一個(gè)緩沖池 的效率,需要計(jì)算它的緩沖池命中率 (BPHR)。您所需的重要信息在上面已經(jīng)用粗體標(biāo)出來(lái)了。如果可能的話,一個(gè)理想的 BPHR 在某些地方應(yīng)超過(guò) 90%。計(jì)算公式如下: BPHR (%) = (1 ((Buffer pool data physical reads + Buffer pool index physical reads) /(Buffer pool data logical reads + Buffer pool index logical reads))) * 100 在 IBMDEFAULTBP 緩沖池的以上快照中,我們可以這樣來(lái)計(jì)算 BPHR: HPHR(%) = (1((54 + 94) / (370 + 221))) * 100 = (1(148 / 591)) * 100 = (1 ) * 100 29 = 查看當(dāng)前運(yùn)行最頻繁的 SQL 命中率是否正常 使用如下命令檢查數(shù)據(jù)庫(kù)中 sql 命中率 $ db2 get snapshot for bufferpools on kms SQL1611W No data was returned by Database System Monitor. SQLSTATE=00000 可以將命令執(zhí)行結(jié)果輸出到文件 $db2 get snapshot for all on kms 用 grep 命令查看 Number of executions執(zhí)行次數(shù)最頻繁的語(yǔ)句,看其命中率是否正常 ,比如 grep n Number of executions | grep v = 0 | sort k 5,5rn | more 數(shù)據(jù)庫(kù)的備份與恢復(fù) 備份類(lèi) 型 數(shù)據(jù)庫(kù)備份有四種類(lèi)型,分別應(yīng)用于不同的場(chǎng)合,下面簡(jiǎn)要介紹一下。 完全備份 這是大多數(shù)人常用的方式,它可以備份整個(gè)數(shù)據(jù)庫(kù),包含用戶(hù)表、系統(tǒng)表、索引、視圖和存儲(chǔ)過(guò)程等所有數(shù)據(jù)庫(kù)對(duì)象。但它需要花費(fèi)更多的時(shí)間和空間,所以,一般推薦一周做一次完全備份。 事務(wù)日志備份 事務(wù)日志是一個(gè)單獨(dú)的文件,它記錄數(shù)據(jù)庫(kù)的改變,備份的時(shí)候只需要復(fù)制自上次備份以來(lái)對(duì)數(shù)據(jù)庫(kù)所做的改變,所以只需要很少的時(shí)間。為了使數(shù)據(jù)庫(kù)具有魯棒性,推薦每小時(shí)甚至更頻繁的備份事務(wù)日志。 差異備份 也叫增量備份。它是只 備份數(shù)據(jù)庫(kù)一部分的另一種方法,它不使用事務(wù)日志,相反,它使用整個(gè)數(shù)據(jù)庫(kù)的一種新映象。它比最初的完全備份小,因?yàn)樗话陨洗瓮耆珎浞菀詠?lái)所改變的數(shù)據(jù)庫(kù)。它的優(yōu)點(diǎn)是存儲(chǔ)和恢復(fù)速度快。推薦每天做一次差異備份。 文件備份 數(shù)據(jù)庫(kù)可以由硬盤(pán)上的許多文件構(gòu)成。如果這個(gè)數(shù)據(jù)庫(kù)非常大,并且一個(gè)晚上也不能將它備份完,那么可以使用文件備份每晚備份數(shù)據(jù)庫(kù)的一部分。由于一般情況下數(shù)據(jù)庫(kù)不會(huì)大到必須使用多個(gè)文件存儲(chǔ),所以這種備份不是很常用。 按照備份時(shí)對(duì) 業(yè)務(wù)的 影響范圍 可以分為離線全備份,在線全備份,離線全備份 。 下面針對(duì)這三 種別分方式做講解。 30 數(shù)據(jù)庫(kù)備份 離線全備份 離線全備份的前提條件是沒(méi)有應(yīng)用連接數(shù)據(jù)庫(kù)。 所以,在備份數(shù)據(jù)庫(kù)之前要做如下操作: 1. 停止連接數(shù)據(jù)庫(kù)的應(yīng)用程序 2. 查看數(shù)據(jù)庫(kù)是否有鏈接 $db2 list application Auth Id Application Appl. Application Id DB of Name Handle Name Agents DB2INST1 db2bp 5 * KMS1 1 以上信息顯示 KMS1 數(shù)據(jù)庫(kù)有一個(gè)連接,連接句柄為 5。 如果出現(xiàn)以下信息,則說(shuō)明在數(shù)據(jù)庫(kù)上沒(méi)有連接,可以直接 備份 數(shù)據(jù)庫(kù)。 $ db2 list application SQL1611W No data was returned by Database System Monitor. SQLSTATE=00000 3. 斷開(kāi)存在的數(shù)據(jù)庫(kù)連接 $ db2 force application(5) DB20200I The FORCE APPLICATION mand pleted successfully. DB21024I This mand is asynchronous and may not be effective immediately. 執(zhí)行備份操作 $db2 backup db kms1 Backup successful. The timestamp for this backup image is : 20200821152454 執(zhí)行命令的結(jié)果是在當(dāng)前文件目錄路徑下產(chǎn)生 kms1 的備份映像文件。 以下命令將備份映像文件備份至 /home/data 目錄下: $db2 backup db kms1 to /home/data 在線全備份 要使數(shù)據(jù)庫(kù)可以在線備份,就要 啟用歸檔日志 和 增量 備份功能 ,即將數(shù)據(jù)庫(kù)的logratain 和 trackmod 的值設(shè)置為 on。 操作如下: db2 update db cfg for kms1 using trackmod on DB20200I The UPDATE DATABASE CONFIGURAT