OS 기본

 

1. OS 별 system 로그 위치

 

OS 

 로그 및 명령어

 비고

 HP-UX

 /var/adm/syslog/syslog.log

 /var/adm/syslog/OLDsyslog.log (Reboot 이전 로그)

 

 Solaris

 /var/adm/messages

 /var/adm/messages.# (OLD log)

 

 AIX

 $ errpt (기본)

 $ errpt -a (전체 Detail log)

 $ errpt -a j IDENTIFIER (특정 error identifier에 대한 로그 보기)

 error event log

 

 

2. Physical Memory 용량 확인

 

 OS

명령어 

비고 

HP-UX

# echo "phys_meme_pages/D" | adb /stand/vmunix /dev/kmem

 root 권한 필요

Solaris

$ prtconf | grep -i mem

 

AIX

$ lsdev -C | grep mem

$ lsattr -El mem0

 

 

 

3. Kernel/Network Parameter

 

OS 

 명령어

 변경

 HP-UX

 # sysdef

 # kmtune

 # sam (System Administration Manager)

 Solaris

 # sysdef -i

 /etc/system 파일 편집 (후 reboot)

 AIX

 # lsattr -E -l sys0

 # smitty (System Management Interface Tool)

 

 

4. OS Kernel parameter VS DB parameter

 

 분류

 OS Kernel parameter

 DB parameter

 비고

 Shared Memory

 Shmmax

 Shmmin

 Shmmni

 Shmseg

 Semmns

 Semmni

 Semmsl

 ...

 db_block_buffers

 large_pool_size

 shared_pool_size

 log_buffer

 sga_target

 sga_max_size

 

 ...

 

 File

 nfile

 maxfiles

 db_files

 

 

 Process

 nproc

 maxuprc

 processes

 

 

 ASync I/O

 max_async_ports

 disk_async_io 

 Raw device 사용시

 

shmmax : 1개의 shared memory segment의 최대 수치를 Byte 단위로 설정

shmmin : 1개의 shared memory segment의 최소 수치를 Byte 단위로 설정

shmmni : shared memory identifier의 갯수를 설정

shmseg : 1개의 프로세스에 attach 할 수 있는 shared memory segment의 최대 갯수를 설정

 

nfile : 시스템 전체에 동시 오픈될 수 있는 파일의 갯수 (Hard Limit)

maxfiles : 프로세스 1개에서 동시에 오픈할 수 있는 파일의 갯수 (Soft limit)

 

nproc : 시스템 전체의 총 프로세스 갯수 (Hard Limit)

maxuprc : USERID 별 총 프로세스 갯수

 

max_async_ports : 시스템 전체에서 Async I/O로 동작할 수 있는 파일의 개수, 초과 시 이후에 Access 되는 파일은 Sync I/O로 동작

 

 

'UniX' 카테고리의 다른 글

SED 명령어  (0) 2014.10.13
UNIX system process trace 방법  (0) 2014.04.14
HP-UX, IBM-AIX, SUN-Solaris 명령어 비교  (0) 2012.06.21
vi editor  (0) 2012.06.19
raw device to file system(dd copy) [펌]  (0) 2010.04.07

 

적용 대상 :  11.1.0.6 to 11.2.0.2 [Release 11.1 to 11.2]

오라클 11g 데이터베이스에는  세 가지 자동화된 유지 관리 작업이 있다 :

자동 최적기 통계 수집(Automatic Optimizer Statistics Collection)

통계가 없거나 오래된 통계를 가지고 있는 데이터베이스 안의 모든 스키마 객체에 대해 최적기 통계를 수집한다.이 작업에 의해 생성되어지는 통계는 SQL 실행 시 성능을 향상시키기 위하여 SQL 쿼리 최적기에 의해서 사용되어 진다.

자동 세그먼트 권고자 (Automatic Segment Advisor)

