WITH句にバインド変数を指定することで、
バインド変数の適用箇所を減らすことができる。
1SQLで大量のバインド変数(同じものがたくさん)になるとき
バインド変数の数を減らすことで、バインド時の負荷をさげる
ことができる。
col manager_id format a10
col insert_date format a30
col inset_id format a10
with
bind_table as
(select :decryptKey decryptKey, :target_date date01 from dual)
SELECT
sys.SMSDecrypt(MANAGER_ID, bind_table .decryptKey) manager_id,
INSERT_DATE,
INSERT_ID
FROM
MANAGER, bind_table
;
以下の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"' );