Oracle sid란 - oracle sidlan

2010. 9. 1. 13:43

2010. 9. 1. 13:43 in Oracle

Oracle sid란 - oracle sidlan

오라클 SID, Service Name 차이 | Oracle개념용어정리

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

DBMS 서버를 기동하기 위해서는 DB서버가 기동하는 서버의 IP 그리고

DB서버가 접속을 받아들이기 위한 프로토콜에 대한 정의가 필요합니다.

오라클의 경우 인스턴스가 서버 역할을 하는 DBMS프로세스인데,

인스턴스가 기동할때 SID를 필요로 합니다.

즉 SID는 인스턴스의 이름인 셈이지요.

SID가 필요한 이유는 한 서버(H/W)에 여러개의 인스턴스가 기동될 수 있으므로

구별하는 태그가 필요하겠지요.  따라서 SID는 DB서버에서 필요한 정보입니다.

SID정보는 환경변수와, LISTENER.ORA라는 파일에서 정의 됩니다.

DB에 접속하는 클라이언트 프로그램의 경우 접속하고자 하는 오라클 인스턴스 정보를

필요로 합니다. 클라이언트 프로그램이 접속하는데 필요한 정보는 서버IP, 오라클SID, 접속프로토콜
같은 정보가 필요하지요. 이러한 정보를 묶어서 서비스명으로 대표하고,
이 서비스명으로 클라이언트 프로그램이 서버에 접속하는데 사용합니다.

이 정보는 클라이언트쪽의 TNSNAMES.ORA라는 파일에 정의 되어있습니다.

출처 : 네이버 지식 검색 : 정확히는 모름(?)


instance, instantiate ; 인스턴스, 인스턴스화

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

인스턴스는 추상화 개념 또는 클래스 객체, 컴퓨터 프로세스 등과 같은 템플릿이 실제 구현된 것이다.
인스턴스화는 클래스 내의 객체에 대해 특정한 변형을 정의하고, 이름을 붙인 다음, 그것을 물리적인
어떤 장소에 위치시키는 등의 작업을 통해, 인스턴스를 만드는 것을 의미한다.

1. 몇몇 필자들은, 객체지향 프로그래밍에서 클래스를 인스턴스화 한다는 것이, 클래스의 구체적인 인스턴스,
즉 객체를 만드는 것이라고 말한다. 그 객체는 컴퓨터 내에서 실행시킬 수 있는 실행 파일이다.

2. 객체지향 프로그램 언어인 자바에서는, 클래스로부터 인스턴스화된 객체를, 객체라는 말 대신에
역시 클래스라고 부름으로써 많은 사용자들을 혼란스럽게 한다. 즉 자바에서는, 특정한 클래스를
만들기 위해 클래스를 인스턴스화하며, 그것 역시 컴퓨터 내에서 동작하는 실행 파일이다.

3. 객체지향 프로그래밍 개념이 나오기 이전의 데이터 모델링이나 프로그래밍에서는, 인스턴스화라는 것이
관계형 데이터베이스 테이블 내에 새로운 엔트리를 만듦으로써 추상화된 객체로부터 실재(데이터가 들어있는)
객체를 만드는 것도, 한 가지 용례였다. 

출처 : 텀즈

SID와 Service Name의 차이는 아래와 같다.

  • SID : DB 하나의 인스턴스
  • Service Name : 여러 개의 인스턴스를 모아 하나의 서버 혹은 시스템을 구성한 것

설명

일반적인 경우 데이터베이스가 인스턴스 하나만으로 구성되어 있다면 " 데이터베이스명 = SID " 가 된다.

하지만 RAC 구성일 경우 하나의 서버 내에 두 개 이상의 인스턴스로 구성되어 있으므로 아래와 같이 SID가 서로 다를 수 있다.

SQL> SELECT NAME, DB_UNIQUE_NAME FROM V$DATABASE;

NAME               DB_UNIQUE_NAME
------------------ ------------------------------------------------------------
ORCL               ORCL

SQL> SELECT INSTANCE FROM V$THREAD;

INSTANCE
--------------------------------------------------------------------------------
ORCL1
ORCL2

위 화면처럼 데이터베이스명은 ORCL 이지만, 인스턴스명은 ORCL1과 ORCL2로 이름이 다르다. 


오라클 데이터베이스명을 확인하는 방법

SELECT NAME, DB_UNIQUE_NAME FROM v$database;

오라클 SID를 확인하는 방법

SELECT instance FROM v$thread;

※ 보통 JDBC로 접속할 때 URL 정보 작성하는 방법

JDBC에서 thin 드라이버로 오라클 접속할 시 SID를 알아야 한다.

따라서 SID는 위와 같이(오라클 SID 확인하는 방법) 확인해서 접속 정보를 입력하면 된다.

url=jdbc:oracle:thin:@ip주소:포트:SID   (url=jdbc:oracle:thin:@192.168.20.1:1521:ORCL)


Oracle-Theory

2015. 4. 27. 15:21