회수 가능한 공간을 가지는 세그먼트를 구별하고, 해당 세그먼트를 어떻게 조각모음 할 건지에 대한 권장 사항을 만든다. 최신의 권장 사항을 확보하거나 자동 세그먼트 권고자가 회수 가능한 공간을 검토 하지 않은 세그먼트의 권장 사항을 확보하기 위하여 수동으로 세그먼트 권고자를 실행할 수 있다.

자동 SQL 튜닝 권고자(Automatic SQL Tuning Advisor)

높은 부하를 가지는 SQL 문장의 성능을 검사하고, 그 문장을 어떻게 튜닝 할 것인지에 대한 권장 사항을 만든다. SQL 프로파일 권장 사항을 자동으로 구현하기 위하여 이 권고자를 구성할 수 있다.

Oracle10g에서 이 작업들은 별도의 작업으로 생성 되었으며 DBA_SCHEDULER_JOBS.JOB_NAME에서 볼 수 있었다.

SQL> select owner,job_name,schedule_name, schedule_type, enabled from dba_scheduler_jobs;

OWNER           JOB_NAME                       SCHEDULE_NAME                  SCHEDULE_TYP ENABL
--------------- ------------------------------ ------------------------------ ------------ -----
SYS             PURGE_LOG                      DAILY_PURGE_SCHEDULE           NAMED        TRUE
SYS             FGR$AUTOPURGE_JOB                                             CALENDAR     FALSE
SYS             GATHER_STATS_JOB               MAINTENANCE_WINDOW_GROUP       WINDOW_GROUP TRUE
SYS             AUTO_SPACE_ADVISOR_JOB         MAINTENANCE_WINDOW_GROUP       WINDOW_GROUP TRUE

GATHER_STATS_JOB, AUTO_SPACE_ADVISOR_JOB 가 enabled인것을 확인 할수 있다.

오라클 11g에서 변경되었다. 관련된 뷰는 DBA_AUTOTASK_WINDOW_CLIENTS이다.
이제 이 작업들은 시스템에서 실제로 실행 되고 난 후 생성된 이름을 DBA_SCHEDULER_JOBS에서 볼 수 있다.

SQL> desc DBA_AUTOTASK_WINDOW_CLIENTS
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 WINDOW_NAME                               NOT NULL VARCHAR2(30)
 WINDOW_NEXT_TIME                                   TIMESTAMP(6) WITH TIME ZONE
 WINDOW_ACTIVE                                      VARCHAR2(5)
 AUTOTASK_STATUS                                    VARCHAR2(8)
 OPTIMIZER_STATS                                    VARCHAR2(8)
 SEGMENT_ADVISOR                                    VARCHAR2(8)
 SQL_TUNE_ADVISOR                                   VARCHAR2(8)
 HEALTH_MONITOR                                     VARCHAR2(8)

OPTIMIZER_STATS가 Status of optimizer statistics gathering 을 나타낸다.

 select * from DBA_AUTOTASK_WINDOW_CLIENTS;

WINDOW_NAME          WINDOW_NEXT_TIME                         WINDOW_ACT
-------------------- ---------------------------------------- ----------
AUTOTASK_STATUS  OPTIMIZER_STATS  SEGMENT_ADVISOR  SQL_TUNE_ADVISOR
---------------- ---------------- ---------------- ----------------
HEALTH_MONITOR
----------------
MONDAY_WINDOW        17-FEB-14 10.00.00.000000 PM ASIA/SEOUL  FALSE
ENABLED          ENABLED          ENABLED          ENABLED
DISABLED

TUESDAY_WINDOW       18-FEB-14 10.00.00.000000 PM ASIA/SEOUL  FALSE
ENABLED          ENABLED          ENABLED          ENABLED
DISABLED

WEDNESDAY_WINDOW     12-FEB-14 10.00.00.000000 PM ASIA/SEOUL  FALSE
ENABLED          ENABLED          ENABLED          ENABLED
DISABLED

