Server Network

[Oracle] PL/SQL Class 7 - SERVER, 통신방식, 처리방법, 분산쿼리, 서버/로컬서버 연결

D_Aiden 2023. 11. 15. 09:20
728x90
반응형
SMALL

2023.11.15
 

## 네트워크

  • LOCAL: 내 자리에 있는곳은 모두 local로 인식.
  • Remote: 외부에서 내자리 접속하는 것.

 

## 통신방식

LAN: Local Area Network
         근거리 통신망(LAN)은 라우터 및 스위치와 같은 커넥터를 사용해 물리적으로 서로 가까운 디바이스 연결하는 기술.
 
WAN: Wide Area Netwok
         광역 네트워크(WAN) 사무실, 데이터 센터, 클라우드 애플리케이션 및 클라우드 스토리지를 서로 연결하는 기술.
 

참조경로: https://shlee0882.tistory.com/110

 
 
 

## 처리방법

  • STACK 구조 ==> LIFO(Last In First Out)  : 네트워크의 기본 운영구조,  택시기사 동전통 등
  • QUEUE 구조 ==> FILO(First In Last Out)  : 프린터 등
  • host_name = computer_name                                        // 네트웍 상에서 컴퓨터의 유일한 정보
  • TCP / IP : (7계층 中, 4계층/3계층 구조)                           //  글로벌한 정보 사용가능(전세계와 소통할 수 있는 통신망)
    IP address: 개인 주 소 ex) 192.168.0. X                                       // 고유한 사설IP
    subnet mask: 255.255.255.0                                                         // 로컬연결 확인하는 IP
    기본 Gateway: Routing을 위한 주소(외부로 나가기 위한 문 같은 개념)               //gateway를 통해 나가는 방식
    DNS Address:  도메인(Domain Name)이며, 주소록.                  // 대중이 알수 있는 웹상의 주소.  

 
(과제1)
사설IP & 공인IP 개념 확인.

 

1. 공인IP (Public)

인터넷 사용자 로컬 네트워크 식별을 위해 ISP(인터넷서비스공급자)가 제공하는 IP 주소. (공용 IP 주소, 외부공개 IP 주소)

  • 전세계에서 유일한 IP주소(중복 될 수 없음).
  • 공인IP주소는 외부공개 되므로 인터넷이 연결된 다른 PC로부터 접근 가능.(방화벽 등 보안 프로그램 설치 필요)

2. 사설IP (Private)

일반가정, 회사 등 할당된 네트워크 IP 주소( 사설IP=로컬 IP=가상 IP).
==> IPv4 주소 부족으로 서브넷팅(sub netwoking)된 IP, 라우터로 변환된 로컬네트워크 PC장치로 할당.

 1) 사설IP 주소대역:  3종류.

  • Class A : 10.0.0.0 ~ 10.255.255.255
  • Class B : 172.16.0.0 ~ 172.31.255.255
  • Class C : 192.168.0.0 ~ 192.168.255.255

3. 공인IP/사설IP 차이

할당
주체
ISP
(인터넷 서비스 공급자)
라우터
(공유기
)
할당
대상
개인, 회사 서버(라우터) 개인, 회사의 기기
고유성 인터넷상에서 유일한 주소 하나의 네트워크 안에서 유일
공개
여부
내부/외부 접근가능 외부접근 불가능

※ 사설IP 주소만으론 인터넷 직접연결 불가.

 

반드시, 라우터를 통한 1개 공인(Public)IP만 할당, then 라우터에 연결된 개인 PC 사설(Private)IP를 각각 할당 받아 인터넷에 접속할 수 있게 된다.

 

  • 개인PC=> 공인망: 사설IP 할당받은 개인PC(or 스마트폰)가 데이터패킷을 인터넷 전송하면, 라우터(공유기)가 공인IP 바꿔서 전송.
  • 공인망=>개인PC: 인터넷에서 오는 데이터패킷 목적지도 해당하는 사설IP로 변경 후, 개인PC(or 스마트폰)로 전송.

4. 고정 IP, 유동 IP

  • 고정 IP: 컴퓨터에 고정부여 된 IP. 한번 부여되면, IP반납 전까지 다른장비로 부여할 수 없는 IP주소.
  • 유동 IP: 장비에 고정적으로 IP를 부여하지 않고 컴퓨터를 사용할 때만 부여되는 IP, 돌아가며 부여하는 IP.

Thus, 인터넷상에서 서버운영 목적으론 공인IP를 고정IP로 부여하는 것이 중요. 
즉, 공인IP를 부여받지 못하면, 다른 사람이 내 서버에 접속할 수가 없고 + 고정IP 부여하지 않으면, 내서버가 아닌 다른 사람 서버로 접속 될 수 있음.

But, 가정용PC는 인터넷 서비스 업체는 각 가정마다 공인IP를 유동IP로 부여하고, 공유기 내부에서는 사설IP를 유동IP로 부여하는 것이 일반적.

 

참조: https://shlee0882.tistory.com/110


