2015. 3. 16. 03:32

영국 Canonical사가 제공하고 있는, Debian GNU/Linux와 호환성이 있는 프리의 Linux 디스트리뷰션.개발은 동사를 중심으로 자원봉사 개발자 커뮤니티에 의해서 진행되고 있다.2004년 10월에 최초의 버젼이 발표되었다.


Ubuntu Linux는 1매의 CD에 들어있는 심플한 패키지로서, 그래피컬하게 조작할수 있는 간단한 인스톨러로 도입할수 있어 개인의 데스크탑 용도로서 인기가 높다.데스크탑판과 서버판이 있어, 각각 6개월 마다 새로운 버젼이 릴리스 된다.각각의 버젼은 최저 18개월간은 온라인의 시큐러티 업데이트를 이용할수 있어 게다가 만약 장기 서포트(LTS:Long Term Support)판을 이용하면, 데스크탑판은 3년간, 서버판은 5년간의 서포트가 제공된다.


데스크탑판에는 프리의 Web 브라우저나 오피스 소프트, 그래픽 소프트웨어, 게임 소프트등이 동고 되고 있다.유시에 의해서 일본어 환경의 이식도 행해지고 있어 일본어판의 패키지에서는 프리의 일본어 폰트나 일본어 입력 소프트(가나한자 변환 소프트)등도 인스톨 된다.용도나 환경에 따라서, 교육기관 전용의 「Edubuntu」, 데스크 탑 환경에 KDE를 이용한 「Kubuntu」, 같은 데스크탑에 Xfce를 이용한 「Xubuntu」등의 패키지가 준비되어 있다.


2007년 5월에는, PC 제조·판매 대기업인 Dell사가 Ubuntu Linux를 프리 인스톨 한 모델의 판매를 개시한다고 발표해, 화제로 되었다.


그리고, “Ubuntu”란 남아프리카공화국의 즈르족등의 말로 「다른 사람에게의 동정심」 등을 나타내는 단어로서, Canonical사 창설자인 동국 출신인 Mark Shuttleworth(마크·샤트르워스) 씨의 명명에 의한다.


출처(2007년 글) : http://tip.daum.net/openknow/48912703?q=long%20term%20support%20version


좀 더 상세한 다른 블로그의 최신 내용(2014년 글)

http://hitek.tistory.com/trackback/78







----

LTS(Long term support) 장기지원버전

----

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

infrastructure(인프라스트럭처, 인프라)  (0) 2015.02.25
가상화(Virtualization)  (0) 2015.02.25
vmware 사의 vSphere vMotion 기능  (0) 2015.02.25
POSIX(포직스)  (0) 2014.12.02
Posted by 성장하는yw
2015. 3. 1. 23:51

select table_name from tabs

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

datafile size 줄이는 방법  (0) 2015.05.24
nolog 하는 이유  (0) 2015.04.08
1장 select  (0) 2015.02.14
오라클 sqlplus 접속 관련 명령어 및 에러해결법  (0) 2015.02.14
sql*plus autotrace 기능 활성화  (0) 2014.12.24
Posted by 성장하는yw
2015. 2. 25. 12:12

infrastructure ; 인프라


[참고] 원래의 발음은 '인프라 스트럭처'인데, 모두 발음하기에 너무 길어서 그런지, 

우리나라에서는 이를 줄여서 '인프라'라고 발음하고 표기하는 경우가 많은 듯하다. 

이에 따라, 텀즈에서도 이를 인프라로 표기하였지만, 

'infra'가 나름대로의 의미를 가지고 있는 별도의 단어이므로 이런 식으로 줄여서 발음하는 것은 바람직하지 않다고 본다.


정보기술이나 인터넷에서, 인프라는 컴퓨터와 사용자들을 연결하는데 사용되는 물리적인 하드웨어를 말한다. 

인프라는 전화회선, 케이블 TV 회선, 인공위성 및 안테나 등과 같은 전송매체와, 라우터, 리피터 등의 전송제어장치 등을 포함한다. 인프라는 또한, 신호를 보내고 받고, 관리하는데 사용되는 소프트웨어를 포함한다.


경우에 따라서는, 

인프라는 컴퓨터나 기타 다른 장치에 연결되어 있는 것은 아니지만, 

서로 연결되어 있는 하드웨어와 소프트웨어를 지칭하기도 한다. 

그러므로, 정보기술 사용자들에게, 인프라는 정보의 흐름과 처리를 지원하는 모든 것처럼 비쳐지기도 한다.


인프라 회사들은, 

상호 연결되어 접근할 수 있는 형태 

그리고 얼마나 많은 정보를 얼마나 빠르게 보낼 수 있느냐는 두 가지 측면 모두에서 인터넷의 발전에 지대한 역할을 한다.


출처 : http://www.terms.co.kr/infrastructure.htm

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

