IT/Oracle 실습2011. 4. 28. 01:06
SQL *PLUS 기동
sqlplus /nolog
SQL> connect / as sysdba

1. 데이터 베이스 구성 내용을 조회
SQL> startup
SQL> select name from v$datafile;
SQL> select * from v$controlfile;
SQL> select member from v$logfile;

2. Instance 구성 내용을 조회
SQL> select * from v$sga
SQL> show sga

// background 프로세스에 대한 정보를 보여준다.
SQL> select paddr, name, description from v$bgprocess where paddr > '00';

v$datafile, v$controlfile, v$logfile, v$sga는 아래의 링크를 참고해 주세요.
참조 내용 : http://markspeople.tistory.com/39

Posted by 예영교육 연구소
IT/Oracle2011. 4. 28. 00:47

종류

SQL문으로 정보 확인

설명

V$CONTROLFILE

SQL> select * from v$controlfile;

Control files의 이름 목록을 보여준다.

V$LOGFILE

SQL> select * from v$logfile;

Redo log파일의 정보를 보여준다.

V$DATAFILE

SQL> select * from v$datafile;

Control files로부터 datafile파일 정보를 보여준다.

V$SGA

SQL> select * from v$sga;

System global area(SGA)영역의 목록과 그의 Memory사이즈 정보를 보여준다.






SQL> select * from v$controlfile;


참조 사이트 : http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10755/dynviews_1049.htm 

SQL> select * from v$logfile;

 
참조 사이트 : http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10755/dynviews_1128.htm

 

SQL> select name from v$datafile; // name column만 확인

 
참조 사이트 : http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/dynviews_1076.htm 

SQL> select * from v$sga;
 
참조 사이트 : http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10755/dynviews_2084.htm

Posted by 예영교육 연구소
IT/Oracle 실습2011. 4. 27. 02:02

[oracle] STARTUP  과  SHUTDOWN

Oracle DB Instance의 시작은 다음과 같은 단계를 걸쳐 시작된다.

Shutdown -> Nomount -> Mount -> Open

<Instance를 시작하기 위한 사전 준비>
---------------------------------------------
1. 데이터 베이스를 연결없이 SQL *PLUS를 시작
SQLPLU /NOLOG

2. SYSDBA로서 Oracle를 연결한다.

connect username/password as sysdba
---------------------------------------------

<SQL*Plus를 사용하여 Database를 시작하기>

Startup

데이터 베이스 Instance를 시작하기 위한 명령어

  STARTUP                  

  // 일반적으로 nomount, mount, open까지 수행

  일반적으로 STARTUP을 사용하지만 특별한 유지보수 작업을 수행하기 위해 단계별 STARTUP을 사용.

  STARTUP NOMOUNT

  // 일반적으로 nomount 수행
      - 파라미터 파일
      - SGA할당 및  B/G process시작
      - alert<SID>.log 파일 및 Trace file열기
      - (ONLY) DB생성, Control file재생성이 가능.

  STARTUP MOUNT

  // 일반적으로 nomount, mount 수행    
      - 시작된 Instance의 DB연결
      - Control file열기
      - (ONLY) DB 모드 수정이 가능하다.

  STARTUP OPEN        

  // 일반적으로 nomount, mount, open 수행
      - 온라인 데이터 파일 열기
      - 온라인 리두 로그 파일 열기
      - 일반 유저 이용 가능(Open에서만 가능)

  // pfile를 열기(텍스트 파라미터 파일)

  [예] STARTUP pfile= u01/oracle/dbs/init.ora

  // spfile를 열기(서버 파라미터 파일)
   [예] STARTUP spfile= /u01/oracle/dbs/test_spfile.ora    

  STARTUP RESTRICT

  제한된 모드로 Instance를 시작하기- DB를 정상적으로 시작하지만 User들은 접속불가.
  
  다음과 같은 경우에 RESTRICT모드를 사용한다.
    - Sql *Loader로 데이터 로드를 수행,
    - 사용되고 있는 데이터를 사용자로 부터 일시보호,
    - upgrade와 같은 동작 수행시
    - 데이터 베이스 데이터의 import, export를 수행시.

 STARTUP FORCE

  현재 DB가 시작된 상태라면 자동으로 DB를종료한 후 다시 시작
  다음과 같은 경우에 사용된다.
      - 현재 Instance가 Shutdown명령어가 듣지 않을 때 사용.

