오라클 SQL 튜닝 & 서버 튜닝 #4

서버 튜닝

1. 메모리 크기 확인

SQL> select * from v$sgainfo;
NAME                                  BYTES RES
——————————– ———- —
Fixed SGA Size                      1248528 No
Redo Buffers                        7139328 No
Buffer Cache Size                 180355072 Yes
Shared Pool Size                   83886080 Yes
Large Pool Size                     4194304 Yes
Java Pool Size                      4194304 Yes
Streams Pool Size                         0 Yes
Granule Size                        4194304 No
Maximum SGA Size                  281018368 No
Startup overhead in Shared Pool    37748736 No
Free SGA Memory Available                 0

11 개의 행이 선택되었습니다.
SQL> show parameter shared_pool_size
NAME                                 TYPE
———————————— ——————————–
VALUE
——————————
shared_pool_size                     big integer
0
SQL> show parameter sga_target
NAME                                 TYPE
———————————— ——————————–
VALUE
——————————
sga_target                           big integer
268M

 

 

 

2. STATSPACK 패키지

개요

  • 9i부터 지원
  • UTLBSTAT.SQL (통계 시작), UTLESTAT.SQL (통계 끝) 보다 성능은 좋은듯
  • TABLE에 통계값을 저장 (UTL?STAT.SQL은 report.txt 파일로 생성됨)
  • TIMED_STATISTICS 파라메터가 TRUE로 설정되어 있어야

환경설정

C:\Users\user>sqlplus “/as sysdba”

SQL> show parameter timed_statistics
NAME                                 TYPE        VALUE
———————————— ———– ——————————
timed_statistics                     boolean     FALSE

SQL> alter system set timed_statistics = true;
시스템이 변경되었습니다.

SQL> show parameter timed_statistics
NAME                                 TYPE        VALUE
———————————— ———– ——————————
timed_statistics                     boolean     TRUE

SQL> @D:\oracle\product\10.2.0\db_1\RDBMS\admin\spcreate.sql
Choose the PERFSTAT user’s password
———————————–
Not specifying a password will result in the installation FAILING

perfstat_password의 값을 입력하십시오: inticube
inticube

Choose the Default tablespace for the PERFSTAT user
—————————————————
Below is the list of online tablespaces in this database which can
store user data.  Specifying the SYSTEM tablespace for the user’s
default tablespace will result in the installation FAILING, as
using SYSTEM for performance data is not supported.

Choose the PERFSTAT users’s default tablespace.  This is the tablespace
in which the STATSPACK tables and indexes will be created.

TABLESPACE_NAME                CONTENTS  STATSPACK DEFAULT TABLESPACE
—————————— ——— —————————-
EXAMPLE                        PERMANENT
SYSAUX                         PERMANENT *
USERS                          PERMANENT

Pressing <return> will result in STATSPACK’s recommended default
tablespace (identified by *) being used.

default_tablespace의 값을 입력하십시오: users

Using tablespace USERS as PERFSTAT default tablespace.

Choose the Temporary tablespace for the PERFSTAT user
—————————————————–
Below is the list of online tablespaces in this database which can
store temporary data (e.g. for sort workareas).  Specifying the SYSTEM
tablespace for the user’s temporary tablespace will result in the
installation FAILING, as using SYSTEM for workareas is not supported.

Choose the PERFSTAT user’s Temporary tablespace.

TABLESPACE_NAME                CONTENTS  DB DEFAULT TEMP TABLESPACE
—————————— ——— ————————–
TEMP                           TEMPORARY *

Pressing <return> will result in the database’s default Temporary
tablespace (identified by *) being used.

temporary_tablespace의 값을 입력하십시오: temp

….

1 개의 행이 만들어졌습니다.
1 개의 행이 만들어졌습니다.
1 개의 행이 만들어졌습니다.
1 개의 행이 만들어졌습니다.

….

패키지가 생성되었습니다.
오류가 없음.
패키지 본문이 생성되었습니다.
오류가 없음.

NOTE:
SPCPKG complete. Please check spcpkg.lis for any errors.

