OS환경 : Oracle Linux 7.6 (64bit)
DB 환경 : Oracle Database 19.10.0.0
방법 : 오라클 19c 일반테이블 및 lob테이블 컬럼 수동 extent 추가
alter table 테이블 modify 명령으로 수동으로 extent를 추가할 수 있음 이 방법을 테스트해봄
일반테이블 allocate extent 테스트
일반 테이블 생성
1
2
3
4
5
6
7
8
|
SQL>
drop table testtab purge;
create table testtab (no number)
storage
(
initial 64k
next 1m
);
|
데이터 삽입
1
2
3
|
SQL>
insert into testtab values (1);
commit;
|
일반 테이블 extent 확인
1
2
3
4
5
6
7
8
9
|
SQL>
set lines 200 pages 1000
col owner for a10
col segment_name for a15
select extent_id, owner, segment_name, bytes/1024/1024 mb from dba_extents where segment_name = 'TESTTAB';
EXTENT_ID OWNER SEGMENT_NAME MB
---------- ---------- --------------- ----------
0 IMSI TESTTAB .0625
|
extent가 1개 존재함
수동 extent 추가
1
2
3
|
SQL> alter table testtab allocate extent (size 10m);
Table altered.
|
일반 테이블 extent 재확인
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
SQL>
set lines 200 pages 1000
col owner for a10
col segment_name for a15
select extent_id, owner, segment_name, bytes/1024/1024 mb from dba_extents where segment_name = 'TESTTAB';
EXTENT_ID OWNER SEGMENT_NAME MB
---------- ---------- --------------- ----------
0 IMSI TESTTAB .0625
1 IMSI TESTTAB 1
2 IMSI TESTTAB 1
3 IMSI TESTTAB 1
4 IMSI TESTTAB 1
5 IMSI TESTTAB 1
6 IMSI TESTTAB 1
7 IMSI TESTTAB 1
8 IMSI TESTTAB 1
9 IMSI TESTTAB 1
10 IMSI TESTTAB 1
11 rows selected.
|
1m 짜리 extent 10개가 추가됨
allocate extent 값을 늘리면 한번에 더 많은 extent를 수동으로 추가할수도있음
lob컬럼이 있는 테이블 allocate extent 테스트
lob 테이블 생성
1
2
3
4
5
6
7
8
9
10
11
12
13
|
SQL>
drop table testlob purge;
create table testlob
(no number, cl clob) tablespace testlob
lob (cl) store as basicfile
(
storage
(initial 64k
next 1m
)
chunk 16384
tablespace testlob
);
|
데이터 삽입
1
2
3
|
SQL>
insert into testlob values (1,'a');
commit;
|
lob 세그먼트 이름 확인
1
2
3
4
5
6
7
8
|
SQL>
col segment_name for a30
col table_name for a15
select owner, table_name, segment_name from dba_lobs where table_name ='TESTLOB';
OWNER TABLE_NAME SEGMENT_NAME
---------- --------------- ------------------------------
IMSI TESTLOB SYS_LOB0000116144C00002$$
|
lob 테이블 extent 확인
1
2
3
4
5
6
7
8
9
|
SQL>
set lines 200 pages 1000
col owner for a10
col segment_name for a30
select extent_id, owner, segment_name, bytes/1024/1024 mb from dba_extents where segment_name = 'SYS_LOB0000116144C00002$$';
EXTENT_ID OWNER SEGMENT_NAME MB
---------- ---------- ------------------------------ ----------
0 IMSI SYS_LOB0000116144C00002$$ .0625
|
extent가 1개 존재함
수동 lob 컬럼 extent 추가
1
2
3
|
SQL> alter table testlob modify lob (cl) (allocate extent(size 10m));
Table altered.
|
lob 테이블 extent 재확인
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
SQL>
set lines 200 pages 1000
col owner for a10
col segment_name for a30
select extent_id, owner, segment_name, bytes/1024/1024 mb from dba_extents where segment_name = 'SYS_LOB0000116144C00002$$';
EXTENT_ID OWNER SEGMENT_NAME MB
---------- ---------- ------------------------------ ----------
0 IMSI SYS_LOB0000116144C00002$$ .0625
1 IMSI SYS_LOB0000116144C00002$$ 1
2 IMSI SYS_LOB0000116144C00002$$ 1
3 IMSI SYS_LOB0000116144C00002$$ 1
4 IMSI SYS_LOB0000116144C00002$$ 1
5 IMSI SYS_LOB0000116144C00002$$ 1
6 IMSI SYS_LOB0000116144C00002$$ 1
7 IMSI SYS_LOB0000116144C00002$$ 1
8 IMSI SYS_LOB0000116144C00002$$ 1
9 IMSI SYS_LOB0000116144C00002$$ 1
10 IMSI SYS_LOB0000116144C00002$$ 1
11 rows selected.
|
1m 짜리 extent 10개가 추가됨
수동 extent allocate 시 lock가 걸릴수도 있다고 답변을 받음
추후 대량으로 allocate 해보고 lock를 관찰해볼예정=> 아래 링크 참조
참조 : 740075.1
https://positivemh.tistory.com/835
https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/allocate_extent_clause.html
'ORACLE > Admin' 카테고리의 다른 글
오라클 19c awr 데이터 export 방법 (0) | 2022.07.04 |
---|---|
오라클 19c lob 테이블 allocate extent 시 lock 여부 확인 테스트 (0) | 2022.07.01 |
오라클 19c dba_users.password_versions이 user$ 값으로 변경해도 바뀔까 (2) | 2022.05.10 |
오라클 11g R2 client 19c 접속 19c client 11g R2 접속 시도 (2) | 2022.05.10 |
오라클 19c db oraInventory 재설정 (2) | 2022.01.06 |