■SI Object Browser 掲示板
|
ユーザの皆様、開発者、サポート担当者の交流のための掲示板です! ユーザーの皆様同士で教え合ったりもできる交流の場にしたいと思っていますので、相互協力をよろしくお願いします。 なお、過去に同じようなQ&Aがあるケースも多いので、投稿前にキーワード検索してみてください。 |
|
| ※各投稿のカラーは対象となる製品に対応しています。【■…OB ■…OBER ■…全般 ■…その他】 ※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。 ※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。 ※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。 | |
表領域の変更
2002/02/22 11:35
OB
4
kazu
ObjectBrowserを使って既に動いているシステムのuniqueindexの表領域を変更するにはどうしたらよいですか。ちなみにただのindexであれば変更できたのですが、uniqueindexではできませんでした。方法を教えて下さい。
返信を投稿
OB
こけもも
表示されるエラーが ORA-02429 であれば、対になる制約を
先に消してから、インデックスを再作成してみてはどうでしょう。
# 制約を消した時点でインデックスも消えるかもしれませんので
# 注意してください。
表領域を変更したいだけなら SQL 文を直接実行しちゃうのも手ですが。
ALTER INDEX インデックス名 REBUILD TABLESPACE 新表領域名
とか。
先に消してから、インデックスを再作成してみてはどうでしょう。
# 制約を消した時点でインデックスも消えるかもしれませんので
# 注意してください。
表領域を変更したいだけなら SQL 文を直接実行しちゃうのも手ですが。
ALTER INDEX インデックス名 REBUILD TABLESPACE 新表領域名
とか。
返信を投稿
OB
kazu
>ALTER INDEX インデックス名 REBUILD TABLESPACE 新表領域名
やはりそうなりますか。その方法で変更できることは確認しましたが、
ObjectBrowserで変更する機能をもってないかと思いましたので…
ちなみに数千のindexを変更するには
ALTER INDEX インデックス名 REBUILD TABLESPACE 新表領域名
をどのように繋げて実行したらよいのでしょうか。
やはりそうなりますか。その方法で変更できることは確認しましたが、
ObjectBrowserで変更する機能をもってないかと思いましたので…
ちなみに数千のindexを変更するには
ALTER INDEX インデックス名 REBUILD TABLESPACE 新表領域名
をどのように繋げて実行したらよいのでしょうか。
返信を投稿
OB
初音玲
[kazu]
>ちなみに数千のindexを変更するには
>ALTER INDEX インデックス名 REBUILD TABLESPACE 新表領域名
>をどのように繋げて実行したらよいのでしょうか。
USER_INDEXESテーブルを参照してインデックス名を取ってきて、上記SQL文を
ループ実行するようなPL/SQLを記述すればできると思います。
>ちなみに数千のindexを変更するには
>ALTER INDEX インデックス名 REBUILD TABLESPACE 新表領域名
>をどのように繋げて実行したらよいのでしょうか。
USER_INDEXESテーブルを参照してインデックス名を取ってきて、上記SQL文を
ループ実行するようなPL/SQLを記述すればできると思います。
返信を投稿
OB
てんてん
>やはりそうなりますか。その方法で変更できることは確認しましたが、
>ObjectBrowserで変更する機能をもってないかと思いましたので…
>
>ちなみに数千のindexを変更するには
>ALTER INDEX インデックス名 REBUILD TABLESPACE 新表領域名
>をどのように繋げて実行したらよいのでしょうか。
新表領域名をいちいち変えなきゃですが、
「ユーザ定義SQL」が使えるかもしれません。
TRUNCATEとか、これでやってます。
例:TRUNCATE TABLE :OWNER.:NAME
だから、上記だと
ALTER INDEX :OWNER.:NAME REBUILD TABLESPACE 新表領域名
かな?試してないので一度テストしてみてくださいね。
>ObjectBrowserで変更する機能をもってないかと思いましたので…
>
>ちなみに数千のindexを変更するには
>ALTER INDEX インデックス名 REBUILD TABLESPACE 新表領域名
>をどのように繋げて実行したらよいのでしょうか。
新表領域名をいちいち変えなきゃですが、
「ユーザ定義SQL」が使えるかもしれません。
TRUNCATEとか、これでやってます。
例:TRUNCATE TABLE :OWNER.:NAME
だから、上記だと
ALTER INDEX :OWNER.:NAME REBUILD TABLESPACE 新表領域名
かな?試してないので一度テストしてみてくださいね。
返信を投稿
OB