<SQL*Plus를 사용하여 Database를 종료하기>

Shutdown

정상 상태의 데이터베이스를 종료하기 위해 사용하는 명령어

종료시는 다음의 단계를 거치게 된다.
close --> dismount --> disconnect

- close단계

   : 일반 사용자들이 모든 데이터 파일을 닫는다.

- dismount단계

   : DB의 현재 상태 정보를 저장하고 종료한다.

- disconnect 단계

   : DB가 사용한 메모리 영역을 시스템에게 반환하고 접속을 해제한다.

SQL> SHUTDOWN NORMAL

// 기본 옵션 : DB를 종료하지 않고 작업을 끝내고 접속을 해제할 때까지 대기한후에 종료.

SQL> SHUTDOWN Transactional

// DB를 종료하는 시점에서 접속된 사용자가 존재하는 경우 DB 를 종료하지 않고 대기중.
// 작업을 종료(commit, rollback)할 때까지 대기하고 종료한다

SQL> SHUTDOWN IMMEDIATE

// DB를 즉시 종료시키는 옵션, 처리중인 작업이 있으면 모든 DML문은 rollback이 된다.

SQL> SHUTDOWN ABORT

// 바로 Instance를 종료, rollback이 되지 않고 비정상적인 종료에 해당, 정전발생하여 시스템 정지한 상태

속도는 Shutdown Normal이 가장 빠르고, Shutdown Normal 이 가장 느리다.

Posted by 예영교육 연구소
IT/Oracle 실습2011. 4. 22. 00:47


1. backup을 준비하는 단계로 Database file들을 조회해 보기
--------------------------------
ID : sys, PWD : oracle의 경우
Sqlplus로 접속
C:> sqlplus sys/oracle as sysdba

* 콘트롤 파일 확인
SQL> select value from v$controlfile; 

* 데이터 파일 확인
SQL> select name from v$logfile;

* 로그 파일 확인
SQL> select member from v$logfile;

* 모든 데이터 파일의 구조를 분석
SQL> select file_id, file_name, tablespace_name FROM dba_data_files;

2. Offline으로 DB backup을 실시하기
Backup 대상 폴더명  : C:\backup
Database file 폴더명 : C:\oracle\product\10.2.0\oradata\orcl\

  (1) DB를 정상적으로 종료한다.
       SQL> shutdown immediate;
       SQL> exit

  (2) Database file의 모든 파일을 C:\backup\으로 복사합니다.(사이 공백을 넣어주세요.) 
      C:\> copy  C:\oracle\product\10.2.0\oradata\orcl\*.* C:\backup\

3. No아카이브 mode에서의  Backup/Recovery

먼저 아카이브 모드와 No아카이브 모드에 대해 아래 설명을 참조
http://markspeople.tistory.com/36

password는 oracle를 처음 설치시 입력했던 password를 말합니다.
C:\> sqlplus system/password as sysdba

// 아카이브에 대한 간단한 정보 확인
SQL> archive log list

//  oracle session의 종료
SQL> shutdown immediate

// Backup하기 (백업 폴더 : C:\backup\Noarchive)
C:\> copy C:\oracle\product\10.2.0\oradata\orcl\*.* C:\backup\Noarchive

// DB시작
SQL> startup

// DB의 강제 종료로 장애를 발생시킨다.
SQL> shutdown abort

// EXAMPLE01.DBF를 삭제하므로 장애를 유발시킵니다.
C:\> del C:\oracle\product\10.2.0\oradata\orcl\Example01.dbf

// DB startup하면, 에러 발생함.
SQL> Startup

--> 위와 같이 비정상적으로 시스템이 다운되거나 서버 자체에 에러가 생겨 데이터 파일이 손상된 경우입니다. 가장 좋은 해결 방법은 데이터 파일을 없애고 다시 만드는 것입니다.
손상된 파일은 offline drop처리를 한 이후에 데이터 파일이나 테이블 스페이스를 삭제합니다.

