본문 바로가기

oracle

ORACLE 11g SET STATS MANUALLY v1.0 ORACLE 11g SET STATS MANUALLY 1.0 Date Ver Etc. 11.08.13 1.0 1. SET STATS MANUALLY Statistics 를 수동으로 설정하는 경우는 매우 한정적이다. 그 한정적인 경우는 다음과 같은 경우가 있지 않을까 싶다. a. Optimizer 의 행동을 관측 b. 테스트 데이터 만들기가 힘들 때 a 는 말그대로 연구 목적이다. Optimizer 가 다음과 같은 지표의 변화에 대해 어떻게 반응하는지 그것을 관찰하고 연구한다는 이야기다. b 는 말그대로 테스트 데이터를 만들어 사용하기 위한 노력이 크게 들 때이다. 이런경우 간단히 Stats 을 수정해 원하는 Plan 으로 유도할 수 있을 것이다 2. DBMS_STATS 를 이용한 Stats 초기화 A. .. 더보기
ORACLE 11g DATAGUARD CREATE STANDBY DATABASE (with different memory size) v1.0 ORACLE 11g DATAGUARD CREATE STANDBY DATABASE (with different memory size) Date Ver Etc. 11.07.11 1. Create Standby Database (Different Memory Size) 앞서 다음의 내용을 가정한다. l Primary / Standby 는 동일한 redhat release version 이며 Physical Ram, File System 구성 모두 동일하다. l 기존 Primary Database 의 DB Name, Instance Name 은 DG1 이다. l DG1 은 3G 를 memory_max_target 값으로 가져간다. l DG1 의 memory 관련 Parameter 는 변경할 수 없다. l DG1.. 더보기
ORACLE 11g Shared Memory and /dev/shm v1.0 ORACLE 11g Shared Memory and /dev/shm v1.0 Date Ver Etc. 11.07.11 1. /dev/shm Linux Install 시 이 값은 default 로 Physical Ram 의 1/2 Size 로 mount 된다. 일례로 4G Physical Ram 을 가지고 설치한 경우 다음과 같다. dg2@/home/oracle>df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 26G 16G 8.6G 65% / tmpfs 2.0G 0 2.0G 0% /dev/shm dg2@/home/oracle>mount /dev/sda1 on / type ext3 (rw) proc on /proc type proc (rw) sysfs.. 더보기
ORACLE 11gR2 Dataguard DGMGRL v1.1 ORACLE 11gR2 Dataguard DGMGRL Date Ver Etc. 110619 1.0 1. DGMGRL Data Guard 를 관리하기 위한 CLI (command line interface) 이다. 2. Pre-requisitions for Configuring Data Guard DGMGRL 의 Configuration 에 사용되는 User 는 반드시 sysdba 권한을 가지고 있어야 한다. 그 이유는 DGMGRL 에서 수행되는 명령중에는 DB Restart 가 필요한 Operation 도 있기 때문이다. 또 Guard 를 구성하고 있는 모든 데이터베이스는 spflie 을 사용해야 한다. 3. Type of Commands of DGMGRL l 여기서 모든 명령어를 소개하진 않았다. 기본.. 더보기
ORACLE 11g R2 (11201) Data Guard Rename Problem v1.0 ORACLE 11g R2 (11201) Data Guard Rename Problem v1.0 Date Ver Etc. 1. Rename Problems on Data Guard (11.2.0.1.0) Data Guard 11.2.0.1.0 (11g R2) Data Guard 는 Rename 문제가 있다. 이 문제는 Active Standard Database 에서 문제가 된다. 문제의 내용은 수정된 Object Name 이 Dictionary 에는 존재하지만 실제 사용시에는 존재하지 않는 것으로 판단해 발생한다. 해당 문제는 11.2.0.2.0 에서 수정되었다. 2. Cases of Problem DataGuard 환경에서 Rename 을 사용하는 경우 Standby 에 제대로 적용되지 않는 문제가 있.. 더보기
ORACLE 11g R2 Data Guard Installation v1.0 ORACLE 11g R2 Data Guard Installation Date Ver Etc. 11.05.22 1.0 1. Data Guard 11g R2 의 Data Guard Active Standby Database 를 사용할 수 있다. 기존의 DataGuard 는 Database 를 Open 하게 되면 Redo Apply 가 중지되었다. 하지만 11g 는 Standby Database 를 OPEN 해도 Redo log applying 되며 이는 11g NF 이다. 2. Configuration for Data Guard using RMAN 이 문서에서 이야기 할 내용은 RMAN 을 이용한 Data Guard 구성이다. 여기서 Primary 가 될 DB 는 이미 구성되어 있는 상태로 가정하고 이야기 .. 더보기
ORACLE SPLIT RANGE-PARTITIONED SEGMENT v1.0 ORACLE SPLIT RANGE-PARTITIONED SEGMENT v1.0 Date Ver Etc. 2011-04-15 1.0 1. SPLIT PARTITION (RANGE) Range-Partitiioned Table 에 대해 Split partition 을 진행할 때는 기준이 되는 Value 선정에 주의해야 한다. 당연히도 해당 Value 에 따라 Partition Segment 를 어느것을 사용할지 결정이 되기 때문이다. SPLIT 을 해야하는 경우는 다음과 같다. - 데이터가 사용자 예측치보다 비대해져 하나의 Partition Segment 를 분할해야 하는 경우 - 잘못된 기준값 사용으로 데이터의 위치(세그먼트 레벨로 보았을 때) 가 잘못되었고 이를 바로 잡아야 하는 경우 2. SYNTAX .. 더보기
ORACLE Data Guard Architecture v1.0 ORACLE Data Guard Architecture v1.0 Date Ver Etc. 2011.04.15 1.0 1. ORACLE Data Guard : Overview A. Overview (*출처 A) Data Guard 는 위와 같은 아키텍처를 가진다. Primary Database 와 Standby Database 로 구성되며 하나의 Primary Database 에 최대 9개의 Standby Database 가 구성될 수 있다. Primary 측의 변경사항은 Redo Logs 에 기록되는데 이는 백그라운드 프로세스 (LGWR 혹은 ARCn) 에 의해 Standby 측에 Oracle Net 을 통해 전파된다. 전파된 변경 내역은 Standby Redo Log 에 쓰였다가 Database 에 적.. 더보기
ORACLE Hints 11g R2 v1.0 ORACLE Hints 11g R2 1. Hint Hint 는 Optimizer 의 행동을 제어하기 위해 사용한다. Hint 가 무시되는 경우는 해당 힌트로 제어하려는 행동 자체가 불가능한 경우이다. Hint 가 사용되면 CBO 의 경우 Transformation 에 있어 해당 Hint 에 대해 Cost 산정 없이 선택한다. Hint 로 Rule 을 사용하는 경우 CBO 를 사용하지 않겠다는 의미와 동일하다. Hint 는 가능한 사용을 피하고 Optimizer 가 올바른 판단을 할 수 있을 정도로 꼭 필요한 상황에 사용해야 한다. 지나친 사용은 Optimizer 의 유연성을 (다른 플랜을 만드는데 있어서) 떨어뜨린다. 2. Usage of Hint A. Hint 의 사용은 /*+ hint_name */ .. 더보기
ORACLE 10g Finding Bind Values v1.0 ORACLE 10g Finding Bind Values from 1. Bind Values Bind 값은 Query 수행시 사용되는 변수를 의미한다. Query 안에는 :bind_name 으로 표현된다. Bind 변수를 사용하는 이유는 Cursor 공유를 위해서이다. Cursor 를 공유한다는 것은 Hard Parsing 을 최소화 한다는 것이다. 이를 최소화 함으로써 얻을 수 있는 효과는 CPU Times 과 Memory 공간의 절약 (Library Cache) 과 메모리 단편화를 최소화할 수 있다. 반대로 단점(?) 도 있는데 Literal (실제값) 을 사용시 해당 값에 대한 정확한 통계정보 (이를테면 히스토그램) 를 사용해 최적의 실행플랜을 만들어 낼 수 있으나 Bind 변수를 사용하면 이를 이용.. 더보기