人生100年時代わくわくワークアズライフ

自分のアタマで考えて働きたい。生きたい。さらには誰かに少しでも貢献したい。

OracleDBのロールバックセグメント拡張について

こんにちは。人生100年時代”わくわく”プランニングコーチのアフロ(@afroriansym567)です。

 

Oracleデータベースシリーズ、表領域の拡張コマンドから続きます。

 

www.afroriansym100life-shift.net

 

 

www.afroriansym100life-shift.net

 

 

ロールバックセグメントを拡張する場合は要注意です。

特に、OracleDBを利用したシステムがすでに運用されている状態では注意しなければなりません。

 

 

https://d1f5hsy4d47upe.cloudfront.net/20/200fd52b442255b900418a07a1392513_t.jpeg

ロールバックセグメントの拡張手順

まずはロールバックセグメントの表領域拡張を実施し、次にロールバックセグメントを拡張します。

 

1.ロールバックセグメントの表領域拡張

  • ALTER TABLESPACE RBS ADD DATAFILE '/oracle/TESTDB/RBS_01.dbf' size 2000M;
    (RBSという表領域名のロールバックセグメントの表領域データファイルである、RBS_01.dbf を2000Mとする。)

 

2.ロールバックセグメントの拡張

 

前提として、すでにOracleDBを利用したシステム稼働している状況とします。

なので、ロールバックセグメントをオフラインとしてから、ロールバックセグメントの拡張を行い、改めてロールバックセグメントをオンラインとします。

 

  • ALTER ROLLBACK SEGMENT R01 OFFLINE;
    (まずは、R01というロールバックセグメントをオフライン状態とする。何がしかのトランザクション処理中であれば、PENDING OFFLINEとなる。一定時間後に有効なトランザクション処理が無い状態でOFFLINEコマンドを実行すべし。)
  • DROP ROLLBACK SEGMENT R01;
    (R01を削除する)
  • CREATE ROLLBACK SEGMENT R01 TABLESPACE RBS STORAGE(INITIAL 4M NEXT 4M MINEXTENTS 4 MAXEXTENTS 505 OPTIMAL 16M);
    (R01を改めて作る。INITIALやMINEXTENTSなどエクステントに関する値については別途記載する)
  • ALTER ROLLBACK SEGMENT R01 ONLINE;
    (R01というロールバックセグメントをオンライン状態とする)

 

上記は、いったんロールバックセグメントを削除して、改めて作りなおしています。

 

ロールバックセグメントの拡張が必要なケース

Oracleエラー「ORA-1555 スナップショットが古すぎます」が発生した場合や、「Ora-01650」が発生した場合など。

 

Ora-01650は、システム処理中に、ロールバックセグメント表領域の上限に達したためロールバックセグメントが拡張できないことで発生するエラーです。

 

注意点として、システム保守のエンジニア役割を担いながら、運用支援をしたり、運用改善を行うコンサル的な立場の方々は、上記のコマンドのみで対応が完了するかどうか判断が難しい場合もあります。

 

インフラエンジニア的な役割を担う有識者に念のため確認をとりながら、最適な対応を実施することにつとめましょう。

 

そもそもロールバックセグメントとは?

トランザクションをロールバックするためのものです。

 

これだけ書くとなんのことやらわかりません。

 

しかも他にもロールバックセグメントには役割があります。

 

別記事で追加します。

 

 

運用・保守に携わるITコンサルタントで、OracleDBを直接操作して対応する場合があれば以下の記事もどうぞ。

 

www.afroriansym100life-shift.net

 

 

www.afroriansym100life-shift.net

 

 

 

www.afroriansym100life-shift.net

 

 

 

 

以上。