OS 환경 : Oracle Linux 8.4 (64bit)
DB 환경 : Oracle Database 19.3.0.0
방법 : 오라클 19c 테이블 ctas 생성 및 append 삽입시, 인덱스 생성시 자동 통계정보 수집
오라클 19c 환경에서 테이블 생성 또는 데이터삽입, 인덱스 생성시 통계정보가 자동으로 수집됨
어떤 설정에 의해 수집되는지 확인해보기 위해 테스트해봄
현재 db는 아래 게시글처럼 silent 모드로 설치함
Oracle Linux 8.4에 Oracle 19c Silent 모드 설치 가이드 ( https://positivemh.tistory.com/1152 )
테스트
사전 확인
1. _optimizer_gather_stats_on_load 파라미터 true 인 경우(기본값)
2. _optimizer_gather_stats_on_load 파라미터 false 인 경우
3. _optimizer_compute_index_stats 파라미터 false 인 경우
4. 관련 파라미터 확인
테스트
사전 확인
db 접속 후 pfile 생성
1
2
3
|
SQL> create pfile from spfile;
File created.
|
pfile 내용 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
$ cat $ORACLE_HOME/dbs/initoraclee19.ora
oraclee19.__data_transfer_cache_size=0
oraclee19.__db_cache_size=1124073472
oraclee19.__inmemory_ext_roarea=0
oraclee19.__inmemory_ext_rwarea=0
oraclee19.__java_pool_size=0
oraclee19.__large_pool_size=16777216
oraclee19.__oracle_base='/ORA19/app/oracle'#ORACLE_BASE set from environment
oraclee19.__pga_aggregate_target=536870912
oraclee19.__sga_target=1610612736
oraclee19.__shared_io_pool_size=83886080
oraclee19.__shared_pool_size=369098752
oraclee19.__streams_pool_size=0
oraclee19.__unified_pga_pool_size=0
*.audit_file_dest='/ORA19/app/oracle/admin/oraclee19/adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='/ORA19/app/oracle/oradata/ORACLEE19/control01.ctl','/ORA19/app/oracle/oradata/ORACLEE19/control02.ctl'
*.db_block_size=8192
*.db_name='oraclee1'
*.db_unique_name='oraclee19'
*.diagnostic_dest='/ORA19/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=oraclee19XDB)'
*.local_listener='LISTENER_ORACLEE19'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=512m
*.processes=320
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=1536m
*.undo_tablespace='UNDOTBS1'
|
자동 통계 잡 확인 후 비활성화
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
SQL>
set lines 200 pages 1000
col client_name for a40
col attributes for a70
select client_name, status, attributes
from dba_autotask_client;
CLIENT_NAME STATUS ATTRIBUTES
---------------------------------------- -------- ----------------------------------------------------------------------
auto optimizer stats collection ENABLED ON BY DEFAULT, VOLATILE, SAFE TO KILL
auto space advisor ENABLED ON BY DEFAULT, VOLATILE, SAFE TO KILL
sql tuning advisor ENABLED ONCE PER WINDOW, ON BY DEFAULT, VOLATILE, SAFE TO KILL
SQL>
BEGIN
DBMS_AUTO_TASK_ADMIN.DISABLE(
client_name => 'auto optimizer stats collection',
operation => NULL,
window_name => NULL
);
END;
/
PL/SQL procedure successfully completed.
SQL>
set lines 200 pages 1000
col client_name for a40
col attributes for a70
select client_name, status, attributes
from dba_autotask_client;
CLIENT_NAME STATUS ATTRIBUTES
---------------------------------------- -------- ----------------------------------------------------------------------
auto optimizer stats collection DISABLED ON BY DEFAULT, VOLATILE, SAFE TO KILL
auto space advisor ENABLED ON BY DEFAULT, VOLATILE, SAFE TO KILL
sql tuning advisor ENABLED ONCE PER WINDOW, ON BY DEFAULT, VOLATILE, SAFE TO KILL
|
imsi 유저 생성
오라클 19c 테스트 시 사용하는 imsi 유저 생성 쿼리 ( https://positivemh.tistory.com/1017 )
imsi 유저에 v$parameter 확인 권한도 부여
1
2
3
|
SQL> grant select on V_$PARAMETER to imsi;
Grant succeeded.
|
1. _optimizer_gather_stats_on_load 파라미터 true 인 경우(기본값)
*참고로 테이블 생성, 데이터 삽입, 인덱스 생성등은 imsi 유저로 진행하고, 통계확인은 sysdba로 확인함
_optimizer_gather_stats_on_load 파라미터 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
SQL>
conn / as sysdba
set lines 200 pages 1000
col name for a50
col instance for a10
col desc for a80
select
a.ksppinm "name",
c.ksppstvl "instance",
a.ksppdesc "desc"
from x$ksppi a, x$ksppcv b, x$ksppsv c, v$parameter p
where 1=1
and a.indx=b.indx
and a.indx=c.indx
AND p.name(+) = a.ksppinm
AND SUBSTR(a.KSPPINM, 1, 1) = '_'
and a.ksppinm like '%_optimizer_gather_stats_on_load%'
order by 1;
name instance desc
-------------------------------------------------- ---------- --------------------------------------------------------------------------------
_optimizer_gather_stats_on_load TRUE enable/disable online statistics gathering
|
TRUE 임
imsi 유저 접속 후 테이블 생성
1
2
3
4
5
|
SQL>
conn imsi/imsi
create table t1 (col1 number, col2 varchar2(10));
Table created.
|
테이블 통계정보 확인(dba 권한계정으로)
1
2
3
4
5
6
7
8
9
10
|
SQL>
set lines 200 pages 1000
col table_name for a10
select table_name, num_rows, blocks, empty_blocks, avg_row_len, last_analyzed
from dba_tables
where table_name = 'T1';
TABLE_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_ROW_LEN LAST_ANAL
---------- ---------- ---------- ------------ ----------- ---------
T1
|
통계가 존재하지 않음
컬럼 통계정보 확인(dba 권한계정으로)
1
2
3
4
5
|
SQL> select table_name, column_name, num_distinct, density, num_nulls, avg_col_len, last_analyzed
from dba_tab_col_statistics
where table_name = 'T1';
no rows selected
|
통계가 존재하지 않음
t1 테이블에 데이터 단건 삽입
1
2
3
4
5
6
7
|
SQL> insert into t1 values (1,'A');
1 row created.
SQL> commit;
Commit complete.
|
테이블, 컬럼 통계정보 확인시 여전히 통계가 없음(쿼리 생략)
t1 테이블에 데이터 itas로 인서트로 삽입
1
2
3
4
5
6
7
|
SQL> insert into t1 select * from t1;
1 row created.
SQL> commit;
Commit complete.
|
테이블, 컬럼 통계정보 확인시 여전히 통계가 없음(쿼리 생략)
t1 테이블에 데이터 벌크인서트로 삽입
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
SQL>
DECLARE
TYPE tbl_ins IS TABLE OF t1%ROWTYPE INDEX BY BINARY_INTEGER;
w_ins tbl_ins;
BEGIN
FOR i IN 1..100000 LOOP
w_ins(i).col1 := i;
w_ins(i).col2 := dbms_random.string('x',5);
END LOOP;
FORALL i in 1..100000 INSERT INTO t1 VALUES w_ins(i);
COMMIT;
END;
/
PL/SQL procedure successfully completed.
|
테이블, 컬럼 통계정보 확인시 여전히 통계가 없음(쿼리 생략)
t1 테이블에 direct path insert 수행
1
2
3
4
5
6
7
|
SQL> insert /*+ append */ into t1 select * from t1;
100002 rows created.
SQL> commit;
Commit complete.
|
테이블, 컬럼 통계정보 확인시 여전히 통계가 없음(쿼리 생략)
인덱스 생성
1
2
3
|
SQL> create index t1_ix1 on t1(col1, col2);
Index created.
|
테이블, 컬럼 통계정보 확인시 여전히 통계가 없음(쿼리 생략)
인덱스 통계정보 확인
1
2
3
4
5
6
7
8
9
10
|
SQL>
set lines 200 pages 1000
col index_name for a10
select index_name, table_name, num_rows, distinct_keys, leaf_blocks, clustering_factor, last_analyzed
from dba_indexes
where table_name = 'T1';
INDEX_NAME TABLE_NAME NUM_ROWS DISTINCT_KEYS LEAF_BLOCKS CLUSTERING_FACTOR LAST_ANAL
---------- ---------- ---------- ------------- ----------- ----------------- ---------
T1_IX1 T1 200004 100001 611 200002 20-OCT-24
|
인덱스 통계정보는 자동으로 생성됨
t1_1 테이블 ctas로 생성
1
2
3
|
SQL> create table t1_1 as select * from t1;
Table created.
|
테이블 통계정보 확인(dba 권한계정으로)
1
2
3
4
5
6
7
8
9
10
|
SQL>
set lines 200 pages 1000
col table_name for a10
select table_name, num_rows, blocks, empty_blocks, avg_row_len, last_analyzed
from dba_tables
where table_name = 'T1_1';
TABLE_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_ROW_LEN LAST_ANAL
---------- ---------- ---------- ------------ ----------- ---------
T1_1 200004 456 0 11 20-OCT-24
|
자동으로 통계가 수집됨
컬럼 통계정보 확인(dba 권한계정으로)
1
2
3
4
5
6
7
8
9
10
11
|
SQL>
set lines 200 pages 1000
col column_name for a10
select table_name, column_name, num_distinct, density, num_nulls, avg_col_len, last_analyzed
from dba_tab_col_statistics
where table_name = 'T1_1';
TABLE_NAME COLUMN_NAM NUM_DISTINCT DENSITY NUM_NULLS AVG_COL_LEN LAST_ANAL
---------- ---------- ------------ ---------- ---------- ----------- ---------
T1_1 COL1 100824 9.9183E-06 0 5 20-OCT-24
T1_1 COL2 99104 .00001009 0 6 20-OCT-24
|
자동으로 컬럼 통계가 수집됨
플랜 확인(xplan 이용)
1
2
3
4
5
6
7
8
9
10
|
SQL> SELECT * FROM DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ADVANCED ALLSTATS LAST');
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time | A-Rows | A-Time | Buffers | Writes | OMem | 1Mem | Used-Mem |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 0 | CREATE TABLE STATEMENT | | 1 | | | 242 (100)| | 0 |00:00:00.13 | 2048 | 440 | | | |
| 1 | LOAD AS SELECT | T1_1 | 1 | | | | | 0 |00:00:00.13 | 2048 | 440 | 14M| 14M| 2070K (0)|
| 2 | OPTIMIZER STATISTICS GATHERING | | 1 | 197K| 3864K| 132 (1)| 00:00:01 | 200K|00:00:00.05 | 468 | 0 | 256K| 256K| 256K (0)|
| 3 | TABLE ACCESS FULL | T1 | 1 | 197K| 3864K| 132 (1)| 00:00:01 | 200K|00:00:00.01 | 468 | 0 | | | |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
플랜에 OPTIMIZER STATISTICS GATHERING 오퍼레이션이 표시됨
t1_2 테이블 생성 후 이 테이블에 direct path insert 수행
1
2
3
4
5
6
7
8
|
SQL> create table t1_2 (col1 number, col2 varchar2(10));
SQL> insert /*+ append */ into t1_2 select * from t1;
200004 rows created.
SQL> commit;
Commit complete.
|
테이블 통계정보 확인(dba 권한계정으로)
1
2
3
4
5
6
7
8
9
10
|
SQL>
set lines 200 pages 1000
col table_name for a10
select table_name, num_rows, blocks, empty_blocks, avg_row_len, last_analyzed
from dba_tables
where table_name = 'T1_2';
TABLE_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_ROW_LEN LAST_ANAL
---------- ---------- ---------- ------------ ----------- ---------
T1_2 200004 456 0 11 20-OCT-24
|
자동으로 통계가 수집됨
컬럼 통계정보 확인(dba 권한계정으로)
1
2
3
4
5
6
7
8
9
10
11
|
SQL>
set lines 200 pages 1000
col column_name for a10
select table_name, column_name, num_distinct, density, num_nulls, avg_col_len, last_analyzed
from dba_tab_col_statistics
where table_name = 'T1_2';
TABLE_NAME COLUMN_NAM NUM_DISTINCT DENSITY NUM_NULLS AVG_COL_LEN LAST_ANAL
---------- ---------- ------------ ---------- ---------- ----------- ---------
T1_2 COL1 100824 9.9183E-06 0 5 20-OCT-24
T1_2 COL2 99104 .00001009 0 6 20-OCT-24
|
자동으로 컬럼 통계가 수집됨
플랜 확인(xplan 이용)
1
2
3
4
5
6
7
8
9
10
|
SQL> SELECT * FROM DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ADVANCED ALLSTATS LAST');
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time | A-Rows | A-Time | Buffers | Writes | OMem | 1Mem | Used-Mem |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | 1 | | | 132 (100)| | 0 |00:00:00.07 | 982 | 440 | | | |
| 1 | LOAD AS SELECT | T1_2 | 1 | | | | | 0 |00:00:00.07 | 982 | 440 | 2070K| 2070K| 2070K (0)|
| 2 | OPTIMIZER STATISTICS GATHERING | | 1 | 197K| 3864K| 132 (1)| 00:00:01 | 200K|00:00:00.02 | 471 | 0 | 256K| 256K| |
| 3 | TABLE ACCESS FULL | T1 | 1 | 197K| 3864K| 132 (1)| 00:00:01 | 200K|00:00:00.01 | 468 | 0 | | | |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
플랜에 OPTIMIZER STATISTICS GATHERING 오퍼레이션이 표시됨
2. _optimizer_gather_stats_on_load 파라미터 false 인 경우
_optimizer_gather_stats_on_load_all 파라미터 false로 변경
1
2
3
|
SQL> alter system set "_optimizer_gather_stats_on_load" = FALSE;
System altered.
|
_optimizer_gather_stats_on_load 파라미터 확인
1
2
3
4
5
6
7
8
|
SQL>
col name for a40
col value for a20
select name, value from v$parameter where name = '_optimizer_gather_stats_on_load';
NAME VALUE
---------------------------------------- --------------------
_optimizer_gather_stats_on_load FALSE
|
테이블 생성
1
2
3
|
SQL> create table t2 (col1 number, col2 varchar2(10));
Table created.
|
테이블 통계정보 확인(dba 권한계정으로)
1
2
3
4
5
6
7
8
9
10
|
SQL>
set lines 200 pages 1000
col table_name for a10
select table_name, num_rows, blocks, empty_blocks, avg_row_len, last_analyzed
from dba_tables
where table_name = 'T2';
TABLE_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_ROW_LEN LAST_ANAL
---------- ---------- ---------- ------------ ----------- ---------
T2
|
통계가 존재하지 않음
컬럼 통계정보 확인(dba 권한계정으로)
1
2
3
4
5
|
SQL> select table_name, column_name, num_distinct, density, num_nulls, avg_col_len, last_analyzed
from dba_tab_col_statistics
where table_name = 'T2';
no rows selected
|
통계가 존재하지 않음
t2 테이블에 데이터 단건 삽입(쿼리 생략)
테이블, 컬럼 통계정보 확인시 여전히 통계가 없음(쿼리 생략)
t2 테이블에 데이터 itas로 인서트로 삽입(쿼리 생략)
테이블, 컬럼 통계정보 확인시 여전히 통계가 없음(쿼리 생략)
t2 테이블에 데이터 벌크인서트로 삽입(쿼리 생략)
테이블, 컬럼 통계정보 확인시 여전히 통계가 없음(쿼리 생략)
t2 테이블에 direct path insert 수행(쿼리 생략)
테이블, 컬럼 통계정보 확인시 여전히 통계가 없음(쿼리 생략)
인덱스 생성
1
2
3
|
SQL> create index t2_ix1 on t2(col1, col2);
Index created.
|
테이블, 컬럼 통계정보 확인시 여전히 통계가 없음(쿼리 생략)
인덱스 통계정보 확인
1
2
3
4
5
6
7
8
9
10
|
SQL>
set lines 200 pages 1000
col index_name for a10
select index_name, table_name, num_rows, distinct_keys, leaf_blocks, clustering_factor, last_analyzed
from dba_indexes
where table_name = 'T2';
INDEX_NAME TABLE_NAME NUM_ROWS DISTINCT_KEYS LEAF_BLOCKS CLUSTERING_FACTOR LAST_ANAL
---------- ---------- ---------- ------------- ----------- ----------------- ---------
T2_IX1 T2 200004 100001 611 200002 20-OCT-24
|
인덱스 통계정보는 자동으로 생성됨
t2_1 테이블 ctas로 생성
1
2
3
|
SQL> create table t2_1 as select * from t2;
Table created.
|
테이블 통계정보 확인(dba 권한계정으로)
1
2
3
4
5
6
7
8
9
10
|
SQL>
set lines 200 pages 1000
col table_name for a10
select table_name, num_rows, blocks, empty_blocks, avg_row_len, last_analyzed
from dba_tables
where table_name = 'T2_1';
TABLE_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_ROW_LEN LAST_ANAL
---------- ---------- ---------- ------------ ----------- ---------
T2_1
|
자동으로 통계가 수집되지 않음
컬럼 통계정보 확인(dba 권한계정으로)
1
2
3
4
5
6
7
8
|
SQL>
set lines 200 pages 1000
col column_name for a10
select table_name, column_name, num_distinct, density, num_nulls, avg_col_len, last_analyzed
from dba_tab_col_statistics
where table_name = 'T2_1';
no rows selected
|
자동으로 통계가 수집되지 않음
t2_2 테이블 생성 후 이 테이블에 direct path insert 수행
1
2
3
4
5
6
7
8
|
SQL> create table t2_2 (col1 number, col2 varchar2(10));
SQL> insert /*+ append */ into t2_2 select * from t2;
200004 rows created.
SQL> commit;
Commit complete.
|
테이블 통계정보 확인(dba 권한계정으로)
1
2
3
4
5
6
7
8
9
10
|
SQL>
set lines 200 pages 1000
col table_name for a10
select table_name, num_rows, blocks, empty_blocks, avg_row_len, last_analyzed
from dba_tables
where table_name = 'T2_2';
TABLE_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_ROW_LEN LAST_ANAL
---------- ---------- ---------- ------------ ----------- ---------
T2_2
|
자동으로 통계가 수집되지 않음
컬럼 통계정보 확인(dba 권한계정으로)
1
2
3
4
5
6
7
8
|
SQL>
set lines 200 pages 1000
col column_name for a10
select table_name, column_name, num_distinct, density, num_nulls, avg_col_len, last_analyzed
from dba_tab_col_statistics
where table_name = 'T2_2';
no rows selected
|
자동으로 통계가 수집되지 않음
3. _optimizer_compute_index_stats 파라미터 false 인 경우
_optimizer_compute_index_stats 파라미터 false로 변경
1
2
3
|
SQL> alter system set "_optimizer_compute_index_stats" = FALSE;
System altered.
|
_optimizer_compute_index_stats 파라미터 확인
1
2
3
4
5
6
7
8
|
SQL>
col name for a40
col value for a20
select name, value from v$parameter where name = '_optimizer_compute_index_stats';
NAME VALUE
---------------------------------------- --------------------
_optimizer_compute_index_stats FALSE
|
t4 테이블 생성
1
2
3
|
SQL> create table t4 as select * from T2;
Table created.
|
인덱스 생성
1
2
3
|
SQL> create index t4_ix1 on t4(col1, col2);
Index created.
|
테이블, 컬럼 통계정보 확인시 여전히 통계가 없음
인덱스 통계정보 확인
1
2
3
4
5
6
7
8
9
10
|
SQL>
set lines 200 pages 1000
col index_name for a10
select index_name, table_name, num_rows, distinct_keys, leaf_blocks, clustering_factor, last_analyzed
from dba_indexes
where table_name = 'T4';
INDEX_NAME TABLE_NAME NUM_ROWS DISTINCT_KEYS LEAF_BLOCKS CLUSTERING_FACTOR LAST_ANAL
---------- ---------- ---------- ------------- ----------- ----------------- ---------
T4_IX1 T4
|
인덱스 통계도 수집되지 않음
4. 통계 관련 파라미터 확인
gather_stat 이 포함되는 히든 파라미터들 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
SQL>
set lines 200 pages 1000
col name for a50
col instance for a10
col desc for a80
select
a.ksppinm "name",
c.ksppstvl "instance",
a.ksppdesc "desc"
from x$ksppi a, x$ksppcv b, x$ksppsv c, v$parameter p
where 1=1
and a.indx=b.indx
and a.indx=c.indx
AND p.name(+) = a.ksppinm
AND SUBSTR(a.KSPPINM, 1, 1) = '_'
and a.ksppinm like '%gather_stat%'
order by 1;
name instance desc
-------------------------------------------------- ---------- --------------------------------------------------------------------------------
_datapump_gather_stats_on_load FALSE Gather table statistics during Data Pump load rather thanimporting statistics fr
om the dump file. This should be set to TRUE in the lockdown profile in a DWCS e
nvironment.
_optimizer_gather_stats_on_conventional_config 0 settings for optimizer online stats gathering on conventional DML
_optimizer_gather_stats_on_conventional_dml TRUE optimizer online stats gathering for conventional DML
_optimizer_gather_stats_on_load FALSE enable/disable online statistics gathering
_optimizer_gather_stats_on_load_all FALSE enable/disable online statistics gathering for nonempty segments
_optimizer_gather_stats_on_load_hist FALSE enable/disable online histogram gathering for loads
_optimizer_gather_stats_on_load_index TRUE enable/disable online index stats gathering for loads
7 rows selected.
|
본문에서 조작한 _optimizer_gather_stats_on_load 파라미터 외에도 여러가지 파라미터들이 존재함
참고용
테스트 후 파라미터 원복
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
SQL> alter system set "_optimizer_compute_index_stats" = TRUE;
System altered.
SQL> alter system set "_optimizer_gather_stats_on_load" = TRUE;
System altered.
SQL> alter system reset "_optimizer_compute_index_stats";
System altered.
SQL> alter system reset "_optimizer_gather_stats_on_load";
System altered.
|
결론 :
테이블을 일반적인 방법으로 생성하거나 데이터를 삽입할때는 통계가 자동으로 생성되지 않음
하지만 ctas나 append insert 를 사용해 신규 테이블(통계정보가 없는)을 생성하거나 데이터를 삽입하는 경우
_optimizer_gather_stats_on_load 파라미터에 의해(기본값 true) 자동으로 통계정보가 생성됨
(기존테이블 데이터로 기존테이블에 append insert 시에는 통계가 자동으로 생성되지 않았음)
참고로 이 기능은 12c 부터 나온 Online Statistics Gathering 기능이라고함, 파티션 테이블에도 동일하게 동작함
그리고 인덱스 생성시에는 _optimizer_compute_index_stats 파라미터에 의해(기본값 true) 자동으로 통계정보가 생성됨
만약 이렇게 자동으로 통계정보가 생성되는것을 막고 싶은경우 이 파라미터들을 false 로 설정해두면됨
참조 :
2019634.1
https://www.oracle.com/technetwork/database/bi-datawarehousing/twp-bp-for-stats-gather-12c-1967354.pdf
https://oracle-base.com/articles/12c/online-statistics-gathering-for-bulk-loads-12cr1
https://positivemh.tistory.com/829
https://positivemh.tistory.com/1017
https://positivemh.tistory.com/1152
https://swpju.tistory.com/entry/오라클-자동-통계자료-수집-공간-어드바이스-튜닝-어드바이스-onoff
https://dbcafe.co.kr/w/index.php/오라클_자동_통계정보_스케줄
https://hrjeong.tistory.com/223
'ORACLE > Performance Tuning ' 카테고리의 다른 글
오라클 19c xplan(dbms_xplan.display_cursor) 실행계획 확인 방법 (0) | 2025.01.20 |
---|---|
오라클 데이터베이스 무료 분석 툴 SQLdb360 사용법 (0) | 2024.12.17 |
오라클 23ai append_values 힌트를 사용한 벌크 인서트 성능 비교 (0) | 2024.07.09 |
오라클 19c hash 조인 과다 실행시 부하 테스트 (0) | 2024.05.28 |
오라클 19c ordered_predicates 힌트 사용 확인(xplan, 10053 비교) (0) | 2024.05.24 |