Ubuntu Linux  (0) 2015.03.16
가상화(Virtualization)  (0) 2015.02.25
vmware 사의 vSphere vMotion 기능  (0) 2015.02.25
POSIX(포직스)  (0) 2014.12.02
Posted by 성장하는yw
2015. 2. 25. 11:58


가상화(Virtualization)


가상화란 물리적 요소와 위치를 추상화하는 것을 말합니다. 

서버, 애플리케이션, 데스크톱, 스토리지, 네트워킹 등의 IT 리소스는 

물리적 디바이스에서 분리되어 논리적 리소스로 제공됩니다. 

가상화 기술은 물리적 리소스와 논리적 리소스 간의 매핑을 생성하고 실행합니다.


가상화는 누가, 어떤 용도로 사용합니까?


가상화는 소규모 데이터 센터에서 대기업, 정부 기관, 서비스 공급업체, ISV 등에서 

사용하는 대규모 데이터 센터에 이르기까지 광범위하게 사용되는 것은 물론, SMB IT 환경에서도 사용됩니다.

클라우드 컴퓨팅 환경의 기반 기술로서 가상화는 IT 조직이 리소스를 풀로 구성하여 여러 사용자 간에 공유하고 

초과 용량 할당의 문제 없이 신속하게 구축할 수 있게 합니다. 

리소스 활용의 효율성이 높아지면서 장비, 공간, 전력 및 냉각 비용이 자연스럽게 절감됩니다. 

또한 가상화는 복잡성과 관리 부담을 해소하고 애플리케이션 가용성을 높이며 재해 복구를 지원하고 

IT 보안을 강화하는 데에도 유용합니다.


이 기술의 작동 방식


IT 환경의 가상화는 다음을 비롯하여 여러 가지 형태로 이루어집니다.


서버 가상화의 경우 하이퍼바이저라는 씬 소프트웨어 계층을 활용하여 VM(Virtual Machine: 가상 머신)을 생성합니다. 

VM은 운영 체제와 애플리케이션이 들어 있는 격리된 소프트웨어 컨테이너입니다. 

이러한 VM을 게스트 머신이라고 하며 완전히 독립적으로 구성되기 때문에 하나의 물리적 호스트 머신에서

여러 개를 동시에 실행할 수 있습니다. 

하이퍼바이저는 필요에 따라 각 VM에 호스트 리소스(CPU, 메모리)를 동적으로 할당합니다.  


스토리지 가상화는 블록, 파일, 디스크, 테이프 등 다양한 형태로 구현됩니다. 

물리적 스토리지는 숨겨져 있으며 논리적 볼륨으로 표시됩니다. 

테이프가 디스크로 표시되는 식으로, 다른 미디어로 표시될 수도 있습니다. 

스토리지 가상화를 구현하면 디바이스를 풀로 구성하고 사용자에게 논리적 디바이스로서 용량을 할당할 수 있습니다. 

고급 솔루션을 사용하면 스토리지 시스템을 하나의 논리 유닛으로 관리하고 단일 논리 풀에서 용량을 할당할 수 있습니다.

씬 프로비저닝표시되는 가용 용량이 아니라 필요에 따라 공유 물리적 리소스(메모리, CPU, 디스크)를 할당하는 기술입니다. 

따라서 물리적으로 사용 가능한 용량보다 더 많은 리소스를 할당(초과 할당)할 수 있으며 높은 리소스 활용도가 보장됩니다.


네트워크 가상화 네트워크 리소스(하드웨어 및 소프트웨어)를

물리적 요소가 아니라 논리적 요소로 구축하고 관리할 수 있게 합니다. 

여러 개의 물리적 네트워크를 논리적 네트워크 하나로 통합하거나 물리적 네트워크 하나를 각각 구분되는 여러 개의 논리적 네트워크로 세분화할 수도 있습니다. 

네트워크 가상화 기술에는 가상 머신 간의 전환 기능을 에뮬레이트하는 소프트웨어도 포함되어 있습니다.


VDI(Virtual Desktop Infrastructure)는 물리적 시스템에서 데스크톱을 분리합니다. 

VDI 환경에서는 데스크톱 운영 체제와 애플리케이션이 호스트 컴퓨터에서 실행되는 가상 머신 내에 상주하고 

데이터는 공유 스토리지에 상주합니다. 

사용자는 어떤 컴퓨터나 모바일 디바이스에서도 프라이빗 네트워크 또는 인터넷 연결을 통해 가상 데스크톱을 액세스할 수 있습니다.


가상화의 이점


신속한 애플리케이션 구축

애플리케이션 서비스 수준 및 가용성 제고

높은 인프라스트럭처 투자 활용도

빠르고 유연한 확장

인프라스트럭처, 에너지 및 설비 비용 절감

관리 부담 경감

장소에 구애받지 않는 데스크톱 애플리케이션 및 데이터 액세스

IT 보안 강화


출처 : http://korea.emc.com/corporate/glossary/virtualization.htm

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