통계 결과 보기

SQL> connect perfstat/inticube
연결되었습니다.SQL> execute statspack.snap
PL/SQL 처리가 정상적으로 완료되었습니다.SQL> @D:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\spreport.sqlCurrent Instance
~~~~~~~~~~~~~~~~

DB Id    DB Name      Inst Num Instance
———– ———— ——– ————
1184836446 ORCL                1 orcl

Instances in this Statspack schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DB Id    Inst Num DB Name      Instance     Host
———– ——– ———— ———— ————
1184836446        1 ORCL         orcl         USER-PC2

Using 1184836446 for database Id
Using          1 for instance number

….

 

 

사용자 삽입 이미지

 

 

 

인스턴트 튜닝

오라클 구조

  • memory (-> instance 튜닝) + disk (-> database 튜닝, file 튜닝) + process (-> 기타튜닝)

 

공유 풀 영역 튜닝 : 파싱결과 저장

1) 공유풀 관련 parameter : shared_pool_size (파싱결과 저장), sga_target (0이면 메모리를 수동관리)

 

2) 라이브러리 캐시 영역의 튜닝
– 구문분석 정보(파싱결과, SQL 텍스트, 실행계획) 저장되는 영역
– alter system flush shared_pool : 공유 풀 영역 clear (단편화 제거 효과)
– 표준화된 sql를 꼭 도입해야함 (대소문자, 띄어쓰기 규칙, 공백…)
– full이 되면 wating 후에 오래된 구문분석를 삭제 (aging 메커니즘) –> 영역을 크게 잡아줘야함

SQL> select namespace, gets, gethits, gethitratio
2  from v$librarycache
3  where namespace = ‘SQL AREA’;

NAMESPACE             GETS    GETHITS GETHITRATIO
————— ———- ———- ———–
SQL AREA              4086        139    .0340186  ==> 90% 이하라면 튜닝이 필요함
int<SID>.ora 파일의 SHARED_POOL_SIZE

 

SQL> select sum(pins), sum(reloads), sum(reloads)/sum(pins)
2  from v$librarycache
3  where namespace = ‘SQL AREA’;

SUM(PINS) SUM(RELOADS) SUM(RELOADS)/SUM(PINS)   ==> pin (구문분석되어 저장된 정보,크면좋다)
———- ———— ———————-   ==> reload (동일 쿼리를 재사용)
92995           43              .00046239   ==> 재사용 비율이 1% 미만일때 성능이 좋음

 

SQL> select namespace, invalidations
  2  from v$librarycache
  3  where namespace = ‘SQL AREA’;

NAMESPACE       INVALIDATIONS
————— ————-
SQL AREA                  260  ==> 얼마나 자주 삭제/변경되었는지를 분석
                                   크거나 증가한다면 공유풀영역이 작아서 성능 저하됨을 의미

 

 

3) 자주 사용되는 SQL 캐쉬
– 불필요한 파싱을 제거
– CURSOR_SPACE_FOR_TIME : 기본값은 FALSE, Private SQL Area에 사용자의 sql이 저장됨, 라이브러리 캐쉬에는 오래된 sql이지만 이 값이 true 일때 private sql area에서 최신이면 지우지 않고 캐쉬됨
– CLOSE_CACHED_OPEN_CURSORS : 기본값은 FALSE, COMMIT 될때 구문분석정보를 라이브러리 캐시 영역에서 지움
– OPEN_CURSORS : 기본값은 9i에서 300, 동시에 오픈할 수 있는 커서의 수

4) 자주 사용되는 PL/SQL 캐쉬
– 스토어드 프로시저, 함수, 패키지, 트리거
– DBMS_SHARED_POOL : KEEP, UNKEEP
– sysdba에서 $HOME/rdbms/admin/dbmspool.sql 실행하여 패키지 설치후 사용

SQL> execute DBMS_SHARED_POOL.KEEP(‘SCOTT.CHECK_SAWON’);

