달력

12

« 2024/12 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2018. 1. 18. 21:25

oracle 문서보는법 및 기본용어 C. Oracle2018. 1. 18. 21:25

1. SELECT 절에 대한 설명 그림들 중의 일부로 해당하는 항목마다 적용되는 부분이 있음. 


 
 

 
1. 가운데 줄이 서술하는 방향이고 위로 나와 있는 항목들은 옵션들로
    사용할 수도 있고 사용을 안해도 되는 항목들
 
2. 줄의 가운데 있는 항목은 select 절에 나와야 할 항목들로
   위의 그림중에서는 SELECT, FROM은 필요항목이라는 의미임.
 
 
SID , 인스턴스

DBMS 서버를 기동하기 위해서는 DB가 기동하는 서버의 IP,
프로토콜에 대한 정의가 필요합니다.
오라클의 경우 인스턴스가 서버역할을 하는 DBMS프로세스인데, 인스턴스가 기동할때 SID를 필요로 합니다.
SID는 인스턴스의 이름인 셈이지요.
SID가 필요한 이유는 한 서버(H/W)에 여러개의 인스턴스가 기동될 수 있으므로 구별하기 위해 필요합니다. 
SID정보는 환경변수와, LISTENER.ORA라는 파일에서 정의 됩니다.
DB에 접속하는 클라이언트 프로그램의 경우 접속하고자 하는 오라클 인스턴스 정보를 필요로 합니다.

클라이언트 프로그램이 접속하는데 필요한 정보는 서버IP, 오라클SID, 접속프로토콜 같은 정보가 필요하지요.

이러한 정보를 묶어서 서비스명으로 대표하고, 이 서비스명으로 클라이언트 프로그램이 서버에 접속하는데 사용합니다.
이 정보는 클라이언트쪽의 TNSNAMES.ORA라는 파일에 정의 되어있습니다.
 
tnsname.ora 

보통의 경우 위치는 $ORACLE_HOME/network/admin 이다.
tnsname.ora 는 로컬컴퓨터가 원격 서버로 접속할 방법을 서술하게 된다.
ORACLE_SERVER  =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 서버IP )(PORT = 서버오라클포트))
    )
    (CONNECT_DATA =
         (SERVICE_NAME = ORCL)
       ( SID = ORCL )
    )
  )

여러 옵션이 있으나 주의 할 부분은 BOLD 부분이다.
SERVICE_NAMESID 는 선택적이다. 둘다 적어도 되고 하나만 적어도 된다.
둘다 적었을경우 만약 한쪽을 잘못 적었다면 오라클 클라이언트는 접속이 되는부분을 찾아서 접속하게 된다 .
SERVICE_NAME  은 접속할 오라클 서버의 리스너의 환경파일에서 GLOBAL_DBNAME  부분이 된다.
listener.ora
보통의 경우 위치는 $ORACLE_HOME/network/admin 이다.
listener.ora 는 오라클서버에서 리스너를 스타트 할때 ( lsnrctl start ) 사용하게 되는 환경 파일이다.
즉 클라이언트가 자신에게 접속할때 접속할 방법을 유도하는 것이다.
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
        (GLOBAL_DBNAME = welcome.doamin)
          (ORACLE_HOME = /ora9i/product/920)
         (SID_NAME = ORCL)
     )
  )

SID_LIST 는 서버안에 DB INSTANCE 가 여러개일때 여러개로 나열해서 사용할수 있다.
위에서 SID_NAME 는 당연히 오라클 서버의 sid 이고
주의할 곳은 바로  (GLOBAL_DBNAME = welcome.doamin)   이 부분이다.
여기서 GLOBAL_DBNAME 은
SELECT * FROM global_name 로 조회한 GLOBAL_NAME 일까?
예~ 라고 대답한 사람은 안타깝지만 틀렸다.
위의 GLOBAL_NAME  은 사용자가 맘대로 수정해서 적을수 있다.
( DB parameter 와 전혀 상관없이 독립적인 변수라는 뜻이다. )
listener.ora 안의 GLOBAL_NAME 은 자신에게 접속할 클라이언트의 tnsname.ora 에서
SERVICE_NAME = << >> 안에 기술되는 부분이다.
즉 만약 위의 서버에 접속할 클라언트는 아래의 tnsname.ora 를 가지게 될것이다.
 
