'분류 전체보기'에 해당되는 글 124건

  1. 2014.12.09 owi 락
  2. 2014.12.09 scan ip 1
  3. 2014.12.08 데이터 모델링
  4. 2014.12.08 owi 2 - 래치와 락
  5. 2014.12.08 owi 1
  6. 2014.12.04 모델링 기초지식
  7. 2014.12.03 redolog file 상태확인
  8. 2014.12.02 POSIX(포직스)
  9. 2014.12.01 그래프 작성
  10. 2014.11.26 rac 백업
2014. 12. 9. 18:20

Lock 의 분류

- Enqueue Lock

- 일반 Lock : Row catch lock, Library cache lock/pin, DML lock, Buffer lock, Sort lock로 구분


Enqueue Lock

Enqueue 구조로 관리되는 락을 말함


어떤 종류의 Enqueue Lock이 존재 하는지 확인하려면?

10g 부터 대부분의 Enqueue Lock 에 대해 개별 대기이벤트가 등록되므로 

V$EVENT_NAME 뷰를 조회하면 어떤 종류의 Enqueue Lock이 존재하는지 알 수 있음





'DB' 카테고리의 다른 글

Shared Pool/ Library Cache와 OWI  (0) 2014.12.10
데이터 모델링  (0) 2014.12.08
모델링 기초지식  (0) 2014.12.04
Posted by 성장하는yw
2014. 12. 9. 17:31

Oracel 11g R2 

Grid Infrastructure Single Client Access Name(SCAN)


SCAN(Single Client Access Name) 

클라이언트에서 서버로 접속할 때 여러 개의 RAC노드가 있어도 하나의 Access name 을 가지도록 하는 기능

이 기능은 새로운 노드가 추가되거나 삭제되는 경우에도 적용됨



상세한 설명은 이 링크로 들어가서 볼 것!!

정리 잘 되어 있음

http://energ.tistory.com/entry/11gR2-Grid-Infrastructure-Single-Client-Access-Name-SCAN-%EC%9D%B4%EA%B1%B4-%EB%98%90-%EB%AD%90%EC%95%BC

'DB > oralce' 카테고리의 다른 글

redo log 기록원리 블로그 쓰는 중 .....  (0) 2014.12.15
oracle 저장 구조  (0) 2014.12.11
rac 백업  (0) 2014.11.26
Oracle RAC 용어 정리  (0) 2014.11.24
fff  (0) 2014.11.15
Posted by 성장하는yw
2014. 12. 8. 18:49

데이터 모델링

개념데이터 모델링 -> 논리데이터 모델링 -> 물리데이터 모델링

3가지 과정으로 분류




개념데이터 모델링


고객의 추상적인 개념이나 요구사항을 분석해 객관화하는 과정,

고객의 요구사항을 정리 후 ERD(Entity Relationship Diagram) 결과물을 만듬

 

논리데이터 모델링 


분석된 데이터를 객관적으로 요구사항들을 검증을 하는 단계,

데이터 정규화 작업 진행


물리데이터 모델링


실제 데이터베이스 제품에 맞도록 구현하는 과정

반정규화 과정을 진행하기도 함 (실제 구현 단계에서 불필요한 데이블이 있다면 다시 합하는 과정)


http://support.microsoft.com/kb/283878/ko




'DB' 카테고리의 다른 글

Shared Pool/ Library Cache와 OWI  (0) 2014.12.10
owi 락  (0) 2014.12.09
모델링 기초지식  (0) 2014.12.04
Posted by 성장하는yw
2014. 12. 8. 18:40

오라클의 동기화 매커니즘 


하나 밖에 없는 리소스를 여러명이 사용하려고 하면 문제가 생김

오라클에서는 래치(Latch)와 락(Lock)을 이용, 

두 개의 동기화 매커니즘을 이용해서 리소스를 보호함


래치와 락의 차이점 

 

분류 

 래치(Latch)

락(Lock) 

목적 

하나의 목적을 수행 :

메모리 구조 (SGA) 에 대한 배타적인 접근을 위함

(오라클 9i cache buffers chains latch들은 

읽기 전용시에 공유 가능)

두 가지 목적을 수행 :

락 모드가 호환 가능하면 

다수의 프로세스가 동일한 리소스를 공유하는 것을 허용