THURSDAY_WINDOW      13-FEB-14 10.00.00.000000 PM ASIA/SEOUL  FALSE
ENABLED          ENABLED          ENABLED          ENABLED
DISABLED

FRIDAY_WINDOW        14-FEB-14 10.00.00.000000 PM ASIA/SEOUL  FALSE
ENABLED          ENABLED          ENABLED          ENABLED
DISABLED

SATURDAY_WINDOW      15-FEB-14 06.00.00.000000 AM ASIA/SEOUL  FALSE
ENABLED          ENABLED          ENABLED          ENABLED
DISABLED

SUNDAY_WINDOW        16-FEB-14 06.00.00.000000 AM ASIA/SEOUL  FALSE
ENABLED          ENABLED          ENABLED          ENABLED
DISABLED

7 rows selected.


모든 윈도들의 모든 자동화된 유지 관리 작업을 설정하거나 해제하려면 인수 없이 설정 또는 해제 프로시저를 호출한다.

SQL> execute DBMS_AUTO_TASK_ADMIN.DISABLE;


특정한 유지 관리 작업을 해제하기 위하여 다음과 같이 해제 프로시저를 사용한다 :

SQL> BEGIN
       dbms_auto_task_admin.disable(
       client_name => 'sql tuning advisor',
       operation => NULL,
       window_name => NULL);
     END; 
    /


특정한 유지 관리 작업을 다시 설정하기 위하여 다음과 같이 설정 프로시저를 사용한다 :

SQL> BEGIN
       dbms_auto_task_admin.enable(
       client_name => 'sql tuning advisor',
       operation => NULL,
       window_name => NULL);
     END;
     /



client_name 인수에 사용할 작업 이름은 DBA_AUTOTASK_CLIENT 데이터베이스 딕셔너리 뷰 안에 나열되어 있다.

예제:
auto optimizer stats collection
auto space advisor
sql tuning advisor



또 다른 차이점은 사전에 정의된 스케줄러 윈도다 :

  •   Oracle10g : WEEKNIGHT_WINDOW and WEEKEND_WINDOW
  •   Oracle11g : MONDAY_WINDOW .... SUNDAY_WINDOW. 

WEEKNIGHT_WINDOW와 WEEKEND_WINDOW는 이전 버전과의 호환성을 위해 아직 존재한다.

--10g SQL> select window_name, repeat_interval, duration
  2  from dba_scheduler_windows;

WINDOW_NAME                    REPEAT_INTERVAL
------------------------------ --------------------------------------------------------------------------------
DURATION
---------------------------------------------------------------------------
WEEKNIGHT_WINDOW               freq=daily;byday=MON,TUE,WED,THU,FRI;byhour=22;byminute=0; bysecond=0
+000 08:00:00

WEEKEND_WINDOW                 freq=daily;byday=SAT;byhour=0;byminute=0;bysecond=0
+002 00:00:00

 

--11g SQL> select window_name, repeat_interval, duration
  2  from dba_scheduler_windows;

WINDOW_NAME          REPEAT_INTERVAL
-------------------- --------------------------------------------------------------------------------
DURATION
---------------------------------------------------------------------------
MONDAY_WINDOW        freq=daily;byday=MON;byhour=22;byminute=0; bysecond=0
+000 04:00:00

TUESDAY_WINDOW       freq=daily;byday=TUE;byhour=22;byminute=0; bysecond=0
+000 04:00:00

WEDNESDAY_WINDOW     freq=daily;byday=WED;byhour=22;byminute=0; bysecond=0
+000 04:00:00

THURSDAY_WINDOW      freq=daily;byday=THU;byhour=22;byminute=0; bysecond=0
+000 04:00:00

FRIDAY_WINDOW        freq=daily;byday=FRI;byhour=22;byminute=0; bysecond=0
+000 04:00:00

