2015. 2. 13. 15:57 오라클

Exadata X5 출시~~


지난 1월 21일 오라클에서 1년만에 X4에 이어 Exadata x5-2 가 출시되었음..




몇가지 특징을 정리해 보면..


1. Database node - CPU 18core(Xeon® E5-2699 v3)로 확장,클럭수 2.3Hz로 살짝 내려갔으나 기존대비 50% 늘어남

   Memory 용량이 768G 까지 확장가능, 기존대비 50% 늘어남


2. 디스크 컨트롤러 배터리를 교체할 필요가 없어졌음,아주 바람직해짐 (super capaciator 적용, Maintainance 용이)


3.Cell Node - 기존의 HC,HP Disk가 구분되던 것에서 X5 부터 HP는 아예 사라짐

  대신 EF(Extream Flash)디스크라고 해서 ALL Flash 스토리지 지원됨 (하나가 1.6TB, Total 12.8TB 가능)

  -> 그냥 SSD 디스크가 아니라 PCIe 방식의 NVMe Flash Drive 로 가장 최신기술임

  -> 2.5inch F160 PCIe Drives 

  -> 거의 현존 최고 속도라고 봐도 될듯.


4. 노드확장이 용이해 졌음

  -> 이전에는 Scale-up 시 상당히 제한적이었으나, X5부터 유연하게 필요한 만큼 확장가능

  -> 난 이번에 DB node 2개, Cell 4개 붙이고 싶다. 그러면 원하는 만큼 ~~


5. X5를 지원하는 이미지 12.1.2.1이 발표되었음.

  -> Exafusion 이라는 기존의 RDS 프로토콜보다 3배 빠른 캐시퓨전 구현됨 ㄷㄷㄷ

  -> 기존 infiniband 를 발라버리는 속도..이건 테스트해봐야 체감할 듯..


6. Exadata 내에서 OVM 가상환경 구현가능..아 이건 글쎄...좀더 두고봐야 할듯..


7. In-Merory fault Tolerance 구현됨. 세계최초라고 함.


8. DB노드에서도 기존 Cell 처럼 DBMCLI 라는 명령어 생기고 모니터링 및 관리가능해짐.


9. Oracle Linux 6.6 버전 채용으로 기존 5.X 버전에서 쑥 올려버림


   -> 글고 X5부터는 Solaris 기반 Exa 는 아예 없어짐..안녕 Solaris...


10. Exadata에서 ACFS가 지원이 됨..요건 사용하기 나름..


=> 결론 : Exadata X5 아주 좋음...많이 사주세요..ㅋㅋ

Posted by pat98


2014년 10월 쯤 작성한 Exadata Troubleshooting 문서


Exadata Troubleshooting.pptx


Posted by pat98

 메탈리카 연주곡중 제일 좋아하는  "Call of ktulu" 입니다.

러브크래프트의 소설에 나오는 크툴루 신화에서 영감을 따 왔다고 하죠.

라이브에서는 잘 연주하지 않는 곡인데 2011년도 Big 4 라이브에서 연주했네요.

 

The Big 4 - Metallica - The Call Of Ktulu Live In Gothenburg Sweden July 3 2011 HD

 

 

 

 
Posted by pat98

vnc Server 이용 x-window vnc 연결 설정


1. 설치확인

rpm -qa | grep vnc 

 

2. yum 이용 또는 rpm 직접 설치
yum search vnc-server

 

3. 설치후 /etc/sysconfig/vncservers 파일 # 제거 (root계정일시 /etc/securetty 화일 제거 또는 rename)

 VNCSERVERS="1:oracle"
 VNCSERVERARGS[2]="-geometry 800x600"

 

4. vnc password 설정 (6자리 이상)

vncpasswd

 

5. vnc 서비스 시작

service vncserver restart

 

6. X-window 보기 위한 설정  (아래 설정을 안할때 터미널 화면만 보입니다.)

vi /root/.vnc/xstartup

아래 주석제거

 unset SESSION_MANAGER
 exec /etc/X11/xinit/xinitrc
 
- 만일 방화벽 사용시 해당 포트 추가 후 재가동

 vi /etc/sysconfig/iptables

 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5901 -j ACCEPT


VNC viewer에서 기본포트는 5900번이며 display 번호1,2,3 으로 설정하기 때문에 5901번이 되는 것임

192.168.56.10:5901

Posted by pat98

2015. 2. 2. 11:20 오라클

oracle DNFS 설정


11.2 버전은 기본으로 disable 되어 있다.

 

How To Verify If DNFS Is Enabled (“ON”) Or Disabled (“OFF”) Before The Database Instance Is Started In 11.2 Release? (Doc ID 1551909.1)