락 모드가 호환 가능하지 않으면 

리소스에 대한 배타적인 접근만 허용

 사용범위

SGA 내부의 데이터 구조에만 적용

메모리 오브젝트를 임시적으로 보호함

단일 오퍼레이션으로 메모리 구조에 대한 접근 제어.

트랜잭션 단위가 아님 

 테이블, 데이터 블록 및 state object와 같은 

오브젝트를 보호함

데이터베이스의 데이터 또는 메타데이터 접근 제어

트랜잭션 단위

 획득방식

두 가지 모드로 요청 가능

willing-to-wait

no-wait

6가지 모드로 요청 가능

null, row share, row exclusive, share, 

share row exclusive 또는 exclusive

 범위

SGA 내부에 정보가 존재, 

로컬인스턴스에서만 볼 수 있음 

래치는 인스턴스 레벨로 작동

데이터베이스 내부에 정보가 존재

모든 인스턴스에서 볼 수 있음

락은 데이터베이스 레벨에서 작동

 복잡도


단순한 명령어를 사용하여 구현됨

일반적으로 test-and-set, 

compare-and-swap 또는 단순한 CPU 명령어.

구현이 쉬움

 

문맥 교환(context switch)을 포함한 

일련의 명령어들을 사용하여 구현됨

구현이 복잡함

 지속기간

아주 짧은 순간만 지속됨

(microsecond 단위 

- 종류에 따라 다르지만 대체 2초를 기다림) 

일정 시간 동안 지속됨

(트랜잭션 동안)

-커밋 안되면 계속 락 걸려있음

 큐(Queue)

프로세스가 래치 획득을 실패한 후 

슬립(Sleep) 상태로 들어갈 때, 

해당요청은 큐(queue)로 관리되지 않으며, 

요청한 순서대로 서비스되지 않음 

(latch wait list를 이용해 

큐 방식으로 사용되는 래치들은 예외임)

대부분 래치는 먼저 온 놈이 임자, 순서 보장 안함 

프로세스가 락 획득을 실패한 후, 

해당 요청은 큐(queue)로 관리되며, 

요청한 순서대로 서비스됨 (NOWAIT 모드는 예외임)

순서 보장함

데드락

래치는 데드락(deadlock)이 발생되지 않도록 구현됨 

락은 큐(queue) 방식을 사용하며, 

데드락이 발생될 가능성이 높음 

데드락이 발생될 때마다 트레이스 파일이 생성됨


Posted by 성장하는yw
2014. 12. 8. 17:09

OWI(Oracle Wait Interface)

프로세스가 겪는 대기현상을 기록하고 관찰하는 일련의 기능과 인터페이스, 방법론을 통칭


xxx 이벤트를 대기한다 

= 자기 순서를 기다린다. 

프로세스가 특정 자원을 획득하지 못하고 대기하는 것

사용예) 

db file sequential read 이벤트를 대기한다. 

buffer busy waits 이벤드를 대기한다.


이벤트 혹은 대기 이벤트

프로세스가 특정 자원을 획득할 때까지 발생하기를 기다리는 사건


OWI 관점에서의 리소스 

리소스

하나의 인스턴스에 수십 개에 달하는 CPU, 수십 기가에 달하는 버퍼 캐시, 수십테라에 달하는 저장 공간이 사용되는 것을 말함


대기이벤트는 P1, P2, P3 세 개의 파라미터로 통해 현재 대기하는 리소스를 표현함

대기 이벤트의 P1, P2, P3의 값은 V$SESSION_WAIT 뷰나 V$SESSION 뷰와 같은 다이나믹 뷰나

SQL Trace 파일 등을 통해 관찰이 가능함 

각 이벤트마다 P1, P2, P3 의 의미는 각각 다르며 , V$EVENT_NAME 뷰를 통해 확인 가능


오라클에서의 대기현상 표현

대기회수 (회수) , 타임아웃회수 (기다렸는데 못 들어간 시간), 대기시간 (기다린 시간) 으로 표현


"프로세스는 특정시간동안 latch : library cache 이벤트를 총 10000번 대기하고, 

그 중 다섯 번의 타임아웃이 발생했으며 총 대기시간은 10초였다."


이 중 가장 의미 있는 것은 대기시간임(경합의 정도를 가장 정확하게 분석할 수 있기때문)


