0207 ADMIN

현스·2024년 2월 7일

ADMIN

목록 보기
13/18
post-thumbnail

▩ 예제41. 오라클에 접속하려면 4가지 정보를 알아야 해요

오라클 설치하고 나서 제일 애 먹는 것 중 하나가 오라클에 접속하는 루트를 몰라서 애를 먹음
sql developer 같은걸로 접속할 때 잘 안되어서 - 나도 그랬잖아

클라이언트 --- 서버
tnsnames.ora listenernames.ora

모두 알아야함.

[orcl] sqlplus scott/tiger
Enter name : oracle
Enter password :

이렇게 들어가는 것은 리스너를 통해서 들어가는 것이 아니다.

▩ 예제42. sqldeveloper 나 dbever 로 오라클에 접속하려면 리스너 통해서 접속해야해요.


그림 설명 : sqldeveloper 나 dbever 로 접속할 때 접속이 안되고 에러가 발생하면
반드시 서버에 리스너가 잘 떠 있는지 확인해야 합니다.

질문1. 리스너가 서버에 안 떠 있어서 에러가 발생 <--------- 해결 가능한 질문
혹시 리스너가 내려가져 있나요 ? 하고 질문 해야한다.

질문 이거 안되는데 어떻게 해야하나요?? 금지 !!!!!!!!!!

실습

#1. 데이터베이스 서버에 리스너가 떠있는지 확인합니다.

[orcl:~]$ lsnrctl status


#2. 리스너 통해서 접속이 되는지 확인합니다.
easy connect

$ sqlplus scott/tiger@192.168.19.45:1521/orcl.us.oracle.com


#3. 리스너는 정상인데 위와 같이 접속이 안되면 ping 은 나가는지 확인합니다.

ping 192.168.19.43

예제 43. 리스너 통해서 접속에 성공하면 유저 프로세서가 서버 프로세서를 할당받게 됩니다.

설명 : 리스너 통해서 접속에 성공했으면 리스너의 역할은 다 함.
유져 프로세서와 서버 프로세서가 서로 연결이 되게 됩니다
그럼 이 상태에서 리스너를 내려도 연결은 계속 유지됩니다. (ocp 기출)

문제1. 리스너 통해서 scott 유져로 접속을 하고 다른 터미널 창을 열어서 리스너를 내리면
리스너를 통해서 접속한 scott 유져 세션이 끊기는지 테스트 하시오 (ocp 기출)

리스너를 내려도 연결이 유지된 것을 볼 수 있음

예제44. 오라클 네트워크를 다루는 관리 도구 4가지

위의 네가지 도구를 이용하면 리스너를 내리거나 올릴 수 있다.
listener.ora 파일을 생성해서 새로운 리스너를 만들 수 있다.
tnsnames.ora 에 새로운 tns별칭도 넣을 수 있다.

툴을 사용하기 보다는 직접 vi 편집기 명령어로 listener.ora 와 tnsnames.ora 를 구성하고
명령어로 관리하는게 많이 쓰는 방법이다.
명령행 명령어 제일 많이 씀

실습 1. 네트워크 툴 사용법 실습

#1. 나의 tnsnames.ora 의 위치가 어딘지 확인하시오

1) 명령 프롬프트 창을 열고 path 라고 치고 확인

PATH=D:\oracle2\dbhomeXE\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\PuTTY\;C:\Program Files\PuTTY\;C:\Program Files\Bandizip\;C:\Users\itwill\AppData\Local\Microsoft\WindowsApps;

2) 환경 변수 설정에 TNS_ADMIN 환경변수가 셋팅 경로 확인

C:\Users\itwill\Downloads\instantclient-basic-nt-21.12.0.0.0dbru\instantclient_21_12\network\admin

예제 45 listener.ora 파일의 위치가 어디에 있는지 알아야 합니다

[orcl:~]$ cd /u01/app/oracle/product/11.2.0/grid/network/admin
여기에 있는 listener.ora 와 sqlnet.ora 를 ORACLE_HOME 밑에 network 밑에 admin 밑에 둡니다.

$cd $ORACLE_HOME/network/admin

ls

그러고나서 리스너를 내렸다 올립니다.
근데 이때 리스너가 잘 안내려가거나 또는 리스너를 올릴 때 이미 사용중이라 라고 하면서 에러가 난다면

in use 에러가 발생시 ps -ef | grep LISTEN* 입력 후
사용중인 listener 프로세스를 kill 후 lsnrctl start 실행

실습 :

#1. 리스너를 내립니다.

#2. GRID_HOME/network/admin 밑에 있는 listener.ora 와 sqlnet.ora 를 ORACLE_HOME/network/admin 밑으로 이동 시키시오