SATURDAY_WINDOW      freq=daily;byday=SAT;byhour=6;byminute=0; bysecond=0
+000 20:00:00

SUNDAY_WINDOW        freq=daily;byday=SUN;byhour=6;byminute=0; bysecond=0
+000 20:00:00

WEEKNIGHT_WINDOW     freq=daily;byday=MON,TUE,WED,THU,FRI;byhour=22;byminute=0; bysecond=0
+000 08:00:00

WEEKEND_WINDOW       freq=daily;byday=SAT;byhour=0;byminute=0;bysecond=0
+002 00:00:00


9 rows selected.

 

윈도가 열릴 때 지속 시간은 11g에서 변경되었다. 월요일 - 금요일은 오후 10시에서 오전 2시까지이며 토요일 - 일요일은 오전 6시에서 오전 2시까지다.

DBMS_SCHEDULER.SET_ATTRIBUTE 프로시저를 사용하여 데이터베이스 환경에 적절한 시간으로 사전에 정의된 유지 관리 윈도를 조절할 수 있다.
예제 : 다음 스크립트는 WEEKNIGHT_WINDOW를 자정부터 모든 평일 오전 8시로 변경하도록 한다. (윈도 기간은 8시간으로 변경되지 않는다) :
EXECUTE DBMS_SCHEDULER.SET_ATTRIBUTE(
'WEEKNIGHT_WINDOW',
'repeat_interval',
'freq=daily;byday=MON, TUE, WED, THU, FRI;byhour=8;byminute=0;bysecond=0');

각각의 평일 윈도는 DEFAULT_MAINTENANCE_PLAN이라는 사전에 정의된 리소스 계획을 가지고 있으며 관련 윈도가 열릴 때 활성화 될 것이다. 이것은 10g와 11g 간의 또 다른 차이점이다.


SQL> select window_name, resource_plan from dba_scheduler_windows;

WINDOW_NAME                    RESOURCE_PLAN
------------------------------ ------------------------------
MONDAY_WINDOW                  DEFAULT_MAINTENANCE_PLAN
TUESDAY_WINDOW                 DEFAULT_MAINTENANCE_PLAN
WEDNESDAY_WINDOW               DEFAULT_MAINTENANCE_PLAN
THURSDAY_WINDOW                DEFAULT_MAINTENANCE_PLAN
FRIDAY_WINDOW                  DEFAULT_MAINTENANCE_PLAN
SATURDAY_WINDOW                DEFAULT_MAINTENANCE_PLAN
SUNDAY_WINDOW                  DEFAULT_MAINTENANCE_PLAN
WEEKNIGHT_WINDOW
WEEKEND_WINDOW

9 rows selected.


SQL> select * from dba_rsrc_plans where plan='DEFAULT_MAINTENANCE_PLAN'
PLAN_ID PLAN NUM_PLAN_DIRECTIVES
---------- ------------------------------ -------------------
CPU_METHOD MGMT_METHOD
------------------------------ ------------------------------
ACTIVE_SESS_POOL_MTH PARALLEL_DEGREE_LIMIT_MTH
------------------------------ ------------------------------
QUEUEING_MTH SUB
------------------------------ ---
COMMENTS
--------------------------------------------------------------------------------
STATUS MAN
------------------------------ ---
11187 DEFAULT_MAINTENANCE_PLAN 4
EMPHASIS EMPHASIS
ACTIVE_SESS_POOL_ABSOLUTE PARALLEL_DEGREE_LIMIT_ABSOLUTE
FIFO_TIMEOUT NO
Default plan for maintenance windows that prioritizes SYS_GROUP operations and a
llocates the remaining 5% to diagnostic operations and 25% to automated maintena
nce operations.
YES


SQL> select * from DBA_RSRC_PLAN_DIRECTIVES where plan='DEFAULT_MAINTENANCE_PLAN';

