706~717
emp와 dept 테이블을 조인할 때
파티션 여부에따라
둘다 되어있는경우 (full partition wise join)
한쪽만 파티셔닝 되있는 경우 (partial partion wise join)
한쪽만 파티셔닝 되있다면 파티셔닝이 되있는 테이블은 큰 테이블일 테고 다른쪽은 비교적 작은 테이블일테니 작은 테이블을 먼저 읽는다.
둘다 안되어 있는 경우로 나뉜다.(동적 파티셔닝 or 브로드캐스트)
temp 테이블 스페이스 공간이 부족 할 경우 테스트
■템프테이블 스페이스 파일 확인
set linesize 180
set pagesize 3000
col file_name for a40
select file_name,tablespace_name, autoextensible, maxbytes, maxblocks from dba_temp_files;
■템프 테이블 스페이스 값 조정
alter database tempfile 'C:\oracle\oradata\orcl\TEMP01.DBF' autoextend on maxsize 20m;
alter database tempfile 'C:\oracle\oradata\orcl\TEMP01.DBF' autoextend on maxsize unlimited;
alter database tempfile 'C:\oracle\oradata\orcl\TEMP01.DBF' autoextend off;
■ 실제 TEMPFILE SIZE 조회:
SQL> select tablespace_name, sum(bytes)/1024/1024 mb
from dba_temp_files
group by tablespace_name;
■ 실제 현재 사용량 조회(수시로 변함):
SQL> select ss.tablespace_name,sum((ss.used_blocks*ts.blocksize))/1024/1024 mb
from gv$sort_segment ss, sys.ts$ ts
where ss.tablespace_name = ts.name
group by ss.tablespace_name;
■ 백만건 랜덤 테이블 작성 (필요시 숫자 증가)
create table x1
as
select
cast(dbms_random.string('A',50) as varchar2(50)) col01
, cast(dbms_random.string('A',50) as varchar2(50)) col02
, cast(dbms_random.string('A',50) as varchar2(50)) col03
, cast(dbms_random.string('A',50) as varchar2(50)) col04
, cast(dbms_random.string('A',50) as varchar2(50)) col05
, cast(dbms_random.string('A',50) as varchar2(50)) col06
, cast(dbms_random.string('A',50) as varchar2(50)) col07
, cast(dbms_random.string('A',50) as varchar2(50)) col08
, cast(dbms_random.string('A',50) as varchar2(50)) col09
, cast(dbms_random.string('A',50) as varchar2(50)) col10
from dual
connect by level < 1000001
■ 소트작업 테스트
select * from x2 order by 1;
■결과
join 시 temp 스페이스 부족시 나는 ORA 에러
//템프 테이블 스페이스 꽉 찻을 떄 (정렬 작업중, hash join 테이블 스페이스 부족)
ORA-1652: unable to extend temp segment by 128 in tablespace TEMP
//비교용 insert 시 테이블 스페이스 부족 시
ORA-1652: unable to extend temp segment by 1024 in tablespace TS1
//비교용 사용자 생성 temp 테이블 스페이스 부족 (정렬작업)
ORA-1652: unable to extend temp segment by 128 in tablespace TEST_TEMP
세그먼트 숫자 128과 1024의 의미?