일반적인 테스트 환경이나 소규모의 경우 한개의 DB서버에 한개의 인스턴스만 사용한다.

이런 환경에서는 SID와 Service Name을 구분할 필요가 없었던것이다.

단순히 구분짓자면 이렇게 말할수 있다.

SID = DB 하나의 인스턴스

Service Name = 여러개의 인스턴스를 모아 하나의 서버 혹은 시스템을 구성한것

쉽게 예를 들어보자.

서버 한대에 인스턴스를 여러개 생성하여 orcl1, orcl2 로 각각 생성했다고 하자.

각각의 인스턴스는 orcl1, orcl2 라는 SID를 갖게 된다.

해당 서버에서 두개의 인스턴스를 묶어 사용할경우, orcl 이라는 Service Name을 갖을수 있다.

이외에도 서버 두대에 설치하여 각각 미러링 처리하여 동일한 서버인것 처럼 활용할경우

각각의 서버는 서로다른 SID를 갖게 되지만 Service Name을 동일하게 하여 같은 서버 처럼 활용할수 있다.

1. 오라클 데이타베이스명 확인하는 방법

SELECT NAME, DB_UNIQUE_NAME FROM v$database;

2. 오라클 SID 확인하는 방법

SELECT INSTANCE FROM v$thread;

oradata/  밑에는 sid명으로 저장되고

admin/ 밑에는 db명이 저장 됨

SYS>select instance_name from v$instance;

INSTANCE_NAME

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

testdb

SYS>select name from v$database;

NAME

---------

TESTDB


sid : service id  --> ??? 이건 멍미?

SID 란?

System Identifier 명의 약자로 데이터베이스를 식별함에 있어 고유한 아이디를 말합니다.

SID 명은 데이터베이스명과 일치해야 하며, DB연동을 위하여 필요한 naming 입니다.

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

* 자신의 oracle sid 명 확인 하기.

도창에서 sqlplus 실행 후 로그인.

1. sql>select name from v$database;

2. 제어판 - 관리도구 - 서비스 - OracleService(서비스명)

ex> OracleServiceAAA 일 경우 AAA가 SID 명.

SYS@XE> show parameter service_name;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
service_names                        string      XE

SID는 INSTANCE의 유니크한 이름입니다.

SERVICE NAME은 데이터베이스에 원격으로 접속할때 사용되는 TNS alias입니다. SERVICE NAME은 클라이언트의 tnsnames.ora 파일에 기록됩니다. SID와 동일할 수 있으며 원하는 다른 이름을 지정할 수 있습니다.

SERVICE_NAME은 데이터베이스가 리스너에 자신을 등록할 수 있는 Oracle 8i부터 사용되는 기능입니다.

이런 방식으로 데이터베이스가 리스너에 등록된 경우 tnsnames.ora에서 SERVICE_NAME 파라미터를 사용할 수 있습니다. 그렇지 않으면 tnsnames.ora에서 SID를 사용합니다.

RAC가 있는 경우 인스턴스마다 다른 SERVICE_NAME을 갖게 됩니다.

SERVICE_NAME은 인스턴스가 연결되는 데이터베이스 서비스의 이름을 하나 이상 지정합니다. 동일한 데이터베이스의 서로 다른 용도를 구별하기 위해 여러 서비스 이름을 지정할 수 있습니다.

SERVICE NAMES 찾는법

오라큰 SERVICE NAME은 인스턴스 이름과 비슷합니다.

만약 인스턴스 이름이 prdserv이면 SERVICE NAME은 oracleserviceprdserv라고 가정합니다.

SERVICE NAME 확인쿼리

방법1
select value from v$parameter where name like '%service_name%';


VALUE
----------------------------------------------------------------------------------------------------
XE

1 row selected.

방법2
show parameter service_name;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
service_names                        string      XE


방법3
select sys_context('userenv','service_name') from dual;
SYS_CONTEXT('USERENV','SERVICE_NAME')
----------------------------------------------------------------------------------------------------
XE

1 row selected.

 SID 확인 쿼리

 OS에서 확인
 ora_pmon_SID 
 ps -ef |grep pmon
oracle    4371     1  0 Jul01 ?        00:01:27 xe_pmon_XE

쿼리로 확인
select instance_name from v$instance;

INSTANCE_NAME
----------------
XE

SELECT instance FROM v$thread;

INSTANCE
--------------------------------------------------------------------------------
XE

RAC의 경우
SQL>  SELECT instance FROM v$thread;

INSTANCE
--------------------------------------------------------------------------------
MEPP1
MEPP2

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
MEPP2

출처 : https://www.stechies.com/difference-between-oracle-sids-and-oracle-service-names/

Oracle SIDs vs. Oracle SERVICE NAMES

What is the differences between Oracle SIDs and Oracle SERVICE NAMES. Oracle SID is the unique name that uniquely identifies your instance/database where as Service name is the TNS alias. SERVICE_NAME is the new feature from oracle 8i on wards in which dat

www.stechies.com

Oracle sid란 - oracle sidlan