0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DBNEWIDユーティリティを試す(Oracle Database 21c)

Posted at

DBIDとは

Oracle Database はデータベース作成時(CREATE DATABASE 文実行時)に指定した名前に加えて一意な ID 番号が割り当てられます。この番号を DBID と呼びます。DBID は管理者が指定することはできず、自動生成されます。データベース名と DBID は V$DATABASE ビューで確認できます。

SQL> SELECT NAME, DBID FROM V$DATABASE;

NAME            DBID
--------- ----------
O21A      2376064149

データベース名は初期化パラメーター db_name でも確認できます。この初期化パラメーターは変更できません。

SQL> SHOW PARAMETER db_name
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_name                              string      O21A

DBID は Data Guard を構成するデータベース間では同一ですが、それ以外のデータベースでは別の値になります。DBID は制御ファイル、データファイル、アーカイブログ等に埋め込まれているため別のデータベースのファイルを誤って使ってしまうことを防ぐことができます。

DBNEWID ユーティリティの実行方法と条件

何等かの理由でデータベース名と DBID を変更する必要が出てきた場合、DBNEWID ユーティリティを使います。このユーティリティは Linux 環境では nid コマンドとして実装されています。nidコマンドには以下のオプションを指定します。オプションを指定しないか、HELP=YES を指定すると利用方法が表示されます。

オプション 説明 デフォルト値
TARGET ユーザー名/パスワード NONE
DBNAME 新規データベース名 NONE
LOGFILE 出力ログ NONE
REVERT 失敗した変更を回復 NO
SETNAME 新規データベース名のみを設定 NO
APPEND 出力ログに追加 NO
HELP これらのメッセージを表示 NO

nid コマンドを実行するには対象インスタンスが「正常に」停止した後、MOUNT 状態で起動されている必要があります。以下の例ではインスタンスが OPEN 状態で nid コマンドを実行してエラーになっています。

SQL> SELECT STATUS FROM V$INSTANCE;

STATUS
------------
OPEN

SQL> EXIT
$ nid TARGET=SYS DBNAME=O21A

DBNEWID: Release 21.0.0.0.0 - Production on  12 14 22:42:36 2022

Copyright (c) 1982, 2021, Oracle and/or its affiliates.  All rights reserved.

パスワード:
データベースO21B(DBID=2414682024)に接続しました

NID-00121: データベースをオープンしないでください

データベース名の変更は、検証中に失敗しました - データベースは変更されていません。
DBNEWID - 完了しましたが、検証エラーがあります。

次に ABORT 指定でインスタンスを停止して nid コマンドを実行していますが、やはり失敗しています。

SQL> SHUTDOWN ABORT
ORACLEインスタンスがシャットダウンされました。
SQL> STARTUP MOUNT
ORACLEインスタンスが起動しました。

Total System Global Area 1644166648 bytes
Fixed Size                  9686520 bytes
Variable Size            1023410176 bytes
Database Buffers          603979776 bytes
Redo Buffers                7090176 bytes
データベースがマウントされました。
SQL> EXIT
$ nid TARGET=SYS DBNAME=O21B

DBNEWID: Release 21.0.0.0.0 - Production on  12 14 22:51:20 2022

Copyright (c) 1982, 2021, Oracle and/or its affiliates.  All rights reserved.

パスワード:
データベースO21A(DBID=2376064149)に接続しました

NID-00135: 1個のアクティブ・スレッドがあります

データベース名の変更は、検証中に失敗しました - データベースは変更されていません。
DBNEWID - 完了しましたが、検証エラーがあります。

DBNEWID ユーティリティの実行例

データベース名を O21A から O21B に変更し、新しい DBID を採番します。このため nid コマンドに DBNAME オプションを指定しています。
パスワードの入力と、実行の確認プロンプトが表示されます。コマンドが正常に実行されるとインスタンスは停止します。

$ nid TARGET=SYS DBNAME=O21B

DBNEWID: Release 21.0.0.0.0 - Production on 水 12月 14 22:35:15 2022

Copyright (c) 1982, 2021, Oracle and/or its affiliates.  All rights reserved.

パスワード:
データベースO21A(DBID=2344598892)に接続しました

サーバー・バージョン21.3.0に接続しました

データベースの制御ファイル:
    /u01/app/oracle/oradata/O21A/control01.ctl
    /u01/app/oracle/oradata/O21A/control02.ctl

データベースIDと、データベース名O21AをO21Bに変更しますか。 (Y/[N]) => Y

