當前位置:首頁 » 存儲配置 » db2表空間自動存儲

db2表空間自動存儲

發布時間: 2022-09-14 03:21:54

A. Windows db2 做restore恢復 出現「SQL20319N 不允許在自動存儲器表空間上執行 SET TABLESPACE CONTAINE」

解決辦法:在最初開始恢復的時候就需要設置個路徑
例如:db2 restore db movies from d taken at 20021006213640 on d: redirect
其中d:為windows下的d盤,即自動表空間存放的地址,若你需要在aix上或者windows下其它盤符恢復,替換成相應路徑即可~

B. db2 查看錶空間是否自動擴展

db2pd -d 資料庫名 -tablespace 在現實結果中如下就是 AS是automaitc storage自動存儲的縮寫,AR是autoresize的縮寫 AS是yes證明表空間是自動存儲的 AR是yes證明表空間是自動擴展的
statistics
AS AR
YES NO

C. 求問DB2關於查看錶空間是否啟動了自動存儲功能

可以通過三種方式查看進入命令行模式db2 connect to sample1. db2 get snapshot for tablespaces on sample 使用自動存儲器 = 是可確定該表空間啟用了自動存儲器。2 db2 "select char((TBSP_NAME),30) as TBSP_NAME,TBSP_ID,TBSP_USING_AUTO_STORAGE from table(snap_get_tbsp('sample',-1)) as tbsp"TBSP_USING_AUTO_STORAGE 為1 可確定該表空間啟用了自動存儲器。

D. db2有表空間的LRG跟FLG文件,能恢復出來嗎

在弄明白什麼是重定向恢復之前,需要知道資料庫的文件構成,如果您對這一塊比較熟悉,可以直接跳到第一條分割線:

首先,一個DB2資料庫的文件是由兩分部構成的:表空間容器和資料庫文件,容器就是真正存放用戶數據的地方,是創建表空間時定義的;資料庫文件則包括了緩沖池信息文件、資料庫配置文件、歷史文件、日誌控制文件等。

問題是,如何定義表空間容器以及資料庫文件所在的路徑呢?答:是create database以及create tablespace的時候的參數決定的:

1. 如果CREATE DATABASE的時候指定了 AUTOMATIC STORAGE NO:
沒有指定ON path,那麼資料庫文件會被創建在資料庫管理器配置文件dftdbpath指定的目錄里;
若指定了ON path,那麼資料庫文件會被創建在ON指定的path里。

2. 如果CREATE DATABASE的時候指定了 AUTOMATIC STORAGE YES或者根本沒有指定AUTOMATIC STORAGE:
2.1 沒有指定ON path, 那麼資料庫文件和IBMSTOGROUP都會被創建/指定在dftdbpath指定的目錄里
2.2 若指定了ON path, 這個path可以指定多個路徑。 IBMSTOGROUP就使用這些路徑,表空間容器路徑解決了,資料庫文件在哪裡呢?這取決於DBPATH ON 參數:
沒有指定DBPATH ON,資料庫文件會被放在ON path指定的第一個路徑里。
若指定了DBPATH ON, 資料庫文件會放在這個路徑下。

下面正式進入重定向復原,首先是什麼情況下需要重定向恢復?

在下列任何情況下,請使用重定向復原操作:
--如果要將備份映像復原到不同於源機器的目標機器
--如果要將表空間容器復原到另一個物理位置
--如果復原操作由於一個或多個容器不可訪問而失敗
--如果要重新定義已定義的存儲器組的路徑

這兒我舉一個例子,盡可能地將上面幾種情況都包括了,假設我們有如下創建資料庫以及表空間的命令:

dbm cfg: Default database path (DFTDBPATH) = /home/db2users/e105q6a