PLAN GROUP_OR_SUBPLAN TYPE
------------------------------ ------------------------------ --------------
CPU_P1 CPU_P2 CPU_P3 CPU_P4 CPU_P5 CPU_P6 CPU_P7
---------- ---------- ---------- ---------- ---------- ---------- ----------
CPU_P8 MGMT_P1 MGMT_P2 MGMT_P3 MGMT_P4 MGMT_P5 MGMT_P6
---------- ---------- ---------- ---------- ---------- ---------- ----------
MGMT_P7 MGMT_P8 ACTIVE_SESS_POOL_P1 QUEUEING_P1 PARALLEL_DEGREE_LIMIT_P1
---------- ---------- ------------------- ----------- ------------------------
SWITCH_GROUP SWITC SWITCH_TIME SWITCH_IO_MEGABYTES
------------------------------ ----- ----------- -------------------
SWITCH_IO_REQS SWITC MAX_EST_EXEC_TIME UNDO_POOL MAX_IDLE_TIME
-------------- ----- ----------------- ---------- -------------
MAX_IDLE_BLOCKER_TIME SWITCH_TIME_IN_CALL
--------------------- -------------------
COMMENTS
--------------------------------------------------------------------------------
STATUS MAN
------------------------------ ---
DEFAULT_MAINTENANCE_PLAN SYS_GROUP CONSUMER_GROUP
100 0 0 0 0 0 0
0 100 0 0 0 0 0
0 0
FALSE
FALSE

Directive for system operations
NO

DEFAULT_MAINTENANCE_PLAN OTHER_GROUPS CONSUMER_GROUP
0 70 0 0 0 0 0
0 0 70 0 0 0 0
0 0
FALSE
FALSE

Directive for all other operations
NO

DEFAULT_MAINTENANCE_PLAN ORA$AUTOTASK_SUB_PLAN PLAN
0 25 0 0 0 0 0
0 0 25 0 0 0 0
0 0
FALSE
FALSE

Directive for automated maintenance tasks
NO

DEFAULT_MAINTENANCE_PLAN ORA$DIAGNOSTICS CONSUMER_GROUP
0 5 0 0 0 0 0
0 0 5 0 0 0 0
0 0
FALSE
FALSE

Directive for automated diagnostic tasks
NO

* 11.2.0.3 에서는 SYS_GROUP 의 CPU_P1, MGMT_P1이 75로 변경 됨


10g와 11g의 변경사항 요약 : 

제목 10g 11g
작업 DBA_SCHEDULER_JOBS에서 별도의 작업 AUTOTASKS는 접두사 'ORA$AT'라는 이름을 가지며 실행되었을 때 작업처럼 볼 수 있다.
유지 관리 윈도 2개의 윈도, 평일 밤과 주말 매일 자신의 윈도를 가진다.
자원 관리자(Resource manager) 기본으로 설정되지 않음 모든 평일 윈도를 위한 사전 정의된 자원 계획
     


관련된 뷰:


DBA_AUTOTASK_CLIENT
DBA_AUTOTASK_CLIENT_HISTORY
DBA_AUTOTASK_CLIENT_JOB
DBA_AUTOTASK_JOB_HISTORY
DBA_AUTOTASK_OPERATION
DBA_AUTOTASK_SCHEDULE
DBA_AUTOTASK_TASK
DBA_AUTOTASK_WINDOW_CLIENTS
DBA_AUTOTASK_WINDOW_HISTORY


 

'OraclE' 카테고리의 다른 글

rman 백업 확인  (0) 2014.03.27
[펌] DBMS_XPLAN.DISPLAY_CURSOR  (0) 2014.03.24
Temporary Tablespace Group(10g)  (0) 2013.11.20
db link 사용시 lob타입 테이블 문제  (0) 2012.08.03
append 힌트의 효용성  (0) 2012.06.26

Temporary Tablespace Group(10g)
 
Oracle Database 10g

Temporary Tablespace Group(10g)
===============================

 
1. 개념
 