[orcl:~]$ cd /u01/app/oracle/product/11.2.0/grid/network/admin
[orcl:admin][orcl:admin][orcl:admin] ls
listener.ora listener.ora.bak.edydr1p0 samples shrept.lst sqlnet.ora

#5. 리스너의 host 를 본인의 아이피 주소로 변경하고 리스너를 내렸다 올립니다

$ cd $ORACLE_HOME/network/admin

vi listener.ora

host 의 아이피주소를 넣습니다.

#6. 윈도위의 클라이언트 쪽에 나의 tnsnames.ora 위치에 가면 sqlnet.ora 가 있음
거기의 내용을 아래와 같이 설정한다.

$ pwd
/u01/app/oracle/product/11.2.0/dbhome_1/network/admin

[orcl:admin]$ ls
listener.ora samples shrept.lst sqlnet.ora tnsnames.ora

The listener supports no services
The command completed successfully

PMON Listener

orcl.us.oracle.com

C:\Users\itwill>sqlplus scott/tiger@192.168.19.43:1521/orcl.us.oracle.com

SQL*Plus: Release 21.0.0.0.0 - Production on 수 2월 7 11:16:10 2024
Version 21.3.0.0.0

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

ERROR:
ORA-12154: TNS:지정된 접속 식별자를 분석할 수 없음

  1. 오라클서버에 접속하는 방식 총 4가지

이름 지정 방식

  1. 간단한 연결 방식

sqlplus scott/tiger@192.168.19.43:1521/orcl.us.oracle.com

  1. 로컬 이름 지정 방식

sqlplus scott/tiger@orcl_11g

  1. 디렉토리 이름 지정 방식 : 접속하고자 하는 서버들의 4가지 정보를 알고있는 디렉토리 서버를 사용
    글로벌 회사에서 씀

클라이언트 서버
미국 미국
영국 한국
남아공 일본
: :
: :

  1. 외부 이름 지정 방식 ocp 시험용으로 뭔지만 알고 있어라.

간단한 연결
간단한 연결(Easy Connect)을 사용하여 연결 문자열의 일부로서 Oracle Net 연결에 필요한
모든 정보를 제공할 수 있습니다. 간단한 연결(Easy Connect)에서의 연결 문자열 형식은
다음과 같습니다.
/@:/

▩ 예제47. 고급 연결 옵션 3가지를 알고 있어야해요 !

  1. connect time failover : 내가 접속한 인스턴스가 다운되어도 살아있는 인스턴스로 자동으로 접속되게 하는 기능

  2. 소스 경로 지정 : RAC 수업때

  3. 로드 밸런싱 : 오라클에 접속할 때 인스턴가 여러개가 있다면 부하가 적은 인스턴스 로 접속하게 하는 기능

문제1. dba 를 위한 팁
리눅스 alias 를 하나 만드는데 $ORACLE_HOME/network/admin 밑으로 빨리 이동할 수 있도록 만들어라

@net

48 오라클에 접속 안될 때 확인하는 방법 3가지를 알고 있어야 해요

첫번째 오라클 리스너 상태가 정상인지 확인합니다

$ lsnrctl status
$ ps -ef | grep LISTEN* | grep -v grep

두번째 클라이언트 쪽의 tnsnames.ora 를 잘 작성했는지 확인합니다.

선생님 컴퓨터 :
C:\Users\ITWILL\Downloads\instantclient-basic-nt-19.21.0.0.0dbru\instantclient_19_21\network\admin

C:\Users\ITWILL>tnsping orcl_11g

(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.19.60)(PORT =1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl.us.oracle.com)))에 접속하려고 시도하는 중
확인(0밀리초)

세번째. ping 을 수행해서 네트워크 연결이 잘되었는지 확인 합니다.

C:\Users\ITWILL> ping 192.168.19.45

문제1. 어제 마지막 문제의 테스트를 수행하기 위해 짝 서버로 ping 확인

명령프롬프트에서
C:\Users\itwill>ping 192.168.19.45

문제2. 짝 서버로 tnsping 이 나가는지 확인하시오 !

tnsping jyp_11g

문제3

sqlplus scott/tiger@jyp_11g

문제4 내 리눅스 서버에서 짝이 접속할 수 있도록 sqlnet.ora 를 구성하고
짝이 아닌 다른 아이피가 접속이 안되게 하시오 !!

윈도우아이피, 리눅스 아이피 둘 다

문제5. 그럼 짝이 아닌 다른 오라클 서버로 접속해 봅니다

수진이 정보 넣기

