2017-07-18 139 views
1

ファイルを行単位で読んでいて、すべての行の後にDBにデータをコミットしています。入力ファイルには、100K行が含まれています。 しばらくして、ORA-01562: failed to extend rollback segment numberエラーが発生しています。特定の行でも特定のファイルでもありません。エラーはランダムです。これは実動システムで起こっています。ORA-01562:ロールバック・セグメント番号の拡張に失敗しました

このテーブルのMAXEXTENTSはすでにUNLIMITEDに設定されています。 自分の開発環境でエラーを再現できません。

このシナリオをどのように処理しますか?将来このエラーが発生しないようにするために必要な他のステップは何ですか?

+0

次の文は、USERS表領域のデフォルトの記憶域パラメータを使用して、USERS表領域にUSERS_RSという名前のパブリック・ロールバック・セグメントを作成します。彼らは非常に速く助け、深い知識を持っています。 ロールバックセグメントの大きさはどれくらいですか?また、これと一緒に2番目のエラーが発生する必要があります。 – Mandraenke

答えて

1

実行する必要があるのは、shrinkロールバックセグメントまたはadd別のロールバックセグメントです。

場合によっては、oneロールバックセグメント、デフォルトのSYSTEMロールバックセグメントしかないようです。

少なくとも1つのロールバック・セグメントを追加する必要があります。

ここ

は、SYSTEMユーザーとしてログインし

問題にこれらのステートメントをお手伝いしますコマンドです。

手動でロールバック・セグメントの縮小:

をあなたはALTER ROLLBACK SEGMENTシステム権限を持っている必要があります使用して、ロールバック・セグメントを縮小するには。

SQLコマンドALTER ROLLBACK SEGMENTを使用して、ロールバックセグメントのサイズを手動で減らすことができます。縮小しようとしているロールバック・セグメントはオンラインでなければなりません。

次の文は、100KにロールバックセグメントRBS1を縮小:

ALTER ROLLBACK SEGMENT rbs1 SHRINK TO 100K; 

表示ロールバック・セグメント情報:データベースのロールバック・セグメントに関する

DBA_ROLLBACK_SEGSデータ・ディクショナリ・ビューの情報を格納します。

SELECT segment_name, tablespace_name, status 
     FROM sys.dba_rollback_segs; 

出力

SEGMENT_NAME TABLESPACE_NAME  STATUS 
------------- ---------------- ------ 
SYSTEM  SYSTEM    ONLINE 
PUBLIC_RS  SYSTEM    ONLINE 
USERS_RS  USERS    ONLINE 

作成ロールバック・セグメント:

たとえば、次のクエリは、データベース内の名前、関連する表領域、および各ロールバック・セグメントの状態を示していますロールバック・セグメントを作成するには、CREATE ROLLBACK SEGMENTシステム権限が必要です。データベースの追加のロールバック・セグメントを作成するには、Enterprise Managerの「ロールバック・セグメントの作成」プロパティ・シートまたはSQLコマンド「CREATE ROLLBACK SEGMENT」のいずれかを使用します。新しいロールバック・セグメントを格納する表領域はオンラインでなければなりません。単にOracleのサポートに連絡し、ケースを開け - これは生産システムである場合

CREATE PUBLIC ROLLBACK SEGMENT users_rs TABLESPACE users; 
関連する問題