この項では、データベースの記憶域構造について説明するとともに、データベースおよびそのバックアップに現在使用されている記憶域の容量と、それらに使用可能な容量を監視して管理する方法について説明します。この章の内容は、次のとおりです。
Oracle Database Express Edition (Oracle Database XE)は、次の記憶域構造によって構成されます。
物理構造は、オペレーティング・システムで表示して操作可能なもので、たとえば、データがディスク上に保存される物理ファイルなどがあります。
リカバリ関連の構造(REDOログやデータベースのバックアップなど)は、オペレーティング・システム障害やOracleインスタンス障害、メディア(ディスク)障害が発生した後に、データベースのリカバリを行うために使用します。リカバリ関連の構造は、フラッシュ・リカバリ領域と呼ばれる管理対象ディスク記憶域領域に自動的に保存されます。
Oracle Database XEでは、その論理構造と物理構造、およびフラッシュ・リカバリ領域記憶域の管理は完全に自動化されます。Oracle Database XEのグラフィカル・ユーザー・インタフェースを使用して、これらの構造を監視し、現在アプリケーションが使用している記憶域の容量、残っている空き記憶域の容量、およびバックアップ用にさらに領域が必要かどうかといったことを主に確認します。
次の項で、データベースとその記憶域構造を詳細に説明します。これらの項を調べるときは、図6-1を参照してください。
データベースは、アプリケーション用のすべてのデータおよびメタデータがまとめて含まれる論理構造と物理構造の集合です。また、データベースには、データベースの起動や操作に必要となる制御構造(制御ファイルなど)も含まれます。これらの構造のすべてを以降の項で説明し、図6-1にまとめています。
Oracle Database XEインスタンス(これは、Oracle Database XEのバックグラウンド・プロセスと割当済のメモリーで構成されます)は、単一のデータベースの操作のみ行います。複数のアプリケーションでデータベースを使用する場合も、複数のデータベースを作成するのではなく、単一のデータベースを使用して、複数のスキーマにデータを分割します。スキーマの詳細は、「ユーザー・アカウントについて」を参照してください。
Oracle Database XEでの最大データベース・サイズは、5ギガバイト(GB)です。これには、データ・ディクショナリ、内部スキーマおよび一時領域用の0.5から0.9 GBが含まれるので、4.0 GB余りがユーザー・データ用に残ります。
データベースは、1つ以上の表領域で構成されます。表領域は、1つ以上の物理データファイルまたは一時ファイルが論理グループ化されたもので、データベースが記憶域を管理するために使用する主要な構造です。
永続表領域
これらの表領域は、システム・データおよびユーザー・データを保存するために使用されます。永続表領域は、1つ以上のデータファイルによって構成されます。Oracle Database XEでは、デフォルトでは、すべてのアプリケーション・データはUSERS
という名前の表領域に保存されます。この表領域は単一のデータファイルによって構成され、このデータファイルは、アプリケーションで保存されるデータの増加に伴って、自動的に増加(自動拡張)されます。
一時表領域
一時表領域は、複数のソート操作の並行処理を向上し、それらのオーバーヘッドを軽減します。一時表領域は、ディスク・ソートに最も効率のよい表領域です。一時表領域は、1つ以上の一時ファイルによって構成されます。Oracle Database XEでは、一時表領域の記憶域は自動的に管理されます。
UNDO表領域
Oracle Database XEでは、この表領域のUNDOデータは透過的に作成され、自動的に管理されます。
トランザクションでデータベースが変更される場合、元のデータが変更される前にそのコピーが作成されます。変更済データのオリジナル・コピーはUNDOデータと呼ばれます。この情報は、次の理由のために必要です。
ロールバック操作が必要なときにデータベースに作成された未コミットの変更を元に戻す場合。ロールバック操作は、ユーザー(具体的には、ROLLBACK
文を発行したユーザー)によって、誤ったトランザクションまたは意図的でないトランザクションの変更を元に戻す場合に使用されます。また、リカバリ操作の一部としても使用されます。
読取り一貫性を提供する場合(これは、データに対してその他のコミットされていない変更が発生していても、各ユーザーがデータの一貫したビューを取得できることを意味します)。たとえば、ユーザーが午前10時に問合せを発行し問合せが15分間実行された場合、問合せ中の他のユーザーによる更新または挿入にかかわらず、問合せ結果は午前10時のデータの状態全体に反映されます。
読取り一貫性については、『Oracle Database概要』を参照してください。
フラッシュバック問合せの機能をサポートする場合(この機能を使用すると、以前のバージョンのデータを表示することやリカバリすることが可能です)。詳細は、「フラッシュバック問合せを使用した履歴データの表示およびリストア」を参照してください。
表6-1に、Oracle Database XEに含まれる表領域を示します。
表6-1 表領域および説明
表領域 | 説明 |
---|---|
この表領域は、Oracle Database XEをインストールしたときに自動的に作成されます。それには、データ・ディクショナリ(データベースの読取り専用の参照として使用される主な表およびビューをまとめたもの)が含まれます。また表領域にはデータベースに関する管理情報を含む様々な表およびビューがあります。これらはすべて |
|
これは、 |
|
この表領域には、SQL文の処理中に生成された一時データが格納されています。たとえば、この表領域は、ソートの作業領域に使用されます。 |
|
これはデータベースがUNDO情報の保存に使用する表領域です。 |
|
この表領域は永続的なユーザー・オブジェクトおよびデータの格納に使用します。Oracle Database XEでは、(デフォルトの永続表領域の |
注意: 追加の永続表領域をOracle Database XEに作成することもできますが、通常、その必要はありません。新しい永続表領域の作成が必要な状況の1つは、別のOracleデータベースからオブジェクトをインポートし、そのインポート・ファイルで表領域名が指定されている場合です。詳細は、『Oracle Database SQL言語リファレンス』のCREATE TABLESPACE コマンド、および「データのエクスポートおよびインポート」を参照してください。 |
データファイルは、データベースのデータを保持するオペレーティング・システム・ファイルです。これらのファイルには、Oracleデータベース以外のプログラムでは読み取ることができないOracle固有の形式でデータが書き込まれます。一時ファイルはデータファイルの特殊なクラスで、一時表領域にのみ関連付けられます。一時表領域は、問合せの処理を支援するための作業領域を提供します。
制御ファイルは、データベースの物理コンポーネントの名前と場所を追跡するバイナリ・ファイルで、その他の制御情報(すべてのデータベース・バックアップ関連ファイルのレコードなど)を保持します。これはデータベースの機能にとって重要です。
サーバー・パラメータ・ファイル(SPFILE
)には、Oracle Database XEの起動時にデータベースの設定および実行時のリソースを決定するために使用される初期化パラメータが含まれます。このファイルはバイナリ・ファイルであるため、テキスト・エディタで編集しないでください。初期化パラメータの値を変更するには、SQLコマンドラインでALTER
SYSTEM
コマンドを発行します。詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
現在の初期化パラメータの設定を表示するには、SQL Developerの「レポート」ナビゲータで、「データ・ディクショナリ・レポート」、データベース管理を順に展開し、「データベース・パラメータ」の下のレポートを確認します。「すべてのパラメータ」および「非デフォルト・パラメータ」(後者は、「XEデータベース・ホームページ」で提供されるパラメータの表示で「変更済」として識別されます)についてのレポートが提供され、各レポートには、各パラメータがセッション変更可能およびシステム変更可能であるかどうかが示されます。
Oracle Database XEでは、リモートでSYS
ユーザーでログインするユーザーの認証にパスワード・ファイルを使用します。その後に、SYS
ユーザーは、リモート・ワークステーションから管理機能を実行できます。パスワード・ファイルには、SYS
のパスワード(暗号化されたもの)が含まれます。SYS
のパスワードを変更すると、その都度、パスワード・ファイルは自動的に更新されます。
パスワード・ファイルは、Oracle Database XEをインストールしたときに自動的に作成されます。データベースの他の物理構造と異なり、パスワード・ファイルはフラッシュ・リカバリ領域にバックアップされません。
注意: 通常は、Oracle Database XEにSYS ユーザーでログインしないでください。 |
フラッシュ・リカバリ領域は、Oracle Database XEのデータ保護に必要不可欠な領域です。それはディレクトリで、データベースそのものとは分離されていて、リカバリ関連の構造が保存されます。これらのリカバリ関連の構造には、次のものが含まれます。
データベースを構成する物理ファイル(データファイル、制御ファイルおよびサーバー・パラメータ・ファイル(SPFILE
))のバックアップ
注意: Oracleデータベースのバックアップおよびリカバリは、表などの個別のデータベース・オブジェクトではなく、データベースの物理ファイルの保護に基づきます。 |
バックアップは、バックアップ・セットと呼ばれるコレクションに保存されます。バックアップ・セットは、1つ以上のバックアップ・ピースによって構成され、後者はOracleデータベースのみがアクセス可能な固有の保存形式のファイルです。詳細は、「データベースのバックアップおよびリストアについて」を参照してください。
オンラインREDOログ・ファイルには、データベースに行われたすべての変更が記録されます。障害が発生した場合には、それらを使用してデータを復元できます。詳細は、「オンラインREDOログ・ファイル」を参照してください。
アーカイブREDOログ
ログのアーカイブを有効にすると、いっぱいになったREDOログ・ファイルは、フラッシュ・リカバリ領域にアーカイブ(コピー)されてから再利用されます。オンライン・ログとアーカイブ・ログをあわせると、最後のバックアップが作成された後にデータベースにコミットされたすべての変更のレコードが構成されます。詳細は、「アーカイブREDOログ・ファイル」を参照してください。
フラッシュ・リカバリ領域のすべての内容は自動的に管理されます。フラッシュ・リカバリ領域内のファイルは、オペレーティング・システム・コマンドを使用して直接操作する必要はありません。
表6-2に、各プラットフォームのフラッシュ・リカバリ領域のデフォルトの場所を示します。
表6-2 フラッシュ・リカバリ領域のデフォルトの場所
プラットフォーム | 場所 |
---|---|
Linux |
|
Windows |
|
注意: Oracle Database XEのデフォルト構成では、フラッシュ・リカバリ領域はデータベース・ファイルと同じディスクに保存されます。この構成の場合、メディア(ディスク)障害が発生すると、データベースとバックアップの両方が失われる可能性があります。データベースのデータ保護が欠かせない場合は、フラッシュ・リカバリ領域が別のディスクに保存されるようにその場所を変更してください。手順については、「フラッシュ・リカバリ領域の場所とサイズの設定」を参照してください。 |
データベースのリカバリに最も重要な構造は、REDOログ・ファイルのセットです。このファイルのセットは、総称してデータベースのREDOログと呼ばれます。REDOログはREDOレコードと呼ばれるREDOエントリから構成されています。
REDOログの主要な機能は、データベースのデータに対して行われた変更をすべて記録することです。Oracleインスタンス障害またはオペレーティング・システム障害によって、変更されたデータをデータ・ファイルに永続的に書き込むことができない場合でも、REDOログから変更をリカバリできるので、コミット済のデータの更新は失われません。
データベースは、REDOログ・ファイルに循環方式で書き込みます。つまり、現行のREDOログ・ファイルがいっぱいになると、データベースは次に使用可能なREDOログ・ファイルへの書込みを開始します。(現在のものでないREDOログ・ファイルは、非アクティブと呼ばれます。)使用可能な最後のREDOログ・ファイルがいっぱいになると、最初のREDOログ・ファイルに戻って書込みが行われ(以前のREDOエントリは上書きされます)、もう一度サイクルが開始されます。
多重REDOログ
REDOログそのものに関わる障害から保護するために、Oracle Database XEでは多重REDOログ、つまりREDOログの2つ以上の同一のコピーを異なる場所に自動的に維持する機能を使用できます。これを最大限に活用するには、これらの場所は異なるディスク上に置きます。ただし、REDOログのすべてのコピーが同じディスク上にあっても、冗長性によってI/Oエラー、ファイル破損などに対して保護されます。
多重化を実装するには、REDOログ・ファイルのグループを作成します。グループは、REDOログ・ファイルとその多重化されたコピーで構成されます。それぞれの同一コピーはグループのメンバーと呼ばれます。現在のログ・ファイルへの書込みが行われる際には、そのログ・ファイルのグループ内のすべてのメンバーが更新され、同一の内容が維持されます。各REDOログ・グループは、グループ1、グループ2のように数値で定義されます。
現在および非アクティブのREDOログ・ファイル(つまり、現在および非アクティブのログ・グループ、ならびにそれらのすべてのメンバー)はまとめて、オンラインREDOログ・ファイルと呼ばれ、この項で後述するアーカイブREDOログ・ファイルとは区別されます。
デフォルトのOracle Database XEのインストールでは、それぞれ1つのメンバーを持つ2つのREDOログ・グループが構成されます。そのため、デフォルトのREDOログの構成では多重化は使用されません。図6-1に示しているように、両方の単一メンバーのREDOログ・グループはフラッシュ・リカバリ領域に保存されます。
障害から保護するためにREDOログを多重化する場合があります。繰り返しますが、理想的な構成は、ディスク障害に対する保護のために同じログ・グループのメンバーを別々のディスクに分けることです。たとえば、各グループにつき2つのメンバーを構成することにした場合、Oracle Database XEのベスト・プラクティスは次のようになります。
フラッシュ・リカバリ領域を別のディスクに移動します。
手順については、「フラッシュ・リカバリ領域の場所とサイズの設定」を参照してください。
各REDOログ・グループの2番目のメンバーを同じ場所にデータファイルとして作成します。
手順については、『Oracle Database管理者ガイド』のREDOログ・メンバーの作成に関する項を参照してください。表6-3に、各プラットフォームのデータファイルの場所を示します。
表6-3 データファイルの場所
プラットフォーム | データファイルの場所 |
---|---|
Linux |
|
Windows |
|
元々あるフラッシュ・リカバリをそのまま残して、2番目のグループ・メンバーを別のディスクに作成するよりも、フラッシュ・リカバリ領域を別のディスクに移動する方が好まれます。これは、フラッシュ・リカバリ領域にはデータベースのバックアップも含まれ、バックアップは、データファイルが存在するディスクと別のディスクに配置するのが最善であるからです。
注意: REDOログを多重化する場合、データベースの実行I/Oの量を増やす必要があります。構成によっては、これが、データベース全体のパフォーマンスに影響する場合があります。 |
関連項目:
|
Oracle Database XEを構成して、フラッシュ・リカバリ領域の非アクティブのいっぱいになったREDOログ・ファイルが再利用される前に、バックグラウンド・アーカイブ・プロセスによって、そのコピーが作成されるようにすることができます。このようにしてコピーされたREDOログ・ファイルは、アーカイブREDOログ・ファイルと呼ばれます。
注意: REDOログが多重化されている場合は、そのログ・ファイルのグループのいずれかのメンバーがアーカイブ対象に選択されます。メンバーが破損していたり使用できない場合は、別のメンバーのアーカイブが試行されます。 |
REDOログをアーカイブするように構成されているデータベースは、ARCHIVELOG
モードと呼ばれます。(REDOログをアーカイブするように構成されていないデータベースは、NOARCHIVELOG
モードと呼ばれます。)
ARCHIVELOG
モードで実行する利点は、次のとおりです。
メディア障害によってデータベース・ファイルの一部またはすべてが失われても、制御ファイルおよびデータファイルのバックアップと、最後のバックアップ以降に作成されたすべてのアーカイブREDOログ・ファイルとオンラインREDOログ・ファイルの完全なセットがあれば、すべてのコミット済のトランザクションを完全な状態でデータベースを復元できます。
オンラインREDOログ・ファイルおよびアーカイブREDOログ・ファイルに、最後のバックアップ以降のすべてのデータベース変更の完全な記録が含まれています。この復元プロセスは、メディア・リカバリと呼ばれます。
ARCHIVELOG
モードのデータベースは、オンライン中にバックアップを実行できます。
NOARCHIVELOG
モードのデータベースは、SHUTDOWN
またはSHUTDOWN
IMMEDIATE
操作が成功した後のマウントされた状態(ただしオープンされていない状態)のときにのみ、バックアップを実行できます。NOARCHIVELOG
データベースのバックアップ中は、アプリケーションを使用できません。
ARCHIVELOG
モードでは、アーカイブREDOログ・ファイルにフラッシュ・リカバリ領域内のディスク領域が必要となるので、フラッシュ・リカバリ領域が完全にいっぱいにならないように監視する必要があります。
データベースの管理を容易にするため、デフォルトでは、ログのアーカイブは無効になっています。そのため、Oracle Database XEのデフォルト構成では、データベースは、インスタンス障害またはオペレーティング・システム障害からは保護されますが、メディア障害からは保護されません。したがって、完全なデータ保護のために、次の手順を実行することをお薦めします。
ARCHIVELOG
モードを有効にします。
データベースのバックアップをこまめに実行します。
注意: ARCHIVELOG モードを有効にする場合は、フラッシュ・リカバリ領域が完全にいっぱいにならないように、データベースのバックアップを定期的に実行する必要があります。フラッシュ・リカバリ領域が完全にいっぱいになると、データベース障害が発生する可能性があります。 |
関連項目:
|
Oracle Database Express Edition (Oracle Database XE)では、ユーザー・データが約4ギガバイト(GB)に制限されるため、最も重要な記憶域の管理作業は、空き記憶域領域の容量と、ユーザー・データ保存用のすべての表領域に使用される記憶域領域の容量を監視することです。
この使用情報を確認する手順は、次のとおりです。
SQL Developerで、「レポート」ナビゲータ・タブをクリックし、「すべてのレポート」、「データ・ディクショナリ・レポート」、データベース管理、「記憶域」の順に階層を展開します。
図6-2に示すように、「記憶域」の下の「空き領域」をクリックし、権限を持つユーザー(SYSTEM
など)のデータベース接続を選択します。
「接続の選択」ダイアログ・ボックスの「OK」をクリックすると、図6-3に示す「空き領域」レポートが表示されます。
通常、USERS
表領域はユーザー・データのためだけに使用され、Oracleで保持されるシステム・データには使用されないため、この表領域がユーザーの関心の対象となります。図6-3の場合、USERS
表領域用に割り当てられた使用可能な領域のうち、約2.6パーセント(0.025625)のみが実際に使用されています。
残りの領域が少なくなっていることに気付いた場合は、次の手順を実行して、一部の領域の開放を試みることができます。
各スキーマにつき、次の手順を実行します。
スキーマ所有者でログインします。
使用されていないデータベース・オブジェクトを削除します。
ごみ箱をパージします。
手順については、「ごみ箱のパージ」を参照してください。
記憶域を圧縮します。
手順については、「記憶域の圧縮」を参照してください。
注意: データベースにSYSDBA でログインして接続している場合は、ごみ箱全体を(すべてのスキーマを同時に)パージできます。詳細は、『Oracle Database管理者ガイド』を参照してください。 |
この手順で、十分な領域を開放できず、必要な領域が引き続き増加することが予想される場合は、Oracle Database Standard EditionまたはEnterprise Editionへのアップグレードを検討してください。
データベースの残りの領域が少なくなっていることに気付いた場合は、記憶域を圧縮できます。記憶域を圧縮すると、データベース内で未使用の断片化した空き領域のリカバリが試行されます。データベースの状態に応じて、記憶域を圧縮しても、未使用の領域がリカバリされる場合とされない場合があります。
圧縮オプションおよび領域の再利用に関するその他のオプションについては、『Oracle Database管理者ガイド』の無駄な領域の再利用に関する章で説明されています。
Oracle Database XEのグラフィカル・ユーザー・インタフェースを使用して、データベースの表領域のリスト、表領域のプロパティ、およびデータファイルのプロパティを表示できます。
Oracle Database XEの表領域を表示する手順は、次のとおりです。
「Oracle Database 11g Express Edition」メニューから、「スタート・ガイド」を選択します。
「記憶域」をクリックします。
管理者の資格証明を要求された場合は、SYSTEM
のユーザー名とパスワード、または別の管理者のユーザー名とパスワードを入力して、「ログイン」をクリックします。
「記憶域」ページが表示されます。
データファイルの設定によっては、表領域が現在の割当てサイズよりも大きくなることがあります。たとえば、USERS
表領域が、初期の割当てサイズが100メガバイト(MB)の1つのデータファイルで開始されていても、必要に応じて、一度に10 MBずつデータファイルを自動拡張することができます。
(オプション) 表領域名をクリックして、その表領域のセグメントに関する情報を表示します。
SQL Developerの「DBA」ナビゲータを使用して、オンラインREDOログ・ファイルの場所およびステータス情報を表示できます。
SQL Developerで、「DBA」ナビゲータが表示されていない場合は、「表示」、「DBA」の順にクリックします。
「DBA」ナビゲータに、SYSTEM
ユーザーへの接続が表示されていない場合は、「DBA」ナビゲータの「接続」を右クリックして「接続の追加」を選択し、SYSTEM
の接続を選択します。(これによって、新しいデータベース接続が作成されるわけではありません。単に、「DBA」ナビゲータにSYSTEM
の接続が表示されるだけです。)
「DBA」ナビゲータの「SYSTEM
」接続を展開し、「記憶域」を展開して、「REDOログ・グループ」を選択します。
任意のREDOログ・グループを選択して、そのグループ内の各REDOログ・ファイルの場所、タイプ、およびフラッシュ・リカバリ領域にそれが作成済であるかどうかを表示できます。
REDOログ・グループおよびログ・グループ・メンバーの詳細は、「オンラインREDOログ・ファイル」を参照してください。
注意: この表示には、アーカイブREDOログ・ファイルに関する情報は含まれません。また、Oracle Database XEのデフォルト構成では、REDOログの多重化は含まれません。 |
Oracle Database Express Edition (Oracle Database XE)では、データベースのバックアップ、オンラインREDOログ・ファイルおよびアーカイブREDOログ・ファイルは、フラッシュ・リカバリ領域に保存されます。フラッシュ・リカバリ領域に関連する主な管理作業は、次のとおりです。
フラッシュ・リカバリ領域の使用可能領域の監視
フラッシュ・リカバリ領域の場所とサイズの変更
フラッシュ・リカバリ領域は、固定サイズの記憶域領域です。デフォルトのサイズは10ギガバイト(GB)です。Oracle Database XEの記憶域は5 GBまでに制限されているので、フラッシュ・リカバリ領域には、データベースの2つのバックアップが収まることが予想されます。ただし、ARCHIVELOG
モードで実行中の場合は、必要に応じてアーカイブREDOログ・ファイルのための追加の領域を割り当て、フラッシュ・リカバリ領域の使用可能領域をより注意深く監視する必要があります。(ARCHIVELOG
モードの詳細は、「アーカイブREDOログ・ファイル」を参照してください。)
この項の内容は次のとおりです。
フラッシュ・リカバリ領域の現在使用可能な領域を確認するには、SQL問合せを実行する必要があります。
フラッシュ・リカバリ領域の現在使用可能な領域を表示する手順は、次のとおりです。
SQLコマンドラインを使用して、データベースにSYSTEM
またはSYSDBA
でログインして接続します。
次のクエリーを入力します。
SELECT NAME, TO_CHAR(SPACE_LIMIT, '999,999,999,999') AS SPACE_LIMIT, TO_CHAR(SPACE_LIMIT - SPACE_USED + SPACE_RECLAIMABLE, '999,999,999,999') AS SPACE_AVAILABLE, ROUND((SPACE_USED - SPACE_RECLAIMABLE)/SPACE_LIMIT * 100, 1) AS PERCENT_FULL FROM V$RECOVERY_FILE_DEST;
問合せの結果は、次のように表示されます。
--------------------------------------------------------------------------------------------- NAME SPACE_LIMIT SPACE_AVAILABLE PERCENT_FULL C:\oraclexe\app\oracle\flash_recovery_area 21,474,836,480 20,050,844,672 6.6 ---------------------------------------------------------------------------------------------
結果は次のように解釈します。
NAME
は、現在のフラッシュ・リカバリ領域の場所を示します。
SPACE_LIMIT
は、現在のフラッシュ・リカバリ領域の最大サイズを示します。
SPACE_AVAILABLE
は、新しいバックアップおよびアーカイブREDOログの保存に使用可能な領域を示し、これには保存ポリシーに一致しなくなったファイルを削除することで再利用可能になる領域も含まれます。
PERCENT_FULL
は、バックアップ保存ポリシー内のバックアップおよびアーカイブREDOログに使用されているフラッシュ・リカバリ領域の領域の現在のパーセンテージを示します。
PERCENT_FULL
の値が100%に近づきつつあり(たとえば、85%以上)、ログのアーカイブが有効である場合は(データベースがARCHIVELOG
モードである場合は)、データベースのバックアップを実行するタイミングであると考えることもできます。データベースのバックアップを実行すると、アーカイブ・ログ・ファイルが削除され、フラッシュ・リカバリ領域の空き領域が解放されます。
直近の数回のバックアップの後に、PERCENT_FULL
の値が頻繁に100%に近くなる場合は、「フラッシュ・リカバリ領域の場所とサイズの設定」の説明に従って、フラッシュ・リカバリ領域にさらに領域を割り当てるか、またはARCHIVELOG
モードの場合は、バックアップを取る頻度を増やし、保持されるアーカイブ・ログ・ファイルのサイズを減らすことを検討してください。
関連項目:
|
この項では、フラッシュ・リカバリ領域の場所を設定する手順と、フラッシュ・リカバリ領域のサイズを変更する手順について説明します。フラッシュ・リカバリ領域の場所およびサイズは、初期化パラメータのDB_RECOVERY_FILE_DEST
およびDB_RECOVERY_FILE_DEST_SIZE
で指定します。
フラッシュ・リカバリ領域の場所の設定
表6-2に、両方のプラットフォームのデフォルトのフラッシュ・リカバリ領域の場所を示しています。
フラッシュ・リカバリ領域の場所を変更する手順は、次のとおりです。
SQLコマンドラインを使用して、データベースにSYSDBA
でログインして接続します。
手順については、「SYSDBAでのデータベースへのログインと接続」を参照してください。
SQLコマンドラインのプロンプトで、次のコマンドを入力します。
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = 'new_path';
ここで、new_path
は、フラッシュ・リカバリ領域用の新しいディレクトリの絶対パスです。このパスは存在する必要があります。(ALTER
SYSTEM
コマンドでディレクトリを作成することはできません。)
たとえば、Windowsの場合に、フラッシュ・リカバリの場所にE:ドライブのFRA
ディレクトリを設定するには、次のコマンドを入力します。
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = 'E:\FRA';
次のコマンドを入力し、オンラインREDOログ・ファイルを新しいフラッシュ・リカバリ領域の場所に移動して、以前の場所のログ・ファイルを削除するPL/SQLスクリプトを実行します。
@?/sqlplus/admin/movelogs
このコマンドは小文字で入力する必要があることに注意してください。「@
」の記号はSTART
コマンドの短縮語で、指定した名前のSQLスクリプトを実行します。「?
」の記号は、(SQLコマンドラインのコマンドで使用される場合は)Oracleホーム・ディレクトリの短縮語です。したがって、このコマンドでは、Oracle_home/sqlplus/adminのパスに存在するmovelogs.sqlという名前のスクリプトが実行されます。
スクリプトが成功した場合は、SQLコマンドラインに次のメッセージが表示されます。
PL/SQL procedure successfully completed.
movelogs.sqlスクリプトのリストは、この項で後に記載されています。
次のコマンドを入力し、SQLコマンドラインを終了します。
EXIT
注意: フラッシュ・リカバリ領域の場所を変更した後も、以前の場所のバックアップとアーカイブ・ログは不要になるまで、Recovery Manager (RMAN)は引き続きそれらを使用できます。以前のバックアップを新しいフラッシュ・リカバリ領域の場所に移動することはできません。オペレーティング・システムのユーティリティを使用して、手動で以前のフラッシュ・リカバリ領域の内容を削除しないでください。そのかわりに、以前のフラッシュ・リカバリ領域の場所にあるバックアップを不要にするには、フラッシュ・リカバリ領域の場所を変更した後に、データベースのバックアップを2回実行します。 「データベースのバックアップ」の説明に従ってデータベースをバックアップするたびに、最新の2つのバックアップとそれに付随するアーカイブREDOログのみが保持されるように、不要なバックアップとアーカイブ・ログは削除されます。そのため、新しいフラッシュ・リカバリ領域に2つの新しいバックアップが作成されると、以前の場所のファイルはすべて削除されます。 |
関連項目:
|
フラッシュ・リカバリ領域のサイズの変更
フラッシュ・リカバリ領域のサイズを変更する手順は、次のとおりです。
SQLコマンドラインを使用して、データベースにSYSDBA
でログインして接続します。
手順については、「SYSDBAでのデータベースへのログインと接続」を参照してください。
SQLコマンドラインのプロンプトで、次のコマンドを入力します。
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = new_size;
ここで、new_size
には、n
K
(キロバイト)、n
M
(メガバイト)またはn
G
(ギガバイト)の形式を使用できます。
たとえば、フラッシュ・リカバリ領域のサイズを20 GBに設定するには、次のコマンドを入力します。
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 20G;
次のコマンドを入力し、SQLコマンドラインを終了します。
EXIT
movelogs.sqlスクリプト
次に、movelogs.sqlスクリプトのリストを示します。フラッシュ・リカバリ領域の場所を変更した後に、このスクリプトを実行する必要があります。このスクリプトは、オンラインREDOログ・ファイルを新しいフラッシュ・リカバリ領域の場所に移動して、以前の場所のログ・ファイルを削除します。
declare cursor rlc is select group# grp, thread# thr, bytes/1024 bytes_k from v$log order by 1; stmt varchar2(2048); swtstmt varchar2(1024) := 'alter system switch logfile'; ckpstmt varchar2(1024) := 'alter system checkpoint global'; begin for rlcRec in rlc loop stmt := 'alter database add logfile thread ' || rlcRec.thr || ' size ' || rlcRec.bytes_k || 'K'; execute immediate stmt; begin stmt := 'alter database drop logfile group ' || rlcRec.grp; execute immediate stmt; exception when others then execute immediate swtstmt; execute immediate ckpstmt; execute immediate stmt; end; execute immediate swtstmt; end loop; end; /