Oracle/RAC2015. 8. 18. 11:19

 

 

 

Oracle 버전에 따라 다르다.

 

1) 10g R2

-----------

instance_groups 설정

parallel_instance_group 설정

 

 

2) 11g R1

-----------

 

sid별로 parallel_instance_group을 설정

ALTER SYSTEM SET PARALLEL_INSTANCE_GROUP=testdb1srv sid='TESTDB1';

ALTER SYSTEM SET PARALLEL_INSTANCE_GROUP=testdb2srv sid='TESTDB2';

※ instance_groups 더이상 사용되지 않음.

 

 

3) 11g R2

-----------

 

parallel_force_local 파라미터만 이용 (default = false)

 

모든 노드에서 실행되게 하려면

parallel_force_local 파라미터를 true로 변경

 

출처 : http://commit.co.kr/i/entry/119

'Oracle > RAC' 카테고리의 다른 글

oracle RAC ip 변경  (0) 2021.11.23
오라클 RAC의 서비스 와 백그라운드 프로세스  (0) 2019.01.22
CSS 파라미터  (1) 2013.08.12
[펌] crs 로그 위치  (0) 2013.02.07
CRS 소프트웨어 버전 확인  (0) 2011.09.08
Posted by 자수성가한 부자
Oracle/Backup & Recovery2015. 6. 16. 17:17

 

 

오라클에서 Import 성능 향상시키는 방법


Oracle에서 테이블의 재구성(table reorganization) 또는 데이터 이동(data migration)을 하는 경우 많은 양의 데이터를 import할 경우가 있다. 성능향상을 위한 몇 가지 방법을 소개하니 참고하기 바란다.

1. 파라미터 파일에서 BUFFER SIZE를 크게 한다. 이렇게 함으로서 디스크 I/O가 줄게되어 성능이 개선된다.

2. 항상 indexes=N로 한다. 테이블의 데이터를 먼저 import한 후 Oracle Server에서 index를 rebuild 하는 것이 훨씬 좋다.

3. 파라미터 파일에서 COMMIT=N로 한다. 이렇게 하면 큰 ROLLBACK SEGMENT를 필요로 하지만 각각의 BUFFER를 import후 commit하는 것이 아니라 TABLE을 몽땅 import후 commit하게 된다.

4. 하나의 큰 dedicated rollback segment를 쓰는 것이 좋다. 이렇게 하기 위해서는 다른 rollback segment는 offline 시키면 된다. 하나뿐인 rollback segment의 사이즈는 가장 큰 테이블의 50% 정도 잡으면 된다.

5. import가 끝날 때까지 DB운영을 NOARCHIVELOG mode로 한다.

 

출처 : http://gnujava.com/board/article_view.jsp?article_no=365&board_no=17&table_cd=EPAR06&table_no=06

Posted by 자수성가한 부자
Oracle/기타2015. 6. 5. 15:50

 

 

 

Q :

 NLS_CHARACTERSET과 NLS_NCHAR_CHARACTER의 차이점은 무엇인가요?

 

A :

 NLS_CHARACTERSET은 char, varchar와 같은 데이터 타입에서 사용하는 문자집합이고,

 NLS_NCHAR_CHARACTERSET은 nchar, nvarchar와 같은 데이터 타입에서 사용하는 문자집합입니다.

 일반적으로 사용하는 문자집합은 NLS_CHARACTERSET에 설정을 하는데,

 한글과 영어를 사용할 경우에는 KO16KSC5601, KO16MSWIN949가 있고,

 한글과 영어를 제외한 문자집합을 사용할 경우에는 UTF8 같은 문자집합이나, 각 나라의 언어에 맞는 문자집합을 설정하면 됩니다.

 

 

참고문서

---------

 http://www.enjoydev.net/xe_new/index.php?mid=en_devboard&order_type=desc&document_srl=289&listStyle=viewer

Posted by 자수성가한 부자
Oracle/Admin2015. 4. 30. 13:30

 

 

Q :

  테이블의 move시에 해당 테이블에 걸려 있는 인덱스의 상태는 어떻게 될까? 

 

A :

  UNUSABLE로 되기 때문에 TABLE MOVE시에는 반드시 인덱스를 rebuild 해줘야 한다.

 

=============================================

테스트 시나리오

 1. 테스트용 테이블 생성

 2. 데이터 입력

 3. 인덱스 생성

 4. 테이블 move(테이블스페이스 이동)

 5. 인덱스 상태 확인

 6. 인덱스 rebuild

 7. 인덱스 상태 확인

 

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

 1. 테스트용 테이블 생성

 

   SQL> create table test (col1 number, col2 varchar2(100));

 

