본문 바로가기

DataBase/Oracle

[Oracle Database] 10g XE 설치후 리스너 설정 & tns설정

시스템 -> 시스템 보호-> 고급 -> 환경변수 -> 시스템 변수의 path 에

C:\oraclexe\app\oracle\product\10.2.0\server\BIN; 추가


 

C:\oraclexe\app\oracle\product\10.2.0\server\NETWORK\ADMIN 

 

 

 

C:\Documents and Settings\Administrator>cd\

 

C:\>sqlplus /nolog

로그인없이 SQL*PLUS 접속 (접속은 하되 로그인은 하지 않는다 [/nolog])

 

SQL*Plus: Release 10.2.0.1.0 - Production on 화 11월 16 10:41:26 2010

 

Copyright (c) 1982, 2005, Oracle. All rights reserved.

 

SQL> show user 현재 접속된 유저확인

USER은 ""입니다 현재 유저를 접속하지 않아서 유저가 ""로 표기됨

SQL>

SQL> connect scott/dbatiger

연결되었습니다.

connect라는 명령어로 DB접속 사용자 scott, 비밀번호 dbatiger , 반드시 "/"기호사용

 

SQL>

SQL> connect sys/java302$ as sysdba

연결되었습니다.

connect라는 명령어로 관리자로 DB에 접속 as sysdba

 

SQL>

SQL> shutdown immediate

현재 진행중인 transaction은 rollback 시켜라

데이터베이스가 닫혔습니다.

데이터베이스가 마운트 해제되었습니다.

마운트의 사전적의미는 저장장치를 접근할 수 있는 경로를 디렉터리 구조에 편입시키는 작업을 말한다.

DB가 닫히고 마운트가 해제되었다는 것은 내 서버(Server)에 접근을 막았다는 의미~

ORACLE 인스턴스가 종료되었습니다.

Oracle Istance는 정적으로 메모리의 일정 공간을 차지하며, Oracle 프로세스로 구성

 

SQL>

SQL> connect sys/java302$ as sysdba

휴지 인스턴스에 접속되었습니다.

SQL>

SQL> startup 오라클서버 구동

ORACLE 인스턴스가 시작되었습니다.

 

Total System Global Area 272629760 bytes

Fixed Size 1248504 bytes

Variable Size 79692552 bytes

Database Buffers 188743680 bytes

Redo Buffers 2945024 bytes

데이터베이스가 마운트되었습니다.

데이터베이스가 열렸습니다.

SQL>

SQL>

SQL> show user

USER은 "SYS"입니다

SQL>

SQL> select status from v$instance;

현재 사용자가 소유한 Object 목록 확인

Select 칼럼 이름, from 데이블 이름 ;

 

STATUS

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

OPEN

 

SQL> connect scott/dbatiger scott라는 사용자가 연결되고 sys는 자동으로 연결해제

연결되었습니다.

SQL>

SQL> show user

USER은 "SCOTT"입니다

SQL>

SQL> connect hr/asd 기존 scott 사용자를 연결해제하고 hr이라는 사용자로 연결

ERROR:

ORA-28000: the account is locked 비밀번호 오류 메시지

 

경고: 이제는 ORACLE에 연결되어 있지 않습니다.

SQL>

SQL>

SQL> connect sys/java302$ as sysdba 사용법: CONN [로그온] [AS {SYSDBA|SYSOPER}]

연결되었습니다. 관리자로 접속 sys

SQL>

SQL> alter user hr account unlock; hr라는 계정으로 사용자변경

 

사용자가 변경되었습니다.

 

SQL>

SQL> alter user hr identified by dbalion; hr 계정에 비번 dbalion으로 등록

 

사용자가 변경되었습니다.

현재 사용자는 sys와 hr로 2개의 사용자가 등록되어 있음

SQL>

 

 

 

 

 

 

 

 

 

SQL> connect hr/dd

ERROR:

ORA-01017: invalid username/password; logon denied 사용자와 비밀번호가 틀렸다는 오류 메시지

 