SQL> shutdown immediate

oracle kernel level 에서 DNFS 옵션 enable

oracle 계정에서

1. id 

2. cd $ORACLE_HOME/rdbms/lib

3. 
make -f ins_rdbms.mk dnfs_on

아래와 같은 메세지만 썰렁하게 보인다.
rm -f /oracle/product/11.2.0.4/lib/libodm11.so; cp /oracle/product/11.2.0.4/lib/libnfsodm11.so /oracle/product/11.2.0.4/lib/libodm11.so

make -f ins_rdbms.mk dnfs_off
      
마찬가지로 아래와 같은 메세지만 썰렁하게 보인다.   
rm -f /oracle/product/11.2.0.4/lib/libodm11.so; cp /oracle/product/11.2.0.4/rdbms/lib/libodm11.so.dummy /oracle/product/11.2.0.4/lib/libodm11.so

4. 
이렇게만 나오기 때문에 적용되었는지 확인할 방법은 아래와 같다.

방법 1) 적용이 안되어 있으면 아래와 같이 ODM ERR: Calling stubbed version 메세지가 보인다.

[oracle:/oracle/product/11.2.0.4/rdbms/lib]#strings /oracle/product/11.2.0.4/lib/libodm11.so | grep -i odm
odm_deregisternic
odm_registernic
odm_destroy
odm_deregistermem
odm_registermem
odm_mname
odm_resize
odm_cancel
odm_ioerror
odm_io
odm_cleanup
odm_unidentify
odm_reidentify
odm_identify
odm_delete
odm_abort
odm_commit
odm_create
odm_error
odm_fini
odm_init
odm_discover
ODM ERR: Calling stubbed version
Stubbed ODM Library, Version: 1.0

적용이 되어 있으면 아래와 같이 ODM ERR: Calling stubbed version 메세지가 없다.
[oracle:/oracle/product/11.2.0.4/rdbms/lib]#strings /oracle/product/11.2.0.4/lib/libodm11.so | grep -i odm
kgodm_deregisternic
kgodm_registernic
kgodm_destroy
kgodm_deregistermem
kgodm_registermem
kgodm_mname
kgodm_resize
kgodm_cancel
kgodm_ioerror
kgodm_io
kgodm_cleanup
kgodm_unidentify
kgodm_reidentify
kgodm_identify
kgodm_readlink
kgodm_readdir
kgodm_fsinfo
kgodm_fsstat
kgodm_setattr
kgodm_getattr
kgodm_rmdir
kgodm_mkdir
kgodm_delete
kgodm_abort
kgodm_commit
kgodm_create
kgodm_error
kgodm_fini
kgodm_init
kgodmfhtr_
odm_registerthread
kgodm_discover
nfs odm heap
kgodm event %u set to level %u

방법 2)

5. SQL> startup

6. alertlog 메세지 확인

적용이 되면 파라미터 화일을 읽고 바로 그 아래에 ODM Running 되었다는 메세지를 확인 할수 있다.

  audit_file_dest          = "/oracle/admin/TEST/adump"
  audit_trail              = "DB"
  db_name                  = "TEST"
  open_cursors             = 300
  diagnostic_dest          = "/oracle"
Oracle instance running with ODM: Oracle Direct NFS ODM Library Version 3.0 
Tue May 07 22:08:18 2024
PMON started with pid=2, OS id=1964 
Tue May 07 22:08:18 2024
PSP0 started with pid=3, OS id=1966 


Direct NFS: channel id [0] path [celntap3-bc] to filer [celntap3-bc] via local [] is UP
Direct NFS: channel id [1] path [celntap3-bc] to filer [celntap3-bc] via local [] is UP

7. DNFS 설정값 확인 view (RAC 인 경우 gv$DNFS_* )

1) select * from V$DNFS_SERVERS; Shows a table of servers accessed using Direct NFS.

2) select * from V$DNFS_FILES; Shows a table of files currently open using Direct NFS.

3) select * from V$DNFS_CHANNELS; Shows a table of open network paths (or channels) to servers for which Direct NFS is providing files.

4) select * from V$DNFS_STATS; Shows a table of performance statistics for Direct NFS.

Posted by pat98

2015. 1. 22. 11:30 오라클

Exadata patchmgr help


[EXA1]root@exa1:/root/patch_11.2.3.3.1.140708# ./patchmgr -h
Usage:
./patchmgr -cells cell_host_file
          [-patch_check_prereq | -rollback_check_prereq [-rolling] [-ignore_alerts]]
          [-patch | -rollback [-rolling] [-ignore_alerts]]
          [-cleanup]

