- 2014-02-10 16:21:29 (Mon);
表領域の使用率確認
SET LINESIZE 1000
SET PAGESIZE 20
spool c:\表領域.txt
SELECT
T.TABLESPACE_NAME "領域名",
TRUNC(T.BYTES/(1024*1024*1024),2) "総容量(GB)",
ROUND((T.BYTES - SUM(F.BYTES)) / (1024*1024*1024),2) "使用容量(GB)",
ROUND(SUM(F.BYTES) / (1024*1024*1024),2) "空き容量(GB)",
ROUND((1-SUM(F.BYTES) / T.BYTES)*100,2) "使用率(%)"
FROM
SYS.DBA_FREE_SPACE F
LEFT OUTER JOIN
(SELECT TABLESPACE_NAME,SUM(BYTES) BYTES
FROM SYS.DBA_DATA_FILES GROUP BY TABLESPACE_NAME) T
ON T.TABLESPACE_NAME = F.TABLESPACE_NAME
--WHERE
-- T.TABLESPACE_NAME IN ('表領域名')
GROUP BY
T.TABLESPACE_NAME, T.BYTES;
spool off
バッチで呼ぶなら・・
sqlplus -S system/manager@tns < 表領域の使用率確認.sql
表領域を拡張するには
まず確認
conn / as sysdba
select
f.tablespace_name
,round(f.bytes/(1024*1024*1024),2) "サイズ(GB)"
,f.autoextensible
,round(f.increment_by*d.block_size/(1024*1024),2) "自動拡張サイズ(MB)"
,round(f.maxbytes/(1024*1024*1024),2) "最大サイズ(GB)"
from
dba_data_files f
inner join dba_tablespaces d
on f.tablespace_name=d.tablespace_name;
autoextensible が「YES」なら自動拡張なので必要なし。
null の場合は手動で拡張するか、自動拡張に設定変更する。
表領域の拡張方法
①ファイルサイズを変更する
alter database datafile '/opt/oracle/oradata/orcl/users01.dbf'
resize 10G;
②自動拡張する
alter database datafile '/opt/oracle/oradata/orcl/users01.dbf'
autoextend on next 1M maxsize unlimited;
③ファイルを追加する
alter tablespace USERS add datafile '/opt/oracle/oradata/orcl/users02.dbf'
size 5G autoextend on next 10MB maxsize unlimited;
alter tablespace の場合は、ファイルを追加するときしか使えない。
現行の領域を操作する場合は alter database を利用します。
余談(表領域のサイズ unlimited)
余談ですが、サイズを unlimited に設定しても、
dba_data_files の maxbytes には 「unlimited」とは表示されず、数値が表示されます。
理由としては、表領域のブロックサイズによってMAXBYTESの値が変わってしまうからです。
ちなみにブロックサイズ8Kの場合は、32GBが最大となります。
スモール・ファイル表領域の1つのデータ・ファイルの最大サイズ
[表領域のブロックサイズ] × 4194303 (= 2^22 -1) ' ブロックサイズが8KBの場合は、約32GB
最終更新:2014年02月10日 16:21