$ db2 "create db test"
$ db2 "connect to test"
$ db2 "create STOGROUP MQSGROUP ON '/home/db2users/e105q6a/conpath1', '/home/db2users/e105q6a/conpath2'"
$ db2 "create user temporary tablespace usrtmp1 managed by automatic storage"
$ db2 "create regular tablespace rglrtbs1 managed by automatic storage USING STOGROUP MQSGROUP"
$ db2 "create tablespace tbs1 managed by system using ('/home/db2users/e105q6a/path1')"
$ db2 "create tablespace tbs2 managed by database using (file 'con2' 4000)"

那麼資料庫文件、storage group以及各個表空間的容器路徑如下:
資料庫文件/資料庫目錄:
/home/db2users/e105q6a

Storage Group:
$ db2 "SELECT VARCHAR(STORAGE_GROUP_NAME, 15) AS STOGROUP, STORAGE_GROUP_ID, VARCHAR(DB_STORAGE_PATH, 40) AS STORAGE_PATH FROM TABLE(ADMIN_GET_STORAGE_PATHS('',-1)) AS T"
STOGROUP STORAGE_GROUP_ID STORAGE_PATH
---------------- ---------------- ----------------------------------------
IBMSTOGROUP 0 /home/db2users/e105q6a
MQSGROUP 1 /home/db2users/e105q6a/conpath1
MQSGROUP 1 /home/db2users/e105q6a/conpath2
3 record(s) selected.

表空間容器(我精簡了輸出):
$ db2pd -db test -tab

Database Member 0 -- Database TEST -- Active -- Up 0 days 00:16:02 -- Date 2017-02-25-10.28.54.331489

Tablespace Configuration:
Id AS AR Type Content SGID Name Type Container
0 Yes Yes DMS Regular 0 SYSCATSPACE File /home/db2users/e105q6a/e105q6a/NODE0000/TEST/T0000000/C0000000.CAT
1 Yes No SMS SysTmp 0 TEMPSPACE1 Path /home/db2users/e105q6a/e105q6a/NODE0000/TEST/T0000001/C0000000.TMP
2 Yes Yes DMS Large 0 USERSPACE1 File /home/db2users/e105q6a/e105q6a/NODE0000/TEST/T0000002/C0000000.LRG
3 Yes Yes DMS Large 0 SYSTOOLSPACE File /home/db2users/e105q6a/e105q6a/NODE0000/TEST/T0000003/C0000000.LRG
4 Yes No SMS UsrTmp 0 USRTMP1 Path /home/db2users/e105q6a/e105q6a/NODE0000/TEST/T0000004/C0000000.UTM
5 Yes Yes DMS Regular 1 RGLRTBS1 File /home/db2users/e105q6a/conpath1/e105q6a/NODE0000/TEST/T0000005/C0000000.USR
5 Yes Yes DMS Regular 1 RGLRTBS1 File /home/db2users/e105q6a/conpath2/e105q6a/NODE0000/TEST/T0000005/C0000001.USR
6 No No SMS Regular - TBS1 Path /home/db2users/e105q6a/path1
7 No No DMS Large - TBS2 File /home/db2users/e105q6a/e105q6a/NODE0000/SQL00001/con2

----
以上面的資料庫為例,假設想要通過重定向恢復達到以下目的:
1.)把資料庫文件路徑換為/home/db2users/e105q6a/targetdbdir
2.) 把IBMSTOGROUP的路徑換為/home/db2users/e105q6a/targetstgrpsystem
3.)把MQSGROUP的路徑換為/home/db2users/e105q6a/targetstgrpuser1, /home/db2users/e105q6a/targetstgrpuser2 和/home/db2users/e105q6a/targetstgrpuser3
4.)把表空間tbs1路徑換為:/home/db2users/e105q6a/targetpath1
5.)把表空間tbs2路徑換為:/home/db2users/e105q6a/targetcon2, 並將大小改為5000