./patchmgr -ibswitches [ibswitch_list_file]
          <-upgrade | -downgrade> [-ibswitch_precheck] [-force]]

./patchmgr -h

OPTIONS
    -h
         Displays this screen

  Cell patching and rollback
    The following options are supported for cell patching and(or) rollback:

    -cells cell_list_file
         Specifies the name of the cell list file. The file contains one
         cell hostname or ip per line. The cell patching will fail if the
         list file is not specified.

    -cleanup
         Cleanup mode. Cleans up all patch files and temporary content on all
         cells.  Before cleaning up, collects logs and information for problem
         diagnostics and analysis. Cleaning up patch files can be done manually
         if patch fails by removing directory /root/_patch_hctap_ on each cell.

    -ignore_alerts
         Ignore any active hardware alerts on the Exadata cell and proceed with
         the patching.

    -patch
         Applys the patch, including firmware updates, wherever possible (BIOS,
         Disk Controller and if possible disk drives) to all cells in the cell
         list file.
   
    -patch_check_prereq
         Runs prerequisite check on all the cells to determine if the patch can
         be applied to the cells.

    -rollback
         Rolls back the patch.
   
    -rollback_check_prereq
         Runs prerequisite check on all the cells to determin if the cells can
         be rolled back for this specific patch.

    -rolling
         Applies the patch or executes the rollback in rolling fashion, one cell
         at a time.

         Environment variable EXA_PATCH_ACTIVATE_TIMEOUT_SECONDS controls the
         timeout value waiting for the grid disks to be activated.
         The default is set to 36000 (10 hours).
 
    -smtp_from "addr"
         The address patchmgr notification sent from.
         sendmail daemon must be started to send email notification.

    -smtp_to "addr1 addr2 addr3 ..."
         The address(es) patchmgr notification sent to.
         sendmail daemon must be started to send email notification.

  Infiniband switch upgrade and downgrade
    The following options are supported for infiniband switch upgrade and(or)
    downgrade:
   
    -ibswitches [ibswitch_list_file]
         Specifies the name of the InfiniBand switch list file. The file has one
         switch hostname or ip per line. If no filename is provided, then it
         runs the command on all InfiniBand switches discovered from this host
         by running ibswitches command.

    -downgrade
         Downgrade the InfiniBand switches in the list file to 1.3.3-2

    -force
         Specifies to proceed with the upgrade or downgrade even on non-critical
         failures.
     
    -ibswitch_precheck
         Runs the pre-update validation checks on the InfiniBand switches in the
         list file.

    -upgrade
         Upgrade the InfiniBand switches in the list file to 2.1.3-4

 

NOTE Cells will reboot during the patch or rollback process.
NOTE For non-rolling patch or rollback, ensure all ASM instances using
NOTE the cells are shut down for the duration of the patch or rollback.
NOTE For rolling patch or rollback, ensure all ASM instances using
NOTE the cells are up for the duration of the patch or rollback.

WARNING Do not start more than one instance of patchmgr.
WARNING Do not interrupt the patchmgr session.
WARNING Do not alter state of ASM instances during patch or rollback.
WARNING Do not resize the screen. It may disturb the screen layout.
WARNING Do not reboot cells or alter cell services during patch or rollback.
WARNING Do not open log files in editor in write mode or try to alter them.

Posted by pat98

체크포인트 튜닝과 문제 해결 방안 (문서 ID 1526181.1)


이 문서는 데이터베이스 관리자에게 증분 체크포인트와 체크포인트 튜닝에 관련된 네가지 초기화파라미터의 이해를 돕기 위해 작성되었습니다.

 

FAST_START_MTTR_TARGET

LOG_CHECKPOINT_INTERVAL

LOG_CHECKPOINT_TIMEOUT

LOG_CHECKPOINTS_TO_ALERT


또한 alertlog 에서 볼 수 있는, 몇 가지 체크포인트 관련 에러 ('Checkpoint not Complete' 와 'Cannot Allocate New Log') 에 대해서도 설명하도록 하겠습니다.


상세 내역

 

내용:


체크포인트란 무엇인가?

체크포인트와 성능

증분 체크포인트와 와 관련된 초기화 파라미터들

리두 로그와 체크포인트 

체크포인트 에러의 이해 ("Cannot allocate new log" 와 "Checkpoint not complete")

오라클 출시 정보

체크포인트 문제를 확인하기 위한 Statspack 이용법

 

체크포인트 튜닝과 에러 관리


1.  체크포인트란 무엇인가?