Ubuntu Linux  (0) 2015.03.16
infrastructure(인프라스트럭처, 인프라)  (0) 2015.02.25
vmware 사의 vSphere vMotion 기능  (0) 2015.02.25
POSIX(포직스)  (0) 2014.12.02
Posted by 성장하는yw
2015. 2. 25. 10:39

라이브 마이그레이션 수행


VMware vSphere®의 라이브 마이그레이션을 사용하여 

실행 중인 전체 가상 머신을 다운타임 없이 

물리적 서버 간에 라이브 마이그레이션할 수 있습니다

가상 머신은 네트워크 ID 및 연결을 유지하여 원활한 마이그레이션 프로세스를 보장합니다. 고속 네트워크를 통해 가상 머신의 활성 메모리와 정확한 실행 상태를 전송하여 

원본 vSphere 호스트에서 실행 중인 가상 머신이 대상 vSphere 호스트에서 실행되도록 전환할 수 있습니다. 

전체 프로세스는 기가비트 이더넷 네트워크에서 2초 안에 이루어집니다.

리소스 풀 내에서 가상 머신을 자동으로 최적화합니다.

예정된 다운타임이나 비즈니스 운영 중단 없이 하드웨어 유지 관리를 수행합니다.

장애가 발생하거나 성능이 저하된 서버에서 가상 머신을 제거합니다.


1.What is vMotion?


ESX, ESXi서버위에서 동작 중인 가상 머신(즉, 게스트OS)을 다운시키지 않고(shutdown이나 power off) 다른 ESX, ESXi로 이동시키는 기술을 말합니다. 

Live Migration또는 Hot Migration이라고도 불립니다.

실제 vMotion을 동작시킬 때도 마이그레이션(Migration)이라는 메뉴를 통해 이동시킵니다.


참고) ESX, ESXi서버 : VMware에서 만든 가상화 OS




참조 사이트 2


vMotion 기능

영문으로 된 23분 정도의 강의도 있다.

http://www.vmware.com/kr/products/vsphere/features/vmotion.html


참조사이트 3


vMotion 설치 및 설명

다른 분께서 설명이랑 글을 잘 정리해 두었다.

http://1828.tistory.com/entry/vSphere-vMotion


참조사이트 4 


ESX, ESXI서버의 차이점

정리를 참 잘 해놓으셨다

http://blog.pasion.kr/what-is-esxi/




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

Ubuntu Linux  (0) 2015.03.16
infrastructure(인프라스트럭처, 인프라)  (0) 2015.02.25
가상화(Virtualization)  (0) 2015.02.25
POSIX(포직스)  (0) 2014.12.02
Posted by 성장하는yw
2015. 2. 14. 20:35





SQL  

Structured Query Language의 약자이다.

구조화된 쿼리 언어이다. 

사람이 원하는 바를 DBMS프로그램에게 알려주는 언어이다. 


* 오라클에 연습용 계정으로 로그인하기


sqlplus scott/tiger



*오라클 서버가 꺼져 있을 때 켠 후 로그인하기


sys/oracle as sysdba

startup

conn scott/tiger


* 사용자 계정 모양으로 프롬프트 바꾸기


오라클의 sqlplus scott/tiger로 접속 한 후 

SET sqlprompt "_USER>" 


입력하면 

현재 접속해 있는 계정이름으로 변경되어 있으므로, 

편리하게 작업할 수 있다. 


1. desc(Describe 의 약자) 명령어


특정 테이블에 어떤 칼럼이 있는 조회하는 명령어



대부분의 DBMS는 데이터를 표같은 공간에 저장을 하게된다.

이 표를  DBMS는 테이블이라고 부른다.


2. select 


문법 : SELECT [칼럼명 또는 표현식] FROM [테이블명, 뷰 명];


- 모든 칼럼 조회하기

칼럼명/표현식 대신에 * 를 사용한다. 




- 원하는 칼럼만 조회하기

select 뒤에 원하는 칼럼명을 넣고 조회를 하면 된다. 

칼럼이 여러개일 경우 ,(콤마)로 구분하고 칼럼명을 여러개 적어주면 된다. 



11g, 12c 오라클 버전에 따라서 약 1,2건 정도의 결과가 차이가 날 수 있으니 신경쓸 거 없다. 


* 칼럼 길이 조정하는 방법

터미널 작업시에 한눈에 원하는 정보를 화면으로 보기를 원한다면 다음 명령어를 잘 사용하자.


- 데이터가 숫자일 경우

문법 : COL empno FOR 9999

empno의 칼럼의 길이를 숫자 4자리 까지 들어가게 설정한다. 


- 데이터가 문자일 경우

문법 : COl ename FOR a8

ename이란 칼럼의 길이를 8바이트까지 보여주도록 설정한다.


- 한 화면에 출력 가능한 줄 길이 설정 (가로길이 설정)

문법 : SET LINE 200

한 화면을 가로로 200 바이트 까지 보여준다. 