경고: 이제는 ORACLE에 연결되어 있지 않습니다. 위에 오류로 사용자가 비어있음

SQL>

SQL>

SQL> connect sys/java302$ as sysdba 관리자로 접속

연결되었습니다.

SQL>

SQL> alter user hr identified by dbalion; - " ; "를 써야함

 

사용자가 변경되었습니다.

 

SQL>

SQL> show user

USER은 "SYS"입니다

SQL>

SQL> connect hr/dbalion

연결되었습니다.

SQL>

SQL> show user

USER은 "HR"입니다

SQL>

SQL> connect sys/java302$ as sysdba

연결되었습니다.

hr이라는 계정은 연결이 해제되고 sys라는 관리자로 다시 접속

SQL>

SQL> show user

USER은 "SYS"입니다

SQL>

SQL> cls

SP2-0042: 알 수 없는 명령어 "cls" - 나머지 줄 무시.

SQL>

SQL> host 잠시 운영체제로 가는 명령어 운영체제에서 다시 돌아오려면 exit로 돌아온다

Microsoft Windows [Version 5.2.3790]

(C) Copyright 1985-2003 Microsoft Corp.

 

C:\>

C:\>exit

 

 

 

 

 

 

 

 

SQL> host dir host를 쓰고 명렁어를써도 SQL상에 표시됨

SQL>

SQL> disconnect 접속된 사용자의 접속끊기

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options에서 분리되었습니다.

SQL>

 

SQL> host ipconfig c:\상의 명령어 ipconfig를 실행

 

Windows IP Configuration

 

 

Ethernet adapter 로컬 영역 연결:

 

Connection-specific DNS Suffix . :

IP Address. . . . . . . . . . . . : 220.76.176.81

Subnet Mask . . . . . . . . . . . : 255.255.255.0

Default Gateway . . . . . . . . . : 220.76.176.254

 

SQL>

SQL>

SQL> create user moonsuhoidentified by suho0114;

moonsuho라는 사용자를 생성 비밀번호 suho0114

 

사용자가 생성되었습니다.

 

SQL>

 

SQL> show user 아직까진 moonsuho라는 사용라를 connect하지 않음

USER은 "SYS"입니다

SQL>

SQL> grant create session to moonsuho접속이 안되어서 권한부여

Session 사용자가 사용자 아이디와 암호를 사용하여 오라클서버에 접속함에 따라 생성되는 일종의 연결

Grant를 명렁어로 moonsuho 라는 사용자에게 권한을 부여함

권한이 부여되었습니다.

 

SQL>

SQL> show user

USER은 "SYS"입니다

SQL>

SQL> conn moonsuho/suho0114 moonsuho를 사용자로 접속

연결되었습니다.

SQL>

SQL> show user

USER은 "MOONSUHO"입니다 관리자 sys의 접속을 해제하고 moonsuho라는 사용자로 접속

SQL>

 

 

SQL> select * from global_name; 전역 데이터베이스 이름을 확인하기

 

GLOBAL_NAME

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

 

JAVA81.IEI.OR.KR

 

SQL>

SQL> host cls 화면정리 명렁어

 

 

======================================================

원격 오라클 서버에 접속하는 방법

=======================================================

 

  1. 오라클 서버에서 해야 할 일

1-1. 리스너 서비스(Listener Service)가 구동 중인지 확인해야 한다.

 

손님 나이트 클럽

삐끼 웨이터 (일반, 전담)

 

 

오라클사용자(클라이언트) 오라클 서버

리스너 서비스 (Listener Service) 오라클 서버 서비스 (Oracle Server Service)

- 공유서버(Shared Server) , 전용서버(Dedicated Server)

 

 

네트워크를 이용하여 클라이언트에서 오라클 서버로 연결하기 위한 오라클 네트워크 관리자이다. 만약 로컬 데이터베이스가 아니고 네트워크로 연결된 원격 데이터베이스 서버에 연결하려면 원격 데이터베이스 서버는 그 리스너를 기동해야 한다. 즉, 서버가 클라이언트의 요청을 들을 수 있도록 그 리스너를 시작하는 것이다. 이러한 리스너의 시작과 종료, 또 그 상태를 확인하는 오라클 데이터베이스 관리 툴이 바로 오라클 리스너(lsnrctl)이다.

 

 

