私のチームは、約1のOracleデータベースを維持しています。サイズは200GB。すべてのデータ(テーブル、インデックスなど)は、単一の「USERS」テーブルスペース内にあります。これは悪い考えですか?複数のテーブルスペースを持つことにはどのような利点がありますか?また、どのような状況でデータベースにさらに追加したいですか?
ありがとう!
私のチームは、約1のOracleデータベースを維持しています。サイズは200GB。すべてのデータ(テーブル、インデックスなど)は、単一の「USERS」テーブルスペース内にあります。これは悪い考えですか?複数のテーブルスペースを持つことにはどのような利点がありますか?また、どのような状況でデータベースにさらに追加したいですか?
ありがとう!
私の偏見(そしてこれは主に個人的な好みの問題です)は、追加の表領域を作成することに説得力のある利点がない場合、単一の表領域で生活が楽になるということです。
アプリケーションがこれらの特殊なケースのいずれかに該当しない限り、個別の表領域を持つことの唯一の利点は、DBAの組織化の感覚に訴えることです。個人的には、オブジェクトを作成するたびにテーブルスペース名を指定することを避けたり、デフォルトのテーブルスペースでオブジェクトが誤って作成されることが避けられない場合に、「間違った」テーブルスペースからオブジェクトを移動するサイクルを費やしたりできることを嬉しく思います。個人的には、異なる均一なエクステントサイズを持つ手動で最適化されたテーブルスペースのセットに対して自動エクステント管理を備えたローカル管理テーブルスペースを使用するときに、数十MBのスペースが「浪費」されるかどうかについてはあまり心配していません。一方、優れたDBAは、「まさしく」整理されていることを非常に心配する傾向があるので、私は
http://download.oracle.com/docs/cd/B10501_01/server.920/a96521/tspaces.htmを参照してください
http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/physical.htmを参照してください
複数の表領域を使用して、次のタスクを実行できます。
データベースデータのディスクスペース割り当てを制御する
データベースユーザーに特定のスペースクォータを割り当てます
個々の表領域をオンラインまたはオフラインにすることにより、データの可用性を制御します
部分的なデータベースのバックアップまたはリカバリ操作を実行します
パフォーマンスを向上させるために、デバイス間でデータストレージを割り当てます
異なる表領域を使用する理由の1つは、データベース間でデータを移動するために表領域トランスポートを使用したいという要望です。エクスポートおよびインポートせずに移動するデータのセットが限られている場合、特にデータがソースシステムとまったく同じ物理構造を持つことがテスト上の理由で重要である場合は、テーブルスペーストランスポートが適切なオプションです(たとえば、パフォーマンス分析作業用)。
私はジャスティン洞窟の評価に強く反対します。本番DBAは、非常に異なる意見を持っている可能性があります。
トランスポータブル表領域は、データベース全体を移動することなく、データベース間でデータのサブセットを移動するための機能です。
読み取り専用の表領域であるため、データベース全体を毎週バックアップする必要はありません。これには何時間もかかる可能性があり、速度を制限しても、その時間のパフォーマンスの低下に耐えることはできません。
サイズが非常に大きいため、特定のテーブルスペースのみを固定日にバックアップしますが、多くの場所にはこれほど大きなデータベースがありません。上記と同じ理由。
アプリケーションに応じて、アプリケーション側で互いに独立して機能できるモジュールがあるとします。それぞれに独自のテーブルスペースのセットがある場合は、1つのアプリのテーブルスペースをオフラインにして、他のモジュールに影響を与えることなく再編成を行うことができます...通常どおり実行できます。
データとインデックスの分離に関して:従来の理由は、2つを異なるディスクに配置して、パフォーマンスの面で互いに競合しないようにするためでした。SANのように、すべてが実際には同じストレージ領域である今日のストレージ機能にはそれほど問題はありませんが、それでも問題はありません。インデックスをテーブルからローカルに分離できない同じテーブルスペースにすべてのオブジェクトがある場合、ローカルで管理されているテーブルスペースでもファイルヘッダーレベルで競合が発生するという考慮事項!! 1つのテーブルスペースに20個のデータファイルを作成しても、テーブルとインデックスの場所を決定することはできません。ある日、インデックスが存在するテーブルに対する大規模なアクティビティが原因で、ファイルヘッダーレベルで大きな競合が発生していることに気付きます。たまたま同じデータファイルにあります!実際、それをスクラップします。tsが1つしかない場合は、間違いなくファイルヘッダーの競合が発生します。
その論理的な分離を行う理由は他にもあります。いいえ、それはほとんどの場合のパフォーマンスではなく、実稼働環境での管理に関するものです。
S. Lottは、それを複数のテーブルスペースに分割したい一般的な理由の良いリストをすでに示しています。
あなたの状況にもっと具体的に...
今、物事を変える特別な理由があるかどうか自問します。そのような構造変更を行うことは簡単な作業ではありません。パフォーマンスの問題はありますか?ストレージスペースの制限に逆らって実行していますか?スペースクォータを割り当てる必要がありますか?現在のバックアップと復元の計画はニーズを満たしていますか?
過去にさかのぼって最初からやり直すことができれば、データベースをさまざまな表スペースに適切に分割することを計画する必要があります。しかし、今はそれだけの価値がありますか?