Temporary Tablespace 들을 한 곳으로 모아 놓고 관리한다는 개념이다.
 
2. 특징
 
1) 적어도 한 개의 Temporary tablespace를 포함한다. 얼마나 많은 tablespace를 포함할 수 있는가에 대한 제한은 없다.
 
2) 일반적인 Tablespace와 동일한 성질을 갖는다. 다른 Tablespace 이름과 혼용할 수 없다.
 
3) Temporary Tablespace Group을 직접 생성할 수 있는 방법은 없다. 단지, 최초의 Temporary tablespace가 그 Group에 할당됨을 표현할 때 자동적으로 생성되고, 마지막 Temporary tablespace가 제거될 때 삭제된다.
 
3. 장점
 
1) 사용자가 동시에 다른 세션을 통해서 여러 개의 Temporary tablespace를 사용할 수 있다.
 
2) Parallel Operation의 slave process들이 다중 Temporary tablespace를 사용할 수 있다.
 
3) 데이터베이스 수준에서 다중 Default temporary tablespace를 지정할 수 있다.
그리하여, DBA는 하나 이상의 Default temporary tablespace를 지정할 수 있고, 하나의 SQL operation은 sorting 작업을 할 때 하나 이상의 temporary tablespace를 사용할 수 있다. 이러한 기능은 특정 operation이 temporary tablespace의 공간을 모두 소진하는 상황을 미연에 방지할 수 있다.
 
4. 사용 예
 
1) 생성 예
 
SQL> SELECT group_name, tablespace_name
  2  FROM DBA_TABLESPACE_GROUPS;
no rows selected
 
SQL> select file_name, bytes from dba_temp_files;
FILE_NAME         BYTES
------------------------------------------------   ---------
C:ORACLEPRODUCT10.2.0ORADATASTBYTEMP01.DBF   20971520
 
SQL> CREATE TEMPORARY TABLESPACE temp1
  2  TEMPFILE 'C:ORACLEPRODUCT10.2.0ORADATASTBYTEMP101.DBF' SIZE 10M
  3  TABLESPACE GROUP group1;
Tablespace created.
 
SQL> select file_name, bytes from dba_temp_files;
FILE_NAME         BYTES
------------------------------------------------   ---------
C:ORACLEPRODUCT10.2.0ORADATASTBYTEMP01.DBF   20971520
C:ORACLEPRODUCT10.2.0ORADATASTBYTEMP101.DBF  10485760
 
SQL> SELECT group_name, tablespace_name
  2  FROM DBA_TABLESPACE_GROUPS;
GROUP_NAME                     TABLESPACE_NAME
------------------------------ ---------------
GROUP1                         TEMP1
 
SQL> CREATE TEMPORARY TABLESPACE temp2
  2  TEMPFILE 'C:ORACLEPRODUCT10.2.0ORADATASTBYTEMP201.DBF' SIZE 10M
  3  TABLESPACE GROUP group2;
Tablespace created.
 
SQL> select file_name, bytes from dba_temp_files;
FILE_NAME         BYTES
------------------------------------------------   ---------
C:ORACLEPRODUCT10.2.0ORADATASTBYTEMP01.DBF   20971520
C:ORACLEPRODUCT10.2.0ORADATASTBYTEMP101.DBF  10485760
C:ORACLEPRODUCT10.2.0ORADATASTBYTEMP201.DBF  10485760
 
SQL> SELECT group_name, tablespace_name      
  2  FROM DBA_TABLESPACE_GROUPS;
GROUP_NAME                     TABLESPACE_NAME
------------------------------ ---------------
GROUP1                         TEMP1
GROUP2                         TEMP2
 
SQL> CREATE TEMPORARY TABLESPACE temp3
  2  TEMPFILE 'C:ORACLEPRODUCT10.2.0ORADATASTBYTEMP301.DBF' SIZE 10M
  3  TABLESPACE GROUP '';