체크포인트는 디스크의 데이터블럭과 메모리의 데이터블럭을 동기시키는 데이터베이스 작업이며, 트랜잭션에 의해 변경된 자료의 일관성을 보장하기 위해 사용됩니다. 관련 트랜잭션의 커밋이 있을 때마다, 디스크에 변경된 데이터블럭을 쓰는 것은 아닙니다.


체크포인트는 다음 두가지 목적을 위해 존재합니다. (1) 자료 일관성 유지 (2) 빠른 데이터베이스 복구

그렇다면 어떻게 복구가 빨리 진행될 수 있을까요? 체크포인트까지 데이터파일에 기록된 모든 내용은 복구 과정에서 redo apply 가 필요 없기 때문입니다. 체크포인트는 장애 (인스턴스 혹은 디스크 장애)로 인한 손실을 예방하기 위해 버퍼 캐시 상의 변경된 모든 내용이 디스크에 기록되는 것을 보장합니다.


Oracle 은 다음 몇가지 조건 하에서만, 더티 버퍼를 디스크에 쓰게됩니다.

- 서버프로세스가 DB_BLOCK_BUFFER 의 1/4 이상을 스캔할 때

- 매 3초 마다

-체크포인트가 발생할 때 마다


다음 조건이 만족할 때, 체크포인트가가 움직입니다.

- 리두 로그 파일의 스위치 시점

- LOG_CHECKPOINT_TIMEOUT 크기만큼 대기할 때

- (LOG_CHECKPOINT_INTERVAL* IO OS 블럭의 크기) 에 해당하는 내용이 현재 리두 로그 파일에 쓰여질 때

- ALTER SYSTEM SWITCH LOGFILE 명령어가 입력될 때

- ALTER SYSTEM CHECKPOINT 명령어가 입력될 때     


Checkpoint 도중 다음과 같은 일이 일어납니다.

- database writer (DBWR) 프로세스가 버퍼 캐시 내부의 변경된 블럭을 모두 디스크에 씁니다.

- Checkpoint process (CKPT) 프로세스가 모든 데이터파일의 헤더에 최신 체크포인트의 SCN 을 기록합니다.


2. 체크포인트와 성능


체크포인트를 생각할 때 관리자는 튜닝 관점에서 딜레마에 빠질 수 밖에 없습니다. 잦은 체크포인트는 빠른 복구를 가능케 하겠지만, 한편 성능저하를 일으키기 때문입니다. 관리자로서 이 상황에 대한 해답은 무엇이 될까요?


데이터파일의 개수가 많은 데이터베이스의 경우라면, 체크포인트가 진행되는 동안 모든 데이터파일 헤더가 잠기게 되고 이는 매우 높은 리소스를 필요로 합니다. 체크포인트의 주기에 대해서는 이처럼 트레이드오프가 있습니다. 더 잦은 체크포인트를 하도록 설정하면, 장애가 발생했을 때에 필요한 복구작업을 더 빠르게 진행할 수 있습니다. 예상치 않은 장애가 발생했을 때,  매우 짧은 시간내에 복구를 완료해야 하는 고객의 경우 이 설정이 선택될 수 있습니다. 하지만 잦은 체크포인트가 대부분에 고객사에 적합하다고 볼 수는 없습니다. 예를 들어 하루 중 5% 시간만 다운타임으로 용납할 수 있는 환경을 상상해보면, 가상의 5% 보다 현실의 95% 에 해당하는 운영시간동안의 최대 성능에 집중하는 것 더 효율적일 수 있기 때문입니다.


이 문서는 독자의 최우선 관심사가 성능, 즉 체크포인트의 빈도를 줄이는데 있다는 가정하에 작성되었습니다.


체크포인트 튜닝에 있어, 다음 4가지의 초기화 파라미터가 관련되어 있습니다.

- FAST_START_MTTR_TARGET

- LOG_CHECKPOINT_INTERVAL

- LOG_CHECKPOINT_TIMEOUT

- LOG_CHECKPOINTS_TO_ALERT


이 파라미터들은 좀 더 뒤에 자세히 다루도록 하겠습니다.


리두 로그 혹은 체크포인트 튜닝의 필요성을 의미하는 메세지인, alertlog 의"checkpoint not complete" 를 어떻게 다룰 것인가에 대해서도 추후 언급하도록 하겠습니다.



3. 증분 체크포인트와 관련된 초기화 파라미터들


주의: 다음에 소개하는 초기화 파라미터에 의해 발생되는 체크포인트보다, 리두 로그 파일의 스위치가 항상 우선시됩니다.


FAST_START_MTTR_TARGET


