OracleデータベースのSIDを変更できますか?


18

サーバーはOracle Database 11g Enterprise Editionリリース11.1.0.7.0-64ビットです

サーバー上のテストデータベースのSIDを簡単にすばやく変更する方法はありますか?

データベースの削除と再作成は私にとってオプションです。しかし、私はより少ない時間を必要とするものを探しています。

クライアントtnsnames.oraで名前を割り当てるもう1つのオプションは、一元管理されないため、エラーが発生しやすくなります。

SQL-Serverにデータベースをドロップして作成する時間と比較して、新しいOracleデータベースを作成するのに必要な時間は非常に長くなります。さらにSQL-Serverでは、SQL-Serverインスタンスの名前を変更できます。[通常、SQL-Serverが実行されているサーバーの名前を変更すると、サーバーの名前も変更するまで問題が発生します。


データベースを削除して再作成できることを述べています。本番データベースとそのバックアップにアクセスできますか?RMANと複製コマンドを使用して、データベースを再作成し、SIDを同時に変更できます。
-Sumnibot

いいえ、開発およびいくつかのテストOracleデータベースのDBAとして働いています。
bernd_k

2
SQL Serverでデータベースを使用する場合、通常はOracleでスキーマ(= user)を使用します。同じ名前は、これらの二つの世界でも同じことを意味するものではありません
a_horse_with_no_name

回答:


13

9iのdbnewidユーティリティ(nid)を使用すると、データベース名(および必要に応じてDBID)を変更できます。データベース名のみが変更される場合、resetlogsは不要です。

  • マウントモードの1つの起動データベース

    shutdown immediate
    startup mount
  • 2 nidを実行してデータベース名を変更します。

    nid target=sys/syspassword@dbtns dbname=newname setname=YES
  • 3マウントモードでのデータベースのシャットダウンと起動:

    shutdown immediate
    startup mount
  • 4 db_namespfile(またはファイルを編集するpfile)の変更:

    alter system set db_name=newname scope=spfile;
  • 5パスワードファイルを再作成します。

    orapwd file=orapwnewname password=syspassword
  • 6データベースの起動

    startup
  • 7件の名前変更後の手順:

    change SID in listener.ora
    correct tnsnames.ora
    remove old trace directories
    change /etc/oratab (UNIX) or rename windows service using oradim

1
この方法で、Windowsサーバー上の4つのOracleデータベースの名前を変更しました。検索DBNEWIDユーティリティ私が見つかりました。oracle-base.com/articles/9i/DBNEWID.phpいくつかの追加の説明を行いました。
bernd_k

1
これは、質問が「データベースの名前を変更する方法」だったときの良い答えです。質問:SIDを変更する方法。
ik_zelf

17

制御ファイルを再作成する必要があります

Kaunain Ahmedによるこの投稿では、必要な手順について説明しています。

  1. do:データベースのバックアップ制御ファイルを変更してトレースします。
  2. background-dump-destination tracefileから「create controlfile」コマンドを抽出します。
  3. DBをシャットダウンします。
  4. init.oraのDB名を変更し、init.oraを変更します
  5. / etc / oratabまたは/ var / opt / oracle / oratabのSIDを変更します
  6. 環境内のSIDを変更してソース
  7. データベースを起動して、mount-status startup mount
  8. 位置2のステートメントを使用して制御ファイルを再作成します。
  9. alter database rename global_nameを10に変更します。それに応じてTNS構成を変更します$ ORACLE_HOME / network / admin / *。ora SIDとGLOBAL_NAMEを探します

スレッドで参照される他のツールがあります。

ここだ後の、より詳細にプロセスを参照することによりAskTomが。10g用ですが、それでも動作するはずです。


5
Windowsユーザーの場合は、「oradim」ユーティリティを使用して新しいサービスをセットアップする必要があります。
-REW

9

はい、できます。それも非常に簡単です。

Oracleでは、ORACLE_SIDはOracleインスタンスの名前であり、DBNAMEとはあまり関係がありません。PRODという名前のデータベースは、任意の有効な名前のインスタンスを使用して提供できます。SIDとDBNAMEの間には直接接続はありません。この接続は、パラメーターを使用して行われます。

パラメータファイルは、init $ {ORACLE_SID} .oraまたはspfile $ {ORACLE_SID} .oraとして識別されます。パラメータファイルには、パラメータdb_nameがあります。これは、Oracleインスタンスとデータベース間の接続が行われる場所です。

したがって、制御ファイルを再作成する必要はありません。nidを使用する必要はありません。パラメータファイルに正しい名前を付け、古いOracleインスタンスを停止し、ORACLE_SIDを設定した後に新しいOracleインスタンスを起動するだけです。新しいOracleインスタンス名に。パラメータファイルとパスワードファイルは両方とも、名前の一部として$ {ORACLE_SID}を使用して検出されます。

制御ファイルの再作成は、DBNAMEを変更する必要がある場合にのみ必要です。nidは、ソースデータベースのバックアップを傷つける可能性のある事故を防ぐためにDBIDを変更する必要があるクローン操作の後に必要です。


+1しかし、DB_NAMEも変更したいかどうかはまだわかりません。
bernd_k

必要に応じて:もちろん、他の回答でその方法を正しく説明しました。どんな理由でそれをしますか?db_nameは非常に物理的です。db_nameを知っていることはdbaには役立ちますが、他のほとんどの場合は関係ありません。通常の統合アプローチでは、多くのサービスを提供するデータベースがあります。サービス-アプリケーション-は、どのデータベースで実行されているかを気にする必要はありません。
ik_zelf
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.