SQL> select name , type, kept
2  from v$db_object_cache
3  where type in (‘PACKAGE’, ‘PROCEDURE’, ‘TRIGGER’, ‘PACKAGEBODY’);

NAME                       TYPE         KEP
————————– ———— —
MGMT_JOB_ENGINE            PACKAGE      NO
CHECK_SAWON                PROCEDURE    YES  ==> 캐쉬 하고 있음
MGMT_JOB_EXEC_UPDATE       TRIGGER      NO

 

3. 데이터 버퍼 캐시 영역 튜닝 : 결과 데이터 저장

1) 관련 parameter : DB_CACHE_SIZE, SGA_TARGET, SGA_INFO (버전마다 좀 틀리다)

2) 데이터 버퍼 캐시 튜닝

SQL> set autotrace traceonly
SQL> select * from big_emp;
SQL> select * from big_emp;
SQL> connect /as sysdba
연결되었습니다.

SQL> select ((phy.value)/(cur.value+con.value)) “Cache Hit Ratio”
  2  from v$sysstat cur, v$sysstat con, v$sysstat phy
  3  where cur.name = ‘db block gets’
  4  and con.name = ‘consistent gets’
  5  and phy.name = ‘physical reads’;

Cache Hit Ratio
—————
     .018842786  ==> 90% 이상일때 좋은 성능이다. 적으면 DB_CACHE_SIZE 키워라.
히트율 : 1 – (Physical Reads / (DB Block Gets + Consistent Gets))

3) 멀티 버퍼 캐시 영역 튜닝

  • SGA의 데이터 버퍼 캐시 영역은 일반적으로 1개의 영역 –> 성격/크기에 따라 여러개 생성하는 기법임
  • DB_CACHE_SIZE : 기존 구조와 동일 (여러 사용자가 공용으로 사용)
  • DB_KEEP_CACHE_SIZE : 자주 사용되는 놈들 상주
  • DB_KEEP_RECYCLE_SIZE : 가끔 사용되는 놈들, 작업완료 후 CLEAR됨
  • alter table [테이블명] storage (buffer_pool [keep | recycle]);
  • KEEP 설정시 : user_table에서 해당 테이블에서 사용되는 blocks 를 구하여 sum(blocks+1)을 포함할 만큼 충분한 크기로 설정
  • RECYCLE 설정시 : $HOME/rdbms/admin/catparr.sql 실행후 v$cache 에서 count(*) blocks 갯수의 1/4 만큼을 설정

 

멀티버퍼를 사용할 테이블 선택
자주 사용되는 놈
아주 가끔 사용되는 놈

멀티버퍼 크기를 산정하기 위해 사용중인 블럭크기 확인 (block * block_size)

SQL> analyze table big_emp compute statistics;
테이블이 분석되었습니다.

SQL> analyze table big_dept compute statistics;
테이블이 분석되었습니다.

SQL> select table_name, blocks from user_tables where table_name in (‘BIG_EMP’, ‘BIG_DEPT’);

TABLE_NAME                         BLOCKS
—————————— ———-
BIG_DEPT                                1
BIG_EMP                               182

SQL> SHOW PARAMETER DB_BLOCK_SIZE

NAME                                 TYPE
———————————— ——————————–
VALUE
——————————
db_block_size                        integer
8192

DBA로 접속하여 DB_KEEP_CACHE_SIZE, DB_RECYCLE_CACHE_SIZE 크기를 다시 잡고

SQL> CONNECT SYS/CHANGE_ON_INSTALL AS SYSDBA
SQL> show parameter db_cache_size
SQL> show parameter db_keep_cache_size
SQL> show parameter db_keep_recycle_size

SQL> ALTER SYSTEM SET DB_KEEP_CACHE_SIZE = 10M;   => 실제로는 12M 정도로 잡힌다.. (granule 단위)
SQL> ALTER SYSTEM SET DB_RECYCLE_CACHE_SIZE = 10M;

SQL> START C:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\catparr.sql
패키지가 생성되었습니다.
패키지 본문이 생성되었습니다.
PL/SQL 처리가 정상적으로 완료되었습니다.