Oracle 9i 이후 FAST_START_MTTR_TARGET 파라미터는 증분 체크포인트 튜닝에 있어 가장 선호되는 접근방법 중 하나입니다.  사용자는 싱글 인스턴스가 복구에 필요로 하는 시간을 초단위로 FAST_START_MTTR_TARGET 파라미터에 설정하고, Oracle 은 내부의 통계정보에 근거해 자동으로 체크포인트의 간격을 조정합니다.

V$INSTANCE_RECOVERY 뷰의 ESTIMATED_MTTR 컬럼을 통해 현재 계산된 mean time to recover (MTTR) 값을 조회할 수 있습니다. (사용자가 FAST_START_MTTR_TARGET 파라미터를 설정해두지 않았더라도, 이 값은 조회할 수 있습니다.) TARGET_MTTR 컬럼은 현재 시스템에 의해 가장 효율적인 MTTR 값을 의미합니다.

V$MTTR_TARGET_ADVICE 뷰는 현재 운영상태에서 ESTIMATED_MTTR 값으로 인해 초래되는 I/O 건수와 TARGET_MTTR 값으로 초래되는 I/O 의 건수를 나타냅니다. 사용자는 이 뷰를 통해 FAST_START_MTTR_TARGET 설정으로 얻을 있는 빠른 복구시간과 운영 중 성능사이의 트레이드오프를 확인할 수 있습니다.


LOG_CHECKPOINT_INTERVAL


LOG_CHECKPOINT_INTERVAL 파라미터는 증분 체크포인트가 일어나기 전에 필요한 리두 블럭의 개수를 지정합니다. FAST_START_MTTR_TARGET 가 설정된 경우라면, LOG_CHECKPOINT_INTERVAL 파라미터는 설정하지 않거나 0 으로만 설정되어야 합니다.

대부분의 UNIX 환경에서 OS 블럭의 크기는 512 바이트입니다. 따라서 LOG_CHECKPOINT_INTERVAL 의 값을 10,000 으로 설정했을 때, 5,120,000 (5M) 바이트가 될 때까지 증분 체크포인트는 일어나지 않습니다. 만약 리두 로그의 크기가 20M 인 경우라면, 각 리두 로그가 4번의 체크포인트를 필요로 하는 것을 의미합니다.


LOG_CHECKPOINT_INTERVAL 값은 언제 체크포인트가 일어날 것인가에 영향을 주는만큼 신중하게 설정되어야 하고, 리두 로그 파일의 크기가 바뀔 때에도 적절히 변경되어야 합니다. 체크포인트가 일어나는 간격은 예상치 않은 장애가 발생되었을 때 복구에 필요한 시간을 결정하는 중요한 요소입니다. 이 간격이 길수록 장애 발생 후 데이터베이스의 복구작업에 더 많은 시간이 소요되고, 이 간격을 줄이면 데이터베이스 복구는 더 빨리 진행되겠지만 운영시점의 체크포인트에 높은 리소스를 필요로 합니다.


이 파라미터는 또한 데이터베이스 복구 과정의 roll forward 에도 영향을 미치는데, 실제 복구시간은 바로 이 부분이 큰 비중을 차지하기 때문입니다. 기타 다른 고려 사항으로는 장애의 형태(인스턴스 크래쉬 혹은 시스템 크래쉬, 디스크 실패 등) 와 필요한 아카이브된 로그 의 개수 등이 있습니다.


LOG_CHECKPOINT_TIMEOUT


LOG_CHECKPOINT_INTERVAL 파라미터는 증분 체크포인트가 일어나기 전에 필요한 시간(초 단위)를 지정합니다. 다시 말해 버퍼 캐시 안의 더티 버퍼가 얼마나 오랫동안 보관될 것인가를 결정합니다.


체크포인트의 빈도는 예상치 않은 장애가 발생되었을 때 복구작업에 필요한 시간을 결정하는 중요한 인자입니다. 이 간격이 길수록, 장애 발생 후 데이터베이스의 복구가 완료되는데 더 많은 시간이 소요됩니다. 


Oracle 은 트랜잭션량과 상관없이 매 지정된 시간에 체크포인트를 시작하는 LOG_CHECKPOINT_TIMEOUT 대신, LOG_CHECKPOINT_INTERVAL 의 사용을 권장합니다. 트랜잭션의 양이 일정하지 않은 환경에서 LOG_CHECKPOINT_TIMEOUT 파라미터를 설정하면 불필요한 체크포인트가 진행되므로, 이는 최적의 성능유지를 위해 반드시 피해야합니다.


