自称第1種兼業ミュージシャン?えむによるブログ 

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
    --:-- | Top

Oracleが重くなる行連鎖について

Oracleが重くなる行連鎖についてです


以下のスクリプトを実行すると、各表に存在している行連鎖を解消することが
できます。このスクリプトは以下の処理を実行します。

1. 行連鎖を確認するためのCHAINED_ROWS表を作成する。
2. 表をANALYZEし、CHAINED_ROWS表に情報を格納する。
3. CREATE AS SELECTで行連鎖が発生している表を一時表に移動する。
4. 元表から行をDELETEする。
5. 一時表から元表へデータをINSERTする。

注意:
このスクリプトで、明らかに 1 BLOCKに収まりきらない行の行連鎖を解消する


set ECHO off

ACCEPT chaintabl PROMPT 'Enter the table with chained rows: '

drop table chaintemp;
drop table chained_rows;

start $ORACLE_HOME/rdbms/admin/utlchain

set ECHO OFF

REM **********************************************
REM **********************************************
REM ANALYZE table to locate chained rows

analyze table &chaintabl
list chained rows into chained_rows;

REM **********************************************
REM **********************************************
REM CREATE Temporary table with the chained rows

create table chaintemp as
select *
from &chaintabl
where rowid in (select head_rowid
from chained_rows);

REM **********************************************
REM **********************************************
REM DELETE the chained rows from the original table

delete from &chaintabl
where rowid in (select head_rowid
from chained_rows);

REM **********************************************
REM **********************************************
REM INSERT the formerly chained rows back into table

insert into &chaintabl
select *
from chaintemp;

REM **********************************************
REM **********************************************
REM DROP the temporary table

drop table chaintemp;
 
Comment
 
 






(編集・削除用)


管理者にだけ表示を許可
 
Trackback
 
 
http://mism.blog13.fc2.com/tb.php/600-2b482692
 
 
プロフィール
 
 

えむ

  • Author:えむ
  • 現在ベンチャー企業を経営する傍ら
    兼業ミュージシャンとして活動中。
    お問い合わせはこちらまで。
 
 
最近の記事
 
 
 
 
最近のコメント
 
 
 
 
最近のトラックバック
 
 
 
 
月別アーカイブ
 
 
 
 
カテゴリー
 
 
 
 
ブロとも申請フォーム
 
 
 
 
ブログ内検索
 
 
 
 
RSSフィード
 
 
 
 
リンク
 
 
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。