// DB를 복구하는 작업
SQL> Alter database datafile 'C:\oracle\product\10.2.0\oradata\orcl\example01.dbf' offline drop;

SQL> Alter database open;
SQL> shutdown immediate

// 오류 파일을 Bakup 받아둔 것을 이용해서 원상태로 복구후 Startup실행
SQL> copy C:\backup\Noarchive\example01.dbf C:\oracle\product\10.2.0\oradata\orcl\
SQL> Startup


 

Posted by 예영교육 연구소
IT/Oracle2011. 4. 22. 00:21

No Archive Mode
- DB를 설치하면 디폴트로 3개의 redo log파일이 생성된다.
- 로그 정보 기록
3개의 redo log파일에서 첫번째 파일에 로그 정보를 저장한 후 두 번째 파일과 세번째 파일에 순차적으로 로그 정보를 기록한다.

따라서 세 번째 파일까지 모두 저장하면 다시 첫 번째 파일에 로그 정보를 기록하는데, 첫 번째 파일에는 이미 로그 정보가 있으므로 이전에 기록되어 있던 로그 정보가 모두 지워진다.
이러한 환경을 노아카이브 모드라 함. DB가 설치되면 기본으로 설치되는 환경.

특징
- DB를 실행하면 온라인 리두 로그의 아카이브 기능은 비활성 상태
- DB를 완전히 복구하는 것이 아닌 최근의 DB를 전체 백업했을 때의 상태까지만 복원
- 온라인 테이블 스페이스 백업 수행 불가

Archive Mode
- 세번째 리두 로그 파일까지 리두 로그 정보를 기록후, 다시 첫번째 리두 로그 파일에 새로운 로그 정보가 저장되기 전에 사용자가 지정한 디렉토리에 첫 번째 리두 로그 파일의 내용을 복사한 후 새로운 로그 정보를 첫번째 리두 로그 파일에 저장하는 환경을 아카이브 모드.
- 아카이브 파일 : 아카이브 모드에서 백업된 로그 파일

  아카이브 모드 확인
  SQL> select log_mode from v$database;

  아카이브에 대한 간단한 정보
  SQL> archive log list;

DB에서 노아카이브모드에서 아카이브 모드로 전환(ALTER DATABASE를 사용)
C:\> sqlplus system/password as sysdba

SQL> shutdown normal
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;

-> 모드 확인
SQL> select log_mode from v$database;

 


 

Posted by 예영교육 연구소
IT/Oracle2011. 4. 21. 19:36


CHAP 9장 언두 데이터 관리

이장의 내용

 - DML및 언두 데이터 생성 설명
 - 언두 데이터 모니터 및 관리
 - 언두 데이터와 리두 데이터이 차이점 설명
 - 언두 retention 구성
 - 언두 retention 보장
 - Undo Advisor사용

데이터 조작

데이터 조작어(DML)은 다음으로 구성된다.
  - INSERT, UPDATE, DELETE, MERGE

언두 데이터(이전 데이터)

 특징
 - 수정되기 전 원래 데이터의 복사본
 - 데이터를 변경하는 모든 트랜잭션에 대해 캡쳐됩니다.
 - 적어도 트랜잭션이 종료될 때까지는 보존됩니다.
 - 지원하는 작업
     롤백 작업, 읽기 일관성 및 Flashback Query, 실패한 트랜잭션 recovery

 다음에 의해 트랜잭션이 종료될 때까지 언두 정보를 보존합니다.

  - 유저의 트랜잭션 언두(롤백)
  - 유저의 트랜잭션 종료(커밋)
  - 유저 세션의 비정상적인 종료(롤백)
  - 종료 명령에 의한 유저 세션의 정상적인 종료(커밋)

트랜잭션 및 언두 데이터

 - 각 트랜잭션은 하나의 언두 세그먼트에만 할당됩니다.
 - 하나의 언두 세그먼트는 한 번에 여러개의 트랜잭션을 처리할 수 있습니다.

언두 정보 저장

