sql >> データベース >  >> RDS >> Oracle

データファイルを使用したデータベースへのRACのインストール

    少し前までは、OracleClusterwareとRDBMSを11.1.0.7から11.2.0.2にアップグレードする必要がありました。私はOracleRDBMSソフトウェアの経験が豊富ですが、クラスターウェアの経験がRDBMSの経験と同じレベルではないという点で、ほとんどのDBAと同じだと思います。そのため、RDBMSソフトウェアのアップグレードについて心配することはありませんでしたが、ある程度の緊張を持ってClusterwareのアップグレードに取り組みました。確かに、この不安は、製品の経験が少ないことから生まれました。そのため、本番環境に移行する前に、できる限り多くのテスト、テスト、テストを行いました。
    多くの計画とテストのおかげで、Clusterwareのアップグレードはスムーズに進みました。

    アップグレード後、私は何がうまくいったのか、何がうまくいかなかったのか、そして将来どう違うのかを考えていました。 Clusterwareのアップグレードを完全に台無しにして、Clusterwareソフトウェアを吹き飛ばし、それでもClusterwareを最初からインストールして、RACデータベースを稼働させることができたのではないかと思いました。この投稿では、このタスクを実行するためにテスト環境で実行した手順を示します。したがって、Clusterwareのアップグレードまたはインストールが完全に失敗していることに気付いた場合でも、データベースファイルが残っている限り、データベースファイルを起動して実行できるため、心配する必要はありません。 Clusterwareのアップグレードが失敗した場合は、続行する前に失敗の根本原因を修正する必要があります。したがって、クラスター相互接続の構成が不適切であるか、投票ディスクのストレージが無効である場合は、これらの問題に対処する必要があります。その後、次の手順を実行できます。

    クラスター内のすべてのノードからアクセスできる共有ストレージ内のすべてのデータファイルを含む有効なデータベースがあります。私のテストには、クラスター用に2つのノードがあります。また、データベースが正常にシャットダウンされたと想定されます。このホワイトペーパーでは、データベース名がORCLであると想定しています。

    注:RACに追加するデータベースがすでにRACの一部である場合は、以下の手順9〜11をスキップできます。クラスタウェアにデータベースを追加するときに、データベースを単一インスタンスデータベースからOracle RACデータベースに変換する場合も、手順9〜11が必要です。

    手順
    1。データベースデータファイルのコールドバックアップを取ります。何かが起こった場合、メディアからファイルをコピーするだけで、いつでもバックアップから復元できます。
    2。 Clusterwareのインストール/アップグレードからノードがクリーンアップされていることを確認してください。必要に応じて、詳細な手順についてMetalinkNote239998.1を参照してください。
    3。 OracleClusterwareを正しくインストールします。そもそも、この手順が失敗する原因となった問題を修正しておく必要があります。
    a。クラスタが稼働していることを確認します。
    i。 $ CRS_HOME / bin/crsctlステータスサーバー
    1.クラスター内のすべてのノードがオンラインである必要があります。
    4。クラスタにOracleRDBMSをインストールします。
    a。 OUIはクラスターウェアを検出し、RACインストールの実行を提案する必要があります。
    5。 DBCAを起動して、シェルデータベースを作成します。 DBCAを使用して、CRSのすべてをセットアップします。
    a。 RACデータベースを作成するためのオプションを選択します。
    b。既存のデータベースと同じ名前を使用します。
    c。クラスタ内のすべてのノードにシェルデータベースを作成します。
    d。データベースファイルには共通の場所を使用しますが、既存のデータファイルは上書きしないでください。
    6。シェルデータベースをシャットダウンします
    a。 srvctl stop database –d orcl
    7。 SPFILEを設定します
    a。古いデータベースのSPFILEがある場合:
    i。ファイルを共有ディスクに配置します。
    ii。 $ ORACLE_HOME / dbs / initorcl.oraを更新して、正しいSPFILEの場所を指すようにします。すべてのノードでこれを実行します
    b。 SPFILEがない場合は、最初からPFILEを作成してから、CREATE SPFILEFROMPFILEコマンドを使用してSPFILEを作成します。
    i。 CONTROL_FILESパラメータが、シェルデータベースの制御ファイルではなく、正しい場所を指していることを確認してください。
    c。 (オプション)パスワードファイルがある場合は、それを共有ストレージにコピーしてから、$ ORACLE_HOME / dbs(すべてのノード)のソフトリンクを更新して、パスワードファイルを指すようにします。パスワードファイルがない場合は、必要に応じて後で作成できます。
    8。 SPFILEの場所(ルートとして)でCRSを更新します
    a。 cd $ CRS_HOME / bin
    b。 ./srvctl config database –d orcl
    i。出力には、SPFILEがシェルデータベースの場所にあることが示されます。
    c。 ./srvctl modify database –d orcl –p /correct_path/spfileorcl.ora
    i。手順8bを実行して、変更が行われたことを確認します。
    ii。他のノードでも変更を確認します。この変更コマンドは、すべてのノードに対して1回だけ実行する必要があります。
    9。 SPFILEの内容を変更します。
    a。 sqlplus / nolog
    b。接続/sysdbaとして
    c。 spfile =’/ path_to_spfile / spfileorcl.ora’からpfile =’/ home / oracle / pfile.txt’を作成します;
    d。テキストエディタでpfileを開き、次の変更を加えます。
    i。追加:
    1. * .cluster_database =true
    2. * .cluster_database_instances =2
    3. orcl1.instance_number =1
    4. orcl2.instance_number =2
    5. orcl1.thread =1
    6. orcl2.thread =2
    ii。 *.undo_tablespaceパラメーターをorcl1.undo_tablespaceに変更します
    e。 pfileを使用してspfileを変更します
    i。 pfile =’/ home / oracle / pfile.txt’からspfile =’/ path_to_spfile / spfileorcl.ora’を作成します;
    10。他のインスタンス用に新しいUNDOテーブルスペースを作成します。
    a。 ORACLE_SID=orcl1をエクスポートします
    b。 sqlplus / as sysdba
    c。スタートアップ
    d。 undoテーブルスペースundotbs2データファイル‘/path/undotbs02.dbf’サイズ30mを作成します;
    e。システムセットの変更undo_tablespace=undotbs2 scope =spfile sid =’orcl2';
    11。新しいスレッドのREDOログを作成します
    a。データベースの変更ログファイルスレッド2グループ10「/path/redo10.log」サイズ50mの追加;
    b。データベースの変更ログファイルスレッド2グループ11「/path/redo11.log」サイズ50mの追加;
    c。データベースを変更し、ログファイルスレッド2グループ12「/path/redo12.log」のサイズを50m追加します。
    d。データベースを変更してパブリックスレッド2を有効にします;
    12。 srvctl start database –d orcl

    この時点で、Clusterwareを最初からインストールし、既存のデータベースを追加しました。データベースファイルのセットを取得してクラスターウェアのインストールに追加する実証済みの方法ができたので、実稼働システムでクラスターウェアのアップグレードを実行するときの緊張度を下げました。混乱したとしても、Clusterwareを吹き飛ばして再インストールし、データベースをClusterwareに追加して、RACデータベースをすぐに稼働させることができます。


    1. Ubuntu20.04にArangoDBをインストールする方法

    2. SELECTDISTINCTONクエリをPostgresqlからMySQLに変換する

    3. MySQLクエリで、なぜwhereの代わりにjoinを使用するのですか?

    4. SQLサーバーにファイルが存在するかどうかを確認しますか?