리스너 서비스 작동여부 확인 (삐끼가 잘 활동하는지 확인)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SQL> host

Microsoft Windows [Version 5.2.3790]

(C) Copyright 1985-2003 Microsoft Corp.

 

 

C:\>lsnrctl status 리스너 서비스의 현재 상태를 조회하는 것이다.

 

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 16-11월-2010 12:01:17

 

Copyright (c) 1991, 2005, Oracle. All rights reserved.

 

(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))에 연결되었습니다

리스너의 상태

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

별칭 LISTENER

버전 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production

시작 날짜 16-11월-2010 10:39:02

업타임 0 일 1 시간. 22 분. 18 초

트레이스 수준 off

보안 ON: Local OS Authentication

SNMP OFF리스너 매개변수 파일 C:\oracle\product\10.2.0\db_1

\network\admin\listener.ora

리스너 로그 파일 C:\oracle\product\10.2.0\db_1\network\log\listener.log

끝점 요약 청취 중...

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=class302-10)(PORT=1521)))서비스 요약...

"PLSExtProc" 서비스는 1개의 인스턴스를 가집니다.

"PLSExtProc" 인스턴스(UNKNOWN 상태)는 이 서비스에 대해 1 처리기를 가집니다.

"java81.iei.or.kr" 서비스는 1개의 인스턴스를 가집니다.

"java81" 인스턴스(READY 상태)는 이 서비스에 대해 1 처리기를 가집니다.

"java81XDB.iei.or.kr" 서비스는 1개의 인스턴스를 가집니다.

"java81" 인스턴스(READY 상태)는 이 서비스에 대해 1 처리기를 가집니다.

"java81_XPT.iei.or.kr" 서비스는 1개의 인스턴스를 가집니다.

"java81" 인스턴스(READY 상태)는 이 서비스에 대해 1 처리기를 가집니다.

명령이 성공적으로 수행되었습니다- 정상적으로 수행되었다.

 

C:\>

C:\>lsnrctl status > d:\오라클수업\리스너상태보기.txt -> 결과물이 txt파일로 저장됨

C:\>

C:\>lsnrctl stop 리스너서비스를 중지시키는 것이다.

 

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 16-11월-2010 12:07:25

 

Copyright (c) 1991, 2005, Oracle. All rights reserved.

 

(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))에 연결되었습니다

명령이 성공적으로 수행되었습니다

 

C:\>

C:\>lsnrctl status 리스너서비스를 상태를 다시확인

 

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 16-11월-2010 12:08:24

 

Copyright (c) 1991, 2005, Oracle. All rights reserved.

 

(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))에 연결되었습니다

TNS-12541: TNS:리스너가 없습니다.

TNS-12560: TNS:프로토콜 어댑터 오류

TNS-00511: 리스너가 없습니다.

32-bit Windows Error: 2: No such file or directory

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=class302-10)(PORT=1521)))에 연결되었습니다

TNS-12541: TNS:리스너가 없습니다.

TNS-12560: TNS:프로토콜 어댑터 오류

TNS-00511: 리스너가 없습니다.

32-bit Windows Error: 61: Unknown error

 

C:\>

C:\>

C:\>lsnrctl start 리스너서비스를 시작(구동)하는 것이다.

 

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 16-11월-2010 12:09:33

 

Copyright (c) 1991, 2005, Oracle. All rights reserved.

 

시작 tnslsnr: 잠시만 기다리세요...

 

TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production

시스템 매개변수 파일은 C:\oracle\product\10.2.0\db_1\network\admin\listener.ora

입니다

C:\oracle\product\10.2.0\db_1\network\log\listener.log (으)로 로그 메시지를 기록

했습니다

리스닝이: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))

리스닝이: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=class302-10)(PORT=1521)))

 

(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))에 연결되었습니다

리스너의 상태

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