- 한 페이지에 출력 가능한 줄 수 설정(세로길이 설정)

문법: SET PAGES 50

한 페이지에 50줄까지 출력한다. 


참고로 소문자로 써도 적용이 된다. 



3 표현식을 사용해서 출력

표현식(Experssion) 

칼럼 이름 외에 출력하기를 원하는 내용을 의미한다. 

select 구문 뒤에 ' (홑따옴표)로 묶어서 사용한다. 





'교수님''s 매너최고!!' 부분을 표현식이라고 하고 리터럴(literal) 상수(문자)' 라고 한다.

아주 많이 사용되므로 알아두자

여기서 주의할 점은 리터럴 안에 홑따옴표가 들어갈 경우 홑따옴표 1개의 출력을 위해서는

2개의 홑따옴표, 칼럼명에서 보면 알 수 있듯 '' 2개를 사용해야 한다는 점을 잊지말자.


4 칼럼별칭 사용하여 출력하기 

컬럼 별칭 사용하기 전



칼럼 별칭 사용 후

아래 화면과 같이 칼럼이름을 임시적으로 볼 때 바꾸어서 보여줄 수 있는 기능을 칼럼별칭(column Alias)라고 한다.

반드시 쌍따옴표로 묶어줘야 할 때는 별명에 공백, 특수문자, 대소문자 구분이 필요할 때이다. 

영어  AS 는 써도 되고 안써도 상관없기 때문에 주로 칼럼명 "원하는 칼럼명" 이렇게 사용한다. 




5 distinct 

중복된 값을 제거하고 출력한다. 

데이터 조회시 중복된 데이터를 빼고 보고 싶을 때 사용한다. 

원래는 13건이 나오는데 distinct 키워드를 사용하면 중복된 데이터가 제거되고 3건의 데이터만 볼 수 있다. 



사용시 주의점!

distinct 키워드는 1개의 칼럼에만 사용해도 모든 칼럼에 적용된다.

이로 인해 뜻하지 않게 성능저하가 발생할 수 있으므로 주의해서 사용해야 한다. 


oracel 9i 버전 : distinct 키워드 만나면 정렬을 자동으로 해서 심각한 속도 저하를 발생시켰다.

oracel 10g 버전 : HASH 알고리즘의 사용으로 정렬을 하지 않는다. 그래서 성능이 향상되었다.  

HASH 알고리즘 : 1을 넣으면 1이 나오고, 결과가 1이면 입력이 1인 것을 할 수 있는, 입력과 결과가 같은 알고리즘이다.


반드시 select 키워드 다음에 와야한다. 그렇지 않으면 에러가 발생한다.

뭣 모르고 쓰면 속도가 엄청 느려지기때문에 반드시 꼭꼭 써야할 쿼리에만 적용을 하자!!!!!!욕먹기 싫으면!!!!


6 연결(합성 concatenation) 연산자로 칼럼을 붙여서 출력

데이터 조회시 서로 다른 칼럼을 마치 하나의 칼럼처럼 연결해서 출력해야 할 경우가 있다. 

이때 사용하는 연산자 

|| 파이프 기호를 두 번 사용한다.  




연결 연산자를 사용한 컬럼은 오라클에서 1개의 컬럼으로 인식한다. 


아래와 같이 리터럴과 함께 사용하는 경우가 많다. 

오라클 백업/복구 관련작업이나 관리 작업할 때 아주 많이 사용한다. 


7 원하는 조건만 골라내기 - where절 사용

데이터 조회시 원하는 데이터만 보기 위해서 where절을 사용한다. 


SELECT [Column or Expression]

FROM [Table or View]

WHERE 원하는 조건;


사용시 주의

where 절에서 숫자는 상관없지만, 문자와 날짜를 조회할 때는 반드시 '' 홑따옴표를 붙여야 한다!!!

또, 문자 조회시 대소문자를 꼭 구분 해야 한다. 

날짜는 홑따옴표를 사용해야하지만, 대소문자를 구분하지는 않는다.


오라클 날짜에서 주의해야 할 점

윈도우용 오라클/유닉스계열(리눅스포함) 날짜표시 형식이 서로 다르다. 

윈도 : 80/12/17

유닉스 : 17-DEC-80 / 17-dec-80 도 같다.(대소문자 구분안함)


8 sql에서 기본 산술연산자 사용

+,-,*,/ 모두 다 사용 가능하다. 


단, 산수에서처럼 덧셈, 곱셈 ,나눗셈이 동시에 나올 경우는 우선순위를 주의해서 사용해야한다. 


9 다양한 연산자 활용 방법



부등호 사용

sal가 4000과 같거나 그 이상인 값은 조회해서 보여준다.



ename의 시작이  W하거나 그 이후에 오는 알파벳을 보여준다.


리눅스에서는 날짜형식이 아래와 같지만 , 아래 에러가 난 이유는 윈도우 형식의 날짜로 비교를 해주었기 때문이다.


