使用命令刪除DB2資料庫,然後新建

2021-09-12 06:04:13 字數 4497 閱讀 8261

我們在建立新的資料庫時,經常會碰上資料庫別名已經存在的錯誤,產生這個錯誤的原因可能有兩種:

1. 這個資料庫在系統資料庫目錄中存在。

在控制中心能夠看到和 db2clp 視窗中使用 list db directory 可以看到。

2. 該資料庫被「除去」,而不是被「刪除」。

另乙個可能,這是由於之前我們在控制中心,使用了「除去」資料庫功能,而不是「刪除」資料庫功能(或者在 db2clp 視窗中使用「 uncatalog db 資料庫名」命令),「除去」資料庫只是在邏輯上把資料庫的編目資訊刪除,並沒有真實的刪除該資料庫。只是我們用 list db directory 或在控制中心檢視的時候,看不到該資料庫而已。在我們用這個資料庫名建立新的資料庫時,就會報 sql1005n 錯。

解決的這個問題的具體的步驟如下:

1.首先通過在 db2clp 視窗中,發出「 db2 list db directory 」命令,檢視系統資料庫目錄中有沒有該資料庫。如果有,看這個資料庫是否還有用,如果沒有用,就刪除掉該資料庫重新建立即可。

2.如果系統資料庫目錄下沒有該資料庫存在,就通過 db2 list database directory on location 檢視在本地資料庫目錄中有沒有該資料庫,location 指定資料庫的位置(在 windows 下只能是各個碟符,比如 c: 或 d:,

在 unix 下可以是具體的檔案目錄),如果有,就先使用 db2 catalog database 資料庫名 on location 將資料庫 catalog 到節點上,再刪除該資料庫並重新建立。

下面我們來通過具體的例子來看一下。繼續在 db2clp 視窗中,發出 list db directory 命令,來檢視我們目前在系統資料庫目錄下都有哪些資料庫,具體如清單 22

所示:

清單22.檢視系統資料庫目錄,都有哪些資料庫

c:\>db2 list db directory  系統資料庫目錄

目錄中的條目數 = 7

資料庫 1 條目:

資料庫別名  = emr

資料庫名稱  = emr

本地資料庫目錄  = c:

資料庫發行版級別  = c.00

注釋 =

目錄條目型別  = 間接

目錄資料庫分割槽號  = 0

備用伺服器主機名  =

備用伺服器端口號  =

資料庫 2 條目:

資料庫別名  = dbsampl2

資料庫名稱  = dbsampl2

本地資料庫目錄  = c:

資料庫發行版級別  = c.00

注釋  =

目錄條目型別  = 間接

目錄資料庫分割槽號  = 0

備用伺服器主機名  =

備用伺服器端口號  =

資料庫 3 條目:

資料庫別名  = abc

資料庫名稱 = sample

本地資料庫目錄  = c:

資料庫發行版級別  = c.00

注釋  =

目錄條目型別  = 間接

目錄資料庫分割槽號  = 0

備用伺服器主機名  =

備用伺服器端口號  =

資料庫 4 條目:

資料庫別名 = test

資料庫名稱  = emr

節點名  = new

資料庫發行版級別  = c.00

注釋  =

目錄條目型別  = 遠端

目錄資料庫分割槽號  = -1

備用伺服器主機名 =

備用伺服器端口號  =

資料庫 5 條目:

資料庫別名  = myabc

資料庫名稱  = abc

節點名  = myremote

資料庫發行版級別  = c.00

注釋  =

目錄條目型別 = 遠端

目錄資料庫分割槽號  = -1

備用伺服器主機名  =

備用伺服器端口號  =

資料庫 6 條目:

資料庫別名  = sample_1

資料庫名稱  = sample_1

本地資料庫目錄  = c:

資料庫發行版級別  = c.00

注釋  =

目錄條目型別  = 間接

目錄資料庫分割槽號  = 0

備用伺服器主機名  =

備用伺服器端口號  =

資料庫 7 條目:

資料庫別名  = sample

資料庫名稱  = sample

本地資料庫目錄 = c:

資料庫發行版級別  = c.00

注釋  =

目錄條目型別  = 間接