테이블이 생성되었습니다.

 

 2. 데이터 입력

 

  SQL> insert into test
  2  select level, 'test'
  3  from dual
  4  connect by level <= 1000;

 

1000개의 행이 생성되었습니다.

SQL> commit;

 

커밋이 완료되었습니다.

 

 3. 인덱스 생성

 

SQL> create index test_idx01 on test(col1,col2);

인덱스가 생성되었습니다.

 

 

 4. 테이블 move(테이블스페이스 이동)

 

SQL> conn test/test
연결되었습니다.

SQL> alter table test move tablespace test;

테이블이 변경되었습니다.

 

 

 5. 인덱스 상태 확인

 

SQL> select index_name, status from dba_indexes
  2  where index_name = 'TEST_IDX01';

INDEX_NAME                     STATUS
------------------------------ --------
TEST_IDX01                     UNUSABLE


 

 6. 인덱스 rebuild

 

SQL> alter index TEST_IDX01 rebuild;

인덱스가 변경되었습니다.

 

 7. 인덱스 상태 확인

 

SQL> conn / as sysdba
연결되었습니다.
SQL> select index_name, status from dba_indexes
  2  where index_name = 'TEST_IDX01';

INDEX_NAME                     STATUS
------------------------------ --------
TEST_IDX01                     VALID

'Oracle > Admin' 카테고리의 다른 글

PK 변경절차  (0) 2016.11.18
파티션 테이블 인덱스 DDL 작업  (0) 2015.08.18
[펌] AMM에 관한 Test Case  (0) 2013.04.16
SQL*Loader 성능을 향상시키는 방법  (0) 2013.01.16
유저 단위 export시 테이블스페이스 관련  (0) 2012.09.24
Posted by 자수성가한 부자
Oracle/RAC2013. 8. 12. 22:59

 


 

# Oracle Cluster Synchronization Service 파라미터


 OCSS 대몬의 역할은?

  : 기본적인 클러스터 서비스(클러스터 그룹 서비스, 클러스터 locking)를 제공하는 것 뿐만아니라, 노드간의 동기화 서비스, 노드 멤버쉽 정보에 접근을 제공


 OCSS 대몬의 특징은?

  : split brain을 상황을 피하기 위해서 machine을 reboot시킨다.


1. misscount

  : 노드와 노드간(interconnect)의 네트워크 latency

    default 값은? 30초


  1) 확인 

    $ crsctl get css misscount


  2) 설정

    $ crsctl set css misscount 600     


2. disktimeout

   : 노드에서 voting-disk로의 latency

     default 값은? 200초


  1) 확인

    $ crsctl get css disktimeout


  2) 설정

    $ crsctl set css disktimeout 200


3. reboottime

   : CSS 대몬이 제거된 후에 node가 reboot이 완료되기까지 걸리는 시간 

     default 값은? 3초


  1) 확인   

    $ crsctl get css reboottime


  2) 설정

    $ crsctl set css reboottime 3


참고사이트

 https://sort.symantec.com/public/documents/sfha/6.0/linux/productguides/html/sfrac_install/ch20s05.htm

 http://docs.oracle.com/cd/E11882_01/rac.112/e16794/crsref.htm#CWADD92197

 http://oracledbabay.blogspot.kr/2012/11/disktimeoutmisscountreboottime-for-css.html

'Oracle > RAC' 카테고리의 다른 글

오라클 RAC의 서비스 와 백그라운드 프로세스  (0) 2019.01.22
RAC 노드간 parallel process 제어  (0) 2015.08.18
[펌] crs 로그 위치  (0) 2013.02.07
CRS 소프트웨어 버전 확인  (0) 2011.09.08
RAC의 권장 구성  (0) 2011.05.24
Posted by 자수성가한 부자
Oracle/기타2013. 8. 7. 10:53




# Toad에서 timeout 설정 해지 방법


view-> toad option -> Debugger -> Debugger session timeout 

값을 0 으로 설정하면 시간이 지나도 끊어지지 않음

Posted by 자수성가한 부자
Oracle/기타2013. 5. 31. 16:53





출처 : http://www.dt.co.kr/contents.html?article_no=2013012302011060746002


Posted by 자수성가한 부자
Oracle/기타2013. 5. 29. 10:15




데이터베이스 관리의 과제와 Engineered System