要先通過"db2 drop db test"刪掉資料庫(模擬恢復到另一個機器上),之後針對上面這幾個需求,相應的操作如下:
1.)$ db2 "restore db test to '/home/db2users/e105q6a/targetdbdir' redirect without prompting"
2.)$ db2 "SET STOGROUP PATHS FOR IBMSTOGROUP ON '/home/db2users/e105q6a/targetstgrpsystem'"
3.)$ db2 "SET STOGROUP PATHS FOR MQSGROUP ON '/home/db2users/e105q6a/targetstgrpuser1', '/home/db2users/e105q6a/targetstgrpuser2', '/home/db2users/e105q6a/targetstgrpuser3' "
4.)$ db2 "set tablespace containers for 6 using (path '/home/db2users/e105q6a/targetpath1')"
5.)$ db2 "set tablespace containers for 7 using (file '/home/db2users/e105q6a/targetcon2' 5000)"

最後發出db2 restore db test continue的命令,完成重定向恢復。

E. 我把DB2資料庫安裝完了,誰能告訴我如何創建資料庫

在發出 CREATE DATABASE 命令時,DB2 會創建許多文件,這個在前面已經見過。這些文件包括日誌文件、配置信息、歷史文件和三個表空間。這些表空間是:
SYSCATSPACE:這是保存 DB2 系統編目的地方,系統編目跟蹤與 DB2 對象相關聯的所有元數據。 TEMPSPACE1:DB2 用來放置中間結果的臨時工作區域。 USERSPACE1:默認情況下存放所有用戶對象(表、索引)的地方。所有這些文件都放在默認驅動器上的 DB2 目錄中。默認驅動器通常是安裝 DB2 產品的卷。
對於簡單的應用程序,這個默認配置應該可以滿足需要。但是,可能希望改變資料庫文件的位置,或者改變 DB2 管理這些對象的方式。接下來,我們將更詳細地研究 CREATE DATABASE 命令。
對於從 DB2 8 進行遷移的用戶,有一個特殊的注意事項:在 DB2 9 之前,CREATE DATABASE 命令會為上面列出的所有對象創建 SMS 表空間。在 DB2 9 中,所有表空間都將定義為自動存儲(DMS)表空間。
以下的 CREATE DATABASE 命令將資料庫放在 Windows 操作系統下的 D: 驅動器上的 TEST 目錄中:
CREATE DATABASE MYDB ON D:\TEST
選擇 Automatic storage(默認設置)允許 DBA 為資料庫設置在創建所有表空間容器時可以使用的存儲路徑。DBA 不必顯式地定義表空間的位置和大小,系統將自動地分配表空間。例如,下面的資料庫創建語句將為資料庫中的所有表空間設置自動存儲。
CREATE DATABASE TEST
AUTOMATIC STORAGE ON /db2/storagepath001,
/db2/storagepath002,
/db2/storagepath003
AUTORESIZE YES
INITIALSIZE 300 M
INCREASESIZE 75 M
MAXSIZE NONE
在 AUTOMATED STORAGE ON 選項後面,給出了三個文件目錄(路徑)。這三個路徑是一個表空間的容器的位置。其他的選項是:
AUTORESIZE YES 當表空間用光空間時,系統將自動地擴展容器的大小。 INITIALSIZE 300 M 沒有定義初始大小的任何錶空間的大小默認為 300 MB。每個容器是 100 MB(有三個存儲路徑)。 INCREASESIZE 75 M (或百分數) 當表空間用光空間時,表空間的總空間增加 75 MB。還可以指定一個百分數,在這種情況下,表空間會增長它的當前大小的百分數。 MAXSIZE NONE 表空間的最大大小沒有限制。如果 DBA 希望限制一個表空間可以佔用的存儲空間,那麼可以指定一個最大值。
當使用 AUTOMATIC STORAGE 定義表空間時,不需要提供其他參數: CREATE TABLESPACE TEST MANAGED BY AUTOMATIC STORAGE;
在這個命令中,可以提供與表空間相關聯的任何參數;但是,使用自動存儲可以大大簡化日常的表空間維護。與重要的大型生產表相關聯的表空間可能需要 DBA 更多地干預。 在沒有啟用自動存儲的資料庫中創建表空間時,必須指定 MANAGED BY SYSTEM 或 MANAGED BY DATABASE 子句。使用這些子句會分別創建 SMS 表空間和 DMS 表空間。在這兩種情況下,都必須提供容器的顯式列表。
如果資料庫啟用了自動存儲,那麼有另一個選擇。可以指定 MANAGED BY AUTOMATIC STORAGE 子句,或者完全去掉 MANAGED BY 子句(這意味著自動存儲)。在這種情況下,不提供容器定義,因為 DB2 會自動地分配容器。
代碼頁和整理次序
所有 DB2 字元數據類型(CHAR、VARCHAR、CLOB、DBCLOB)都有一個相關聯的字元代碼頁。可以認為代碼頁是一個對照表,用來將字母數字數據轉換為資料庫中存儲的二進制數據。一個 DB2 資料庫只能使用一個代碼頁。代碼頁是在 CREATE DATABASE 命令中使用 CODESET 和 TERRITORY 選項設置的。代碼頁可以使用單一位元組表示一個字母數字字元(單一位元組可以表示 256 個獨特元素),也可以使用多個位元組。
英語等語言包含的獨特字元相當少;因此單位元組代碼頁對於存儲數據足夠了。日語等語言需要超過 256 個元素才能表示所有的獨特字元;因此需要多位元組代碼頁(通常是雙位元組代碼頁)。
在默認情況下,資料庫的整理次序根據 CREATE DATABASE 命令中使用的代碼集進行定義。如果指定選項 COLLATE USING SYSTEM,就根據為資料庫指定的 TERRITORY 對數據值進行比較。如果使用選項 COLLATE USING IDENTITY,那麼以逐位元組的方式使用二進製表示來比較所有值。
DB2 Administration Guide 列出了創建資料庫時可用的各種代碼頁。在大多數情況下,DBA 會讓這個設置保持為資料庫所在的操作系統的默認代碼頁。
對於需要使用 XML 數據的應用程序,有一個特殊的注意事項。當前,DB2 只在定義為 Unicode(UTF-8)的資料庫中支持 XML 列。如果資料庫在創建時沒有啟用 Unicode 支持,就不能在其中創建 XML 列。