별칭 LISTENER

버전 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produc

tion

시작 날짜 16-11월-2010 12:09:36

업타임 0 일 0 시간. 0 분. 3 초

트레이스 수준 off

보안 ON: Local OS Authentication

SNMP OFF리스너 매개변수 파일 C:\oracle\product\10.2.0\db_1

\network\admin\listener.ora

리스너 로그 파일 C:\oracle\product\10.2.0\db_1\network\log\listener.log

끝점 요약 청취 중...

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=class302-10)(PORT=1521)))

서비스 요약...

"PLSExtProc" 서비스는 1개의 인스턴스를 가집니다.

"PLSExtProc" 인스턴스(UNKNOWN 상태)는 이 서비스에 대해 1 처리기를 가집니다.

명령이 성공적으로 수행되었습니다

C:\>

C:\>

 

만약에 오라클서버의 IP 주소가 변경되어지만 반드시 리스너서비스를 수정해서 구동하도록 해주어야 한다.

 

%oracle_home% \NETWORK\ADMIN\ listener.ora

위, 아래 똑 같은 현재 오라클 홈 주소

C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora "리스너서비스를 구동시켜주는 환경파일"

 

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

listener.ora 파일의 메모장 내용 listener가 구동되는 환경이 설정되어있는파일

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

# listener.ora Network Configuration File: C:\oracle\product\10.2.0\db_1\network\admin\listener.ora

# Generated by Oracle configuration tools.

 

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = C:\oracle\product\10.2.0\db_1)

(PROGRAM = extproc)

)

)

 

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))

(ADDRESS = (PROTOCOL = TCP)(HOST = 220.76.176.81)(PORT = 1521))

 

# IP로 바꾼다

# (ADDRESS = (PROTOCOL = TCP)(HOST = class302-10)(PORT = 1521))

# 원래는 변하지 않는 컴퓨터 이름을 쓴다.

)

)

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

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

 

 

 

(HOST = 220.76.176.81)와 같이 IP Address를 변경 후 저장한다.

 

리스너 서비스의 Port Number를 기본값인 1521에서 1523으로 변경하고자 한다.

 

원래 listener.ora의 내용 (HOST = class302-10)(PORT = 1521)) 에서

(HOST = 220.76.176.81)(PORT = 15213) 변경

 

리스너 서비스를 중지 했다가 다시 시작해야 한다.

 

즉, c:\lsnrctl stop c:\lsnrctl start 한다.

 

 

====================================================================

컴퓨터 이름 = NetBIOS Name이라 한다 = Host Name 리눅스는 host name라 한다.

 

Port Number 의 번호는 0 ~ 65535 까지이다.

http => 80

ftp => 21으로 연결, 데이터 주고받는 것은 20

리눅스 기반에 ssh => 22

telnet => 23

smtp => 25

pop3 => 103

https(SSL) = >443

 

이것만큼은 꼭 외우자!!!!

http://www.iana.org포트넘버가 나오는 싸이트 꼭 기억하기!!!

실제주소 http://www.iana.org/assignments/port-numbers기억하기!!!

 

IP Address:Port Number eSocket 이라 부른다.

====================================================================

 

Telnet 220.76.176.81 (IP주소) port 번호

텔넷접속~

나갈때는 Ctrl + ] 누르면 c:\ 로 나올 수 있다.

 

C:\>

C:\>telnet 220.76.176.81 1521

"PLSExtProc" 서비스는 1개의 인스턴스를 가집니다.

"PLSExtProc" 인스턴스(UNKNOWN 상태)는 이 서비스에 대해 1 처리기를 가집니다.

명령이 성공적으로 수행되었습니다

telnet 접속완료

Ctrl + ] 누른 후 q를 누르면 다시 c:\로 나옴

 

 

 

 

 

 

손님 나이트 클럽

삐끼 웨이터 (일반, 전담)

 

 

오라클사용자(클라이언트) 오라클 서버

리스너 서비스 (Listener Service) 오라클 서버 서비스 (Oracle Server Service)