세계적인 IT 자문 및 분석 기관인 Enterprise Strategy Group (ESG)은 오라클이 어떻게 4가지 주요 데이터베이스 관리 과제에 대응하고 있으며 자사의 "Exa" engineered system 제품들을 어떻게 전면에 내세우고 있는지를 상세하게 다룬 보고서를 작성했습니다. 

수석 애널리스트인 Evan Quinn이 작성한 최신 보고서(2012년 8월)에서는 4가지 주요 데이터베이스 IT 과제를 파악했습니다.



● 데이터베이스 성장 
● 보안 
● 성능 
● 인력 부족



연간 데이터베이스 데이터 성장



 

데이터베이스 과제



 

데이터 관리 인력 부족



 

이 보고서는 Oracle Exadata 고객들과의 인터뷰를 통해 조사된 결과를 뒷받침합니다. "경제 상황과 IT가 허용한다면, Oracle Exadata는 확실한 성과를 달성해낼 것(Economy Willing, IT Willing, Oracle Exadata Will Deliver Results)"라는 소제목 아래의 마지막 문단에서 오라클이 어떻게 OLTP와 데이터 웨어하우징의 활용 사례에서 혼합 워크로드를 처리하는 확실한 모범 사례와 최적화 기술을 보유하고 있는지 요약하여 설명하고 있습니다. 

"IT의 측면에서, Exadata는 오라클 중심 IT 부서가 자체 인프라를 관리하는 완전히 새로운 방법을 제시합니다. Exadata는 궁극적으로 많은 골치거리와 위험을 없애고 IT 부서가 더 많은 고부가가치 프로젝트를 추진할 수 있는 준비를 갖출 수 있도록 합니다. Oracle Exadata와 여타 "Exa" 옵션 및 클라우드를 통해 오라클은 현대 IT의 제공을 위한 토대를 완벽하게 지원하고 있습니다. 이를 통해 Oracle Exadata의 사례에서 ESG는 오라클이 자체 IT 고객들이 데이터베이스 관리와 관련하여 직면하게 있는 주요 과제들에 대응하는 토대를 완벽하게 포괄할 수 있도록 지원하고 있다는 사실을 분명하게 확인하게 되었습니다. "


출처 :http://www.kdb.or.kr/info/info_05.php?field=&keyword=&type=trend&page=3&dbnum=169176&mode=detail&type=trend



이런 추세라면 Exadata를 하지 않고서는 안됨.

Posted by 자수성가한 부자
Oracle/Admin2013. 4. 16. 09:57

 

 

 

오라클 11g는 SGA뿐 아니라 PGA까지 포함하는 강력한 자동 메모리 관리(Automatic Memory Management:AMM) 기능을 제공한다.

앞으로는 오라클에 얼마만큼의 메모리를 써라~고 지정만 해주면 된다는 것을 의미한다. 멋진 일이긴 하지만, 실제 적용할 때는 염두에 두어야 할 몇가지 함정들이 있을 것이다.

간단해 보이지만, AMM의 속성을 잘 알 수 있는 Test Case를 만들어 보겠다.

  • Memory Target, Memory Max Target 값을 200M로 설정한다.
  • DB Cache와 Shared Pool 간의 경합을 시뮬레이션하기 위해, logical reads와 hard parse를 혼합해서 과도하게 발생시킨다.
  • 이 상황에서, PGA aggregate target 의 변화가 발생하는지 체크한다.



*.memory_target=200m
*.memory_max_target=200m

declare
  pat1     varchar2(1000);
  pat2     varchar2(1000);
  va       number;
begin
  select ksppstvl into pat1
    from sys.xm$ksppi i, sys.xm$ksppcv v   -- synonym of x$ table
    where i.indx = v.indx
    and i.ksppinm = '__pga_aggregate_target';

  for idx in 1 .. 1000000 loop

    -- Mixed workloads of heavy logical reads and hard parse
    execute immediate
       'select count(*) from t3 where 10 = mod('||idx||',10)+1' into va;

    if mod(idx, 100) = 0 then
      sys.dbms_system.ksdwrt(2, idx || 'th execution');

      for p in (select ksppinm, ksppstvl
          from sys.xm$ksppi i, sys.xm$ksppcv v
          where i.indx = v.indx
          and i.ksppinm in
           ('__shared_pool_size', '__db_cache_size',
              '__pga_aggregate_target'))  
             loop

          sys.dbms_system.ksdwrt(2, p.ksppinm || ' = ' || p.ksppstvl);
      end loop;

      select ksppstvl into pat2
      from sys.xm$ksppi i, sys.xm$ksppcv v
      where i.indx = v.indx
      and i.ksppinm = '__pga_aggregate_target';

      -- Do I have PGA aggregate target change?
      if pat1 <>  pat2 then
        sys.dbms_system.ksdwrt(2, 'yep, I got it! pat1=' || pat1 ||', pat2='||pat2);
        exit;
      end if;
    end if;
  end loop;