## 프로토콜(Protocol) : 컴퓨터끼리 전세계에서 소통하는 공통언어 같은 개념.

       웹 상에서 웹 서버 및 웹브라우저 상호 간의 데이터 전송을 위한 응용계층 프로토콜
       처음에는, WWW 상의 하이퍼텍스트 형태의 문서를 전달하는데 주로 이용
       현재에는, 이미지,비디오,음성 등 거의 모든 형식의 데이터 전송 가능


 
## IP 프로토콜

: TCP/IP 기반의 인터넷 망을 통하여 데이타그램의 전달을 담당하는 프로토콜.
 
## DHCP (Dynamic Host Configuration Protocol)

: 동적 네트워크.
 IP(인터넷 프로토콜)주소와 기타구성 정보(예: 서브넷마스크/기본 게이트웨이)를 IP 호스트에 자동제공하는 클라이언트/서버 프로토콜.

 

 
 ## DB서버 접근

1) ip주소(공인 IP)이며, 외부에서 접속을 못함.
2) DB서버명 = 서비스명
                        전역DB이름
3) 포트번호: Oracle 포트번호는 1521(기본값) 임.
4) Net service 이름: 서버 접속경로 이름이며, DB서버 접근할 수 있는 방법(partner).
 
 

## 분산쿼리

Oracle상에서 데이터베이스 링크객체 생성 해두면, 여러 지점을 접근해 DB를 통합해서 볼 수 있음.
: 지점이 많은 곳에서는 주로 분산쿼리로 지점 DB를 끓어다가 확인할 수 있음.
1) net service 생성되어 있어야 가능.
2) log-in 완료 된 상태여야 가능.

 

(과제2)
다른 PC들과 network로 연동해보시오. 


Step1.
SQL> conn /as sysdba   // oracle 계정상 최상위 계정 접속
SQL> grant create database link to aiden(계정명);   // 권한 부여할 계정명으로 등록
SQL> conn aiden/aiden 계정 접속

 
Step2. 각각의 로컬서버 링크생성
SQL> create database link cr
      2  connect to crystal identlfissed by password
      3  using 'crystal'

 
Step3. 내가 접속한 서버와 로컬서버의 DB 확인 가능한지 체크방법
SQL> select s.sname, d.dname from sawon s, dept@crystal d
        2 where s.deptno=d.deptno;

 
Step4. 다른 로컬서버 접속하기 위해선 항상 접속되어 있는 ID를 체크하고 나서 연결할 것.
SQL> show user

 

 

(연습1)

--1. 트리거를 이용한 원격 데이터 베이스로의 데이터 복제 구현

drop table kys;
create table kys(
                          hakbuns number(3),
                          haknames varchar(10),
                          haktels varchar2(20),
                          haksexs varchar2(4) );
insert into kys(hakbuns, haknames, haktels, haksexs) values(1, '사람', '123-4567', '여자');
insert into kys(hakbuns, haknames, haktels, haksexs) values(2, '사람사', '234-5678', '남자');
insert into kys(hakbuns, haknames, haktels, haksexs) values(3, '사람람', '345-6789', '남자');

declare
                          pragma autonomous_transaction;
begin
                           insert into kys(hakbun, hakname, haktels, haksexs) values(:new.hakbun, :new.hakname, :new.haktels, :new.haksexs);
                          commit;
end;
/

1번PC에 데이터(테이블 생성+트리거)를 저장해둔 후, 2번PC에서 1번PC DB를 호출해볼 것

SQL> select *from kys;

 

2. 원격 데이터 베이스의 프로시져 호출(입사년도에 따른 평균급여와 인원수 들려주는 프로시져)
create or replace procedure p_kys(
                           v_bun kys.hakbuns%type,
                            v_name out kys.haknames%type)
is
begin
                           select haknames into v_name from kys where hakbuns=v_bun;
end;
/
SQL> variable hakname varchar2(100)
SQL> exec p_kyss@banjang('이름', :hakname);
SQL> print hakname;



3. 원격 데이터 베이스에 존재하는 함수(아무 함수나)를 이용한 쿼리 호출
create or replace function f_kys
                               (name varchar2
                               return varchar2
is
begin
            return substr(name, 1, 2);
end
/
SQL> select haknames, f_kys(haknames) from kys;



4. 로컬에서 accept로 입력받아 원격 DB -사원테이블에 입력(insert)하는 프로시져 호출
create or replace procedure pp_kys
                          (v_bun kys.hakbuns%type,
                            v_name kys.haknames%type,
                            v_tel kys.haktels%type,
                            v_sex kys.haksexs%type)
is

begin
                    insert into kys(hakbuns, haknames, haktels, haksexs) values(v_bun, v_name, v_tel, v_sex);
end


다른PC에서 입력조회 방법
SQL> set verify off
accept hakbuns prompt '사번 입력 →'
accept haknames prompt '이름 입력 →'
accept haktels prompt '번호 입력 →'
accept haksexs prompt '성별 입력 →'
begin
            pp_kys@lyb('&hakbuns','&haknames','&haktels', '&haksexs');
end;
/

SQL> select *from kys;

728x90
반응형
LIST