SQL> select owner#, name, count(*) blocks
2  from v$cache
3  where name=’EMP’
4  group by owner#, name;

    OWNER# NAME                               BLOCKS
———- —————————— ———-
61 EMP                                     2

멀티버퍼 크기 설정 결과

SQL> select name, buffers from v$buffer_pool;

NAME                    BUFFERS
——————– ———-
KEEP                       1497
RECYCLE                    1497
DEFAULT                   17964

테이블을 변경하여 멀티버퍼 사용

SQL> connect scott/tiger
SQL> alter table big_emp storage (buffer_pool keep);
SQL> alter table big_dept storage (buffer_pool keep);
SQL> alter table account storage (buffer_pool recycle);

SQL> select table_name, buffer_pool
2  from user_tables
3  where table_name in (‘BIG_EMP’, ‘BIG_DEPT’);

TABLE_NAME                     BUFFER_
—————————— ——-
BIG_DEPT                       KEEP
BIG_EMP                        KEEP

충분히 해당 테이블의 쿼리를 돌리고 상태를 알아보자

SQL> set autotrace off
SQL> select name,
2  1-(physical_reads/(db_block_gets+consistent_gets)) “Multiple Ratio”
3  from v$buffer_pool_statistics
4  where db_block_gets + consistent_gets > 0;

NAME                 Multiple Ratio
——————– ————–
DEFAULT                  .988126107
RECYCLE                  .908533917

 

아래는 테이블 캐싱 기능임..
(왠만하면 아래의 테이블 캐싱기능보다는 위의 멀티버퍼캐시를 사용하는게 좋다)

SQL> alter table big_dept cache;  ==> 테이블 변경으로 캐쉬 사용
SQL> select table_name, cache from user_tables
2  where table_name in (‘BIG_EMP’, ‘BIG_DEPT’);

TABLE_NAME                     CACHE
—————————— ———-
BIG_DEPT                           Y
BIG_EMP                            N

SQL> select /*+CACHE*/ deptno, dname, loc from big_dept;   ==> 힌트를 사용해서 캐쉬 사용

 

4) 자주 사용되는 테이블을 캐싱한다.

  • 오래된 버전에서 지원되는 듯..
  • alter table dept cache;
  • select /*+CACHE*/ deptno, dname, loc from dept;
  • 멀티 버퍼 캐쉬와 동시에 사용못함.. 그냥 멀티버퍼 캐쉬를 쓰는게 좋을듯..

 

5) Multiple Block 구조를 생성

  • 9i부터 하나의 DB에 여러크기 Block 으로 table space 생성 가능함
  • 특정 크기 지정안하면 default 값으로 DB_BLOCK_SIZE 적용됨 (7:2k, 8i:4k, 9i:8k, 10g:8k)
  • 작은 블럭 : 경합 적음, Random 검색에 유리, 블럭헤드가 많이 발생 –> 많은 사용자, U/I/D 많은 환경유리
  • 큰 블럭 : 많은행 저장하므로 오버헤드 적음, 테이블 전체 스캔에 유리 –> 소수가 검색 위주로 사용하는 환경에 유리
  • create tablespace insa datafile ‘$HOME/dbs/insa01.dbf’ size 10m blocksize 4k;

SQL> connect /as sysdba
연결되었습니다.

세션이 변경되었습니다.

SQL> desc dba_tablespace;
ERROR:
ORA-04043: dba_tablespace 객체는 존재하지 않습니다.