Tablespace created.
 
SQL> SELECT group_name, tablespace_name      
  2  FROM DBA_TABLESPACE_GROUPS;
GROUP_NAME                     TABLESPACE_NAME
------------------------------ ---------------
GROUP1                         TEMP1
GROUP2                         TEMP2
주) Group 이름을 ''로 지정하는 것은 group에 포함시키지 않겠다는 의미이다.
즉, CREATE TEMPORARY TABLESPACE temp3 TEMPFILE 'C:ORACLEPRODUCT10.2.0ORADATASTBYTEMP301.DBF' SIZE 10M ;
명령과 동일하다.
 
2) Group을 변경, 사용자에게 할당하는 예
 
SQL> ALTER TABLESPACE temp3 TABLESPACE GROUP group2;
Tablespace altered.
 
SQL> SELECT group_name, tablespace_name
  2  FROM DBA_TABLESPACE_GROUPS;
GROUP_NAME                     TABLESPACE_NAME
------------------------------ ---------------
GROUP1                         TEMP1
GROUP2                         TEMP2
GROUP2                         TEMP3
 
SQL> ALTER TABLESPACE temp2 TABLESPACE GROUP '';
Tablespace altered.
 
SQL> SELECT group_name, tablespace_name
  2  FROM DBA_TABLESPACE_GROUPS;
GROUP_NAME                     TABLESPACE_NAME
------------------------------ ---------------
GROUP1                         TEMP1
GROUP2                         TEMP3
 
SQL> ALTER TABLESPACE temp1 TABLESPACE GROUP group2;
Tablespace altered.
 
SQL> SELECT group_name, tablespace_name
  2  FROM DBA_TABLESPACE_GROUPS;
GROUP_NAME                     TABLESPACE_NAME
------------------------------ ---------------------
GROUP2                         TEMP1
GROUP2                         TEMP3
 
SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE group2;
Database altered.
 
SQL> CREATE USER sun IDENTIFIED BY sun
  2  DEFAULT TABLESPACE users        
  3  TEMPORARY TABLESPACE group2;
User created.
 
SQL> select username, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE
  2  from dba_users         
  3  where username = 'SUN';
USERNAME     DEFAULT_TABLESPACE      TEMPORARY_TABLESPACE
-----------  -------------------     ---------------------
SUN          USERS                   GROUP2

주) 일반적인 Temporary tablespace가 아니라, Temporary tablespace Group이 지정된 것을 확인할 수 있다.
 
<DBA Session>
SQL> grant connect, resource, dba to SUN;
Grant succeeded.
 
SQL> select username, session_num, tablespace from v$sort_usage;
no rows selected
 
<SUN Session 1>
SQL> select a.table_name, b.table_name from dba_tables a, dba_tables b;
 
<SUN Session 2> 동시에
SQL> select a.table_name, b.table_name from dba_tables a, dba_tables b;

<DBA Session>
SQL> select username, session_num, tablespace from v$sort_usage;
USERNAME                       SESSION_NUM TABLESPACE
------------------------------ ----------- ----------
SUN                                     19 TEMP1
SUN                                     78 TEMP3
주) SUN 유저가 두개의 서로 다른 temporary tablespaces에서 Sort를 진행중이다.

 

추가 테스트 결과 (11gR2)

 

hole temp tablespace

temp tablespace group

temp 파일 개수 / TBS 개수

10GB * 12 / 1

10GB * 1 / 12

71GB 인덱스 생성 시간( parallel 12)

00:19:51.66

00:18:11.42

사이즈가 많이 크지는 않아서 갭은 별로 없지만 성능 향상이 있습니다.

 구글 검색 결과 temp tablespace group 사용시에

Reads 66%, Writes 29%의 성능 향상을 보인다는 테스트 결과도 있습니다.

'OraclE' 카테고리의 다른 글