- 공유서버(Shared Server) , 전용서버(Dedicated Server)

 

 

  1. 오라클 클라이언트에서 애야 할 일 (어느 오라클서버 즉, 어디 나이트로 가야할지…)

1-1. 연결해야 할 원격 오라클서버가 어디인지 설정해 주어야 한다.

즉, 어떤 원격 오라클서버에 붙을 것인가를 설정해 주어야 한다.

 

 

C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora 파일이 어디에 갈 것인가

%oracle_home% \NETWORK\ADMIN\tnsname.ora

 

 

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

tnsname.ora 파일의 메모장 내용

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

# tnsnames.ora Network Configuration File: C:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora

# Generated by Oracle configuration tools.

 

JAVA81 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = class302-10)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = java81.iei.or.kr)

)

)

 

JAVA80 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 220.76.176.80)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = java80.iei.or.kr)

)

)

 

# JAVA81은 내 컴퓨터 네트서비스명이고, JAVA80는 상대방 즉, 내가 연결하고자 하는 컴퓨터의 네트서비스명

# moonsuho를 네트서비스명 (Net Service Name) 이라고 부른다.

 

 

 

 

EXTPROC_CONNECTION_DATA =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))

)

(CONNECT_DATA =

(SID = PLSExtProc)

(PRESENTATION = RO)

)

)

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

 

생성되어진 네트서비스명이 제대로 작동하는지 아닌지를 테스트한다.

아래와 같이…

 

C:\>tnsping JAVA80 3 3번 확인하라는 뜻이다.

 

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 16-11월-

2010 14:49:41

 

Copyright (c) 1997, 2005, Oracle. All rights reserved.

 

사용된 매개변수 파일:

C:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora

 

별칭 분석을 위해 TNSNAMES 어댑터 사용

Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 220.76.1

76.80)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = java80

.iei.or.kr)))

확인(30밀리초)

확인(10밀리초)

확인(20밀리초)

 

C:\>

C:\>

C:\>

C:\>

C:\>sqlplus /nolog

 

SQL*Plus: Release 10.2.0.1.0 - Production on 화 11월 16 15:07:15 2010

 

Copyright (c) 1982, 2005, Oracle. All rights reserved.

 

SQL> conn moonsuho/suho0114

연결되었습니다.

SQL>

SQL> show user

USER은 "MOONSUHO"입니다 moonsuho 라는 사용자를 연결

SQL>

SQL> select * from global_name; 전역 데이터베이스 이름을 확인하는 문구

 

GLOBAL_NAME

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

 

JAVA81.IEI.OR.KR

 

SQL>

SQL> conn moonsuho/suho0114

연결되었습니다.

 

SQL>

SQL> conn moonsuho/suho0114@java81

네트서비스명이 JAVA81이 moonsuho라는 사용자 계정에 연결되었습니다. (내컴퓨터에 내가연결)

SQL>

SQL> select * from global_name;

 

GLOBAL_NAME

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

 

JAVA81.IEI.OR.KR

 

SQL>

SQL>

SQL> conn kimsungjin/java302@moonsuho

연결되었습니다.

SQL>

SQL> select * from global_name;

 

GLOBAL_NAME

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

 

JAVA80.IEI.OR.KR

 

SQL>

SQL> exit

ERROR:

 

C:\>

 

 

 

 

 

 

 

 

C:\>

C:\>tnsping kimsungjin

 

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 16-11월-

2010 15:18:39

 

Copyright (c) 1997, 2005, Oracle. All rights reserved.

 

사용된 매개변수 파일:

C:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora

 

TNS-03505: 이름 처리에 실패했습니다

 

C:\>

C:\>

C:\>tnsping moonsuho

 

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 16-11월-

2010 15:22:03

 

Copyright (c) 1997, 2005, Oracle. All rights reserved.

 

사용된 매개변수 파일:

C:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora

 

 

별칭 분석을 위해 TNSNAMES 어댑터 사용

Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 220.76.1

76.80)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = java80

.iei.or.kr)))

확인(0밀리초)

 

C:\>

C:\>