| |
$ 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;
|