아래와 같이 날짜형식을 동일하게 해서 조건을 주면 정상적인 값이 조회가 된다. 



between 연산자 사용

반드시 작은 값을 앞, 큰 값을 뒤에 사용해야 한다.

두 값을 모두 포함하는 결과를 출력한다. 

2000이상 3000이하!


하지만 특정 구간의 데이터 조회시 가급적 between 연산자 대신에 비교 연산자를 사용하는 것을 권장한다

둘 다 같은 결과를 출력해주지만, 비교 연산자가 훨씬 속도가 빠르다. 




한글 검색시 기억할 사항

한글은 between 연산시 시작범위는 포함, 끝 범위는 제외


Posted by 성장하는yw
2015. 2. 14. 20:28

sqlplus scott/tiger


sqlplus에 scott계정으로 접속함 

tiger은 비밀번호임


입력시, 


ERROR:

ORA-01034: ORACLE not available

ORA-27101: shared memory realm does not exist

Linux Error : 2: No such file or directory

Process ID: 0

Session ID: 0 Serial number: 0


위와 같은 에러가 출력되면 데이터베이스가 켜지지 않았다는 말임


< 에러해결법 >


sys/oracle as sysdba


startup


conn scott/tiger


관리자용 계정인 sys로 접속 후

DB를 켠 후

scott 계정으로 접속하는 명령어임 


show user


현재 접속해 있는 계정을 확인하는 명령어


SET sqlpormpt "_USER>"


현재 접속해 있는 계정명>

프롬프트 모양이 

SCOTT> 이렇게 바뀜

매번 사용자를 확인하지 않아도 이렇게 설정해두면 쉽게 알아볼 수 있음 


ORA-28000: the account is locked


계정이 잠겨 있으면 위와 같은 에러내용이 뜸


< 에러해결법 >


sys/oracle as sysdba


ALTER USER scott

IDENTIFIED BY tiger

ACCOUNT UNLOCK;


sys는 오라클에서 최상위 권한을 가진 계정

oracle은 오라클 사용시 내가 준 sys의 계정 암호를 말함


잠긴 계정을 풀어주는 명령어

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

현재 접속한 계정 소유의 테이블명을 모두 조회하고 싶을 때  (0) 2015.03.01
1장 select  (0) 2015.02.14
sql*plus autotrace 기능 활성화  (0) 2014.12.24
튜닝에 필요한 파일들  (0) 2014.12.22
인덱스 2  (0) 2014.12.19
Posted by 성장하는yw
2015. 1. 2. 15:26

86페이지

아래 5번과 관련해서 참고해서 볼 사항 


http://m.dbguide.net/knowledge.db?cmd=view&boardConfigUid=21&boardUid=168439

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

oracle 11g 삭제  (0) 2015.04.06
oracle 11g 설치  (0) 2015.04.06
버퍼캐시 owi  (0) 2014.12.26
10.2 오라클 구조 공식문서 홈페이지 주소  (0) 2014.12.22
sql trace 실행원리 보는 방법  (0) 2014.12.17
Posted by 성장하는yw
2014. 12. 26. 17:38

원본출처 : 

http://www.adminschool.net/wiki/doku.php?id=study:oracle:adv_owi_10g:oracle_internal_owi:buffer_cache_owi


Buffer Cache 란

  1. 오라클은 물리적인 I/O를 최소화 하기 위해 최근에 사용된 블럭에 대한 정보를 메모리의 일정 부분에 보관하려 한다 ⇒ 이 영역을 Buffer Cache 라고함.

