- PR -

Oracle表領域の作成方法

1
投稿者投稿内容
BB
ベテラン
会議室デビュー日: 2005/05/08
投稿数: 52
投稿日時: 2005-11-02 21:38
こんにちは。
今Oracle9i サーバに入っているデータをすべてexportして
別サーバにimportし作り直す事を考えております。

そこで表領域の作成方法に関してアドバイスをいただきたいです。
1.
 対象スキーマは2つありそれぞれ5Gくらい容量があり、
 USERS表領域に格納されていますが、
 余裕を見て10G 10Gの表領域USERS1 USERS2を作成し、
 そこに入れようと思っております。
 (表領域を分けたいと思っています)
 こんな大きな表領域を作成することで発生するデメリットってあるのでしょうか?

2.
 temp表領域は今のサーバでは容量を食いっぱなしなのですが、
 これは削除してはいけないんでしょうか?
 (本で読んだところユーザ表領域の倍くらい必要と書いてありますが。。。)

みなさんのご意見をいただけないでしょうか。
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2005-11-03 00:30
msoです。

引用:

BBさんの書き込み (2005-11-02 21:38) より:
こんにちは。
今Oracle9i サーバに入っているデータをすべてexportして
別サーバにimportし作り直す事を考えております。

そこで表領域の作成方法に関してアドバイスをいただきたいです。
1.
 対象スキーマは2つありそれぞれ5Gくらい容量があり、
 USERS表領域に格納されていますが、
 余裕を見て10G 10Gの表領域USERS1 USERS2を作成し、
 そこに入れようと思っております。
 (表領域を分けたいと思っています)
 こんな大きな表領域を作成することで発生するデメリットってあるのでしょうか?



デメリットとしては、
1:DBを停止して、ファイルをコピーさせる必要がでてきた場合に
  時間がかかる。
ぐらいかな?
あんましデメリットになっていない気がします。

引用:

2.
 temp表領域は今のサーバでは容量を食いっぱなしなのですが、
 これは削除してはいけないんでしょうか?
 (本で読んだところユーザ表領域の倍くらい必要と書いてありますが。。。)

みなさんのご意見をいただけないでしょうか。


一時的にデータを格納するスワップファイル的な扱いをするためではないでしょうか?
必要なければ削除してもなんとかなるとは思いますが、
領域の確保待ちなどで速度低下の原因になるかもしれませんね
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2005-11-03 12:45
引用:

1.
 対象スキーマは2つありそれぞれ5Gくらい容量があり、
 USERS表領域に格納されていますが、
 余裕を見て10G 10Gの表領域USERS1 USERS2を作成し、
 そこに入れようと思っております。
 (表領域を分けたいと思っています)
 こんな大きな表領域を作成することで発生するデメリットってあるのでしょうか?



特にないと思います。ただ、例えばディスクが2つあるのであれば、5G ずつディスクに配置することにより同時アクセス時のパフォーマンス向上が期待できます。ちなみに、10G の表領域を 5G ずつ分けた場合、片方のデータファイルがいっぱいになるまで使われてそれからもう片方が使われるわけではなく、両方のデータファイルが交互に使われるようです。

あと、よくやられているケースとしては、スキーマ毎に使用する表領域を分割することです。表領域名をスキーマ名と一致させることにより、分かりやすくもなるでしょう。

引用:

2.
 temp表領域は今のサーバでは容量を食いっぱなしなのですが、
 これは削除してはいけないんでしょうか?
 (本で読んだところユーザ表領域の倍くらい必要と書いてありますが。。。)



ユーザ表領域の倍くらい必要というのは大嘘ですので信用しないで下さい。
TEMP 表領域は主にメモリ上でソートしきれない場合に使用されます。
従って、大きなソート処理が発生する場合は大きな TEMP 表領域が必要となる場合があります。
ただし、理想は全てのソート処理がメモリ上で行われることです。
(PGA_AGGREGATE_TARGET, SORT_AREA_SIZE 初期化パラメータなどを参照)

ソートが発生する条件としては、
- ORDER BY 句の使用
- GROUP BY 句の使用
- DISTINCT 句の使用
- 副問い合わせで内側の表から複数件のレコードが返される場合
(内部的にソートが不要なSQL文に書き換えられる場合もあります)
- SORT MARGE 結合の使用
(結合列に正しく索引が張られていればまず発生しません)
などです。
BB
ベテラン
会議室デビュー日: 2005/05/08
投稿数: 52
投稿日時: 2005-11-03 23:10
皆様ありがとうございます。

あんとれさんから
>TEMP 表領域は主にメモリ上でソートしきれない場合に使用されます。
とアドバイスをもらっていますが

現状サーバのtemp表領域は8Gも存在しているのですが、
これはほっとけば 増えっぱなしになるものなのでしょうか?

またこの表領域をなるべく増やさない等
管理すべきことはあるのでしょうか??
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2005-11-04 13:52
引用:

BBさんの書き込み (2005-11-03 23:10) より:

現状サーバのtemp表領域は8Gも存在しているのですが、
これはほっとけば 増えっぱなしになるものなのでしょうか?



どのような処理を実行されているのか分かりませんが、AUTOEXTEND ON の場合で、MAXSIZE UNLIMITED 等をしているのであれば、8G 以上の領域が要求された場合、拡大することになります。ただし、一度利用された領域でも再利用されるようになっているので、不具合でもない限りある程度のところで収まると思います。

それよりも、8G も領域が必要なソート処理を行わないように検討することが重要だと思います。ちなみに、索引を作成する場合にもソート処理が行われますが、この場合のソート処理は例外として作成される表領域上で行われます。
BB
ベテラン
会議室デビュー日: 2005/05/08
投稿数: 52
投稿日時: 2005-11-05 00:29
To あんとれさん
>どのような処理を実行されているのか分かりませんが、AUTOEXTEND ON の場合で、MAXSIZE >UNLIMITED 等をしているのであれば、8G 以上の領域が要求された場合、拡大することになり
>ます。ただし、一度利用された領域でも再利用されるようになっているので、不具合でもない
>限りある程度のところで収まると思います。

おっしゃられると降り8Gは異常な感じがします。。。
AUTOEXTEND ON の場合で、MAXSIZE UNLIMITEDでなかった場合は
もしもTEMP表領域が指定サイズ以上を必要とする場合SQLエラーになってしまう
ということですよね?
どのくらいに指定すればよいとかの指標はあるのでしょうか?
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2005-11-05 03:52
引用:

BBさんの書き込み (2005-11-05 00:29) より:

>限りある程度のところで収まると思います。

どのくらいに指定すればよいとかの指標はあるのでしょうか?



残念ながらUNDO表領域とは違って見積方法はありません。
処理の内容によっても大きく変わってきます。8GBも必要ということはよっぽど大きなソート処理が実行されているということでしょう。データ件数はどの程度ですか? 場合によってはSQLトレースを仕掛けて、問題となっているSQL文を選定する必要があるかもしれませんね。

あと、一時表領域が使われるのは以下の場合です。(正確に調査しました)
- INDEX作成時
- ORDER BYを使用した問合せ
- DISTINCTを使用した問合せ
- GROUP BYを使用した問合せ
- UNIONを使用した問合せ
- INTERSECTを使用した問合せ
- MINUSを使用した問合せ
- 索引を使用しない結合
- 特定の相関副問合せ
1

スキルアップ/キャリアアップ(JOB@IT)