2015. 4. 8. 15:15

https://community.oracle.com/thread/715458

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

roles  (0) 2015.12.14
datafile size 줄이는 방법  (0) 2015.05.24
현재 접속한 계정 소유의 테이블명을 모두 조회하고 싶을 때  (0) 2015.03.01
1장 select  (0) 2015.02.14
오라클 sqlplus 접속 관련 명령어 및 에러해결법  (0) 2015.02.14
Posted by 성장하는yw
2015. 4. 6. 19:58

http://docs.oracle.com/cd/E11882_01/install.112/e24326/toc.htm

 

 

정리할것

alter database add logfile group 1
 '/oradata/dbworks/redo01.log' size 100m

12
ndi 이기종 데이터베이스 정보 호환안되는 이유
11
이미지카피

데이터카드 사용하때 프라머리 스탠바이
1ㅊㅊㅊ능동적으로 밀어주는걸로 가져가는걸로바뀜

패스트 데이터베이스 리페어
프라미버리 페일시 스탠바이에서 푸시해서 됨
시점안맞을때

12c
서버는 하난데 여러개 디비가 돌아가는 것처럼 하는 것


oraenv 오라클 환경설정파일

---

 

em은 설치하지 말 것
용량만 먹으니까 설치하지 말자

영업팀에 사양 저장공간 모두 물어볼 것
어디에 저장하는지
SID는 어떻게 하는지
오라클 설치시

---

삭제
su - oracle
cd $ORACLE_HOME
cd deinstall/
./deinstall
계속 엔터 누르면 됨

---

username : oracle
groupname : dba


설치경로 : /oracle
datafile : /oradata
archive : /oraarch
archivelog mode


SID : dbworks
캐릭터셋 : KO16MSWIN949

 

Enterprise Edition
Partitioning
OLAP
Data Mining
Real Application Testing options

 

EM 구성 X
EM Repository구성 X
SAMPLE SCHEMA 설치 X

 

SGA : 1500M
PGA : 500M

-----

oraInst.loc 글로벌 인벤토리 센트럴 인벤토리 안에 오라클 제품군이 있어서
설치할때 이 경로를 주의하면 된다
OS마다 위의 경로가 다름
oratab 디비홈경로 y 디비를 켜면 올라오고 n하면 안올라옴
보통은 n으로 함
/usr/local/bin 아래에 있는 것들 dbhome, oraenv, coraenv 폴더 모두 삭제 할 것


--

유닉스에서는  chown -R oracle:dba /oracle
리눅스 chown -R oracle.dba /oracle

---

베이스경로는 보통 세번 설치할 것

oracd 나 폴더를 따로 만들어서 설치파일을 한 곳에 다 두자.

--

인터넷에서 찾은 거 붙이려면 메모장에서 붙여넣고 하기


---

DB name은 한 서버내에서 여러개 띄울수 있지만
유니크네임은 네트워크에서 유일하게 구분하는 값

---

설치 중에
카피 파일중에는 취소하면 그냥 설치하면되는데
링크바이너리는 삭제하고 다시 설치해야함

---

11g audit 를 꼭 꺼야함

---

프로파일 변경 후 적용을 한 것
그리고 env 들어가서 확인을 하고 그 경로로
.bash_profile로 맞춰주면 된다.

---

오패치 하는 방법

----

유니크디비
SID
DBNAME의 차이점을 알 것

---

배쉬프로파일을 적용하기 위해서는 나왔다가 다시 재접속을 하거나
배쉬프로파일이 있는 곳에서 . . /.bash_profile 로 적용을 한다.

--

11g 설치 후 꼭 해줘야 할 것

10g는 대소문자를 구분하지 않기때문에 가능
system/oracle
SYSTEM/ORACLE

11g는 대소문자 구분하기 때문에
show paremeter sec_case;
alter system set sec_case_sensitive_logon=false;
해주어야 함

http://blog.naver.com/PostView.nhn?blogId=firstpcb&logNo=220319407686