Buffer Cache 구조

  1. Hash Chain 구조의 시작점은 Hash Table인데, Hash Table은 Hash Bucket으로 구성되어져 있다
  2. 오라클 블럭(DBA: Data Block Address File# , Block# )과 블럭 클래스 에 대한 Hash 함수 결과 값으로 해당 Hash Bucket을 찾아가서 해당 데이터 블럭이 메모리에 존재 하는지를 확인 할 수 있는 것 이다
  3. Hash Bucket에 딸린 Buffer Header는 Buffer에 대한 메타 정보만 가지고 있고 Buffer 메모리 영역의 실제 버퍼에 대한 포인터 값을 가지고 있다.
  4. Hash Chain 구조는 Shared Pool 영역에 존재 하며 실제 버퍼에 대한 정보들은 버퍼 캐쉬 영역에 존재 한다
  5. 특정 블럭에 대한 Scan을 할려고 하면 Cache buffer chains latch를 획득 해야만 한다. 
    ※ 9i부터 읽기 작업에 한하여  cache buffer chains latch를 shared 모드로 획득 한다
  6. 다음과 같은 쿼리를 이용하여 cache buffer chains latch의 갯수를 확인가능 하다 
    SQL> SELECT COUNT(*) FROM v$latch_children WHERE name = 'cache buffers chains'
     
      COUNT(*)
    ----------
         65536
  • cache buffer chains latch ⇒ hash 함수로 얻은 값으로 해당 데이터가 어떠한 bucket에 있는가를 확인할때 발생되는 latch

Working Set

  • 오라클은 Buffer Cache에 대하여 효율적으로 사용하기 위해 두 종류의 LRU리스트를 사용한다.

  1. LRU List : 가장 최근에 사용되거나 미사용된 버퍼들의 List
    1. Free(미사용) , 사용중이거나 사용된 버퍼 아직 LRUW로 옮겨지지 않은 Dirty 버퍼
    2. 메인 리스트 : 사용된 버퍼들의 리스트 , 핫 영역과 콜드 영역으로 구분 관리 됨
    3. 보조 리스트 : 프리 버퍼들의 리스트 , 미사용 된 버퍼나 DBWn에 의해 기록 된 버퍼 관리
  2. LRUW List : 아직 디스크에 기록 되지 않은 Dirty한 버퍼들의 List
    1. 메인 리스트 : 변경된 버퍼들의 리스트
    2. 보조 리스트 : 현재 DBWR에 의해 기록중인 버퍼 리스트
  • 다음 그림과 같이 LRU , LRUW를 합쳐서 하나의 Working Set 이라고 부른다.

  • Working Set 개수는 Cache buffer lru latch 개수에 의해 결정( 하나의 working set을 하나의 lru latch가 관리함 )되며 X$KCBWDS( Kerner Cache Buffer Working sets Descriptors )를 조회 하면 확인 가능 하다
  • LRU , LRUW List를 탐색 하고자 하는 프로세스는 반드시 cache buffer lru chain latch를 획득 해야 함.
  • cache buffer chains lru latch ⇒ bucket의 header chain을 검색하여 블록이 버퍼캐시안에 없을때 lru를 뒤져 free buffer을 찾기위해 발생되는 latch

Touch Count

  • 오라클은 개별 버퍼 마다 Touch Count를 관리 하며 , 프로세스에 의해서 스캔이 이루어 질때 마다 Touch Count를 1씩 증가시킴
  1. Cold 영역의 꼬리에 있으면서 Touch Count가 1이하인 것이 Free Buffer로 사용된다.
  2. Cold 영역의 꼬리에 있으면서 Touch Count가 2 이상인 블럭을 만나면 Hot영역의 head 부분으로 옮기고 Touch count를 0 으로 초기화 한다.
  3. 핫 영역으로 옮기는 기준은 _DB_AGING_HOT_CRITERIA 파라메터 이며 기본이 2 이다.
  4. 만약 Single블럭 I/O에 의해 읽혀진 블럭은 Mid-Point에 삽입되며 Touch Count는 1 이다.
  5. Full table scan 이나 인덱스 Full Scan으로 읽혀진 데이터 들은 Mid-Point에 삽입되었다 바로 Cold 영역의 꼬리로 옮겨져서 버퍼 캐쉬에 머무를 확률이 작아 진다.

Buffer lock

  • buffer 자체 보호 . 즉 , 버퍼의 내용을 변경하거나 읽으려고 하는 프로세스는 변경 작업이나 읽기 작업을 완료할때 까지 해당 버퍼 (정확하게 말하면 Buffer header)에 대해서 buffer lock을 exclusive 또는 shared 하게획득 해야 한다.

Buffer Cache 블록을 올리거나 버퍼캐시에 올라와있는 블록을 사용하고자 할때

  1. sql문에 의해서 조건에 만족하는 데이터가 버퍼캐시에 존재 여부 확인하기 위해 DBA(data block address) + class(data, sort, undo)를 조합하고 > hash function을 돌려 해당 데이터가 어떠한 bucket에 있는가 확인(= DBA + class를 hash 함수로 돌린뒤 그값을통해 hash bucket를 찾음)
  2. cache buffer chains latch를 획득(읽기는 shared, 변경은 exclusive)
  3. hash bucket에서 관리하는 buffer header들(chain)을 검색하여 블록이 버퍼캐시안에 존재 하는지 확인
  4. 버퍼캐시안에 없을경우 cache buffer lru chain latch를 획득함
  5. LRU 보조 리스트를 통해 free buffer를 검색
  6. LRU 메인리스트에서 free buffer을 검색
    1. 검색중 dirty블럭을 만나면 LRUW 리스트의 메인 리스트에 추가
    2. 검색중 touch count가 2이상인 것을 만나면 hot 영역의 머리부분으로 옮기고 touch count를 0으로 세팅
    3. 검색중 LRU 리스트를 40% 스캔을 했는데도 free block을 찾지 못하면 LRU 스캔을 멈추고 DBWR에게 dirty 버퍼를 파일에 기록할것을 요구(_DB_BLOCK_SCAN_MAX_PCT 파라미터에 의해 %를 정함)
    4. DBWn에 의해서 프리버퍼가 확보 될때까지 free buffer waits 이벤트 대기
    5. 요청받은 DBWn은 cache buffer lru chain latch를 획득 후 LRUW 리스트의 cold 영역 꼬리부터 탐색하여 기록함
    6. 기록된 블럭은 LRU 보조 리스트로 옮겨짐
  7. free block를 찾으면 buffer lock을 exclusive하게 획득 후 데이터 파일로 부터 block를 load

Buffer Cache Dump

  1. 버퍼의 구조를 가장 명확하게 알 수 있는 방법은 버퍼 캐시 덤프를 이용하는것 
    SQL> ALTER SESSION SET evnets 'immediate trace name buffers level 1';
    OR
    SQL> oradebug dump buffers 1
  • 참고로 oradebug 를 추천한다 
  1. X$BH 뷰에서 확인가능하다
  • 눈여겨 봐야될 컬럼은 다음과 같다
컬럼내용
HLADDR해당 버퍼를 관장하는 래치의 주소 V$LATCH_CHILDREN.ADDR 과 조인해서 원하는 래치정보를 얻을수 있다
TS#블록이 속한 테이블스페이스 번호 V$TABLESPACE.TS# 과 조인
DBARFILDBA 중 파일번호
DBABLKDBA 중 블록번호
CLASS블록 클래스
STATE버퍼의 상태
0FREE no valid block image
1XCUR a current mode block, exclusive to this instance
2SCUR a current mode block, shared with other instances(RAC환경에서만 쓰임)
3CR a consistent read (stale) block image
4READ buffer is reserved for a block being read from disk
5MREC a block in media recovery mode
6IREC a block in instance (crash) recovery mode
8PI past image(RAC환경에서만 쓰임)
TCHTouch Count


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

oracle 11g 설치  (0) 2015.04.06
오라클 성능고도화 원리와 해법1  (0) 2015.01.02
10.2 오라클 구조 공식문서 홈페이지 주소  (0) 2014.12.22
sql trace 실행원리 보는 방법  (0) 2014.12.17
mts 관련 정보 링크  (0) 2014.12.16
Posted by 성장하는yw
2014. 12. 24. 18:27

plustrace 권한 생성

conn / as sysdba

@?/sqlplus/admin/plustrce.sql


해당 사용자에게 plustrace 권한 부여

conn / as sysdba

grant plustrace to scott;


애앙 사용자로 로그인 후 plan table 생성

@?/rdbms/admin/utlxplan.sql


autotrace 모드 설정

set autotrace on

set autotrace traceonly

set autotrace traceonly explain

set autotrace traceonly statistics


SQL> desc v$session

 Name                                      Null?    Type

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

 SADDR                                              RAW(4)

 SID                                                NUMBER

 SERIAL#                                            NUMBER

 AUDSID                                             NUMBER

 PADDR                                              RAW(4)

 USER#                                              NUMBER

 USERNAME                                           VARCHAR2(30)

 COMMAND                                            NUMBER

 OWNERID                                            NUMBER

 TADDR                                              VARCHAR2(8)

 LOCKWAIT                                           VARCHAR2(8)

 STATUS                                             VARCHAR2(8)

 SERVER                                             VARCHAR2(9)

 SCHEMA#                                            NUMBER

 SCHEMANAME                                         VARCHAR2(30)

 OSUSER                                             VARCHAR2(30)

 PROCESS                                            VARCHAR2(24)

 MACHINE                                            VARCHAR2(64)

 PORT                                               NUMBER

 TERMINAL                                           VARCHAR2(30)

 PROGRAM                                            VARCHAR2(48)

 TYPE                                               VARCHAR2(10)

 SQL_ADDRESS                                        RAW(4)

 SQL_HASH_VALUE                                     NUMBER

 SQL_ID                                             VARCHAR2(13)

 SQL_CHILD_NUMBER                                   NUMBER

 SQL_EXEC_START                                     DATE

 SQL_EXEC_ID                                        NUMBER

 PREV_SQL_ADDR                                      RAW(4)

 PREV_HASH_VALUE                                    NUMBER

 PREV_SQL_ID                                        VARCHAR2(13)

 PREV_CHILD_NUMBER                                  NUMBER

 PREV_EXEC_START                                    DATE

 PREV_EXEC_ID                                       NUMBER

 PLSQL_ENTRY_OBJECT_ID                              NUMBER

 PLSQL_ENTRY_SUBPROGRAM_ID                          NUMBER

 PLSQL_OBJECT_ID                                    NUMBER

 PLSQL_SUBPROGRAM_ID                                NUMBER

 MODULE                                             VARCHAR2(64)

 MODULE_HASH                                        NUMBER

 ACTION                                             VARCHAR2(64)

 ACTION_HASH                                        NUMBER

 CLIENT_INFO                                        VARCHAR2(64)

 FIXED_TABLE_SEQUENCE                               NUMBER

 ROW_WAIT_OBJ#                                      NUMBER

 ROW_WAIT_FILE#                                     NUMBER

 ROW_WAIT_BLOCK#                                    NUMBER

 ROW_WAIT_ROW#                                      NUMBER

 TOP_LEVEL_CALL#                                    NUMBER

 LOGON_TIME                                         DATE

 LAST_CALL_ET                                       NUMBER

 PDML_ENABLED                                       VARCHAR2(3)

 FAILOVER_TYPE                                      VARCHAR2(13)

 FAILOVER_METHOD                                    VARCHAR2(10)

 FAILED_OVER                                        VARCHAR2(3)

 RESOURCE_CONSUMER_GROUP                            VARCHAR2(32)

 PDML_STATUS                                        VARCHAR2(8)

 PDDL_STATUS                                        VARCHAR2(8)

 PQ_STATUS                                          VARCHAR2(8)

 CURRENT_QUEUE_DURATION                             NUMBER

 CLIENT_IDENTIFIER                                  VARCHAR2(64)

 BLOCKING_SESSION_STATUS                            VARCHAR2(11)

 BLOCKING_INSTANCE                                  NUMBER

 BLOCKING_SESSION                                   NUMBER

 FINAL_BLOCKING_SESSION_STATUS                      VARCHAR2(11)

 FINAL_BLOCKING_INSTANCE                            NUMBER

 FINAL_BLOCKING_SESSION                             NUMBER

 SEQ#                                               NUMBER

 EVENT#                                             NUMBER

 EVENT                                              VARCHAR2(64)

 P1TEXT                                             VARCHAR2(64)

 P1                                                 NUMBER

 P1RAW                                              RAW(8)

 P2TEXT                                             VARCHAR2(64)

 P2                                                 NUMBER

 P2RAW                                              RAW(8)

 P3TEXT                                             VARCHAR2(64)

 P3                                                 NUMBER

 P3RAW                                              RAW(8)

 WAIT_CLASS_ID                                      NUMBER

 WAIT_CLASS#                                        NUMBER

 WAIT_CLASS                                         VARCHAR2(64)

 WAIT_TIME                                          NUMBER

 SECONDS_IN_WAIT                                    NUMBER

 STATE                                              VARCHAR2(19)

 WAIT_TIME_MICRO                                    NUMBER

 TIME_REMAINING_MICRO                               NUMBER

 TIME_SINCE_LAST_WAIT_MICRO                         NUMBER

 SERVICE_NAME                                       VARCHAR2(64)

 SQL_TRACE                                          VARCHAR2(8)

 SQL_TRACE_WAITS                                    VARCHAR2(5)

 SQL_TRACE_BINDS                                    VARCHAR2(5)

 SQL_TRACE_PLAN_STATS                               VARCHAR2(10)

 SESSION_EDITION_ID                                 NUMBER

 CREATOR_ADDR                                       RAW(4)

 CREATOR_SERIAL#                                    NUMBER

 ECID                                               VARCHAR2(64)



임의의 세션 추적

v$session을 통해 SID와 SERIAL#을 구함

SQL> select username, sid, serial# from v$session;


USERNAME                              SID    SERIAL#

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

                                        2          1

                                        3          1

                                        4          1

                                        5          1

                                        6          1

                                        7          1

                                        8          1

                                        9          1

                                       10          1

                                       11          1

                                       12          1


USERNAME                              SID    SERIAL#

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

                                       13          1

                                       14          1

                                       15          1

                                       16          1

                                       17         13

                                       18          5

                                       20          3

                                       21          1

                                       23          1

                                       25          9

                                       28         21


USERNAME                              SID    SERIAL#

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

                                       34          3

                                       35          3

SCOTT                                  41         51

SYS                                    43        147

                                       53         29


27 rows selected.


user_dump_dest 경로 확인 

SQL> show parameter user_dump_dest


NAME                                 TYPE        VALUE

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

user_dump_dest                       string      /app/oracle/diag/rdbms/testdb/

                                                 testdb/trace



위에 생략....
testdb_j002_15378.trc  testdb_ora_1885.trm    testdb_w000_12475.trc
testdb_j002_15378.trm  testdb_ora_1966.trc    testdb_w000_12475.trm
testdb_j003_9770.trc   testdb_ora_1966.trm    testdb_w001_12735.trc
testdb_j003_9770.trm   testdb_ora_31823.trc   testdb_w001_12735.trm
testdb_j004_31464.trc  testdb_ora_31823.trm   testdb_w001_6268.trc
testdb_j004_31464.trm  testdb_ora_31967.trc   testdb_w001_6268.trm
[oracle@localhost trace]$ pwd
/app/oracle/diag/rdbms/testdb/testdb/trace
[oracle@localhost trace]$


tkprof를 통해 리포트 생성



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

1장 select  (0) 2015.02.14
오라클 sqlplus 접속 관련 명령어 및 에러해결법  (0) 2015.02.14
튜닝에 필요한 파일들  (0) 2014.12.22
인덱스 2  (0) 2014.12.19
인덱스 1  (0) 2014.12.19
Posted by 성장하는yw