インスタンス所有者として、db2サーバーがインストールされているLinuxサーバーにログオンして、データベースを作成しようとしています
db2 => list database directory
System Database Directory
Number of entries in the directory = 1
Database 1 entry:
Database alias = SAMPLE
Database name = SAMPLE
Local database directory = /home/mylogin/sqllib
Database release level = f.00
Comment =
Directory entry type = Indirect
Catalog database partition number = 0
Alternate server hostname =
Alternate server port number =
db2 => create database testdb2
SQL1005N The database alias "TESTDB2" already exists in either the local
database directory or system database directory.
db2 => list database directory on /home/mylogin/sqllib
Local Database Directory on /home/mylogin/sqllib
Number of entries in the directory = 1
Database 1 entry:
Database alias = SAMPLE
Database name = SAMPLE
Database directory = SQL00001
Database release level = f.00
Comment =
Directory entry type = Home
Catalog database partition number = 0
Database member number = 0
db2 => quit
私以外にも存在するインスタンスがないか確認しましたが、ありません。
DB20000I The QUIT command completed successfully.
-bash-4.1$ db2ilist
mylogin
エイリアスtestdb2はlist database directory
にリストされていませんが、db2はこのエイリアスがシステムデータベースディレクトリまたはローカルデータベースディレクトリのいずれかにすでに存在していると主張しています。
これに該当する場合、testdb2もリストするlist database directory
に相当するものを取得するにはどうすればよいですか?
db2 list db directory
は、システムレベルのディレクトリです。もあります db2 list db directory on <path>
は、その特定のパスにあるデータベースをリストします。
最初にuncatalog
またはcatalog
を試してみましたか?カタログ化することで削除できるかどうかを確認できます。
さらに悪いことには、ディスクがデータベース上にある場所を見つけて、手動で削除する必要がある場合があります(カタログ化されていない限り)。
デフォルトのデータベースパスに、同じ名前でカタログされていないデータベースがあります。まずカタログ化してから、ドロップする必要があります。その後、その名前でデータベースを作成できます。それを実行できない場合、またはドロップしたくない場合は、CREATE DBステートメントのON PATHおよびDBPATHパラメーターを使用して、デフォルトのディレクトリーとは異なるディレクトリーを指定してください。
これが問題の回避策です。
db2 catalog database testdb2 as oldtestdb
db2 create database testdb2x
db2 uncatalog database testdb2x
db2 catalog database testdb2x as testdb2
これで、データベースtestdb2ができました。