Db2

DB2:編目時數據庫別名已存在

  • August 17, 2021

SQL1005N 數據庫別名“XYZ”已存在於本地數據庫目錄或系統數據庫目錄中

我是一個偶然的 DB2 LUW on linux 管理員;MSSQL 和 Oracle 的主要背景。我們有一個應用程序,它有一個集成的 DB2 Enterprise 伺服器作為堆棧的一部分。在其中,應用程序根據使用者定義的工作負載創建數據庫。當這些工作負載被刪除時,數據庫也會被刪除。不幸的是,我遇到了需要重用數據庫名稱的情況。例如,數據庫命名為 like WORKOB0[0-9][0-9],歷史上我們已經超過 99 個。

如果我手動創建數據庫WORKOB01,則創建成功。但是,當我嘗試對其進行編目時,我收到上面的錯誤消息。使用者目錄中不存在數據庫,對此毫無疑問。但是,有一個轉折。應用程序在節點“HOMEDB01”處創建數據庫。當我使用列表數據庫目錄之類的命令時,不存在任何對象。如果我使用列表節點目錄,它會指出“找不到節點目錄”。

我迷路了。我在這上面花了幾個小時,我可以說:我不知道我在做什麼!

更新:

這是一個典型的案例,它關注問題的明顯根源而不是實際根源。SQL1005N 消息實際上是客戶端生成的。通過db2 list db directory在客戶端上執行,以前數據庫名稱的整個列表仍然存在。db2 uncatalog database $name我為每個腳本編寫了一個快速的 sh 腳本;問題就解決了。

非常感謝 Lennart 的貢獻;雖然沒有解開謎底,但對以後的參考肯定是有幫助的。

如果這是一個開發環境我建議你關閉目錄記憶體:

db2 update dbm cfg using DIR_CACHE NO
db2 stop force; db2start

我真的不明白你為什麼需要創建新數據庫,你不能處理現有數據庫中的新模式嗎?

引用自:https://dba.stackexchange.com/questions/153685