目錄資料庫分割槽號  = 0

備用伺服器主機名  =

備用伺服器端口號  =

命令成功完成。我們可以看到,目前在系統資料庫目錄下有 7 條記錄,也就是有 7 個資料庫或別名。此時我們在控制中心「除去」資料庫 sample_1,具體如圖 5 所示:

5.在控制中心除去資料庫sample_1

此時我們在 db2clp 視窗中,發出「 create db sample_1 」命令,會得到「 sql1005n 資料庫別名 "sample_1" 已存在於本地資料庫目錄或系統資料庫目錄中。」錯誤,提示已經有資料庫 sample_1 存在了,具體如清單 24 所示:

清單24.建立資料庫sample_1

c:\> db2 create db sample_1

sql1005n  資料庫別名 "sample_1" 已存在於本地資料庫目錄或系統資料庫目錄中。

解決這個問題的辦法,就是把原來存在的資料庫重新 catalog 上,然後再「刪除」掉,而不是「除去」,這樣處理過後,就可以使用這個資料庫名建立新的資料庫成功了。

下面我們繼續在當前 db2clp 視窗中,發出「 list db directory on c: 」命令,可以看到資料庫 sample_1 還在本地目錄中存在,參照本小節開頭的解決方法第二步,需要先 catalog 該資料庫,再 drop 掉該資料庫,才能重新建立,具體如清單 25 所示:

清單25.建立資料庫sample_1

c:\> db2 list db directory on c:

c: 上的本地資料庫目錄

目錄中的條目數 = 4

資料庫 1 條目:

資料庫別名  = emr

資料庫名稱 = emr

資料庫目錄  = sql00001

資料庫發行版級別  = c.00

注釋  =

目錄條目型別  = 本地

目錄資料庫分割槽號  = 0

資料庫分割槽號  = 0

資料庫 2 條目:

資料庫別名  = dbsampl2

資料庫名稱  = dbsampl2

資料庫目錄  = sql00004

資料庫發行版級別  = c.00

注釋  =

目錄條目型別  = 本地

目錄資料庫分割槽號  = 0

資料庫分割槽號  = 0

資料庫 3 條目:

資料庫別名

= sample_1 資料庫名稱

= sample_1 資料庫目錄

= sql00003 資料庫發行版級別

= c.00 注釋

= 目錄條目型別 = 本地

目錄資料庫分割槽號

= 0 資料庫分割槽號

= 0 資料庫 4 條目:

資料庫別名  = sample

資料庫名稱  = sample

資料庫目錄  = sql00002

資料庫發行版級別  = c.00

注釋 =

目錄條目型別  = 本地

目錄資料庫分割槽號  = 0

資料庫分割槽號  = 0

c:\> db2 catalog db sample_1

db20000i catalog database 命令成功完成。

db21056w  直到重新整理目錄快取記憶體之後,目錄更改才生效。

c:\> db2 terminate

db20000i terminate 命令成功完成。

c:\> db2 drop db sample_1

db20000i drop database 命令成功完成。

c:\> db2 create db sample_1

db20000i create database 命令成功完成。

命令成功完成。

使用命令刪除DB2資料庫,然後新建

使用命令刪除db2 資料庫,然後新建 我們在建立新的資料庫時,經常會碰上資料庫別名已經存在的錯誤,產生這個錯誤的原因可能有兩種 1.這個資料庫在系統資料庫目錄中存在。在控制中心能夠看到和 db2clp 視窗中使用 list db directory 可以看到。2.該資料庫被 除去 而不是被 刪除 另...

使用命令刪除DB2資料庫,然後新建

我們在建立新的資料庫時,經常會碰上資料庫別名已經存在的錯誤,產生這個錯誤的原因可能有兩種 1.這個資料庫在系統資料庫目錄中存在。在控制中心能夠看到和 db2clp 視窗中使用 list db directory 可以看到。2.該資料庫被 除去 而不是被 刪除 另乙個可能,這是由於之前我們在控制中心,...

DB2資料庫常用命令

檢視資料庫管理器級別快照資訊 db2 get monitor switches db2 update monitor switches using lock on statement on create event monitor mymonitor for deadlocks,statements...