Oracle データベースにはデータ ストレージ用に複数のテーブルスペースが必要ですか?

StackOverflow https://stackoverflow.com/questions/1291317

  •  18-09-2019
  •  | 
  •  

質問

私のチームは、約 100 ドルの Oracle データベースを維持しています。サイズは200GB。すべてのデータ (テーブル、インデックスなど) は、単一の「USERS」テーブルスペース内に存在します。これは悪い考えですか?複数のテーブルスペースを持つことにはどのようなメリットがありますか?また、どのような状況でデータベースにテーブルスペースを追加する必要があるでしょうか?

ありがとう!

役に立ちましたか?

解決

私の偏見 (そして、これは主に個人的な好みの問題です) は、追加の表領域を作成することに説得力のある利点がない場合は、単一の表領域を使用する方が簡単であるということです。

  • オブジェクトを別の表領域に配置してもパフォーマンス上の利点はありません。テーブルとインデックスを分離するとパフォーマンスが向上するという古い通説があります。I/O を使用可能なすべてのスピンドルに分散することには潜在的な利点がありますが、Oracle は SAN が使用されていないことを前提として、異なるデータ ファイルのエクステントのラウンドロビン割り当てを行うため、複数のテーブルスペースを使用するよりも、単一のテーブルスペース内の複数のデータ ファイルを使用して分散する方が良いでしょう。 I/O を平準化するための何かをまだ行っていません。
  • 小規模なトランザクション表領域を取り込むだけでデータベースの新しいコピーをクライアント サイトに取り込むことができるような、大規模な静的ルックアップ/履歴テーブルがある場合は、複数の表領域を検討する理由になります。しかし、この種の設定を備えたアプリケーションはほとんどありません。200 GB をすべて持ち込む必要がある場合は、テーブルスペースの数は関係ありません。
  • 同様に、大規模な読み取り専用オブジェクトがある場合、それらを読み取り専用表領域に配置すると、バックアップに必要な時間と領域を大幅に削減できます。ただし、これはデータ ウェアハウス以外では実際には特に一般的ではありません。
  • オブジェクトのサブセットなしでアプリケーションを実行できる場合は、別の表領域を作成して、1 つをオフラインにして表領域レベルのリストアを実行できる利点がある可能性があります。ただし、繰り返しますが、オブジェクトのセットなしで実行できるアプリケーションはほとんどありません。たとえば、インデックス テーブルスペースを失った場合、アプリケーションはすべてを失ったのと同じように動作しなくなっている可能性があります。
  • 空のテーブルまたはほぼ空のテーブルが多数あり、非常に大きなテーブルが多数ある場合は、領域使用率の観点から、異なるエクステント割り当てポリシーを持つ別個のテーブルスペースが望ましい場合があります。これは、特定のインストールで使用可能なテーブルの比較的小さな割合が使用されており、空のテーブルのそれぞれに比較的大きなエクステントを割り当てたくない場合に、パッケージ化されたアプリで時々発生します。ローカルで管理される表領域での自動エクステント管理では、これは大きな問題にはならない傾向がありますが、均一のエクステントを使用する場合はより問題になる可能性があります。
  • オブジェクトごとにディスク パフォーマンスの優先順位が異なり、使用可能なディスクの種類が異なる場合は、別の表領域を使用して、別のオブジェクトを別のディスク セットに配置できます。たとえば、データ ウェアハウスでは、古いデータを低速で安価なディスクに配置し、新しいデータをより高価なディスクに配置することができます。OLTP アプリケーションではこのようなことはあまり起こりません。

アプリケーションがこれらの特殊なケースに該当しない限り、別個の表領域を持つことの唯一の利点は、DBA の組織感覚に訴えることです。個人的には、オブジェクトを作成するたびに表領域名を指定したり、オブジェクトが誤ってデフォルトの表領域に作成されてしまう場合に「間違った」表領域からオブジェクトを移動するサイクルを費やしたりする必要がなくなることを非常にうれしく思っています。個人的には、均一のエクステント サイズが異なる手動で最適化されたテーブルスペースのセットに対して自動エクステント管理を備えたローカル管理テーブルスペースを使用する場合、数十 MB のスペースが「無駄」になるかどうかはあまり心配していません。一方、優れた DBA は、物事が「そのように」整理されていることを非常に気にする傾向があるため、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つが他のモジュールに影響を与えずにREORGを行うには、オフラインの表領域をアプリ取ることができます...彼らは通常どおりに実行することができます。

データとインデックスの分離のためとして:彼らは賢いお互いのパフォーマンスと競合しなかったので、伝統的な理由は別のディスクに2を置くためでした。それは本当にすべて同じストレージ領域だところ、SANのような、今日のストレージ機能に問題の多くは、しかし、あなたも使ってファイルのヘッダレベルでの競合を取得するつもりだ。のまだの考慮事項はありませんあなたがlocigallyのテーブルからインデックスを分離することはできません同じ表領域にすべてのオブジェクトを持っている場合は、ローカル表領域を管理します!あなたが1つの表領域に20個のデータ・ファイルを作成する場合でも、テーブルとインデックスが行く場所を決定するために得ることはありませんし、その後1日、あなたはので、それがインデックスだテーブルの上に対する大規模な活動のファイルヘッダレベルでの主要な競合を持って気づきます同じデータ・ファイルの中にあることが起こります!実際にはそれをスクラップ。あなたが唯一の1つのTSを持っている場合は、<全角> のでしょう疑いの経験・ファイルのヘッダーの競合なしています。

その論理的な分離を持つためのより多くの理由がある、といや、それはほとんどの部分のパフォーマンスについてではありません、それは本番環境での管理の詳細です。

S。ロットはすでに1が複数の表領域にそれを分割する理由一般的な理由の良いリストを与えます。

あなたの状況により具体的な...

今、物事を変更するには、特別な理由がある場合は、

私は自分自身を求めるだろう。これは、そのような構造変化を作るために決して小さなタスクません。パフォーマンスの問題はありますか?あなたは、ストレージ容量の限界に対して実行していますか?あなたは、スペースのクォータを割り当てる必要がありますか?あなたの現在のバックアップとは、計画がニーズを満たして復元していますか?

あなたが時間内に戻って、あなたは確かに賢明に異なる表スペースにデータベースを分割することを計画したいと思う最初から物事をやり直すことができれば。しかし、それは今それだけの価値はありますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top