DLPのOracle テーブルスペース (LOB_TABLESPACE, USERS, など) のサイズが上限に達している、ほぼ上限に達している、または、危機的に上限に近い状態にある場合の動作について
search cancel

DLPのOracle テーブルスペース (LOB_TABLESPACE, USERS, など) のサイズが上限に達している、ほぼ上限に達している、または、危機的に上限に近い状態にある場合の動作について

book

Article ID: 242985

calendar_today

Updated On:

Products

Data Loss Prevention Enforce Data Loss Prevention

Issue/Introduction

Oracle テーブルスペース (表領域) のサイズが上限に達している、または、ほぼ上限に達している場合、Data Loss Prevention (DLP) では以下のいずれかの状況が発生します。

  • Oracleの表領域が、ほぼ上限に達している (> 80%) または、危機的に上限に近い状態 (> 90%) であることを警告するシステムアラートが表示される。
  • テーブルスペース (表領域) が上限に達しており、インシデントデータを保存できないため、「壊れたインシデント」の警告が表示される。

例:
Code: 2301
Summary Tablespace is almost full
Detail Oracle tablespace LOB_TABLESPACE is over 83% full

Resolution

概要

DLPの Oracle データベースにある1つ以上のテーブルスペース (表領域) を拡張する必要があります。

警告: どのテーブルスペース (表領域) を拡張する必要があるか、ログやアラートに表示されているテーブルスペース (表領域) 名にご注意ください。
通常この問題は、LOB_TABLESPACE で発生しますが、USERS やその他のテーブルスペース(表領域) でも発生することがあります。
すべてのテーブルスペース (表領域) は、テーブルスペース (表領域) 名を適宜置き換えることで、同じ方法で拡張することができます。

テーブルスペース (表領域) の概略

DLP 14.x、および、その後のバージョンでは、「テーブルスペース(表領域)の概略」をDLP Enforceコンソールで見るとができます。

注意: この概略はデータベースファイルの場所など、テーブルスペース(表領域)を完全に説明したものではありません。

Oracleデータベースファイルの検索

テーブルスペース(表領域)の拡張を行う前に、現在、Oracleデータベースのファイルがどこにあるか確認する必要があります。

データベースファイルを探すには、SQL*Plusを使ってデータベースで直接クエリを実行してください。SQL*Plusは、DLP Enforceサーバーで利用可能です。
SQL*Plusの使用方法については、Implementing the Database をご覧いただくか、Starting SQL*Plus and Connecting to the Database をご覧ください。

注意: データベースファイルを探すには、Oracle Enterprise Manager も使用することができます。

protectでログインし、以下のコマンドを実行します。

select file_name from sys.dba_data_files;

出力結果には、以下のようにそれぞれのデータベースファイルのディレクトリとファイル名 (拡張子 .DBF) が表示されます。

E:\ORACLE\ORADATA\PROTECT\SYSTEM01.DBF
E:\ORACLE\ORADATA\PROTECT\SYSAUX01.DBF
E:\ORACLE\ORADATA\PROTECT\UNDOTBS.DBF
E:\ORACLE\ORADATA\PROTECT\DRSYS01.DBF
E:\ORACLE\ORADATA\PROTECT\LOB01.DBF
E:\ORACLE\ORADATA\PROTECT\LOB02.DBF
E:\ORACLE\ORADATA\PROTECT\LOB03.DBF
E:\ORACLE\ORADATA\PROTECT\USERS01.DBF
E:\ORACLE\ORADATA\PROTECT\USERS02.DBF
E:\ORACLE\ORADATA\PROTECT\USERS03.DBF

フリースペース の確認

必要に応じて、どのテーブルスペース (表領域) がいっぱいかを確認するために、データベースにsys as sysdbaを使って接続、ログインし、以下のコマンドを実行して空き領域を確認します。

set pages 100
set lines 100
SELECT d.status "Status",
  d.tablespace_name "Name",
  TO_CHAR(NVL(a.bytes / 1024 / 1024, 0),'99999990D900') "Size (M)",
  TO_CHAR(NVL(NVL(f.bytes, 0), 0)/1024/1024 ,'99999990D900') "Free (MB)",
  TO_CHAR(NVL((NVL(f.bytes, 0)) / a.bytes * 100, 0), '990D00') "Free %"
 FROM sys.dba_tablespaces d,
  (select tablespace_name, sum(bytes) bytes from dba_data_files group by tablespace_name) a,
  (select tablespace_name, sum(bytes) bytes from dba_free_space group by tablespace_name) f
  WHERE d.tablespace_name = a.tablespace_name(+)
  AND d.tablespace_name = f.tablespace_name(+)
  AND NOT (d.extent_management like 'LOCAL'  AND d.contents like 'TEMPORARY')
 order by "Free %";

テーブルスペース (表領域) の拡張

SQLを使ってテーブルスペース (表領域) を追加するには、データベースにsys as sysdbaを使って接続、ログインし、以下のコマンドを実行します。

ALTER TABLESPACE <tablespace name>
ADD 
DATAFILE '<directory and datafile name>' SIZE 138240K
REUSE AUTOEXTEND 
ON NEXT 10240K MAXSIZE 32767M;

「Oracleデータベースファイルの検索」で挙げられているサンプルの出力結果を元にすると、“LOB_TABLESPACE” が上限に達している場合、新しく作成されるデータベースファイルは、"LOB04.DBF" というファイル名になります。

具体例として、以下に新しいデータベースファイルを「LOB_TABLESPACE」に追加する方法を挙げています。

ALTER TABLESPACE LOB_TABLESPACE
ADD 
DATAFILE 'D:\ORACLE\ORADATA\PROTECT\LOB04.DBF' SIZE 138240K 
REUSE AUTOEXTEND 
ON NEXT 10240K MAXSIZE 32767M;

Additional Information

  • Oracle 11gを使用している一部のシステムでは、テーブルスペース (表領域) 名を囲う引用符 を削除する必要があります。
    (例: ALTER TABLESPACE LOB_TABLESPACE ADD DATAFILE...)
  • Oracleは新しいインシデントが作成される際、削除されたデータを上書きするため、インシデントを削除することで、テーブルスペース(表領域)を確保できることがありますが、テーブルスペースがすでに上限に達している場合、インシデントを削除してもテーブルスペースは確保されません。
    詳細な情報に関しましては、Why doesn't the database shrink after incidents are deleted? をご覧ください。

 

※ このドキュメントは、以下のドキュメントを元に作成しています。

Oracle tablespace (LOB_TABLESPACE, USERS, etc.) for DLP is full, almost full, or critically full