end;
/



결과는 아래와 같다. (alert log 파일)

100th execution
__shared_pool_size = 92274688
__db_cache_size = 16777216
__pga_aggregate_target = 83886080
200th execution
__shared_pool_size = 92274688
__db_cache_size = 16777216
__pga_aggregate_target = 83886080
300th execution
__shared_pool_size = 88080384
__db_cache_size = 20971520
__pga_aggregate_target = 83886080
400th execution
__shared_pool_size = 92274688
__db_cache_size = 16777216
__pga_aggregate_target = 83886080
500th execution
__shared_pool_size = 88080384
__db_cache_size = 20971520
__pga_aggregate_target = 83886080
600th execution
__shared_pool_size = 92274688
__db_cache_size = 20971520
__pga_aggregate_target = 83886080
700th execution
__shared_pool_size = 92274688
__db_cache_size = 20971520
__pga_aggregate_target = 83886080
800th execution
__shared_pool_size = 92274688
__db_cache_size = 20971520
__pga_aggregate_target = 83886080
900th execution
__shared_pool_size = 92274688
__db_cache_size = 20971520
__pga_aggregate_target = 83886080
1000th execution
__shared_pool_size = 92274688
__db_cache_size = 20971520
__pga_aggregate_target = 83886080
1100th execution
__shared_pool_size = 92274688
__db_cache_size = 20971520
__pga_aggregate_target = 83886080

1200th execution
__shared_pool_size = 92274688
__db_cache_size = 37748736
__pga_aggregate_target = 58720256
yep, I got it! pat1=83886080, pat2=58720256



기대했던대로, Oracle은 부하에 따라 Buffer Cache의 크기와 Shared Pool의 크기를 주거니 받거니 하면서 변경하는 것을 볼 수 있다.

그런데, 1200번째 실행에서는 갑자기 PGA aggregate target 영역에서 메모리를 훔쳐서 Buffer Cache로 가져다쓴다. 이 역시 AMM(Automatic Memory Management)에서는 충분히 발생가능한 일이다.

문제는 어떤 특정 상황에서는 위험이 발생할 수 있다는 것이다. PGA aggregate target가 바뀐다는 것은 Hash/Sort관련 Operation의 Cost가 변경된다는 것을 의미한다. 따라서 갑자기 실행 계획이 바뀌는 것과 같은 위험한 상황이 발생 할 수도 있다. PGA Aggregate Target이 변하면 Hash/Sort의 성능 자체에도 영향을 주게 된다.

조금 극단적인 Test Case라고 할 수 있지만, 이런 현상이 논리적인 빈틈이나 버그로 인해 끔찍한 결과를 초래할 수 있다는 것은 경험으로 잘 알 고 있을 것이다.

오라클 11g가 좀 더 대중화되면, 이런 유형의 문제에 대한 실사례를 접할 수 있을 것이다.

 

출처 : http://ukja.tistory.com/216

Posted by 자수성가한 부자
Oracle/Backup & Recovery2013. 4. 3. 15:36

 

 

disk 여유가 없어 export된 dump size를 알아야 할 경우,  named pipe를
이용하여 export를 수행함으로서 정확한 dump file size를 예측해 볼 수
있다. 단, 이 방법은 실제 export를 수행하는 것과 동일한 시간이 소요
된다는 점을 염두에 두어야 한다.

%  mknod  /tmp/exp_pipe  p
%  exp  file=/tmp/exp_pipe <other option> &
%  dd  if=/tmp/exe_pipe  of=/dev/null  bs=1024
   64+0 records out

dump의 크기는 64 * 1024 byte가 된다.

 

출처 : How to Estimate Traditional Export (EXP) File Size Without Creating A Dump File [ID 106465.1]

'Oracle > Backup & Recovery' 카테고리의 다른 글

테이블 복구(RMAN recover table)  (0) 2019.04.05
Import 성능 향상 시키는 방법  (0) 2015.06.16
current redo log group 삭제시 복구  (0) 2010.11.24
RMAN  (0) 2010.07.09
start backup 후 end backup을 안했을 경우.  (0) 2010.04.17
Posted by 자수성가한 부자