操作続行中
データベースIDを2344598892から2414682024に変更しています
データベース名をO21AからO21Bに変更しています
    制御ファイル/u01/app/oracle/oradata/O21A/control01.ctl - 変更済です
    制御ファイル/u01/app/oracle/oradata/O21A/control02.ctl - 変更済です
    データファイル/u01/app/oracle/oradata/O21A/system01.db - DBIDが変更されました。新規名が書き込まれました
    データファイル/u01/app/oracle/oradata/O21A/pdbseed/system01.db - DBIDが変更されました。新規名が書き込まれました
    データファイル/u01/app/oracle/oradata/O21A/sysaux01.db - DBIDが変更されました。新規名が書き込まれました
    データファイル/u01/app/oracle/oradata/O21A/pdbseed/sysaux01.db - DBIDが変更されました。新規名が書き込まれました
    データファイル/u01/app/oracle/oradata/O21A/undotbs01.db - DBIDが変更されました。新規名が書き込まれました
    データファイル/u01/app/oracle/oradata/O21A/pdbseed/undotbs01.db - DBIDが変更されました。新規名が書き込まれました
    データファイル/u01/app/oracle/oradata/O21A/users01.db - DBIDが変更されました。新規名が書き込まれました
    データファイル/u01/app/oracle/oradata/O21A/O21Apdb1/system01.db - DBIDが変更されました。新規名が書き込まれました
    データファイル/u01/app/oracle/oradata/O21A/O21Apdb1/sysaux01.db - DBIDが変更されました。新規名が書き込まれました
    データファイル/u01/app/oracle/oradata/O21A/O21Apdb1/undotbs01.db - DBIDが変更されました。新規名が書き込まれました
    データファイル/u01/app/oracle/oradata/O21A/O21Apdb1/users01.db - DBIDが変更されました。新規名が書き込まれました
    データファイル/u01/app/oracle/oradata/O21A/O21Apdb2/system01.db - DBIDが変更されました。新規名が書き込まれました
    データファイル/u01/app/oracle/oradata/O21A/O21Apdb2/sysaux01.db - DBIDが変更されました。新規名が書き込まれました
    データファイル/u01/app/oracle/oradata/O21A/O21Apdb2/undotbs01.db - DBIDが変更されました。新規名が書き込まれました
    データファイル/u01/app/oracle/oradata/O21A/O21Apdb2/users01.db - DBIDが変更されました。新規名が書き込まれました
    データファイル/u01/app/oracle/oradata/O21A/temp01.db - DBIDが変更されました。新規名が書き込まれました
    データファイル/u01/app/oracle/oradata/O21A/pdbseed/temp01.db - DBIDが変更されました。新規名が書き込まれました
    データファイル/u01/app/oracle/oradata/O21A/O21Apdb1/temp01.db - DBIDが変更されました。新規名が書き込まれました
    データファイル/u01/app/oracle/oradata/O21A/O21Apdb2/temp01.db - DBIDが変更されました。新規名が書き込まれました
    制御ファイル/u01/app/oracle/oradata/O21A/control01.ctl - DBIDが変更されました。新規名が書き込まれました
    制御ファイル/u01/app/oracle/oradata/O21A/control02.ctl - DBIDが変更されました。新規名が書き込まれました
    インスタンスが停止しました

データベース名がO21Bに変更されました。
再起動の前に、パラメータ・ファイルを変更し、新規パスワード・ファイルを生成してください。
データベースO21BのデータベースIDが、2414682024に変更されました。
このデータベースに関する以前のすべてのバックアップとアーカイブREDOログは使用できません。
データベースが停止しています。RESETLOGSオプションを指定してオープンしてください。
データベース名とIDの変更が正常に終了しました。
DBNEWID - 正常に完了しました。

コマンド実行後はREDOログ、アーカイブログファイルは DBID が異なるため利用できません。初期化パラメーター・ファイル、パスワード・ファイルを作成してからRESETOPENLOGS オプションを使ってインスタンスを起動します。

SQL> STARTUP MOUNT
ORACLEインスタンスが起動しました。

Total System Global Area 1644166648 bytes
Fixed Size                  9686520 bytes
Variable Size             402653184 bytes
Database Buffers         1224736768 bytes
Redo Buffers                7090176 bytes
データベースがマウントされました。

SQL> ALTER DATABASE OPEN RESETLOGS;

データベースが変更されました。

SQL> SELECT DBID,NAME FROM V$DATABASE;

      DBID NAME
---------- ---------
2414682024 O21B

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?