F. 怎樣查看錶空間是否自動擴展

第一個是db2的日誌問題。db2資料庫的日誌有兩種模式,一種是循環日誌,一種是歸檔模式。你的說法有問題,如果是循環日誌的話,根據你的資料庫里配置的三個參數,主日誌文件和輔助日誌文件數及日誌大小文件,總的日誌大小不會超過(總日誌文件數與日誌大小的乘積),然後是循環使用的,也就是說,如果資料庫進行一次事務操作時,先生成第一個主日誌文件(受日誌文件大小參數)控制,不足時生成第二個主日誌文件,當一次事務超過所有的主日誌文件時,才會創建輔助日誌文件),然後下次覆蓋第一個,依次循環,所以循環日誌模式,日誌文件大小不是無限增大的。只有在歸檔模式下才會不斷產生日誌文件,這種模式的好處是資料庫可以恢復到任意時點。查看資料庫日誌的模式時,可以在db2=>命令行下connect to db name 然後 db2=> get db cfg for dbname
會看到有如下幾個參數與日誌有關系:
啟用的恢復的日誌保留 (LOGRETAIN) = OFF
啟用的日誌記錄的用戶出口 (USEREXIT) = OFF
日誌文件大小(4KB) (LOGFILSIZ) = 1024
主日誌文件的數目 (LOGPRIMARY) = 13
輔助日誌文件的數目 (LOGSECOND) = 4
已更改的至日誌文件的路徑 (NEWLOGPATH) =
日誌文件路徑 = D:\DB2\NODE0000\SQL00002\SQLOGDIR\
溢出日誌路徑 (OVERFLOWLOGPATH) =
鏡像日誌路徑 (MIRRORLOGPATH) =
首個活動日誌文件 =
可以看出這里的資料庫是運行於循環日誌模式,第一個參數是off,如果是on則處於歸檔模式。下邊有日誌文件的路徑,如果是歸檔模式,還可以查看到首個活動日誌文件,則可以備份歸檔日誌後,刪除活動日誌以前的歸檔日誌文件。因此你說的按天的日誌不知道是什麼意思。更改上述參數採用 update db cfg using ....
第二個問題:db2的資料庫數據是存儲在表裡的,表是位於表空間的,表空間對應的表空間容器物理文件存儲在文件系統上。隨著數據量的增大,分區容量不夠時,一種方法是備份資料庫,然後使用[重定向]還原資料庫,將資料庫的表空間容器重定向到一個存儲量大的目錄或者磁碟上。另一種方法是,直接為該表空間增加新的表空間容器,就可以了。比較簡單,在此不在詳述。
查看錶空間信息時db2=>connect to dbname
db2=>list tablespaces
看到用戶定義的表空間的編號,一般是3以後的。
然後
db2=>list tablespace containers for 3
可以查看3號表空間對應的表空間容器信息,一個表空間可以有多個表空間容器,這些表空間容器可以位於不同的磁碟和文件目錄上,這樣可以解決某個硬碟或者目錄容量不足的問題。
給表空間增加容器的方法就不用講了,直接alter tablespace語句就行了。