SQL> desc dba_tablespaces
이름                                      널?      유형
—————————————– ——– —————————-
TABLESPACE_NAME                           NOT NULL VARCHAR2(30)
BLOCK_SIZE                                NOT NULL NUMBER
INITIAL_EXTENT                                     NUMBER
NEXT_EXTENT                                        NUMBER
MIN_EXTENTS                               NOT NULL NUMBER
MAX_EXTENTS                                        NUMBER
PCT_INCREASE                                       NUMBER
MIN_EXTLEN                                         NUMBER
STATUS                                             VARCHAR2(9)
CONTENTS                                           VARCHAR2(9)
LOGGING                                            VARCHAR2(9)
FORCE_LOGGING                                      VARCHAR2(3)
EXTENT_MANAGEMENT                                  VARCHAR2(10)
ALLOCATION_TYPE                                    VARCHAR2(9)
PLUGGED_IN                                         VARCHAR2(3)
SEGMENT_SPACE_MANAGEMENT                           VARCHAR2(6)
DEF_TAB_COMPRESSION                                VARCHAR2(8)
RETENTION                                          VARCHAR2(11)
BIGFILE                                            VARCHAR2(3)

SQL> create tablespace insa datafile ‘c:\insa01.dbf’ blocksize 4k;
create tablespace insa datafile ‘c:\insa01.dbf’ blocksize 4k
*
1행에 오류:
ORA-29339: 테이블스페이스 블록 크기 4096이(가) 구성된 블록 크기와 일치하지 않음
==> 10g에서 기본값은 8k 이다.. file도 memory도 같은 크기를 쓰므로.. 메모리 버퍼도 4k

SQL> show parameter db
NAME                                 TYPE           VALUE
———————————— ————– ——————
db_16k_cache_size                    big integer   0
db_2k_cache_size                     big integer   0
db_32k_cache_size                    big integer   0
db_4k_cache_size                     big integer   0
db_8k_cache_size                     big integer

SQL> alter system set db_4k_cache_size = 8M;

시스템이 변경되었습니다.

SQL> create tablespace insa datafile ‘c:\insa01.dbf’ size 10m blocksize 4k;

테이블스페이스가 생성되었습니다.

SQL> create table emp_test (A number) tablespace insa

 

4. 로그 버퍼 영역의 튜닝

  • 로그 버퍼 캐시 영역을 크게 할당
    • U/I/D 많을때 충분한 공간이 할당되어야 함
    • V$SESSION_WAIT 에서 SECOND_IN_WAITS 컬럼값이 증가하고, STATE컬럼이 WAITING 이면 경합중임을 나타냄
    • init<SID>.ora 파일에서 LOG_BUFFER 크기 변경한다.
  • 인덱스 생성시 NOLOGGING 적을 적용
    • 인덱스는 언제든지 테이블을 통해 다시 만들수 있으므로 로깅하지 말자
    • alter table emp10 NOLOGGING;
SQL> create table emp10(no number, name varchar(10)) NOLOGGING;
테이블이 생성되었습니다.

SQL> alter table emp10 LOGGING;
테이블이 변경되었습니다.

SQL> create index i_emp10 on emp10(no) NOLOGGING;
인덱스가 생성되었습니다.

SQL> alter index i_emp10 LOGGING;
인덱스가 변경되었습니다.

SQL> select index_name, logging from user_indexes where index_name = ‘I_EMP10’;
INDEX_NAME                     LOG
—————————— —
I_EMP10                        YES

 

 

서버튜닝 – I/O 튜닝

그냥 오라클 설치하면
C:\oracle\product\10.2.0\oradata\orcl
에 모든 tablespace가 들어있음.. 이거 잘 분리해서 사용해야 성능이 좋아짐..

디스크 분리
SQL> alter tablespace users offline;
테이블스페이스가 변경되었습니다.

 

파일을 다른 디스크로 복사한다.

SQL> alter tablespace users rename datafile
2  ‘C:\oracle\product\10.2.0\oradata\orcl\USERS01.DBF’ to ‘C:\USERS01.DBF’;
테이블스페이스가 변경되었습니다.

SQL> alter tablespace users online;SQL> SELECT * FROM DBA_DATA_FILES;
FILE_NAME
——————————————————————————–
FILE_ID TABLESPACE_NAME                     BYTES     BLOCKS STATUS
———- —————————— ———- ———- ———
RELATIVE_FNO AUT   MAXBYTES  MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS
———— — ———- ———- ———— ———- ———–
ONLINE_
——-
C:\INSA01.DBF
6 INSA                             10485760       2560 AVAILABLE
6 NO           0          0            0   10420224        2544
ONLINE

 

