UNDO表領域をいっぱいにしてしまった! お仕事中にやらかしてしまったので、自戒も込めて書きます。 Oracle DatabaseにはUNDO表領域というものがあります。 UPDATE, DELETEを行った際に復元ができるように、 更新前のデータを一次退避しておくためのテーブルスペースです。 【修正例】. かつ、RETENTION GUARANTEE設定がオフになっている場合は またしても 「ORA-30036: UNDO表領域内でセグメントを拡張できません」 のエラーが!!, 表領域を見てみると、UNDO表領域がいっぱいのまま……。 この場合自動拡張される分、ディスクの容量が消費されますが、 共有一時表領域はOracle Databaseの以前のリリースでも使用可能で、「一時表領域」と呼ばれていました。この 『Oracle Database管理者ガイド』 では、特に記載がないかぎり、「一時表領域」という用語は共有一時表領域を意味します。 デフォルト一時表領域. you can read useful information later efficiently. 更新前のデータを一次退避しておくためのテーブルスペースです。, 今回いいねが何をやってしまったかというと、 Oracleのデータベースには、データ・ファイル、制御ファイル、REDOログ・ファイルの3つのファイルが存在することは前回までに紹介しました。いままで紹介してきたファイルの構成は、OS側からみた物理的な構成です。物理的な構成と対応しながらOracle側からみた構成が論理的な構成です。Oracleでは、データベースに格納されているすべてのデータに対して、「データブロック」「エクステント」「セグメント」といった単位で「表領域」を構成しています。このように、単位ごとに区切って領域を構 … Oracle のTEMP表領域の使用率で質問があります。サービスを再起動したときに、使用されていたTEMP表領域が開放されて、再利用可能になるという事までは理解しました。そこで、質問があるのですが、1) 再利用可能になると、再利用可能にな UPDATEやDELETE文は正常に実行されます。, UNDO表領域の自動拡張がオフになっている、 このUNDO表領域をいっぱいにしてしまったのです。 More than 5 years have passed since last update. DBマシンの性能が低く、なかなか実行中断が完了しません。 Oracle11gで一時表領域がいっぱいに あるインスタンスでどうも一時表領域がいっぱいになった模様。autoextendはONになっていますが、サイズがでかすぎてOSの上限に達している。 こんなエラー。 ORA-01652: 一時セグメントを拡張できませんでかすぎるので再作成する。 ALTER TABLESPACE TEMP ADD TEMPFILE '/tmp/tempxx.dbf' SIZE 128M AUTOEXTEND OFF; ALTER DATABASE TEMPFILE '/usr/oracle/app/oradata/db01/temp01.dbf' OFFLINE, ※ここではディスク圧迫している一時表領域のデータファイルを「/usr/oracle/app/oradata/db01/temp01.dbf」としている。, ALTER DATABASE TEMPFILE '/usr/oracle/app/oradata/db01/temp01.dbf' DROP INCLUDING DATAFILES, 削除できない場合はアプリが使用している可能性があるので下記SQLでプロセスを確認し、対象のプロセスを終了させてから再度削除を試みる。, ALTER TABLESPACE TEMP ADD TEMPFILE '/usr/oracle/app/oradata/db01/temp01.dbf' SIZE 2048M AUTOEXTEND OFF, ALTER DATABASE TEMPFILE '/tmp/tempxx.dbf' OFFLINE, ALTER DATABASE TEMPFILE '/tmp/tempxx.dbf' DROP INCLUDING DATAFILES, http://mogumogukun.wordpress.com/2011/02/24/. 共有一時表領域はOracle Databaseの以前のリリースでも使用可能で、「一時表領域」と呼ばれていました。この 『Oracle Database管理者ガイド』 では、特に記載がないかぎり、「一時表領域」という用語は共有一時表領域を意味します。 デフォルト一時表領域. DBサーバでディスク使用率100%が結構発生する割に個人的によくコマンド忘れるので、備忘録として手順を記載します。. Oracleの一時表領域がディスク圧迫した際の復旧手順 . Oracle DatabaseにはUNDO表領域というものがあります。 What is going on with this article? UNDO表領域がいっぱいになると何が起きるかというと、 technology. V$SESSION.STATUSがKILLEDでもUNDOデータは解放されず、 Powered by WordPress with Lightning Theme & VK All in One Expansion Unit by Vektor,Inc. DBサーバでディスク使用率100%が結構発生する割に個人的によくコマンド忘れるので、備忘録として手順を記載します。 【手順1】 空きのあるディスク(フォルダ)に一時表領域を作成す … 過去に遭遇したトラブルについてメモしておきます。運用保守の担当をしていた頃です。深夜3時頃、携帯電話が鳴りました。夜間バッチ処理が異常終了したお知らせでした。タクシーでプロジェクトルームへ。, どうやらパラレル実行したINSERT-SELECT文で一時表領域不足で異常終了していました。再実行してもダメ。結果その時はパラレル実行をやめると実行できました。, 実行計画はOR拡張され、UNIONALLを使用して複数問合せに変換されていました。UNIONALLで複数問合せされることでメモリでは収まらなくなり、さらに一時表領域を使用。一時表領域が不足するほど肥大化していったのだと分かりました。, 今回は一時表領域の拡張はせず、SQLの改修を行いました。改修といってもヒントを一行追加しただけです。NO_EXPANDというヒントで、OR拡張をしないようにオプティマイザに指示するものです。見事に解決しました。 By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. テーブルの更新によりUNDO表領域が不足した際にこのエラーが発生します。, RETENTION GUARANTEE設定がオンの場合、UNDOデータのトランザクションが終了してから一定期間、UNDOデータは保存されます。 まだUNDO表領域はいっぱいのままです。, 「V$SESSSION.STATUSがKILLEDになったので、 参照されなくなったUNDOデータは保存期間を過ぎたら解放されるだろう。 」 UPDATEやDELETE文は正常に実行されます。, UNDO表領域の自動拡張がオフになっている Why not register and get more from Qiita? と思ったのですが、 大間違いでした。, その後、UNDO_RETENTIONの時間を過ぎたあとにUPDATE文を実行したところ、 復旧手順. | 保存期間はUNDO_RETENTIONというパラメータで設定が行われます。, 今回いいねは大きなテーブル更新を行っている最中に、 oracle. Help us understand the problem. UPDATE, DELETEを行った際に復元ができるように、 慌ててSQLの実行中断を行いました。 完全にセッションが死に切るまでUNDO表領域を保持し続けてしまうようでした。, iine_programmingさんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?, Powered by Hatena Blog ブログを報告する, qiita.com amueller.github.io この記事を見てやってみた。 準…, PythonでSelenium Webdriverという、ブラウザ操作の自動化ソフ…. ORACLEデータベースで一時表領域を作成・変更・サイズ拡張・解放・削除する方法をお探しではありませんか? 本記事では、一時表領域(temporary tablespace)を作成・変更・サイズ拡張・解放・削除する方法を紹介しています。SQLサンプルもあるのでぜひ参考にしてください。 「あっ!UNDO表領域が絶対足りない」 と気づきました。, このとき、エラーが起きるまで待つ、などをすればよかったのですが、 過去に遭遇したトラブルについてメモしておきます。運用保守の担当をしていた頃です。深夜3時頃、携帯電話が鳴りました。夜間バッチ処理が異常終了したお知らせでした。タクシーでプロジェクトルームへ。どうやらパラレル実行したinsert-select文で一時表領域不足で異常終了していました。 テーブルの更新が走ったときに以下の3つのパターンが起きます。, UNDO表領域の自動拡張がオンになっている場合は、このパターンとなります。 かつ、RETENTION GUARANTEE設定がオンの場合は、 トランザクションの終わったUNDOデータについては逐次上書きされます。