윈도우 tnsnames.ora 에 넣기 왜 ? 서버로 접속해야하니까 수진이 리스너 켜져있고

jsj_11g

192.168.19.93

예제 49 쿠팡처럼 오라클 접속 유져가 많으면 shared server 구조를 고려해야 해요![]


(https://velog.velcdn.com/images/hyeonseu/post/59901716-013b-42a0-8bfb-231a468df25a/image.png)

유져 세션 하나당 서버프로세스 하나 1:1 매치 될 때 Dedicated
Shared server 구조는 유져 프로세서와 서버프로세서 사이에 디스패쳐가 있어서 디스패쳐를 통해서 일거리를 부여하는 구조
이런 shared server 구조에서는 서버 프로세서들끼리 정보를 공유해야 합니다
손님이 주문한 주문 메뉴에 대한 정보가 공유 되어져야 합니다
어느 하나의 서버 프로세서만 알고 있으면 안됩니다.
서버 프로세서의 pga 영역에 정렬영역, 해쉬영역, 비트맵영역, 유져세션 데이터등의 데이터 (손님에 대한 데이터)가
SGA 영역으로 들어가면 공유 됩니다.

shared server 프로세서 구조로 운영되었을 때 할 수 없는일 ?

1. db 를 startup 하거나 shutdown 을 shared server process 를 할당받아서는 못합니다.
    나를 위한 전용 서버 프로세서를 할당받아야지만 할 수 있습니다.
2.  백업과 복구 작업 못합니다.
3.  대량의 insert 작업 못합니다.
4.  대량의 정렬 작업 못합니다.


■ shared server process 구조를 구성하는 방법

  1. dispatcher 를 띄울수 있도록 파라미터 설정

    SQL> show parameter dispatcher

SQL> alter system set dispatchers='(protocol=tcp)(dispatchers=1)';

  1. shared server process 의 갯수를 결정하는 파라미터를 설정

    SQL> show parameter shared_servers

SQL> alter system set shared_servers=2;

db 를 startup 하면 최초로 띄울 shared server process 의 갯수

SQL> show parameter max_shared_servers

SQL> alter system set max_shared_servers= 10;

workload 가 busy 한 상태가 되었을때 최대 shared server
process 를 몇개까지 띄울수 있는지를 결정하는 파라미터

  1. 오라클에 접속하고자 하는 전체 세션의 갯수 파라미터
    와 그중에서 shared server process 를 사용할 세션
    의 갯수를 결정하는 파라미터를 설정

    SQL> show parameter sessions
    100개

SQL> alter system set sessions=100 scope=spfile;

오라클에 접속하는 세션의 갯수를 100개로 하겠다.

SQL> show parameter shared_server_sessions
95개

SQL> alter system set shared_server_sessions=95;

100개중에서 shared server process 를 이용할 세션의
갯수를 95개로 지정하겠다.

SQL> alter system set max_dispatchers=3;

  • database 의 특별한 작업을 하는 세션들을 위해서
    dedicated server process 를 예비해둬야한다.

SQL> shutdown immediate
SQL> startup

  • 현재 떠있는 디스패쳐의 갯수
    select name ,status from v$dispatcher;

  • 현재 떠있는 shared server 프로세서의 갯수
    select name ,status from v$shared_server;
    예제 50 번 짝의 테이블과 내 테이블을 서로 비교하려면 db링크를 생성해야 해요

#1. 현재 리눅스 서버에 pmon 이 뭐가 있는 지 조회합니다

ps -ef | grep pmon

[jhs:~]$ ps -ef | grep pmon
oracle 5400 1 0 15:48 ? 00:00:00 asmpmon+ASM
oracle 5666 1 0 15:49 ? 00:00:00 ora_pmon_jhs
oracle 5893 5047 0 15:54 pts/1 00:00:00 grep pmon

[jhs:~][jhs: ][jhs:~] sqlplus sys/oracle_4U as sysdba

create database link jhs_link
connect to scott
identified by tiger
using '192.168.19.43:1521/orcl.us.oracle.com';

orcl ---- > jhs 로 가는거임

select * from emp@jhs_link;

create database link jyp_link
connect to scott
identified by tiger
using '192.168.19.45:1521/orcl.us.oracle.com';

select * from emp@jyp_link;

오늘의 마지막 문제 !

SQL> select * from emp@orcl_jyp_link;

select * from emp@orcl_jyp_link

create database link orcl_jyp_link
connect to scott
identified by tiger
using '192.168.19.45:1521/orcl.us.oracle.com';

profile
˗ˋˏ O R A C L E ˎˊ˗

0개의 댓글