(SERVICE_NAME = welcome.doamin)
( SID = ORCL )
두개를 모두 적을 필요 없이 하나만 적어도 된다고 했으니 무엇을 적는게
더 좋을까?
당연히 보안상 sid 보다는 service_name 을 tnsname.ora 에 기술하는게 좋다.
물론 서버 listener.ora 의 GLOBAL_DBNAME 이 변경될경우 모든 클라이언트의 service_name 을
수정해줘야 하지만 바꿀 일은 드물기도 하거니와 SID 를 노출시키는것보다 훨씬 낫다.
 
 
 
DDL - 오라클의  Database,Tablespace,segment,object등을 생성,수정,삭제 잘라내기
          cteate,alter,drop,truncate,rename..
          Autocommit (Rollback불가능,수정불가능)
 
 
DML - table,view등에 데이타를 입력,수정,삭제
          insert, update, delete
          Transaction의 영향을 받음(Rollback가능) ps. Transcation진행중에는 undo segment에 임시로 저장된다.      
 
 
DCL - 사용자에게 권한을 부여,박탈
          grant,revoke
          Autocommit (Rollback불가능,수정불가능)         
 
 
 
TRANSACTION  - 사용자 쿼리를 처리하는 최소 단위
                             commit,rollback,savepoint
 
 
 
 
 
UNDO SEGMENT                      
 : 부분적인 위치 표시자(SAVEPOINT)를 남겨 원하는 데이타만큼만 ROLLBACK 할수 있다. SAVEPOINT는 ANSI표준이 아니다.
 
 
 
무결성
 
동시성 : READ CONSISTENCY(읽기 일관성)
=> 하나의 DML문을 여러 접속실행후 같이 실행시 먼저 실행한결과가 COMMIT 또는  ROLLBACK되
      어 결과가 명확해지기까지 다른접속에서는 실행이 안된다. 또한 결과가 반영되기전까지 한쪽에
      서 DML실행한 값을  다른 접속에서는 확인할 수 없다. 원래의 값이 보임.
= LOCK(TRANSATION 간의 상호 파괴적인 행위를 막 위한 ORACLE의 보호 메카니즘)
 
 LOCK : * TRANSATION 간의 상호 파괴적인 행위를 막기위한 ORACLE의 보호 메카니즘
                * 결과값이 반영(COMMIT,ROLLBACK)되기전까지 무한대기한다.
                * AUTO
               * 최저 level
               * row level LOCK (같은 행에 대해서만 LOCK이 걸린다.)
                * DML LOCK
 
 
 Oracle Table의 종류
 
Data Dictionary : 테이블에 대한 정보 저장
                              ex) select  *  from dict;
      
                                     connect  sys/change_on_install  as  sysdba
                                     show  user;
                                     select  *  from dict;
                                     desc  dba_users
                                     select  username,password  from  dba_users;
      
                            : 접두사 + 관심keyword + 복수형
                              -> USER_ :내가 생성한 것과 관련된 정보
                                               ex)  desc  user_tables;
                                                      select  table_name  from  user_tables;
                              -> ALL_    :접근 권항이 있는 것과 관련된 정보
                                                ex)  desc  all_tables;
                                                       select  table_name,owner  from  all_tables;
                              -> DBA_    :관리자만 접근해야하는 것과 관련된 정보
                            
                              -> U$         : 동적,성능 (동적메모리....)
                                   
User  Table
 


'C. Oracle' 카테고리의 다른 글

oracle 인덱스 INDEX  (0) 2018.01.18
oracle 프로세스 영역  (0) 2018.01.18
oracle DCL  (0) 2018.01.18
oracle TCL  (0) 2018.01.18
oracle DML  (0) 2018.01.18
:
Posted by sfeg