테이블스페이스 분리

SQL> set linesize 500
SQL> col owner format a10
SQL> col segment_name format a25
SQL> col tablespace_name format a15
SQL> select owner, segment_name, segment_type, tablespace_name
2  from dba_segments
3  where tablespace_name=’SYSTEM’ and owner=’SCOTT’;

OWNER      SEGMENT_NAME              SEGMENT_TYPE       TABLESPACE_NAME
———- ————————- —————— —————
SCOTT      SYS_C005393               INDEX              SYSTEM
SCOTT      ACCOUNT                   TABLE              SYSTEM
SCOTT      BIG_DEPT                  TABLE              SYSTEM
SCOTT      BIG_EMP                   TABLE              SYSTEM
SCOTT      DEPT                      TABLE              SYSTEM
SCOTT      EMP                       TABLE              SYSTEM
SCOTT      LARGE_ACCOUNT             TABLE              SYSTEM
SCOTT      SYS_C005399               INDEX              SYSTEM
SCOTT      LARGE_DEPT                TABLE              SYSTEM
SCOTT      LARGE_EMP                 TABLE              SYSTEM
SCOTT      S_CHANGGO                 TABLE              SYSTEM

OWNER      SEGMENT_NAME              SEGMENT_TYPE       TABLESPACE_NAME
———- ————————- —————— —————
SCOTT      PK_T_CHANGGO              INDEX              SYSTEM
SCOTT      S_CHULHAJISI              TABLE              SYSTEM
SCOTT      PK_T_CHULHAJISI           INDEX              SYSTEM
SCOTT      S_GOGAEK                  TABLE              SYSTEM
SCOTT      PK_T_GOGAEK               INDEX              SYSTEM
SCOTT      I_GOGAEK_SEX              INDEX              SYSTEM
SCOTT      S_JAEGO                   TABLE              SYSTEM
SCOTT      PK_T_JAEGO                INDEX              SYSTEM
SCOTT      S_MAECHE                  TABLE              SYSTEM
SCOTT      PK_T_MAECHE               INDEX              SYSTEM
SCOTT      S_PROMOTION               TABLE              SYSTEM

OWNER      SEGMENT_NAME              SEGMENT_TYPE       TABLESPACE_NAME
———- ————————- —————— —————
SCOTT      SYS_C005421               INDEX              SYSTEM
SCOTT      S_SANGPUM                 TABLE              SYSTEM
SCOTT      SYS_C005425               INDEX              SYSTEM
SCOTT      S_SPINOUT                 TABLE              SYSTEM
SCOTT      PK_T_SPINOUT              INDEX              SYSTEM
SCOTT      I_CHANGGO_CD_IPCHUL       INDEX              SYSTEM
SCOTT      S_SUJU                    TABLE              SYSTEM
SCOTT      PK_T_SUJU                 INDEX              SYSTEM
SCOTT      I_S_SUJU                  INDEX              SYSTEM
SCOTT      I_S_SUJU_CHULHAJISI_NO    INDEX              SYSTEM
SCOTT      S_SUJU_DTL                TABLE              SYSTEM

OWNER      SEGMENT_NAME              SEGMENT_TYPE       TABLESPACE_NAME
———- ————————- —————— —————
SCOTT      PK_T_SUJU_DTL             INDEX              SYSTEM
SCOTT      S_ZIPCODE                 TABLE              SYSTEM

 

Sort 공간을 확보하라

SQL> show parameter sort_area_size
NAME                                 TYPE                             VALUE
———————————— ——————————– ——————————
sort_area_size                       integer                          65536  ==> sort 영역 크기
SQL> show parameter sort_area_retained_size

NAME                                 TYPE                             VALUE
———————————— ——————————– ——————————
sort_area_retained_size              integer                          0  ==> sort 끝나고 줄어들 크기

SQL> show parameter pga
NAME                                 TYPE                             VALUE
———————————— ——————————– ——————————
pga_aggregate_target                 big integer                      88M ==> sort area size 가 작으면 여기까지 늘어난다 (10g)