실제로 작업을 한 시간(Service time) + 이벤트를 대기한 시간(Wait time) = 응답시간(Response Time)


대체적으로 Service time, Wait time 낮추면 자연스럽게 응답시간이 낮아지고, 사용자의 성능만족도는 증가함

상황에 따라 다를 수도 있음



OWI  툴


>> OWI 다이나믹 뷰

>> Extended SQL Trace 실행계획 툴 보는 것 많이 사용함, 책을 좀 더 공부하고 다시 이 부분으로 와서 공부할 예정

>> oradebug와 덤프(dump) 메모리 덤프 뜨는 것, 반드시 sysdba 권한으로 실행 - 나중에 다시 봄 


V$EVENT_NAME

오라클에 정의된 모든 대기이벤트에 대한 참조성 정보를 제공

10g  부터 대기클래스(Wait Class)에 대한 정보가 추가됨


V$EVENT_NAME.WAIT_CLASEE 컬럼 참조시 특정 이벤트가 어떤 클래스에 속해있는지 조회 가능



V$SYSTEM_EVENT (DB 껐다키면 정보 사라짐)

인스턴스 가동 후 지금까지 모든 세션에서 발생한 대기이벤트의 누적정보


V$SESSION_EVENT (접속해 있는 모든 사용사별로 정보를 볼 수 있음)

현재 접속되어 있는 각 개별 세션별 대기이벤트의 누적 정보


V$SESSION_WAIT (현재 대기하는 유저의 정보를 볼 수 있음)

각 세션이 현재 대기하고 있는 이벤트에 대한 상세정보를 제공함


V$SESSION_WAIT_HISTORY

V$SESSION_WAIT 정보를 세션별로 최대 10개까지 누적해서 제공함


V$SYSTEM_WAIT_CLASS

V$SYSTEM_EVENT와 동일한 차원의 값을 클래스 기준으로 제공


V$SESSION_WAIT_CLASS

V$SESSION_EVENT와 동일한 차원의 값을 클래스 기준으로 제공


V$EVENT_HISTOGRAM

각 대기이벤트에 대해서 대기시간의 구간(버킷)별로 대기회수를 보여줌

10g부터는 V$LATCH 뷰의 SLEEP1~SLEEP4 컬럼의 값은 사용되지 않으며

V$EVENT_HISTOGRAM뷰가 이 컬럼들을 대신함


기타 중요 다이나믹 뷰

대기 현상을 분석하기 위해서는 다음과 같은 다이나믹 뷰를 활용할 수 있어야 함



 뷰 이름

 정보

V$SESSION

세션 정보 

V$ACTIVE_SESSION_HISTORY 

세션 히스토리 정보 

V$PROCESS

프로세스 정보 

V$TRANSACTION

트랜잭션 정보 

V$LATCH, V$LATCH_PARENT, V$LATCH_CHILDREN, V$LATCH_HOLDER 

래치 정보 

 V$LOCK, V$LOCKED_OBJECT, V$ENQUEUE_LOCK

락 정보 

V$SQL

SQL 정보 

V$LIBRARYCACHE, X$KGLLK, X$KGLPN 

Library Cache 정보

V$ROWCACHE, V$ROWCACHE_PARENT 

Row Cache 정보 

V$SGASATA 

SGA 정보 

V$SEGMENT_STATISTICS

세그먼트 레벨 통계 정보 

V$SESS_TIME_MODEL, V$SYS_TIME_MODEL

Time Model 정보 

V$BH, X$BH

버퍼 캐시 정보 





Posted by 성장하는yw
2014. 12. 4. 16:41

1) 모델링

현업 또는 고객이 요구하는 추상적인 요구사항을 찾아내서 분석 및 검증한 후 

적절한 기호를 사용해서 객관적으로 표현하고 물리적으로 구형하는 전체 과정을 의미함


2) 모델링의 종류

1. 프로세스 모델링

- 모델링 진행시 어떤 업무가 있으며 그 업무 흐름을 중심으로 설계를 하는 것

>장점

업무 분석만 잘 되면 다른 방법에 비해 비교적 쉽고, 편하게 모델링을 할 수 있음

>단점

해당 업무가 변경되거나 없어지면 모델링의 결과도 문제가 될 수 있음 (예) 데이터가 없어짐