혹시라도 LOG_CHECKPOINT_TIMEOUT 에 설정한 값이 리두 로그 스위치 간격을 의미하지는 않을까? 오해하는 경우가 비일비재하지만, 이는 잘못된 생각입니다. 로그 스위치가 체크포인트를 일으키기는 하지만, 그 반대는 성립하지 않기 때문입니다. 물론 ALTER SYSTEM SWITCH LOGFILE 명령어를 직접 입력하거나 리두 로그의 크기를 변경하는 것이 체크포인트를 발생시키지만, 이는 시간 간격으로 인한 것이 아닙니다. 

참고로 사용중인 온라인 리두 로그 파일의 크기를 변경하는 것은 성능 및 복구작업에 있어 매우 중요합니다. 이에 대해서는 '리두 로그와 체크포인트' 항목을 참고해주시기 바랍니다.


LOG_CHECKPOINTS_TO_ALERT


LOG_CHECKPOINTS_TO_ALERT 파라미터는 사용자의 체크포인트 진행내역이 alert file 에 기록되도록 합니다. 이 정보를 통해 원하는 간격으로 체크포인트가 진행되었지 여부를 확인할 수 있습니다. Oracle9i 이전 버전에서는 STATIC 성격이었습니다. Oracle 은 이 파라미터의 값이 항상 TRUE 일 것을 권장하는데, 이로 인해 초래되는 부하는 무시해도 될 정도로 작습니다.


지금까지 언급된 파라미터에 대하 좀 더 자세한 정보가 필요한 경우, Note:76713.1 를 참고하십시오.


4. 리두 로그와 체크포인트


체크포인트는 리두 로그 스위치가 일어날 때마다 발생합니다. 만약 이전 체크포인트 가 아직 진행중이라면, 로그 스위치에 의한 체크포인트가  이미 진행 중인 것을 오버라이드합니다.


이렇게 잦은 로그 스위치로 인해 초래된 불필요한 체크포인트를 피하려면, 적절한 크기의 리두 로그 파일이 필요합니다. 증분 체크포인트의 목표값과 그 나머지의 차이는 대부분 너무 작은 크기의 온라인 리두 로그 파일에 기인하는데, 실제로 대부분의 로그 스위치가 체크포인트를 기다릴 필요가 없다는 것을 의미하기도 합니다.  따라서 리두 로그파일이 충분히 크도록, 최대 20 분마다 한번씩은 스위치되는 것이 바람직합니다. 너무 작은 리두 로그 파일은 성능저하의 요인이므로, Oracle 은 모든 온라인 리두 로그 파일을 같은 크기로 만들고, 각 인스턴스에 최소한 2개의 로그 그룹을 만들어 둘 것을 권장합니다. Alert log 는 로그 스위치와 체크포인트를 를 모니터링하는 데 있어, 매우 유용합니다.


다음은 alert log 상에서 볼 수 있는 빠른 로그 스위치의 예입니다.

 

    Fri May 16 17:15:43 1997

    Thread 1 advanced to log sequence 1272

      Current log# 3 seq# 1272 mem# 0: /prod1/oradata/logs/redologs03.log

    Thread 1 advanced to log sequence 1273

      Current log# 1 seq# 1273 mem# 0: /prod1/oradata/logs/redologs01.log

    Fri May 16 17:17:25 1997

    Thread 1 advanced to log sequence 1274

      Current log# 2 seq# 1274 mem# 0: /prod1/oradata/logs/redologs02.log

    Thread 1 advanced to log sequence 1275

      Current log# 3 seq# 1275 mem# 0: /prod1/oradata/logs/redologs03.log

    Fri May 16 17:20:51 1997

    Thread 1 advanced to log sequence 1276

      Current log# 1 seq# 1276 mem# 0: /prod1/oradata/logs/redologs01.log


만약 리두 로그 스위치가 매 3분마다 발생한다고 가정해보면, 성능저하는 당연한 결과입니다. 이는 사용자의 업무량에 효과적으로 대응할 수 있도록 충분히 크지 않은 리두 로그임을 가르킵니다.


리두 로그 파일의 적절한 크기를 결정하는 데 필요한 자세한 정보는 Note:1038851.6 를 참고해주십시오. 그리고 실제 온라인 리두 로그 파일의 크기를 변경하는 방법은 Note:1035935.6 를 참고하시기 바랍니다.

 

5. 체크포인트 에러의 이해 ("Cannot allocate new log" 와 "Checkpoint not complete")


때때로 다음과 같은 메세지가 alert log 에 기록되는 것을 볼 수 있습니다.


      Thread 1 advanced to log sequence 248

        Current log# 2 seq# 248 mem# 0: /prod1/oradata/logs/redologs02.log

      Thread 1 cannot allocate new log, sequence 249

      Checkpoint not complete