SQL> select disk.value “Disk”, mem.value “Mem”, (disk.value / mem.value) * 100 “Ratio”
2  from v$sysstat mem, v$sysstat disk
3  where mem.name = ‘sorts (memory)’ and disk.name=’sorts (disk)’;
Disk        Mem      Ratio
———- ———- ———-
0      58218          0  ==> ration가 5% 미만이면 성능에 영향 안 미침
SQL> alter session set sort_area_size = 100;  ==> 이런식으로 바꾸면 위 쿼리의 Ratio가 높아지겠지

 

 

 

temporary tablespace 사용현황 분석하기

529~530 page 참고
v$sort_segment / v$sort_usage 참조

사용자마다 temporary tablespace를 나눠줘서 경합현상을 분산시키기
(create table 할때 temporary tablespace 의 기본값은 “temp”)

 

C:\oracle\product\10.2.0\admin\orcl\udump>sqlplus
SQL*Plus: Release 10.2.0.1.0 – Production on 목 6월 5 15:19:42 2008
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
사용자명 입력: system
암호 입력:

다음에 접속됨:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – Production
With the Partitioning, OLAP and Data Mining options


세션이 변경되었습니다.
SQL> create temporary tablespace temp10 tempfile ‘c:/temp10.dbf’ size 10M;
테이블스페이스가 생성되었습니다.


SQL> create temporary tablespace temp11 tempfile ‘c:/temp11.dbf’ size 10M;


테이블스페이스가 생성되었습니다.


SQL> alter user scott temporary tablespace temp10;


사용자가 변경되었습니다.


SQL> alter user hr temporary tablespace temp11;


사용자가 변경되었습니다.


SQL> connect scott/tiger
연결되었습니다.


세션이 변경되었습니다.


SQL> select username, temporary_tablespace
2  from dba_users
3  where username=’SCOTT’ or username=’HR’;


USERNAME                       TEMPORARY_TABLESPACE
—————————— ——————————
SCOTT                          TEMP10
HR                             TEMP11

위와같이 temporary tablespace 나눠도 사용자의 90% scott 이면??
==> “tablespace group” 을 만든다!! (10g 부터)

 

create temporary tablespace temp10 tempfile ‘c:/temp10.dbf’ size 10M
tablespace group temp_grp_1;
create temporary tablespace temp11 tempfile ‘c:/temp11.dbf’ size 10M
tablespace group temp_grp_1;alter user hr temporary tablespace temp_grp_1;

 

 

Undo Segment

SQL> show parameter undo
NAME                                 TYPE
———————————— ——————————–
VALUE
——————————
undo_management                      string
AUTO ==> 9i부터 자동으로 undo segment가 생성되고 관리됨
undo_retention                       integer
900
undo_tablespace                      string
UNDOTBS1

SQL> select SEGMENT_NAME, TABLESPACE_NAME, SEGMENT_ID from dba_rollback_segs;
SEGMENT_NAME                   TABLESPACE_NAME                SEGMENT_ID
—————————— —————————— ———-
SYSTEM                         SYSTEM    ==> Public Undo Segs          0
_SYSSMU1$                      UNDOTBS1  ==> Private Undo Segs         1
_SYSSMU2$                      UNDOTBS1                                2
_SYSSMU3$                      UNDOTBS1                                3
_SYSSMU4$                      UNDOTBS1                                4
_SYSSMU5$                      UNDOTBS1                                5
_SYSSMU6$                      UNDOTBS1                                6
_SYSSMU7$                      UNDOTBS1                                7
_SYSSMU8$                      UNDOTBS1                                8
_SYSSMU9$                      UNDOTBS1                                9
_SYSSMU10$                     UNDOTBS1                               10

 

 

사용자 삽입 이미지

 

CC BY-NC-ND 2.0 KR

이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용할 수 있습니다. 크리에이티브 커먼즈 라이선스

저작권과 관련된 파일요청 및 작업요청을 받지 않습니다.

댓글 남기기