다른 업무에서 나온 데이터나 과정이 중복될 수도 있음


2. 데이터 모델링 (가장 많이 사용)

- 업무보다는 데이터를 중심으로 모델링을 진행하는 방법


>장점

업무가 변경되어도 모델링의 결과에는 크게 영향을 주지 않음

요즘 대부분 모델링을 중점적으로 많이 함 


>단점

프로세스 모델링 보다는 조금 더 어려움



3. 상관 관계 모델링

- 위 두 가지를 섞어서 하는 모델링

프로세스와 데이터를 검증하기 위해 CRUD  Matrix 방법을 통해 검증함




'DB' 카테고리의 다른 글

Shared Pool/ Library Cache와 OWI  (0) 2014.12.10
owi 락  (0) 2014.12.09
데이터 모델링  (0) 2014.12.08
Posted by 성장하는yw
2014. 12. 3. 15:02

터미널 창에서 보기 편하게 하기 위해서 아래와 같이 설정

명령어 한 줄 씩 입력 후 엔터


set line 200 

col group# for 999

col mb for 999

col member for a45

col seq# for 999

col status for a8

col arc for a5


쿼리문


select a.group#, a.member, b.bytes/1024/1024/ MB, b.sequence# "SEQ#",

b.staatus, b.archived "ARC"

from v$logfile a, v$log b

where a.group#=b.group#

order by 1,2;



매번 입력하기 싫으면 vi.log로 위 내용 모두 붙여넣기 한 후


set line 200 

col group# for 999

col mb for 999

col member for a45

col seq# for 999

col status for a8

col arc for a5


select a.group#, a.member, b.bytes/1024/1024/ MB, b.sequence# "SEQ#",

b.staatus, b.archived "ARC"

from v$logfile a, v$log b

where a.group#=b.group#

order by 1,2  


:wq!



실행방법


SYS> @log 


혹은


SYS>@경로/log.sql 


'DB > sql' 카테고리의 다른 글

sql*plus autotrace 기능 활성화  (0) 2014.12.24
튜닝에 필요한 파일들  (0) 2014.12.22
인덱스 2  (0) 2014.12.19
인덱스 1  (0) 2014.12.19
현재 가진 계정이 소유하고 있는 테이블 목록  (0) 2014.12.17
Posted by 성장하는yw
2014. 12. 2. 22:30

이식 가능 운영 체제 인터페이스(interface, portable operating system interface)의 약자

서로 다른 UNIX OS의 공통 API를 정리하여 

이식성이 높은 유닉스 응용 프로그램을 개발하기 위한 목적으로 

IEEE가 책정한 애플리케이션 인터페이스 규격이다.


POSIX의 마지막 글자 X는 유닉스 호환 운영체제에 보통 X가 붙는 것에서 유래한다.


규격의 내용은 

커널로의 C 언어 인터페이스인 시스템 콜 뿐 아니라, 

프로세스 환경, 파일과 디렉터리, 

시스템 데이터베이스(암호 파일 등), tar 압축 포맷 등 다양한 분야를 아우른다.


유닉스 계열 외에 마이크로소프트 윈도 NT는 POSIX 1.0에 준하는 POSIX 서브 시스템을 탑재하고 있으며, 

POSIX 응용 프로그램을 서브 시스템에서 실행할 수 있다. 

이는 주로 미국 정부기관의 컴퓨터 시스템 도입조건(FIPS)에서 POSIX 준거할 것을 요구하기 때문이다.


윈도 2000까지 POSIX 서브시스템을 탑재하고 있었지만 

윈도 XP에서 폐지되었다. 

이후 Windows 2003 R2 부터

POSIX 2.0에 준하는 Subsystem for UNIX-based Applications(SUA)를 통해 POSIX를 지원하고 있다.


출처 : http://ko.wikipedia.org/wiki/POSIX

'용어' 카테고리의 다른 글

Ubuntu Linux  (0) 2015.03.16
infrastructure(인프라스트럭처, 인프라)  (0) 2015.02.25
가상화(Virtualization)  (0) 2015.02.25
vmware 사의 vSphere vMotion 기능  (0) 2015.02.25
Posted by 성장하는yw
2014. 12. 1. 14:39

<그래프를 그리는 방법>