이 메세지는 리두 로그 파일이 재사용되지 못하고, 체크포인트가 특정 로그에서 계속 정체된 상태를 의미합니다. 체크포인트가 다음 로그로 이동할 때까지 Oracle 은 대기할 수 밖에 없습니다. 이 현상은 DBWR 의 쓰기 동작이 매우 느리거나, 리두 로그 파일의 크기가 너무 작거나 혹은 너무 빠른 로그 스위치가 일어난 결과입니다. 데이터베이스가 체크포인트를 기다리는 상황에서는, 로그 스위치가 완료될 때까지 더 이상 리두가 생성되지 않습니다.

 

6. 오라클 출시 정보


8i 버전에서 FAST_START_IO_TARGET 파라미터를 설정해두면, Oracle 은 복구가 필요할 때 FAST_START_IO_TARGET 값 이상의 데이터 블럭이 사용되지 않도록 체크포인트 주기를 자동적으로 변경했습니다. 이 파라미터는 9i 버전에서 사라졌으며, 대신 FAST_START_MTTR_TARGET 파라미터를 사용할 수 있습니다.

 

7. 체크포인트 문제를 확인하기 위한 Statspack 이용법


15분 정도 간격으로 Statspack 스냅샷을 수집하도록 설정해두면, 체크포인트의 시작/완료시간은 물론 특성 시간동안 진행된 체크포인트로부터에서 얼마나 많은 데이터베이스 버퍼가 디스크에 써졌는지 알아볼 수 있습니다. 물론 리두 활동내역도 살펴볼 수 있는데, 서로 다른 시간대의 보고서를 비교함으로서 체크포인트 성능향상에  대한 힌트를 얻을 수 있습니다.


Statspack 보고서에서 관심가지고 봐야할 정보가 하나 더 있다면, 다음과 같은 대기 이벤트의 내역입니다. 이 대기 이벤트들의 상황에 따라 리두 로그와 체크포인트에 문제가 있는지 손쉽게 인지할 수 있습니다.:


log file switch (checkpoint incomplete)

log file switch (archiving needed)

log file switch/archive

log file switch (clearing log file)

log file switch completion

log switch/archive

log file sync


만약 위 대기 이벤트 중에서 비정상적으로 높은 값이 확인된다면, 온라인 리두 로그 파일의 개수와 크기를 늘리거나 체크포인트 관련 파라미터의 변경이 필요합니다.

Posted by pat98

2015. 1. 16. 18:13 오라클

12c RAC 로그위치



11g rac 는 데몬별로 분리가 되어있었던 반면, 12c에서는 다시 한곳으로 통합되었다.


12c rac log 


$GRID_HOME/base/diag/crs/{hostname}crs/trace

Posted by pat98

SQL*Loader 의 성능 최적화를 위한 몇가지 고려사항이 있습니다 (direct 및 conventional path): 


o 논리적 레코드의 효율적 처리 


- 물리적 레코드와 논리적 레코드의 일대일 매핑. 연결된 경우의 진행을 막습니다. 

- 소프트웨어가 물리적 레코드의 경계를 쉽게 알아낼 수 있도록 합니다. 

그것은 "FIXnnn" 이나 "VAR" 의 문자열 옵션을 사용한 파일 처리를 사용하는 것입니다.

기본(스트림 모드)으로 사용하는 경우, 대부분의 플랫폼에서 (예, UNIX) SQL*Loader 는 개행문자를 위해 각 물리적 레코

드를 스캔해야 합니다. 


o 효율적인 필드 설정 


필드 설정은 데이터파일의 필드를 데이터베이스 내의 컬럼들과 매핑하는 과정입니다.

매핑 함수는 컨트롤파일의 필드 설명에 의해 제어됩니다.

필드 설정은 대부분의 로드에서 가장 CPU 시간을 많이 소모합니다. 


- 탭필드를 사용하지 말고; 위치필드를 사용합니다.

탭필드를 사용하면 SQL*Loader 는 구분자/괄호를 찾기 위하여 입력 데이터를 스캔해야 합니다.

위치 필드를 사용하면 SQL*Loader 는 다음 필드로 가기 위해 포인터만 증가시키면 됩니다.(매우 빠름) 


- 위치 필드를 사용하는 경우 공백을 트리밍하지 마십시오.

PRESERVE BLANKS 옵션을 사용하십시오. 


위의 요점 1과 2의 공통된 주제는 입력 데이터의 스캔을 막는 것임을 유념하여 주시기 바랍니다. 


o 효율적인 변환 


SQL*Loader 가 제공하는 몇가지 변환이 있습니다; 

캐릭터셋 변환과 데이터타입 변환