언두 정보는 Undo Segment에 저장되며 Undo Segment는 하나의 Undo Tablespace에 저장됩니다. 언두 테이블 스페이스의 특징은 다음과 같습니다.
  - 언두 세그먼트에만 사용됩니다.
  - recovery시 특별한 고려 사항이 있습니다.
  - 단일 instance와만 연관됩니다.
  - 여러 언두 테이블 스페이스 중 하나만 주어진 시간에 주어진 instance에 대해 현재 쓰기가 가능해야 합니다.
  - Undo segment는 SYS가 소유합니다. 세그먼트는 순환 버퍼처럼 사용되므로 각 세그먼트는 최소 두 개의 Extent를 갖습니다.

언두 데이터와 리두 데이터 비교

언두 모니터

  - 언두 테이블 스페이스의 사용 가능한 공간
  - "Snapshot too old"오류

보통 대부분의 경우 언두는 instance에 의해 자동으로 관리되므로 데이터 베이스 관리자(DBA)의 개입이 거의 필요하지 않습니다. 다음과 같은 경우 관리자의 개입이 필요할 수 있습니다.

  - undo space가 부족한 경우
  - 유저가 ORA-01555 snapshot too old오류 메세지를 수신하는 경우

언두 관리

언두 관리를 통해 다음 오류를 방지해야 합니다.
  언두 테이블 스페이스의 공간 오류 :
    - 언두 테이블 스페이스의 크기를 적절히 조정합니다.
    - 대형 트랜잭션을 주기적으로 커밋합니다.

 "Snapshot too old" 오류 :

    - 적절한 언두 retention 간격을 구성합니다.
    - 언두 테이블 스페이스의 크기를 적절히 조정합니다.
    - 언두 retention 보장을 고려합니다.

    자동 언두 관리 사용 :

     UNDO_MANAGEMENT = AUTO
     UNDO_TABLESPACE=UNDOTBS1

언두 Retention 구성

  UNDO_RETENTION은 이미 커밋된 언두 정보의 보관 기관을 초단위로 지정합니다.


 

Posted by 예영교육 연구소
IT/Oracle2011. 4. 21. 18:57


CHAP 8장 데이터 및 동시성 관리
 - SQL사용법을 통해 데이터 관리
 - PL/SQL 객체 식별 및 관리
 - 트리거 및 트리거 이벤트 설명
 - lock 충돌 모니터 및 해결

INSERT명령

 한번에 하나의 행을 생성
 다른 데이블의 여러 행을 삽입한다.


insert into dept_80 (select * from employees where department_id  = 80);

하나 이상의 테이블에서 다른 테이블로 데이터를 대량으로 로드

insert into just_names (first, last)
 (select first_name, last_name from employees);

UPDATE 명령

 테이블의 0개 이상의 행을 변경이 가능하다.

DELETE 명령

 테이블의 0개 이상의 행을 제거한다.

MERGE명령

 단일 명령으로 INSERT및 UPDATE를 수행이 가능하다.

COMMIT및 ROLLBACK명령

다음 명령은 트랜잭션을 완료하는 데 사용됩니다.
  COMMIT : 변경 사항을 영구적으로 적용
  ROLLBACK : 변경 사항을 되돌린다.

PL/SQL

  Oracle의 PL/SQL은 4세대 프로그래밍 언어로 다음과 같은 기능 제공
  - SQL의 절차적 확장
  - 플랫폼과 제품 간의 이식성
  - 높은 수준의 보안 및 데이터 무결성 보호
  - 객체 지향 프로그래밍 지원

PL/SQL 객체 관리

  DBA는 다음을 수행이 가능함.
  - 문제가 되는 PL/SQL 객체 식별
  - 적절한 PL/SQL 사용법 제안
  - DB로 PL/SQL 객체 로드
  - PL/SQL 개발자의 문제 해결 지원

PL/SQL객체

다양한 유형의 PL/SQL 데이터 베이스 객체가 있습니다.
  - 패키지
  - Package Body
  - Type Body
  - 프로시저
  - 함수
  - 트리거

Lock

 - 다중 세션에서 동일한 데이터를 동시에 변경하는 것을 방지합니다.
 - 주어진 명령문에 대해 가능한 가장 낮은 레벨에서 자동으로 획득됩니다.
 - escalate하지 않습니다.