1. R에서 제공하는 기본 패키지 사용


  *  plot 함수 - 고수준 작도함수 : 그림

                 - 저수준 작도함수 : 주석, 글자


2. ggplot2 라는 패키지 사용


plot() 함수

 

문법


  plot( y 축  데이터 ,  옵션) 


  plot( x 축  데이터 , y  축  데이터 ,  옵션 ) 


그리는 방식 : 약간의 차이가 있으나 주로 데카르트 방법으로 많이 사용


  데카르트 방식 : plot(x,y) 


  수식기반  방식 : plot(y~x) 


옵션






기본값으로 그래프 만들기


기본값은 y축의 값


y<-c(1,2,3,4,5)

plot(x)


c(여러개인자들)

c(1,2,3,4,5) 여러개의 값을 한꺼번에 넣으려면 이렇게 입력해줘야 함





> y<-c(1,1,1)

> plot(y)



x, y 축의 값을 다 지정해서 출력

> x<-1:3

> y<-4:6

> plot(x,y)



x, y축 한계값 조정하기

> x<-1:3

> y<-4:6

> plot(x,y,xlim=c(1,5), ylim=c(1,10))




x 축과  y 축 제목  , 그래프 제목 지정해 출력

x<-1:3

y<-4:6

plot(x,y,xlim=c(1,5) ,ylim=c(1,10),

xlab="x 축 값", ylab="Y 축 값", main="PLOT TEST")




응용



그래프 배치 조정(mfrow)


한 화면에 여러개의 그래프를 동시에 배치하는 경우