- 가능하면 캐릭터셋 변환은 피하십시오. SQL*Loader 는 3가지 캐릭터셋을 지원합니다: 


a) 클라이언트 캐릭터셋 (sqlldr 프로세스의 NLS_LANG) 

b) 서버 캐릭터셋 

c) 데이터파일 캐릭터셋 


3가지가 모두 동일할 때 성능이 최적화 됩니다. 특히 b) 와 c) 가 중요합니다. 

이 3가지가 모두 동일하면 캐릭터셋 변환을 위한 메모리 버퍼도 할당되지 않습니다. 


- 멀티 바이트 캐릭터셋 설정을 피하십시오. 


- 데이터타입 변환에 있어서는(SQL*Loader 데이터타입을 데이터베이스컬럼 데이터타입으로) char 에서 char 로의 변환이 효율적입니다. 

만일 데이터파일과 서버에 대하여 같은 캐릭터셋이 사용중이면 변환이 일어나지 않으므로 빠릅니다. 

그러므로 변환을 최소화할 수 있도록 하십시오. 


o 가능하다면 direct path load 에서 "unrecoverable" 옵션을 사용


o conventional path load 라도 네트워크를 통하지 말고 SQL*Loader 를 서버에서 직접 실행


o 데이터베이스 이외의 파일 I/O 를 줄이기


- 가능하면 SILENT=ERRORS 를 사용하여 에러 메시지가 로그에 기록되지 않도록 하십시오. 알려진 중복 로딩인 경우에 유용합니다.


- 또한 BAD=/dev/nul (UNIX) 이나 BAD=NUL (DOS) 사용으로 잘못된 레코드가 I/O 를 생성하지 않도록 하십시오.


o 인덱스와 제약조건을 비활성화. conventional load 의 경우에는 인덱스와 제약조건의 비활성화가 성능을 향상시킬 수 있습니다.


o 큰 바인드 배열의 사용 

conventional load 의 경우 큰 바인드 배열은 데이터베이스 호출 횟수를 제한하여 성능을 증가시킵니다. 

바인드 배열의 크기는 BINDSIZE 파라미터로 지정합니다. 


o 커밋이 너무 자주 일어나지 않도록 ROWS=<n> 사용 

conventional 데이터 로드에서 rows 파라미터는 커밋당 row 의 갯수를 지정합니다. 

더 적은 커밋은 성능을 향상시킬 것입니다. 


o 병렬 로드 사용 

direct path load 에서 사용할 수 있는 이 옵션은 여러 SQL*Loader 작업이 동시에 수행될 수 있도록 합니다.


$ sqlldr control=first.ctl parallel=true direct=true

$ sqlldr control=second.ctl parallel=true direct=true

...


o 고정 너비 데이터 사용 

고정 너비 데이터 포맷은 오라클의 데이터 파싱 프로세스를 단축해줍니다.

데이터 타입과 열 갯수에 따라 단축량은 매우 커질 수 있습니다. 


o 로드 중에 아카이빙 비활성화

특정 환경에서는 이것이 실현 가능하지 않을 수도 있지만, 데이터베이스 아카이빙을 비활성화 하는 것은 상당한 성능 향상을 가져올 수 있습니다.

Posted by pat98

- 증상 /var/log/messages 에 해당 메세지 계속 로깅

Jan 12 17:07:36 exa1 kernel: martian source 255.255.255.255 from 172.16.4.97, on dev eth0

Jan 12 17:07:36 exa1 kernel: ll header: ff:ff:ff:ff:ff:ff:28:d2:44:ae:0d:4b:08:00


-해결책

테스트 결과..

메세지를 로깅하는 모든 DB node 에서..

 

net.ipv4.conf.eth0.log_martians = 0

 

나머지 값들은 설정해도 적용되지 않는다.


net.ipv4.conf.all.log_martians = 0 

net.ipv4.conf.default.log_martians = 0 

net.ipv4.conf.bondib0.log_martians = 0 

 

-적용

sysctl -p /etc/sysctl.conf


-확인

sysctl -a | grep log_martians


-의미

스푸핑된 패킷이나 소스라우팅, Redirect 패킷에 대해 로그파일에 정보를 남기지 않는다.

net.ipv4.conf.eth0.log_martians=0

net.ipv4.conf.lo.log_martians=0

net.ipv4.conf.default.log_martians=0

net.ipv4.conf.all.log_martians=0


default 는 1 (로깅하는 것임)


 

 

Posted by pat98

02-15 00:01
Flag Counter
Yesterday
Today
Total

글 보관함

최근에 올라온 글

달력

 « |  » 2025.2
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28

최근에 달린 댓글