SQL> LOCK TABLE employees IN EXCLUSIVE MODE;

이 명령을 통해 lock된 테이블에서 행을 갱신하려는 다른 트랜잭션은 lock요청을 실행한 트랜잭션이 완료될 때가지 대기해야 합니다.

 몇가지 Lock모드

  - ROW SHARE : lock된 테이블에 대한 동시 엑세스를 허용하지만 세션이 배타적 엑세스를 위해 전체 테이블을 lock하는 것은 금지합니다.
  - ROW EXCLUSIVE : ROW SHARE와 동일하지만 SHARD모드에서 lock를 금지합니다.
  - SHARE : 동시 query는 허용하지만 lock된 테이블에 대한 갱신은 금지합니다.

Enqueue 메커니즘
 - lock을 대기하는 세션
 - 요청된 lock모드
 - 세션에서 lock을 요청하는 순서
- lock요청은 자동으로 큐에 저장됩니다. lock을 보유하는 트랜잭션이 완료되면 대기 중인 다음 세션이 lock을 보유하게 됩니다.
- Enqueue 메커니즘은 lock이 요청된 순서와 요청된 lock모드를 추적합니다.
- lock을 이미 보유한 세션은 큐의 끝으로 이동하지 않고 해당 lock의 변환을 요청할 수 있습니다.

Lock 충돌 유발 원인

- 커밋되지 않은 변경 사항
- 장기 실행 트랜잭션
- 필요 이상으로 높은 lock레벨

Lock충돌 감지

Enterprise Manager의 Blocking Sessions페이지를 사용하여 lock충돌을 찾습니다.
Session ID링크를 눌러 실제 SQL문을 포함하여 lock세션에 대한 정보를 확인합니다.

Lock충돌 해결

  - lock을 보유하는 세션을 커밋 또는 롤백합니다.
  - 최후의 수단으로 lock을 보유하는 세션을 종료합니다.

세션이 종료된 유저를 다시 실행하려고 할때 다음과 같은 오류 발생

ORA-03135 : connection lost contact

SQL을 사용하여 Lock충돌 해결

STEP1
SQL> select sid, serial#, username
from v$session where sid in
(select blocking_session from v$session)

STEP2

SQL> alter system kill session '144,8982' immediate;

 

 

Posted by 예영교육 연구소
IT/Network2011. 4. 20. 01:28

UDP(User Datagram Protocol)
 - Layer 4 계층 프로토콜
 - 비연결 지향성 서비스(Connetionless Service)
 
동작 원리
- TCP와 달리 송신측과 수신측간의 접속 절차 없이 수신측에서 요청을 실시하면, 송신측에서 바로 데이터를 전송한다.
- Three-way Handshaking, 데이터 스트림 서비스, 재전송 서비스, 혼잡 제어 기능 수행 안함.


장점

신뢰성을 보장하는 서비스 질의 응답을 실시하지 않기 때문에 신속한 데이터 전송이 가능하다.
따라서, 실시간으로 트래픽을 전송하는 멀티미디어 서비스 환경에서 주로 사용


단점

신뢰성이 보장되지 않아 데이타 손실률이 많다.


UDP 프로토콜을 사용하는 어플리케이션 프로토콜

DNS(Port53), DHCP(Port 67/68), TFTP(Port 69), SNMP(Port 161), NTP(Port 123), RIP(520)


