practice7-Optimizing Sort Operations
작성자 관리자 작성시간 2003-08-13 12:33:20
 

$ sqlplus system/manger

SQL> select name,value from v$sysstat
  2  where name like 'sorts%';

NAME                                                                  VALUE
---------------------------------------------------------------- ----------
sorts (memory)                                                        17833
sorts (disk)                                                              0
sorts (rows)                                                        128722

<-- 이 session은 그대로 둔 상태에서

2. sh/sh session 을 새롭게 open 하여 Disk sort를 유발한다.

$ sqlplus sh/sh

SQL> alter session set sort_area_size=512;

SQL> !cat $HOME/LABS/ptw9i/lab07_02.sql
select * from dba_objects
order by object_id;

SQL> @$HOME/LABS/ptw9i/lab07_02.sql
<-- 날센다.. 만약 여기서 error가 난다면 temp tbs의 size가 작기 때문이다.
alter database tempfile '$HOME/dbs/temp01.dbs' resize 20M;
<-- 이 session은 그대로 둔다.

-----------------------------------------------------------
2-1. disk sort를 유도하는 동안 system user session 으로 이동하여 다음을 query 한다.
- 진행중 query 하고 끝나면 또!

SQL> select tablespace_name,current_users,used_extents,free_extents
  2  from v$sort_segment;

TABLESPACE_NAME                CURRENT_USERS USED_EXTENTS FREE_EXTENTS
------------------------------- ------------- ------------ ------------
TEMP                                        0            0            0

------------------------------------------------------------

3. 다시 system/manager session으로 이동하여 이전 sorts (memory), sorts(disk)와 비교한다.
또한 V$SORT_SEGMENT를 조회한다.

SQL> select name,value from v$sysstat
  2  where name like 'sorts%';

NAME                                                                  VALUE
---------------------------------------------------------------- ----------
sorts (memory)                                                        17988
sorts (disk)                                                              0
sorts (rows)                                                        136304  <--- 이 session도 그데로 둔다.

4. 다시 sh/sh session 으로 이동하여 Memory sort를 유도하기 위해 sort_area_size를 늘려 본다.

SQL> alter session set sort_area_size = 512000;

SQL> @LABS/ptw9i/lab07_02.sql

5. system/manager 로 이동하여

SQL> select name,value from v$sysstat
  2  where name like 'sorts%';

NAME                                                                  VALUE
---------------------------------------------------------------- ----------
sorts (memory)                                                        18045
sorts (disk)                                                              0
sorts (rows)                                                        143750

6. system/manager session 으로 이동하여 자동 PGA 메모리에 대한 parameter를 구성한다.

SQL> alter system set pga_aggregate_target = 10M;

SQL> alter system set workarea_size_policy = auto;


목록 | 입력 | 수정 | 답변 | 삭제