G. DB2表空間擴容方法(裸設備,多容器)有哪些

根據表空間的類型不同,擴容方法不同。DB2一般分SMS和DMS兩種類型表空間,一個是系統管理表空間,一個是資料庫管理表空間。

1、SMS表空間的container是文件系統目錄或文件,一般container是自動擴展的,這種情況下你需要擴容文件系統。

查看錶空間類型和container

$db2listtablespacesshowdetail
$<tablespaceid>

2、DMS表空間也有自動擴展類型和使用裸設備的情況(container是文件或裸設備),如果是自動擴展則擴容文件系統。非自動擴展的擴容方式是增加container。

DMS+文件

$db2connectto<dbname>
$db2"altertablespace<tablespaceName>beginnewstripeset(file'<filePath>/<fileName>'655360)"

DMS+裸設備

$db2connectto<dbname>
$db2"altertablespace<tablespaceName>beginnewstripeset(device'/dev/rLR_XXXXXX'671088640)"

語句中使用了begin new stripe set,表示新的數據直接寫到新的container上,不進行數據reblance。否則替換為add,表示在container間進行數據reblance(會在後台執行,可用list utilities查看進度)

括弧中的數字表示container的page個數(表空間pagesize×這個數字即是container的大小)。

H. 怎麼查看DB2資料庫的表是否是自動擴展的

db2pd -d 資料庫名 -tablespace 在現實結果中如下就是 AS是automaitc storage自動存儲的縮寫,AR是autoresize的縮寫 AS是yes證明表空間是自動存儲的 AR是yes證明表空間是自動擴展的
statistics
AS AR
YES NO

熱點內容
單獨編譯內核模塊 發布:2025-01-16 18:54:26 瀏覽:802
js解壓字元串 發布:2025-01-16 18:54:17 瀏覽:482
php怎麼開啟伺服器 發布:2025-01-16 18:52:53 瀏覽:769
億速雲北京三區伺服器雲主機 發布:2025-01-16 18:52:01 瀏覽:359
我的世界網易伺服器做家園 發布:2025-01-16 18:50:33 瀏覽:553
虛擬存儲安全教程 發布:2025-01-16 18:49:48 瀏覽:574
vps配置ftp 發布:2025-01-16 18:49:02 瀏覽:157
qtc比python好用 發布:2025-01-16 18:39:48 瀏覽:488
電腦有免費伺服器嗎 發布:2025-01-16 18:35:28 瀏覽:220
sql生成唯一 發布:2025-01-16 18:35:25 瀏覽:223