以下のSQLたちは、大量データをインポートする際に
高速化を狙ったDB構成情報を変更するためのものです。
--表領域の拡張と増分変更
set lines 200
col tablespace_name format a10 trunc
col file_name format a50 trunc
select
file_id,
tablespace_name,
file_name,
bytes/1024/1024 || ' MB' as tablesize,
NEXT_EXTENT || 'KB' as NextExtent
from
dba_data_files
order by file_id;
-- エクステント数の確認
SELECT
SEGMENT_NAME, SEGMENT_TYPE, TABLESPACE_NAME, EXTENTS
FROM DBA_SEGMENTS
WHERE TABLESPACE_NAME = 'USERS'
ORDER BY SEGMENT_NAME;
-- データファイルのサイズ変更
alter database datafile '/opt/oracle/oradata/test/users01.dbf' resize 11800M;
-- データファイルの領域拡張サイズ変更
alter database datafile '/opt/oracle/oradata/test/users01.dbf' autoextend on next 100M;
-- REDOログの追加
alter database add logfile group 4 '/opt/oracle/oradata/test/redo04.log' size 300M
alter database add logfile group 5 '/opt/oracle/oradata/test/redo05.log' size 300M
alter database add logfile group 6 '/opt/oracle/oradata/test/redo06.log' size 300M
-- CURRENTログファイルの切り替え
ALTER SYSTEM SWITCH LOGFILE;
-- REDOログファイルの情報取得
select * from v$log;
-- ACTIVEなREDOログをNOT ACTIVEにするためにCHECKPOINTを行う。
ALTER SYSTEM CHECKPOINT;
-- REDOログファイルの削除
alter database drop logfile group 1
alter database drop logfile group 2
alter database drop logfile group 3
-- DB全体の統計情報取得(GATHER_STATS_JOBと同様の処理?)
EXECUTE DBMS_STATS.GATHER_DATABASE_STATS();
-- 統計情報取得JOBのスケジューリングON
EXECUTE sys.dbms_scheduler.enable( '"SYS"."GATHER_STATS_JOB"' );
-- 統計情報取得JOBのスケジューリングOFF
EXECUTE sys.dbms_scheduler.disable( '"SYS"."GATHER_STATS_JOB"' );