[펌] DBMS_XPLAN.DISPLAY_CURSOR  (0) 2014.03.24
11g 스케줄러 자동작업 dbms_auto_task_admin  (0) 2014.02.12
db link 사용시 lob타입 테이블 문제  (0) 2012.08.03
append 힌트의 효용성  (0) 2012.06.26
datapump  (0) 2012.06.20

 

2012. 1. 30PROBLEMPUBLISHED3

 

In this Document
  Symptoms
  Changes
  Cause
  Solution
  References


Applies to:

Oracle Server - Enterprise Edition - Version: 10.2.0.1 and later   [Release: 10.2 and later ]
Information in this document applies to any platform.

Symptoms

When trying to select from a remote table, getting  'ORA-22992: cannot use LOB locators selected from remote tables.' as following:

1. From the remote database:
create user cris identified by cris;
grant connect, resource to cris;
conn cris/cris
create table test(id number, obj clob);
insert into test values(1,'sdfsdfsfd');
insert into test values(2, 'sdfsdfsfdvfgdfvgdfvdf');
commit;

2 From the local database:


create user cris identified by cris;
grant connect, resource, create database link to cris;
conn cris/cris
create database link torem using 'identification of the remote database in the tnsnames.ora';

set serveroutput on

declare
my_ad clob;
BEGIN
SELECT obj INTO my_ad FROM test@torem where id=1;
dbms_output.put_line(my_ad);
END;
/

*
ERROR at line 1:
ORA-22992: cannot use LOB locators selected from remote tables
ORA-06512: at line 4

Changes

Cause

Trying to select LOB column from a table at a remote site using dblink.

Solution

The following link to documentation states that you can successfully select form lob objects through dblink All what you have to do is to receive the LOB objects into variables defined as CHAR or RAW.

Oracle� Database Application Developer's Guide - Large Objects  10g Release 2 (10.2)
Part Number B14249-01

Restrictions Removed in Oracle Database 10g Release 2 

http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14249/adlob_what.htm#CHDGGBCG

http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14249/adlob_data_interface.htm#CACIFCJF

Here are the steps of how to do that:

1. Selecting a CLOB object through the dblink:

 1.1 From the remote database:


create user cris identified by cris;
grant connect, resource to cris;
conn cris/cris
create table test(id number, obj clob);
insert into test values(1,'sdfsdfsfd');
insert into test values(2, 'sdfsdfsfdvfgdfvgdfvdf');
commit;

1.2 From the local database:


create user cris identified by cris;
grant connect, resource, create database link to cris;
conn cris/cris
create database link torem using 'identification of the remote database in the tnsnames.ora';

set serveroutput on

declare
my_ad varchar(6000);
BEGIN
SELECT obj INTO my_ad FROM test@torem where id=1;
dbms_output.put_line(my_ad);
END;
/

2. Selecting a BLOB object through the dblink:

 2.1 From the remote database:

create user cris identified by cris;
grant connect, resource to cris;
conn cris/cris
create table test2(id number, obj blob);
insert into test2 values(1,empty_blob());
insert into test2 values(2,empty_blob());
commit;

2.2 From the local database:


create user cris identified by cris;
grant connect, resource, create database link to cris;
conn cris/cris
create database link torem using 'identification of the remote database in the tnsnames.ora';

declare
my_ad raw(50);
BEGIN
SELECT obj INTO my_ad FROM test2@torem where id=1;
END;
/

References

NOTE:158924.1 - Referencing DBMS_LOB.COPY() Against Remote Table Fails With ORA-22992

 

'OraclE' 카테고리의 다른 글

11g 스케줄러 자동작업 dbms_auto_task_admin  (0) 2014.02.12
Temporary Tablespace Group(10g)  (0) 2013.11.20
append 힌트의 효용성  (0) 2012.06.26
datapump  (0) 2012.06.20
DBMS_STATS  (0) 2012.06.13

+ Recent posts