계정 만기된 것 푸는 sql

----

기본적으로 프로세스는 1000이상으로 해주자
alter system set processes=500 scope=spfile(memory, both)
캐릭터셋도 꼭 확인 할 것(메일로 보내준 내용을 최소한 확인해봐야함)

----

관리자와의 소통이 중요하며,
스스로를 포장해서 신뢰를 얻는 것이 중요하다.
그리고 어떤 작업을 하기전에 내가 이러한 작업을 하면 어떤 일이 벌어질 것인지를 생각해서 행

동을 해야한다.

데이터베이스를 종료하거나 다시 키려면 관리자에게 꼭 말해야한다.

----

특별한 일이 없는 이상 /etc/shadow /etc/passwd 를 건드리지 말고
useradd userdel
groupadd groupdel 로 삭제하거나 추가를 해 주자.

-----


 

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

awr report  (0) 2015.05.25
11g 업그레이드시 방법 결정하는 법  (0) 2015.04.29
정리하기  (0) 2015.04.06
oracle 11g 삭제  (0) 2015.04.06
oracle 11g 설치  (0) 2015.04.06
Posted by 성장하는yw
2015. 4. 6. 19:53

오라클 계정을 만들면 자동적으로 /home/oracle 로 폴더가 생김
그 아래에 있는 .bash_profile에 들어가 설정을 해준다.

계정을 지우고 다시 만들어야 프로파일이 깨끗함

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

11g 업그레이드시 방법 결정하는 법  (0) 2015.04.29
oracle 설치 참고  (0) 2015.04.06
oracle 11g 삭제  (0) 2015.04.06
oracle 11g 설치  (0) 2015.04.06
오라클 성능고도화 원리와 해법1  (0) 2015.01.02
Posted by 성장하는yw
2015. 4. 6. 17:51

oracle 11g 삭제하는 방법

 

1. su - oracle


2. cd $ORACLE_HOME

3. cd deinstall/

4. ./deinstall  엔터

5. cd /etc

oraInst.loc

oratab 둘 다 삭제

6. cd /usr/local/bin

rm -rf dbhome, oraenv, coraenv 파일을 모두 삭제할 것

7. 사용자 계정 oracle 폴더 날리기

 

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

oracle 설치 참고  (0) 2015.04.06
정리하기  (0) 2015.04.06
oracle 11g 설치  (0) 2015.04.06
오라클 성능고도화 원리와 해법1  (0) 2015.01.02
버퍼캐시 owi  (0) 2014.12.26
Posted by 성장하는yw
2015. 4. 6. 17:39

1. 파일을 다운로드 받는다.

   설치파일의 경로를 어디든 상관이 없다.

 

2. 각 파라미터 값을 설정해준다.

 

3. 유저와 그룹을 생성한다.

 

4. manager의 passive를 실행 후

   xclock 나 export DISPLAY=현재 내가 쓰는 ip:0.0

 

5. ./runInstaller

 

6. 다음 및 상황을 보고 설치를 한다.

    각 화면별로 왜 하는지 정확히 알고 넘어갈 것

 

7. netca

 

8. dbca

 

설치시 프로세스를 1000 이상 줄 것

redolog file size를 100m~200m로 줄 것

관리자와 이야기를 해서 설정할 것

 

9. em

    em 레버지토리 둘 다 체크하지 말 것

    혹시 rman 을 사용할거면 fra 을 안해도 됨

 

10. 제일 마지막에 커스텀에서 제일 위에 것만 체크할 것

 

설치시 계속 oracle 계정과 root 계정으로 변경하면서 설치를 하면 꼬일 수 있으니,

터미널 창을 두 개 열어서 작업을 하자.

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

정리하기  (0) 2015.04.06
oracle 11g 삭제  (0) 2015.04.06
오라클 성능고도화 원리와 해법1  (0) 2015.01.02
버퍼캐시 owi  (0) 2014.12.26
10.2 오라클 구조 공식문서 홈페이지 주소  (0) 2014.12.22
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. 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