自分が作った環境にはいつも環境変数ファイルを作っておく。
人が作った環境は環境変数がセットされていなかったりする。へこむのでメモ。
続きを読むマニュアルの記載がわかりにくく、PERMITTED を設定した場合の挙動について認識齟齬があったので動作確認。12.2.0.1 を使っています。(19c まではどうせ同じでしょ?)
以下の SQL を使用。
alter system set db_securefile='NEVER'; create table never1 (id number, col1 varchar2(100), col2 clob) ; create table never2 (id number, col1 varchar2(100), col2 clob) lob (col2) store as securefile ; create table never3 (id number, col1 varchar2(100), col2 clob) lob (col2) store as basicfile ; alter system set db_securefile='PERMITTED'; create table permitted1 (id number, col1 varchar2(100), col2 clob) ; create table permitted2 (id number, col1 varchar2(100), col2 clob) lob (col2) store as securefile ; create table permitted3 (id number, col1 varchar2(100), col2 clob) lob (col2) store as basicfile ; alter system set db_securefile='PREFERRED'; create table PREFERRED1 (id number, col1 varchar2(100), col2 clob) ; create table PREFERRED2 (id number, col1 varchar2(100), col2 clob) lob (col2) store as securefile ; create table PREFERRED3 (id number, col1 varchar2(100), col2 clob) lob (col2) store as basicfile ; alter system set db_securefile='ALWAYS'; create table ALWAYS1 (id number, col1 varchar2(100), col2 clob) ; create table ALWAYS2 (id number, col1 varchar2(100), col2 clob) lob (col2) store as securefile ; create table ALWAYS3 (id number, col1 varchar2(100), col2 clob) lob (col2) store as basicfile ; alter system set db_securefile='IGNORE'; create table IGNORE1 (id number, col1 varchar2(100), col2 clob) ; create table IGNORE2 (id number, col1 varchar2(100), col2 clob) lob (col2) store as securefile ; create table IGNORE3 (id number, col1 varchar2(100), col2 clob) lob (col2) store as basicfile ;
結果は以下。
SQL> col TABLE_NAME for a20 SQL> col COLUMN_NAME for a10 SQL> select TABLE_NAME, COLUMN_NAME, SECUREFILE from user_lobs; TABLE_NAME COLUMN_NAM SECUREFIL -------------------- ---------- --------- NEVER1 COL2 NO NEVER2 COL2 NO NEVER3 COL2 NO PERMITTED1 COL2 NO PERMITTED2 COL2 YES PERMITTED3 COL2 NO PREFERRED1 COL2 YES PREFERRED2 COL2 YES PREFERRED3 COL2 NO ALWAYS1 COL2 YES ALWAYS2 COL2 YES ALWAYS3 COL2 YES IGNORE1 COL2 NO IGNORE2 COL2 NO IGNORE3 COL2 NO 15 rows selected.
すみません、IGNORE と NEVER の違いが判りません。。。
STS (SQL Tuning Set) のバインド値は、DBA_SQLSET_BINDS のVALUE 列から確認が可能です。
ただ、これ、ANYDATA 型。。。
SQL> DESC DBA_SQLSET_BINDS Name Null? Type ----------------------------------------- -------- ---------------------------- SQLSET_NAME VARCHAR2(128) SQLSET_OWNER VARCHAR2(128) SQLSET_ID NUMBER CON_DBID NUMBER SQL_ID VARCHAR2(13) FORCE_MATCHING_SIGNATURE NUMBER PLAN_HASH_VALUE NUMBER POSITION NUMBER VALUE ANYDATA CAPTURED CHAR(1) SQL_SEQ NUMBER
データを確認するのにちょっとコツがいります。
続きを読むすっかり buffer cache 経由でアクセスするものと思ってましたが、CACHE / NOCACHE で制御ができるらしい。
しかもデフォルト NOCACHE 。direct path read が一般的なよう。
続きを読む