Oracle 네트워크 관리
오라클 네트워크 구성(Client가 Server에 Connection을 할때의 구조)
- Client측과 Server 측 양쪽에 각각 Oracle Net이 존재
- 항상 Listener가 실행되어 있어야한다.
- Server 측에 Listener를 띄울수 있는 listener.ora(리스너 구성 파일)이 존재해야한다
- protocol (TCP를 쓸건지 뭘쓸건지)
- 서버의 IP Adress(Hostname)
- Listener의 Port 번호 = 1521 (1024~65536)
- Service_name(SID)
- Client 측에는 tnsnames.ora(Client 쪽 구성파일)이 있어야한다
- tns : 네트워크에 접속해 줄수 있도록 해주는 이름
- ex) orcl2(connection alias)
- connection descriptor
- protocol
- ip address(hostname)
- port 번호
- service_name(SID) : db_name + db_domain(default) : 클라이언트의 논리적 그룹
- 각각의 구성파일은 $ORACLE_HOME/network/admin에 위치한다.
SYS@orcl> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string orcl
SYS@orcl> show parameter db_domain
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_domain string example.com
[orcl2:~]$ cd /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/
[orcl2:admin]$ ls
samples shrept.lst tnsnames.ora
[orcl2:admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCL2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = edydr1p0.us.oracle.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl2.example.com)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = edydr1p0.us.oracle.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl.example.com)
)
)
-- 접속할 수 잇는 connection descript가 저장되어있다.
===================================================================================================
[orcl2:admin]$ sqlplus hr/hr
-- 일반적인 접속
[+ASM:admin]$ ps -ef|grep orcl2
...
oracle 7650 7649 0 11:18 ? 00:00:00 oracleorcl2 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
...
===================================================================================================
[orcl2:admin]$ sqlplus hr/hr@orcl2
-- 리스너를 통해서 접속을 하는 것이다.
[+ASM:admin]$ ps -ef|grep orcl2
...
oracle 7624 1 0 11:17 ? 00:00:00 oracleorcl2 (LOCAL=NO)
...
===================================================================================================
-- descrption은
[orcl2:~]$ netca
--을 통해서 생성이 가능하다.
--orcl2_new를 생성한 후에
[orcl2:admin]$ sqlplus hr/hr@orcl2_new
SQL*Plus: Release 11.2.0.1.0 Production on Wed Mar 27 11:44:05 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
-- 접속이 가능하다.
리스너의 서비스 등록방법
- Dynamic registration(동적 등록)
- lprotocol
- hostname
- port
- listener.ora 파일안에 정보가 3가지만 있는 경우( 서비스 이름이 빠진 경우)
- DB를 startup 할때 PMON이 Listener에게 service name을 등록해 준다.
- PMON이 기본 참고하는 이름이 tnsnames.ora의 Instance이름이다
- PMON이 빨리 등록을 못한다면 alter system register;를 통해 수동 등록
- 즉 service_name에 관한 정보가 없어도 등록이 된다.
- DB 서버측에 tnsnames.ora는 동적 등록을 위해 필요하다.
- Client측의 tnsnames.ora는 서버 연결을 위해 필요하다.
- Static registration(정적 등록)
- protocol
- hostname
- port
- SID(service_name)
- listener.ora 파일안에 정보가 4가지가 다 있는 경우(서비스 이름까지 있는 경우)
[orcl2:admin]$ netmgr
에서 서비스 등록이 가능하다.
[orcl2:admin]$ sqlplus hr/hr@a
SQL*Plus: Release 11.2.0.1.0 Production on Wed Mar 27 12:01:35 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
-- names resolution이 발생한다.
[+ASM:admin]$ lsnrctl status
[+ASM:admin]$ lsnrctl service
[+ASM:admin]$ lsnrctl stop
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 27-MAR-2019 12:04:01
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
The command completed successfully
-- 리스너를 내리는 작업
[orcl2:admin]$ sqlplus hr/hr@a
SQL*Plus: Release 11.2.0.1.0 Production on Wed Mar 27 12:04:50 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
ERROR:
ORA-12541: TNS:no listener
-- 에러가 발생한다.
[+ASM:admin]$ lsnrctl start
[orcl2:admin]$ sqlplus hr/hr@a
SQL*Plus: Release 11.2.0.1.0 Production on Wed Mar 27 12:07:10 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
-- 리스너가 켜지고 등록되는 시간이 조금 걸리므로 에러가 발생하는데 잠시후 다시 시도하면 정상 접속이 된다.
[+ASM:admin]$ lsnrctl
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 27-MAR-2019 12:09:55
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL>
-- 이곳에서도 명령어 입력이 가능하다.
Network 관리 도구
- netca
- netmgr
- lsnrctl start, stop, status, service
접속 방법(이름 지정 방식) 4가지
- Easy Connect
- SQL> CONNECT <username>/<password>@<hostname>:<listener port>/<service name>
[orcl2:admin]$ sqlplus hr/hr@localhost:1521/orcl2.example.com
SQL*Plus: Release 11.2.0.1.0 Production on Wed Mar 27 13:51:29 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
HR@localhost:1521/orcl2.example.com>
- 고급 연셜 옵션은 지원하지 않는다.
- Connect Fail Over( connection을 못하게 된 상황에서 fail over하여 접속을 할 수 있게 한다.)
- 리스너가 죽은 상황에서 등록되어있는 다른 리스너를 통하여 접속
- 소스 경로 지정
- connection manager
- 로드밸런싱
- tnsnames.ora 설정 필요 없다.
- TCP만 지원한다.
- Local Naming
- Client의 tnsnames.ora에 서비스 orcl2 = (description......) : Alias = connection descriptor를 기술하는 방식
- 가장 많이 쓰는 방식
- SQL> CONNECT <username>/<password>@<Client쪽의 tnsnames.ora의 정보>
- 접속하려는 서버에 대한 주소 정보가 바뀌면 관리가 어려워진다.
- Client 설정파일의 관리가 어렵다.
- Directory Naming
- Directory 서버가 따로 존재해서 directory 서버에 접속하려는 모든 서버들의 접속 정보를 관리하는 방식
- 로드된 Oracle Net 이름 분석(Names Resolution) 정보와 함께 LDAP 필요
- 모든 Oracle Net 프로토콜 지원
- 관리해야할 서버가 많은 경우에 사용
- 고급 연결 옵션 지원
- SQL> CONNECT <username>/<password>@<Client쪽의 tnsnames.ora의 정보>
- External Naming
- 오라클이 아닌 다른 베더사의 directory 서버를 사용하는 방식
- 비오라클 이름 지정 서비스 사용
- 써드파티 제품을 사용한다 생각하면 된다.
[orcl2:admin]$ tnsping orcl2
TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 27-MAR-2019 14:22:44
Copyright (c) 1997, 2009, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = edydr1p0.us.oracle.com)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl2.example.com)))
OK (0 msec)
-- 리스너가 살아있는지를 확인하는 방법이다(DB가 살아있는 것이 아니다)
서비스 Alias
- orcl(Service Alias | tns Alaias) = connection descriptor 의 별명
고급 연결 옵션
- Connect-time failover
- Alias는 두 개 이상의 나열된 리스너 주소를 갖는다.
- 첫번째 주소에 연결할 수 없느면 두번째 주소에 연결을 시도한다.
- 소스 경로 지정
- 로드 밸런싱
- Oracle Net은 주소 리스트에서 무작위로 주소를 선택한다.
유저 세션
- request queue
- Response queue
- Connection Type 2가지
- Dedicated Server
- Shared Server
- 연결 풀링
- 사용하지 않는 경우
- 데이터베이스 관리
- 백업, 복원
- 일괄처리, 대량 로드 작업
- 데이터 웨어하우스 작업
- SGA & PGA
- Stack space
- 프로세스에 대한 ID가 저장
- UGA
- 유저 세션에 대한 정보가 저장
- UP와 SP가 1:1로 연결되는 상황에서는 한개의 PGA가 존재하면 되지만, Request queue에 여러 세션이 있으면 각 SP마다 UGA정보를 전부 가지고 있어야한다. 그렇기 때문에 모두가 공유할 수 있는 UGA정보가 SGA에 올라가게 된다.(Shared Pool의 Large Pool에 올라간다.)
DB link 생성
CREATE DATABASE LINK <remote_global_name>
CONNECT TO <user> IDENTIFIED BY <pwd>
USING '<connect_string_for_remote_db>';
- orcl2(tnsnames.ora) 에서 orcl DB로 접속
- tnsnames.ora에 orcl DB로 가기위한 Alias가 존재해야한다
- orcl=(...........)
- orcl2 DB의 hr 유저가 orcl DB의 scott 유저로 접속하는 DB link 생성
HR@orcl2> create database link orcl_scott
connect to scott identified by tiger
using 'orcl';
-- SCOTT계정까지 가기 위한 Link
HR@orcl2> select * from user_db_links;
DB_LINK SSWORD HOST CREATED
------------------------ ------------------------ -------------- -------------
ORCL_SCOTT.EXAMPLE.COM orcl 27-MAR-19
HR@orcl2> select * from emp@orcl_scott;
-- orcl DB의 scott계정을 보겠다.
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-DEC-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7566 JONES MANAGER 7839 02-APR-81 2975 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7839 KING PRESIDENT 17-NOV-81 5000 10
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7900 JAMES CLERK 7698 03-DEC-81 950 30
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10
14 rows selected.
HR@orcl2> create table emp as select * from emp@orcl_scott;
-- 데이터 이관작업
HR@orcl2> select count(*) from emp;
COUNT(*)
----------
14
HR@orcl2> conn system/oracle_4U
Connected.
SYSTEM@orcl2> select * from dept;
select * from dept
*
ERROR at line 1:
ORA-00942: table or view does not exist
-- system schema에는 dept 테이블이 없다.
SYSTEM@orcl2> select * from scott.dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
-- dept가 어느 schema에 있는지 보여주므로 보안상 취약해진다.
-- 숨기기 위해서는 어떻게 해야할까?
-- synonym의 정의를 바꿔주도록 하자. (ex. scott.dept => dept)
SYSTEM@orcl2> create synonym dept for scott.dept;
Synonym created.
SYSTEM@orcl2> select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
-- 이경우 schema가 어딨는를 상관하지 않아도 되므로 효율적이다.
SYSTEM@orcl2> select * from user_synonyms;
-- 을 통하여 synonyms의 목록을 볼 수 있다.
SYSTEM@orcl2> conn hr/hr
Connected.
HR@orcl2> select * from emp@orcl_scott;
-- 요놈을 숨기고 싶다면.
HR@orcl2> drop table emp purge;
Table dropped.
-- 원래 있던 테이블 삭제
HR@orcl2> create synonym emp for emp@orcl_scott;
Synonym created.
HR@orcl2> select count(*) from emp;
COUNT(*)
----------
14
-- 정상적으로 잘 출력 된다.
HR@orcl2> select * from user_synonyms;
SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK
------------------------------ ------------------ ---------------- --------------
EMP EMP ORCL_SCOTT.EXAMPLE.COM
HR@orcl2> drop synonym emp;
Synonym dropped.
HR@orcl2> drop database link orcl_scott;
Database link dropped.
HR@orcl2> conn system/oracle_4U
Connected.
SYSTEM@orcl2> drop synonym dept;
Synonym dropped.
SYS@orcl2> show parameter shared
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address integer 0
max_shared_servers integer
shared_memory_address integer 0
shared_pool_reserved_size big integer 6710886
shared_pool_size big integer 4M
shared_server_sessions integer
shared_servers integer 1
SYS@orcl2> !ps -ef|grep s000
oracle 5133 1 0 09:46 ? 00:00:00 ora_s000_orcl2
oracle 5405 1 0 09:47 ? 00:00:00 ora_s000_orcl
oracle 12457 12046 0 16:41 pts/1 00:00:00 /bin/bash -c ps -ef|grep s000
oracle 12459 12457 0 16:41 pts/1 00:00:00 grep s000
SYS@orcl2> show parameter dispatchers
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dispatchers string (PROTOCOL=TCP) (SERVICE=orcl2X
DB)
max_dispatchers integer
-- dispatcher이 설정 안된 것을 볼 수 있다.
SYS@orcl2> alter system set dispatchers="(protocol=tcp)(dispatchers=5)";
System altered.
SYS@orcl2> !ps -ef|grep d00
oracle 5131 1 0 09:46 ? 00:00:00 ora_d000_orcl2
oracle 12493 1 0 16:43 ? 00:00:00 ora_d001_orcl2
oracle 12495 1 0 16:43 ? 00:00:00 ora_d002_orcl2
oracle 12497 1 0 16:43 ? 00:00:00 ora_d003_orcl2
oracle 12499 1 0 16:43 ? 00:00:00 ora_d004_orcl2
-- orcl2로 5개의 dispatchers가 생성된 것을 볼 수 있다.
SYS@orcl2> show parameter dispatchers
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dispatchers string (protocol=tcp)(dispatchers=5)
max_dispatchers integer
SYS@orcl2> alter system set max_dispatchers = 10;
System altered.
SYS@orcl2> show parameter dispatchers
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dispatchers string (protocol=tcp)(dispatchers=5)
max_dispatchers integer 10
SYS@orcl2> alter system set shared_servers=4;
System altered.
SYS@orcl2> !ps -ef|grep s00
oracle 5133 1 0 09:46 ? 00:00:00 ora_s000_orcl2
oracle 12563 1 0 16:47 ? 00:00:00 ora_s001_orcl2
oracle 12565 1 0 16:47 ? 00:00:00 ora_s002_orcl2
oracle 12567 1 0 16:47 ? 00:00:00 ora_s003_orcl2
-- 4개가 생성된 것을 볼 수 있다.
SYS@orcl2> alter system set max_shared_servers = 10;
System altered.
SYS@orcl2> show parameter max_shared_servers
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
max_shared_servers integer 10
그다음
[orcl2:~]$ sqlplus hr/hr@orcl2
할경우 dedicated인지 shared server인지 알 수가 없다
[orcl2:~]$ cd $ORACLE_HOME/network/admin/
[orcl2:admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
....
ORCL2_d =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = edydr1p0.us.oracle.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl2.example.com)
)
)
ORCL2_s =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = edydr1p0.us.oracle.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl2.example.com)
)
)
....
-- 다음의 내용을 추가
[orcl2:admin]$ lsnrctl ser
-- 하면 dispatcher 목록이 보인다. 즉 dispatcher을 사용할준비가 됬다는것
A 터미널
[orcl2:admin]$ sqlplus hr/hr@orcl2_d
SQL*Plus: Release 11.2.0.1.0 Production on Wed Mar 27 16:56:43 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
B 터미널
[orcl2:admin]$ sqlplus hr/hr@orcl2_s
SQL*Plus: Release 11.2.0.1.0 Production on Wed Mar 27 16:57:21 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
DBA터미널
SYS@orcl2> select sid, username, server
2 from v$session
3 where username = 'HR';
SID USERNAME SERVER
---------- ------------------------------ ---------
136 HR DEDICATED
139 HR NONE -->Dispatcher
<<<<복습>>>>
listener가 정상적으로 실행되어 있는지 확인하세요
기동되어 있지 않으면 start 하세요
[+ASM:~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 28-MAR-2019 09:42:58
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 2: No such file or directory
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=edydr1p0.us.oracle.com)(PORT=1521)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused
-- 리스너가 stop 되어있다
[+ASM:~]$ lsnrctl start
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 28-MAR-2019 09:43:36
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Starting /u01/app/oracle/product/11.2.0/grid/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /u01/app/oracle/product/11.2.0/grid/network/admin/listener.ora
....
Service "+ASM" has 1 instance(s).
Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "orcl.example.com" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orcl2.example.com" has 1 instance(s).
Instance "orcl2", status READY, has 6 handler(s) for this service...
Service "orclXDB.example.com" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
-- 실행 완료
또는
[orcl2:admin]$ ps -ef|grep tns
oracle 5945 1 0 09:43 ? 00:00:00 /u01/app/oracle/product/11.2.0/grid/bin/tnslsnr LISTENER -inherit
-- 리스너 프로세스를 확인
[orcl2:admin]$ kill -9 5945
-- 리스너를 종료
[orcl2:admin]$ ps -ef|grep tns
oracle 6268 6069 0 09:56 pts/2 00:00:00 grep tns
-- 잘 종료되었나 프로세스 확인
[orcl2:admin]$ lsnrctl start
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 28-MAR-2019 09:56:51
Copyright (c) 1991, 2009, Oracle. All rights reserved.
TNS-01106: Listener using listener name LISTENER has already been started
-- 리스너 재시작
[orcl2:admin]$ ps -ef|grep tns
oracle 6273 1 0 09:56 ? 00:00:00 /u01/app/oracle/product/11.2.0/grid/bin/tnslsnr LISTENER -inherit
oracle 6284 6069 0 09:56 pts/2 00:00:00 grep tns
-- 리스너가 시작된 것을 확인
tnsnames.ora에 orcl2 DB에 접속하는 서비스 alias TEST를 만들고 접속되는지 테스트 하세요
접속한다.
Service Naming을 누르고 +버튼을 누른다.
Net Sevice Name을 정해주고
TCP/IP를 선택하고 Next
Host Name에는 실습 환경이므로 localhost를 적어준다(IP)
Service Name을 설정해주고 Next
TEST를 진행해보자
정상적으로 되는 것을 확인 할 수 있다.
File->Save Network Configuration을 누르고 종료
확인
[orcl2:admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
....
TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl2.example.com)
)
)
....
-- 확인이 된다.
[orcl2:admin]$ sqlplus hr/hr@TEST
SQL*Plus: Release 11.2.0.1.0 Production on Thu Mar 28 09:55:16 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
HR@TEST>
-- 정상적으로 접속됨을 확인 할 수 있다.
또는 위의 TEST = ..... ) 까지의 내용을 복사 붙여넣기 해도 추가 되며,
netca를 통해서도 추가 가능하다.
리스너에 서비스명을 등록할 때 정적 서비스 등록과 동적 서비스 등록은 어떻게 구현하나요
- Dynamic registration(동적 등록)
- 리스너에 SID_LIST 정보가 없는 채로 start 된 상황에서 PMON이 service names을 등록하는 것
- DB 서버 쪽에 tnsnames.ora 필요
- Static registration(정적 등록)
- 리스너에 SID_LIST 정보가 등록된 상태로 start
터미널에서 netmgr을 실행한다.
리스너를 누르고 +버튼을 누른다.
리스너 이름을 정한다.
포트번호를 설정해준다.
그다음 우측 상단을 Database Services로 바꾸고 Add Database를 누른다.
잘 확인해서 적는다. 경로 주의할 것.
저장한다.
[+ASM:admin]$ cat listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/grid/network/admin/listener.ora
# Generated by Oracle configuration tools.
L2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = edydr1p0.us.oracle.com)(PORT = 1522))
)
ADR_BASE_L2 = /u01/app/oracle
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = edydr1p0.us.oracle.com)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER = ON
SID_LIST_L2 =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl2.example.com)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = orcl2)
)
)
-- 정적등록이 된 것을 확인할 수 있다.
-- L2로 접속을 하자
[+ASM:admin]$ lsnrctl start L2
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 28-MAR-2019 10:30:11
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Starting /u01/app/oracle/product/11.2.0/grid/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /u01/app/oracle/product/11.2.0/grid/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/edydr1p0/l2/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=edydr1p0.us.oracle.com)(PORT=1522)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=edydr1p0.us.oracle.com)(PORT=1522)))
STATUS of the LISTENER
------------------------
Alias L2
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 28-MAR-2019 10:30:11
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/grid/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/edydr1p0/l2/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=edydr1p0.us.oracle.com)(PORT=1522)))
Services Summary...
Service "orcl2.example.com" has 1 instance(s).
Instance "orcl2", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[orcl2:admin]$ vi tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
...
ORCL2_D =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = edydr1p0.us.oracle.com)(PORT = 1522))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl2.example.com)
)
)
...
-- 포트번호를 1522로 변경한다.
[orcl2:admin]$ sqlplus hr/hr@orcl2_d
SQL*Plus: Release 11.2.0.1.0 Production on Thu Mar 28 10:36:17 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
-- 접속이 잘 되는 것을 확인할 수 있다.
1521 포트를 사용하지 않으면서 동적 서비스 등록을 하기 위해서는 반드시 설정해야 하는 파라미터는 무엇인가요?
- local_listener = L3 또는
- local_listener = '(ADDRESS=(PROTOCOL=TCP)(HOST=edydr1p0.us.oracle.com)(PORT=1523))';
- tnsname.ora에 L3가 있어야한다.
- tnsnames.ora에 L3라는 추가적인 파라미터가 존재해서 이놈을 읽으라고 해야한다.
- 없을경우 두번째 명령어를 입력하자.
SYS@orcl2> show parameter local_listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string
- 설정하는법
- 위의 내용들을 보면서 netmgr에서 L3를 추가해주자 또한, port만 1523으로 바꾸고 아무것도 하지말고 저장해주자(정적등록이 아니다)
[+ASM:admin]$ cat listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/grid/network/admin/listener.ora
# Generated by Oracle configuration tools.
...
L3 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = edydr1p0.us.oracle.com)(PORT = 1523))
)
L2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = edydr1p0.us.oracle.com)(PORT = 1522))
)
ADR_BASE_L3 = /u01/app/oracle
ADR_BASE_L2 = /u01/app/oracle
...
-- L3가 동적 등록이 된것을 볼 수 있다,
[+ASM:admin]$ lsnrctl start L3
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 28-MAR-2019 10:51:31
Copyright (c) 1991, 2009, Oracle. All rights reserved.
....
-- L3 리스너를 실행해준다.
[orcl2:admin]$ vi tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
....
L3 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = edydr1p0.us.oracle.com)(PORT = 1523))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl2.example.com)
)
)
.....
-- 포트번호를 변경한다.
-- 이름을 변경해준다.
SYS@orcl2> alter system set local_litener=L3;
System altered.
SYS@orcl2> show parameter local_listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string L3
잘 확인 할 수있다.
-- 다시 원복
SYS@orcl2> alter system set local_listener='';
System altered.
[+ASM:admin]$ lsnrctl stop L3
[+ASM:admin]$ lsnrctl stop L2
'DATABASE(oracleDB 11g) > DBA' 카테고리의 다른 글
[Oracle DBA]데이터 동시성 관리 (0) | 2019.04.03 |
---|---|
[Oracle DBA]유저 보안 관리 (0) | 2019.04.01 |
[Oracle DBA]데이터베이스 저장 영역 구조 관리 (0) | 2019.03.28 |
[Oracle DBA]ASM Instance 관리 (0) | 2019.03.26 |
[Oracle DBA]오라클 데이터베이스 Instance 관리 (0) | 2019.03.25 |