UDP Header

 
(이미지 참조 : http://cs.uccs.edu/~cs522/msgformat/format.htm)






Posted by 예영교육 연구소
IT/Network2011. 4. 20. 01:05

TCP(Transmission Control Protocol)

- Layer 4계층 프로토콜

- 연결 지향 서비스(Connection-Oriented Service) - 무결성 보장

- 스트림 서비스 제공(Stream Data Service)

 

TCP는 3-Way Handshaking과정을 실시한다.

왜 3-Way Handshaking를 사용할까? 에러율이 낮고, 데이터 손실률이 적음.

 

흐름제어(Flow Control)

-TCP는 통신에 참여한 두 호스트가 송신할 수 있는 데이터 양을 네트워크 상황에 맞게 조절하는 기능을 제공.

즉, 매번 송신한 데이터에 대한 응답을 수신해야만, 그 다음 데이터를 송신할 수 있음.(Stop-and-Wait)

 

- TCP는 슬라이딩 원도우(Sliding Window) 기능을 이용하여 상호 협의한 원도우 크기만큼 데이터를 송신하고 수신함.

(Sliding window을 사용하므로서 데이터 전송 처리율과 메모리에 대한 효율성을 보장)

 

오류제어(Error Control)및 오류 정정(Error Correction)

- TCP는 세그먼트에 포함된 체크섬을 이용하여 세그먼트 손상 여부를 검사

 

동작원리

송신측 -----------------> 수신측

1. 세그먼트 송신

 

2. 수신측에서 만약 세그먼트 손상이 발견되면

수신측에서 해당 세그먼트 폐기, 송신측으로 응답을 보내지 않는다.

 

3. 송신측에서는 일정 시간이 초과되기 이전에 응답을 수신하지 못하면,

해당 세그먼트가 손상되었거나 손실되었다고 간주.

 

4. 송신측에서 각 세그먼트마다 시간 초과 카운터를 이용하여 주기적으로 확인.

카운터 값이 만기되면 해당 세그먼트 재전송

 

혼잡 제어 (Congestion Control)

전자 통신 네트워크로 들어가는 정보 소통량을 조절하여 네트워크가 혼잡해지지 않게 조절하는 것을 말한다.

 

각 호스트는 정보를 빨리 보내기 위하여 정해진 시간 내에 보낼 수 있는 최대의 패킷을 보냈고,

일부 라우터에서는 혼잡 현상이 발생하여 정해진 시간 내에 받은 패킷들을 모두 처리하지 못하였다.

정해진 시간 내에 패킷이 처리되지 않으면 호스트는 패킷을 재전송하였고, 라우터는 더 많은

패킷을 받게 되어서 혼잡 현상이 더 심해졌다.

 

동작 원리

TCP의 혼잡 제어는 패킷을 보내는 쪽에서 네트워크의 수용량을 결정하는 방식으로 동작한다.

패킷을 보내는 측에서 안전하게 보낼 수 있는 패킷의 수를 알고 있고, 패킷이 잘 도착하면 ACK 패킷을 받는다.

즉 이전에 보낸 패킷이 잘 도착되었다는 것을 ACK 패킷을 받은 것으로 알 수 있고, ACK 패킷을 받으면 안전하게

새 패킷을 더 보낼 수 있기 때문에 TCP의 혼잡 제어를 셀프클록 방식(self-clocking)이라고 한다.

(위키백과사전 참조)

Posted by 예영교육 연구소
IT/Network2011. 4. 20. 00:29

TCP(Transmission Control Protocol)
TCP는 Three-Way Handshaking과정을 실시한다.

 

그림 설명

1. A는 B에게 통신 요청을 개시하는 SYN과 첫 번째 세그먼트를 알리는 Seq(1200)을 전송한다.
2. SYN을 수신한 Server는 이에 대한 응답으로 A에게 Ack(1201)과 Seq(4800)을 전송하며, 자기 자신도 A에게 통신 요청을 개시하는 SYN를 함께 전송
3. SYN를 수신한 Client는 이에 대한 응답으로 Server에게 Ack(1201)을 전송함으로써 통신 연결이 성립된다.

왜 3-Way Handshaking를 사용할까?

에러율이 낮고, 데이터 손실률이 적습니다. 
예를 들어 두사람이 있습니다. A,B
A : 너 시간 있어? 우리 축구할래?
B : 응, 그래 축구하자.
A : 좋아.

그러면 다음과 같은 경우는 어떻게 될까요?
A : 너 시간 있어? 우리 축구할래?
B : ....
A : 좋아. 
B는 듣지 못한상태에서 A는 혼자 떠들었다면... 쓸데없는 체력(데이터)을 낭비했네요.
그래서 TCP는 3단계 방식 Three-Way Handshaking를 사용해서 나름 에러율을 낮추고 데이터 손실률을 줄일 수 있습니다.

공부하면서 나름대로 정리해 보았습니다.
혹시 잘못된 부분이 있다면 가르침 부탁드립니다.

Posted by 예영교육 연구소