par(mfrow=c(nr,nc) 

nr - 행의 개수

nc - 열의 개수


> par(mfrow=c(1,3))  

1행에 3개가 들어가도록 그래프를 배치하세요 (많이 사용)

> apple<-c(10,20,25,15,20)

> plot(apple,type="o")

> plot(apple,type="s")

> plot(apple,type="l")





여러 개의 그래프 중첩으로 그리기


par(new=T) 사용 혹은 고수준 작도함수의 인수 add=T를 지정하면 됨

그리고 lines 함수를 사용해 기존의 그래프 위에 추가 할 수 있음

lines 많이 사용



타입에 o는 직선 그래프임




범례 추가하기


문법

legend(x축 위치, y축 위치, cex=글자크기, col=색상, pch=크기, lty=선모양)


> y1<-c(1:5)

> y2<-c(2:6)

> y3<-c(3:7)

> plot(y1,type="s",col="red",ylim=c(1,10))

> lines(y2,type="o",col="green",ylim=c(1,10))

> lines(y3,type="s",col="blue",ylim=c(1,10))

> legend(4,9,c("Y1","Y2","Y3"),cex=0.9,

+ col=c("red","green","blue"),lty=1)




barplot() 

막대그래프 그리기


옵션들



Posted by 성장하는yw
2014. 11. 26. 10:55

[oracle@rac2 ~]$ crs_stat -t

Name           Type           Target    State     Host

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

ora.rac.db     application    ONLINE    ONLINE    rac2

ora....vice.cs application    OFFLINE   OFFLINE

ora....ac1.srv application    OFFLINE   OFFLINE

ora....c1.inst application    ONLINE    ONLINE    rac1

ora....c2.inst application    ONLINE    ONLINE    rac2

ora....C1.lsnr application    ONLINE    ONLINE    rac1

ora.rac1.gsd   application    ONLINE    ONLINE    rac1

ora.rac1.ons   application    ONLINE    ONLINE    rac1

ora.rac1.vip   application    ONLINE    ONLINE    rac1

ora.rac2.gsd   application    ONLINE    ONLINE    rac2

ora.rac2.ons   application    ONLINE    ONLINE    rac2

ora.rac2.vip   application    ONLINE    ONLINE    rac2



위 두 개의 오프라인을 온라인으로 바꾸려면


[oracle@rac1 ~]$ crs_start -all

Attempting to start `ora.rac.olpt_service.cs` on member `rac1`

Attempting to start `ora.rac.olpt_service.rac1.srv` on member `rac1`

Start of `ora.rac.olpt_service.cs` on member `rac1` succeeded.

Start of `ora.rac.olpt_service.rac1.srv` on member `rac1` succeeded.

[oracle@rac1 ~]$ crs_stat -t

Name           Type           Target    State     Host

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

ora.rac.db     application    ONLINE    ONLINE    rac2

ora....vice.cs application    ONLINE    ONLINE    rac1

ora....ac1.srv application    ONLINE    ONLINE    rac1

ora....c1.inst application    ONLINE    ONLINE    rac1

ora....c2.inst application    ONLINE    ONLINE    rac2

ora....C1.lsnr application    ONLINE    ONLINE    rac1

ora.rac1.gsd   application    ONLINE    ONLINE    rac1

ora.rac1.ons   application    ONLINE    ONLINE    rac1

ora.rac1.vip   application    ONLINE    ONLINE    rac1

ora.rac2.gsd   application    ONLINE    ONLINE    rac2

ora.rac2.ons   application    ONLINE    ONLINE    rac2

ora.rac2.vip   application    ONLINE    ONLINE    rac2


현재 orc 디스크를 확인하는 명령
[root@rac1 ~]# ocrcheck 
Status of Oracle Cluster Registry is as follows :
         Version                  :          2
         Total space (kbytes)     :     306968
         Used space (kbytes)      :       3584
         Available space (kbytes) :     303384
         ID                       :  228682162
         Device/File Name         : /dev/raw/raw1
                                    Device/File integrity check succeeded

                                    Device/File not configured

         Cluster registry integrity check succeeded

자동 백업 내역 확인 명령
4시간 마다 / 매일 마다 / 매주 마다 자동적으로 실행됨
[root@rac1 ~]# ocrconfig -showbackup

rac1     2014/11/25 19:05:09     /home/oracle/product/10.2/crs/cdata/crs





rac1     2014/11/25 19:05:09     /home/oracle/product/10.2/crs/cdata/crs

rac1     2014/11/25 19:05:09     /home/oracle/product/10.2/crs/cdata/crs

실제 경로에 가면 백업된 파일을 확인 할 수 있음
가장 최신파일인 backup00.ocr 백업파일으로 복구에 사용함

[root@rac1 ~]# cd /home/oracle/product/10.2/crs/cdata/crs

[root@rac1 crs]# ls

backup00.ocr  day.ocr  week.ocr


dd명령어로 ocr disk 초기화 - 장애 발생시킴
[root@rac1 ~]# dd if=/dev/zero of=/dev/raw/raw1 bs=8k
dd: writing `/dev/raw/raw1': No space left on device
38401+0 records in
38400+0 records out
[root@rac1 ~]# dd if=/dev/zero of=/dev/raw/raw2 bs=8k
dd: writing `/dev/raw/raw2': No space left on device
38401+0 records in
38400+0 records out
[root@rac1 ~]# ocrcheck
Segmentation fault
[root@rac1 ~]# crsctl stop crs
Segmentation fault


백업된 OCR 파일을 이용 복원, 해결 확인
[root@rac1 ~]# ocrconfig -restore /home/oracle/product/10.2/crs/cdata/crs/backup00.ocr

[root@rac1 ~]# crsctl start crs
Attempting to start CRS stack
The CRS stack will be started shortly



[oracle@rac1 ~]$ cluvfy comp ocr -n all


OCR 무결성 확인 중


OCR 무결성을 검사하는 중...


클러스터화되지 않은 구성이 없는지 검사하는 중...

모든 노드에 클러스터화되지 않은 로컬 전용 구성이 없습니다.


OCR 장치에 대한 고유성 검사를 성공했습니다.


OCR 버전을 검사하는 중...

올바른 OCR 버전 "2"이(가) 존재합니다.


OCR에 대한 데이터 무결성을 검사하는 중...

OCR에 대한 데이터 무결성 검사를 성공했습니다.


OCR 무결성 검사를 성공했습니다.


OCR 무결성 확인 작업을 성공했습니다.



[oracle@rac1 ~]$ crsctl start crs

Insufficient user privileges.

[oracle@rac1 ~]$ su -

Password:

[root@rac1 ~]# crsctl start crs

Attempting to start CRS stack

The CRS stack will be started shortly


'DB > oralce' 카테고리의 다른 글

oracle 저장 구조  (0) 2014.12.11
scan ip  (1) 2014.12.09
Oracle RAC 용어 정리  (0) 2014.11.24
fff  (0) 2014.11.15
rman(recovery manager)  (0) 2014.11.13
Posted by 성장하는yw