ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CentOS 7 에서 Oracle 12c 설치하기(GUI 원격 설치)
    Linux 2018. 10. 17. 13:11

    CentOS 7 에서 Oracle 12c 데이터베이스 설치하기(GUI 원격 설치)


    최초 작성일 : 2017년  9월 19일

    수정 작성일:  2018년 10월 10일 


    참조 문서


    I. 개요

      CentOS 7 Minimal Server 에 Oracle 12c 버전을 원격으로 설치한다.

      설치대상은 리눅스 서버이며, 설치 클라이언트는 Windows 10 이다.


      Oracle 설치 프로그램은 GUI 를 필요로 하기 때문에, 원격으로 설치하기 위해서는 먼저, CentOS 서버가 X Windows 응용 프로그램들을 실행할 수 있도록 준비되어 있어야 한다.


    II. 프로그램 준비하기


    0. 오라클 데이터베이스 설치 프로그램 내려받기

     리눅스용 오라클 데이터베이스 프로그램은 오라클 홈페이지에서 내려받을 수 있다. 프로그램을 내려받기 위해서는 오라클 계정을 갖고 있어야 한다. 계정은 누구나 쉽게 만들 수 있다.




    다양한 플랫폼별로 준비된 오라클 데이터베이스 설치 프로그램 중에서, Linux x86-64 버전을 내려받는다.



    내려받으면, linuxx64_12201_database.zip 파일 이름으로 저장된다.



    1. CentOS 7 서버

    • 서버 상태 확인하기 [선택사항]

    - CentOS 7 서버 버전 확인하기

    [root@localhost ~]# cat /etc/centos-release

    CentOS Linux release 7.5.1804 (Core)


    - SELinux 상태 확인하기

    [root@localhost ~]# sestatus

    SELinux status:                 enabled

    SELinuxfs mount:                /sys/fs/selinux

    SELinux root directory:         /etc/selinux

    Loaded policy name:             targeted

    Current mode:                   enforcing

    Mode from config file:          enforcing

    Policy MLS status:              enabled

    Policy deny_unknown status:     allowed

    Max kernel policy version:      31


    - 방화벽 동작 확인하기

    [root@localhost ~]# firewall-cmd --state

    running


    - HOSTNAME 과 IP 확인하기

    [root@localhost ~]# hostnamectl

       Static hostname: localhost.localdomain

             Icon name: computer-desktop

               Chassis: desktop

            Machine ID: 64f8533daaad4d66ab6273775b70cc8b

               Boot ID: 3e23d752841341979462aeea1a61ea77

      Operating System: CentOS Linux 7 (Core)

           CPE OS Name: cpe:/o:centos:centos:7

                Kernel: Linux 3.10.0-862.el7.x86_64

          Architecture: x86-64


    - 도메인 이름 할당하기 [선택사항]

    [root@localhost ~]# cat /etc/hostname

    iskra.sarang.net

    localhost.localdomain


    [root@localhost ~]# cat /etc/hosts
    xxx.xxx.xxx.xxx iskra.sarang.net
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6


    hostname 과 hosts 이름이 다른 경우, 마지막 설치 단계에서 다음과 같은 오류를 만날 수 있다.

    INFO: ... GenericInternalPlugIn: getting configAssistantParmas.

    INFO: ... GenericInternalPlugIn: checking secretArguments.

    INFO: ... GenericInternalPlugIn: starting read loop.

    INFO: Read: [FATAL] [DBT-06103] The port (5,500) is already in use.

    INFO: [FATAL] [DBT-06103] The port (5,500) is already in use.

    WARNING: Skipping line: [FATAL] [DBT-06103] The port (5,500) is already in use.

    INFO: Read:    ACTION: Specify a free port.

    INFO:    ACTION: Specify a free port.

    WARNING: Skipping line:    ACTION: Specify a free port.

    INFO: Completed Plugin named: Oracle Database Configuration Assistant



    방화벽 및 SELinux 가 동작하는 것을 확인하고, 설치 후에 방화벽 등의 보안설정을 추가해야 한다.


    • 메모리(Swap) 추가하기 [선택사항]

    설치 프로그램을 실행하면, 다음과 같이 임시(Temp) 저장공간과 스왑 메모리 용량을 확인한다.(스왑 공간은 2.7GB 이상을 할당하도록 한다.)

    Oracle Universal Installer 시작 중...


    임시 공간 확인 중: 500MB 이상이어야 합니다..   실제 6262MB    성공

    스왑 공간 확인 중: 150MB 이상이어야 합니다..   실제 4977MB    성공

    ...


    현재 SWAP 용량을 확인하고, 부족하면, Swap 메모리를 추가 생성한다.

    # swapon -s

    Filename                                Type            Size    Used    Priority

    /dev/dm-1                               partition       3932156 167680  -1


    아래는 3기가 파일의 용량을 SWAP 메모리로 생성하고, 사용하는 간단한 방법이다.

    # dd if=/dev/zero of=/home/swap1 bs=1024 count=3000000

    3000000+0 records in

    3000000+0 records out

    3072000000 bytes (3.1 GB) copied, 62.1876 s, 49.4 MB/s


    # mkswap /home/swap1

    Setting up swapspace version 1, size = 2999996 KiB

    no label, UUID=91d65788-e140-43c3-897d-01ab42e29773


    # chmod 600 /home/swap1

    # swapon /home/swap1


    마지막 라인의 swap 활성화 명령은 시스템이 새로 부팅할 때, 동작할 수 있어야하기 때문에, /etc/rc.d/rc.local 에 추가해 두는 것이 좋다. 

    # cat /etc/rc.d/rc.local

    ...

    swapon /home/swap1

    ...


    # chmod +x /etc/rc.d/rc.local


    또는 일반 하드디스크처럼 /etc/fstab 에 등록해도 된다.

    /home/swap1  swap swap defaults 1 1


    • Yum 으로 패키지 설치하기

    여기서는 Windows 에 설치된 X 서버를 사용하여 원격에서 설치하기 때문에, X windows 응용프로그램 실행에 필요한 라이브러리 및 일부 개발 패키지들만 설치하면 된다.

    # yum update


    # yum install -y binutils compat-libcap1 gcc gcc-c++ glibc glibc-devel ksh compat-libstdc++-33 libaio libaio-devel libgcc libstdc++ libstdc++-devel  libXi libXtst make sysstat zip unzip libXrender

    참고로, 필요한 패키지들에 대한 종속성 검사는 설치과정에서 다시 한번 이루어진다.



    만약, CentOS 7 서버에 직접 X Windows 서버를 설치하기 위해서는 다음과 같이 Yum 명령어를 실행하면 된다.

    # yum groupinstall  -y "X Window System"


    • 커널 패러미터 설정하기

    커널 패러미터 설정 (/etc/sysctl.conf) 파일에 아래 내용을 추가한다.

    fs.aio-max-nr = 1048576

    fs.file-max = 6815744

    kernel.shmall = 2097152  (아래 참조)

    kernel.shmmax = 4056393728

    kernel.shmmni = 4096

    kernel.sem = 250 32000 100 128

    net.ipv4.ip_local_port_range = 9000 65500

    net.core.rmem_default = 262144

    net.core.rmem_max = 4194304

    net.core.wmem_default = 262144

    net.core.wmem_max = 1048586


    커널 패러미터

     내용 

     fs.aio-max-nr

     비동기 파일 최대 열기

     fs.file-max

     사용 가능한 파일 핸들의 최대 개수를 말하며, 동시에 열 수 있는 파일의 수다. 

     kernel.shmall

     공유 메모리의 최대 크기

     SGA 의 전체 크기가 100G 라면 다음과 같이 계산한다.


     # getconf PAGE_SIZE

    4096


    kernel.shmall = 1024 * 1024 * 1024 * 100 / 4096 (PGE_SIZE)

                      = 26214400


     kernel.shmmax

     공유 메모리 세그먼트의 최대 크기

     kernel.shmmni

     공유 메모리 세그먼트의 최대 숫자

     kernel.sem

    아래 네 개의 값을  차례로 설정한다.

     - semmsl   : 세마포어 세트당 최대 세마포어 수

     - semmns  : 시스템에 할당할 수 있는 최대 세마포어 개수

     - semopm : 시스템 호출당 수행할 수 있는 최대 세마포어 수

     - semmni : 세마포어 세트의 최대 수


     net.ipv4.ip_local_port_range

     신규 접속시에 허용할 수 있는 포트의 사용 범위

     net.core.rmem_default

     소켓이 사용하는 수신 버퍼(Window Size)의 기본값

     net.core.rmem_max

     소켓이 사용하는 수신 버퍼(Window Size)의 최대값

     net.core.wmem_default

     소켓이 사용하는 송신 버퍼(Window Size)의 기본값

     net.core.wmem_max

     소켓이 사용하는 수신 버퍼(Window Size)의 최대값


    만약, 설치 후에 아래와 같은 오류가 발생하면, kernel.shmall크기를 증가한다. 


    > startup

    ORA-27125: unable to create shared memory segment

    Linux-x86_64 Error: 28: No space left on device



    변경 설정된 커널 패러미터는 다음 명령으로 반영한다.

    # sysctl -p


    패러미터 변경 여부는 다음 명령으로 확인한다.

    # sysctl -a


    • 오라클 사용자 생성하기

    오라클 데이터베이스 서버를 실행하고 생성 파일들을 관리할 관리자 그룹과 계정을 생성한다.

    # groupadd oinstall

    # groupadd dba

    # useradd -g oinstall -G dba oracle


    # passwd oracle

    oracle 사용자의 비밀 번호 변경 중

    새  암호:

    새  암호 재입력:

    passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.


    oracle 사용자의 권한(/etc/security/limits.conf)을 설정한다.

    oracle soft nproc 2047

    oracle hard nproc 16384

    oracle soft nofile 1024

    oracle hard nofile 65536

    이 설정은 오라클 서버의 프로세스 및 파일 열기에 대한 최대 개수를 설정한다.


    2. Windows 10 클라이언트


    X 서버가 운영되지 않는 서버에서, X 응용 프로그램을 실행하면 다음과 같은 오류가 발생한다.

    $ xclock

    No protocol specified

    Error: Can't open display: 192.168.41.1:0.0


    • Putty 설치하기

    아래 사이트에서 Putty 를 내려받아 설치한다.


    Putty 를 이용하여 설정한 서버의 설정 정보에 다음 내용을 추가하여 저장한다.



    X Display Option 은 비워둔 채로 그냥 두어도 된다.


    • Xming 설치하기

    아래 사이트에서 XMing 을 내려받아 설치한다.


    Xlaunch 를 실행해서 다음과 같이 설정한다.




    XMing 에서 X 응용 프로그램을 동작시킬 서버 주소를 등록한다.


    C:\Program Files (x86)\Xming\x0.hosts

    localhost

    xxx.xxx.xxx.xxx


    • SSH X 포워딩 설정

    먼저, CentOS 7 서버에서 SSH를 통해 X 포워딩을 할 수 있도록 다음과 같이 설정한다.

    (CentOS 7 에서는 SSH 서버 기본 설정값으로 변경할 필요가 없다.)

    # cat /etc/ssh/sshd_config

    ...

    #AllowAgentForwarding yes

    #AllowTcpForwarding yes

    #GatewayPorts no

    X11Forwarding yes

    ...


    값을 변경했으면, SSH 서비스를 다시 시작한다.

    # service sshd restart


    • 원격 X Windows Server 테스트

    새로 설정된 접속 정보를 이용하여 서버에 로그인한다.

    다음과 같이 X 응용 프로그램을 실행할 서버의 IP 를 명시한다.

    $ export DISPLAY=xxx.xxx.xxx.xxx:0.0

    $ sudo yum install xclock

    $ xclock


    X 응용 프로그램이 윈도우즈 클라이언트상에 정상 동작하는지 확인한다.



    참고로 DISPLAY 변수에 사용된 IP 는 X Server 가 운용중인 서버의 IP 주소를  0.0 에서 0 은 디스플레이를 의미하며, X 서버의 기본 시작포트인 6000 + 0 번 포트 (즉, 6000번 포트)를 의미하며, 나머지 0은 스크린 번호를 의미한다.



    III. 오라클 데이터베이스 설치하기


    1. 설치 디렉토리 설정 및 생성하기


    다운받은 오라클 데이터베이스 설치 바이너리 파일의 압축을 해제한다.

    $ unzip linux64_12201_database.zip -d /home/oracle/stage/


    오라클 데이터베이스 서버를 설치할 폴더를 생성하고, 사용자를 명시한다. 

    # mkdir -p /opt/oracle12/app

    # mkdir -p /opt/oracle12/oraInventory


    # chown -R oracle:oinstall /opt/oracle12/app

    # chown -R oracle:oinstall /opt/oracle12/oraInventory


    # chmod -R 775 /opt/oracle12/app

    # chmod -R 775 /opt/oracle12/oraInventory


    # chmod g+s /opt/oracle12/app

    # chmod g+s /opt/oracle12/oraInventory



    2. 설치프로그램 실행하기


    • 한글 폰트  설치하기

     CentOS 7 운영체제를 설치할 때, 설정 언어로 한국을 설정했다면, 한글 폰트가 설치되어 있어야 설치프로그램에서 한글을 정상적으로 볼 수 있다. 


     


     폰트 설치만 해주면 된다. 예전 버전의 오라클 설치에는 포함된 자바 속성파일을 수정하는 등의 작업을 수행했으나, 현재 버전에서는 그럴필요가 없다. 한글이 안나온다고 삽질하지 않도록 한다.

    # yum install baekmuk-ttf*



    한글 폰트를 설치하지 않으려면 다음과 같이 Locale 환경 값을 적용해서 영어로 설치하면 된다.

    $ export LANG=C

    $ export  LC_ALL=C


     압축 해제하기

    $ unzip linuxx64_12201_database.zip -d /home/oracle/stage


     오라클 사용자 환경 설정

    아래 환경변수는 설치후에 설정할 수 있으나, 편의를 위해 미리 ~/.bash_profile 에 추가해둔다.

    # User specific environment and startup programs

    TMPDIR=$TMP ;      export TMPDIR

    ORACLE_BASE=/opt/oracle12/app/;   export ORACLE_BASE

    ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1; export ORACLE_HOME

    ORACLE_HOME_LISTNER=$ORACLE_HOME/bin/lsnrctl; export ORACLE_HOME_LISTNER

    ORACLE_SID=orcl;   export ORACLE_SID

    LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/lib64; export LD_LIBRARY_PATH

    CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH


    PATH=$ORACLE_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin; export PATH

     

    오라클 사용자로 로그인한 후 다음과 같이 실행한다.

    $ cd ~/stage/database

    $ export DISPLAY=xxx.xxx.xxx.xxx:0.0 ## 원격 X 서버를 사용하는 경우에 입력


    $ ./runInstaller

    Oracle Universal Installer 시작 중...


    임시 공간 확인 중: 500MB 이상이어야 합니다..   실제 6259MB    성공

    스왑 공간 확인 중: 150MB 이상이어야 합니다..   실제 4977MB    성공

    모니터 확인 중: 최소 256 색상을 표시하도록 구성되어 있어야 합니다.

        >>> /usr/bin/xdpyinfo 명령을 사용하여 디스플레이 색상에 대한 자동 검사를 실행할 수 없습니다. DISPLAY 변수가 설정되어 있는지 확인하십시오.    실패 <<<<


    일부 요구 사항 검사를 실패했습니다. 설치를 계속하기 전에 이러한


    요구 사항이 충족되어야


    계속하겠습니까? (y/n) [n] y




    3. 설치하기

    • 보안 갱신 구성

      Oracle 보안 소식을 전달 받을 My oracle Support 계정의 주소와 비밀 번호를 입력한다.

    없으면 생략한다.



    • 설치 옵션
    오라클 설치 옵션은 아래의 3가지가 있다.
      • 데이터베이스 생성 및 구성 - 제품이 설치된 후 데이터베이스를 생성하려는 경우.
      • 데이터베이스 소프트웨어만 설치 - 오라클 데이터베이스 바이너리만 설치.
      • 기존 데이터베이스 업그레이드 - 이런 릴리스의 데이터베이스를 업그레이드.


     데이터베이스 생성 및 구성을 선택하여 데이터베이스 서버 환경을 구성한다.  만약, 데이터베이스 서버가 필요하지 않고, 오라클 바이너리 실행프로그램만 필요한 경우에는 데이터베이스 소프트웨어만 설치를 선택한다.


    • 시스템 클래스


    간단한 데이터베이스 서버인 최소 구성으로 이루어진 데스크톱 클래스를 데이터 센터에 오라클을 설치하는 경우 다양한 옵션을 추가설치할 수 있는 서버 클래스를 선택한다. 여기서는 서버 클래스로 설치한다.


    • 데이터베이스 설치 옵션

      RAC(Real Application Clusters) 라이센스가 있다면, 해당 항목을 선택하여 데이터베이스를 설치한다. 그렇지 않은 경우, 단일 인스턴스로 설치한다.


    • 설치 유형



    • 데이터베이스 버전


    오라클 데이터베이스 버전

      • Enterprise Edition (EE) - 대부분의 기업에서 사용하기 위한 다양한 도구와 기능들을 제공하는 대표적인 오라클 버전이다.
      • Standard Edition (SE) - 소규모 업체에서 EE보다 적은 비용으로 기본 데이터베이스 기능을 사용하기 위한 버전이다.
      • Standard Edition On (SEO) - 단일 CPU 에 특화된 가격의 오라클 버전
      • Oracle Express (XE) - 읽기 전용 복제를 포함한 일부 DBA 기능만 갖는 버전.

    여기서는 Enterprise Edition 을 선택한다.


    • 설치 위치


    오라클 사용자 환경 설정(~/.bash_profile) 에 미리 작성해 둔 값으로 설정된다.
    다른 경로를 사용하려는 경우, 변경 후 환경 변수값도 변경해야 한다.

    • 인벤토리 생성



    • 구성 유형



    • 데이터베이스 식별자 지정



    • 구성 옵션 지정
    - 메모리


    물리적 메모리가 4G이상인 경우, 자동 메모리 관리를 사용할 수 없으므로 다음과 같이 SGA 와 PGA 처리를 위해 분배한다.


      • 범용/트랜잭션 처리

    - SGA 대상 : 75 %

    - PGA 대상 : 25 %


      • 데이터 웨어하우징

    - SGA 대상 : 60 %

    - PGA 대상 : 40 %



    - 문자 집합

    유니코드로 설정한다.



    - 샘플 스키마

    오라클을 처음 접하는 경우, 샘플 스키마를 생성하여 오라클 테스트에 활용할 수 있다.


    • 데이터베이스 저장 영역 옵션 지정



    • 관리 옵션 지정


    Oracle Management Repository 를 사용하는 경우,  관련 정보를 등록하여 중앙 관리할 수 있다.


    • 복구 옵션 지정



    • 스키마 비밀번호 지정


    사용자 계정마다 비밀번호를 다르게 설정할 수 있다.

    • 권한이 부여된 운영 체제 그룹



    • 필요 조건 검사 수행



    • 필요 조건 검사
     필요조건 검사시 <수행 및 다시 확인>으로 필요조건이 충족되는지 확인하고 오류를 수정한다. 필요한 패키지는 yum 으로 설치하면 된다.



     설치에 필요한 패키지를 설치하지 않았거나, 사양이 충족되지 않은 상태에서 모든 종속 조건을 무시하고 아래와 같이 설치할 수 있지만, 정상 동작하지 않을 수 있다.



    - 교체 크기[PRVF 7573] 경고 - swap 크기가 부족할 때 출력되는 경고 메시지다. 상단의 swap 추가하기 항목을 참조해서 swap 파일의 크기를 증가시켜준다.

    - 최대 스택 크기[PRVG 0443] 실패

    oracle 사용자의 권한(/etc/security/limits.conf)에 설정을 추가한다.

    oracle soft stack 10240


    또는 ulimit 명령어를 사용하여 설정할 수 있다.

    # ulimit -Ss 10240


    - 커널 매개변수 shmmax [PRVG-1205, PRVG-1201] 경고 -  앞에서 설정한 커널 패러미터 sysctl.conf 적용값이 제대로 반영되지 않아서 발생한 경고다. 설정 파일의 값을 확인하고, 정상적으로 새 값이 설정되었는지 확인한다.

    - 패키지 설치 누락 
        * smartmontools-62-4
        * net-tools-20-0.17

    # yum install net-tools smartmontools

    패키지를 설치했으면,  [수정 및 다시 확인] 버튼을 누르다.


    창에서 지시하는 대로 스크립트를 관리자 권한으로 실행한다.

    [root@localhost CVU_12.2.0.1.0_oracle]# ./runfixup.sh

    All Fix-up operations were completed successfully.



    환경 변수값이 제대로 수정되지 않으면, 현재 설치 프로그램을 종료하고, 환경 변수값을 적용 후 다시 설치 프로그램을 시작해야 한다.

    • 요약


    현재, 설정된 정보값들을 확인 후 [설치 버튼]을 눌러 설치를 완료한다.



    설치 중 관리자(root) 권한으로 실행해줘야 하는 스크립트가 있다.



    [root@localhost CVU_12.2.0.1.0_oracle]# cd /opt/oracle12/oraInventory/

    [root@localhost oraInventory]# ./orainstRoot.sh

    다음 권한 변경 중/opt/oracle12/oraInventory.

    그룹에 대한 읽기, 쓰기 권한을 추가하는 중입니다.

    월드에 대한 읽기, 쓰기, 실행 권한을 제거하는 중입니다.


    그룹 이름 변경 중 /opt/oracle12/oraInventory 대상 oinstall.

    스크립트 실행이 완료되었습니다.


    [root@localhost oraInventory]# cd /opt/oracle12/app/product/12.2.0/dbhome_1/

    [root@localhost dbhome_1]# ./root.sh

    Performing root user operation.


    The following environment variables are set as:

        ORACLE_OWNER= oracle

        ORACLE_HOME=  /opt/oracle12/app/product/12.2.0/dbhome_1


    Enter the full pathname of the local bin directory: [/usr/local/bin]:

       Copying dbhome to /usr/local/bin ...

       Copying oraenv to /usr/local/bin ...

       Copying coraenv to /usr/local/bin ...



    Creating /etc/oratab file...

    Entries will be added to the /etc/oratab file as needed by

    Database Configuration Assistant when a database is created

    Finished running generic part of root script.

    Now product-specific root actions will be performed.

    Do you want to setup Oracle Trace File Analyzer (TFA) now ? yes|[no] :

    yes
    Installing Oracle Trace File Analyzer (TFA).
    Log File: /opt/oracle12/app/product/12.2.0/dbhome_1/install/root_localhost.localdomain_2018-10-15_17-34-03-166357615.log
    Finished installing Oracle Trace File Analyzer (TFA)


    • 완료


    설치가 완료되면, Localhost 5500 번 포트를 통해 Enterprise Manager 에 접속할 수 있다고 메시지가 출력한다.

    그러나, 여기서는 원격으로 접속했기 때문에 위 주소를 사용할 수 없으며, 포트 역시 원격 접속시 방화벽에 차단되어 있다.

    따라서,  방화벽 설정을 완료한 후, 위 주소에 접속하여 해당 기능을 살펴볼 수 있다.



    IV. 오라클 데이터베이스 접속 테스트


    1. 오라클 환경 변수 설정하기

     

    오라클 계정으로 로그인 한 후, 오라클 사용자 환경파일에 다음의 내용을 추가한다. (~/.bash_profile)

    이 작업은 오라클 설치 전에 하면 편하다.


    TMPDIR=$TMP ; export TMPDIR

    ORACLE_BASE=/opt/oracle12/app/; export ORACLE_BASE

    ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1; export ORACLE_HOME


    ORACLE_HOME_LISTNER=$ORACLE_HOME/bin/lsnrctl; export ORACLE_HOME_LISTNER

    ORACLE_SID=orcl; export ORACLE_SID

    LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/lib64; export LD_LIBRARY_PATH

    CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH


    PATH=$ORACLE_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin; export PATH


     로그아웃하고 다시 로그인하거나, 다음과 같이 새로운 환경변수를 현재 셀에 적용한다.

    $ . .bash_profile



    2. sqlplus 테스트


      sqlplus 는 CLI 환경에서 오라클 데이터베이스를 관리할 수 있는 도구다. 오라클 계정으로 로그인한 후 다음과 같이 테스트할 수 있다.

    [oracle@localhost ~]$ sqlplus / as sysdba


    SQL*Plus: Release 12.2.0.1.0 Production on Tue Oct 16 12:06:34 2018


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


    Connected to an idle instance.


    SQL>


    ## Oracle Database 를 시작한다.

    SQL> startup
    ORACLE instance started.

    Total System Global Area 2449473536 bytes
    Fixed Size                  8795712 bytes
    Variable Size             654313920 bytes
    Database Buffers         1778384896 bytes
    Redo Buffers                7979008 bytes
    ??????? ????????.
    ??????? ?????.


    sqlplus 한글 출력 오류 수정.

    위와 같이 sqlplus 에 한글이 제대로 출력되지 않는다. 오라클에서 식별가능한 로케일 환경변수를 추가한다.

    SQL> SELECT * FROM sys.props$ where name='NLS_CHARACTERSET';


    NAME

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

    VALUE$

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

    COMMENT$

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

    NLS_CHARACTERSET

    AL32UTF8

    Character set


    아래 내용을 .bash_profile 에 추가한다.

    export NLS_LANG=KOREAN_KOREA.AL32UTF8


    데이터베이스 종료하기


    새로 추가된 환경변수를 적용하고 다시 프로그램을 실행한다. 한글 메시지가 정상 출력됨을 확인할 수 있다.

    [oracle@localhost ~]$ sqlplus / as sysdba


    SQL*Plus: Release 12.2.0.1.0 Production on 화 10월 16 12:15:54 2018


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



    다음에 접속됨:

    Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production


    SQL> shutdown

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

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

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



    처음 시작할 때, 자주 접하는 오류들

    오류 이름

     오류 내용 

     ORA-01034

     오라클 데이터베이스를 시작하지 않고, 오라클을 사용할 때 출력된다.

    위와 같이 데이터베이스를 시작(startup) 해준다. 

     ORA-01081

     오라클 인스턴스가 이미 실행중이다.


    SQL> shutdown abort

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


     SQL> startup

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


     ORA-01102


     처음 시작할 때, 데이터베이스를 마운트할 수 없다는 오류다.

     정확한 원인은 모르지만, 다음과 같이 해결할 수 있다.


     1. 오라클 인스턴스를 모두 중지한다.

      $ lsnrctl stop

      $ ps -ef | grep ora_

      oracle    25007      1  0 10월15 ?      00:00:04 ora_pmon_orcl

      oracle    25009      1  0 10월15 ?      00:00:01 ora_clmn_orcl

      oracle    25011      1  0 10월15 ?      00:00:12 ora_psp0_orcl

      oracle    25013      1  1 10월15 ?      00:12:49 ora_vktm_orcl

      oracle    25019      1  0 10월15 ?      00:00:07 ora_gen0_orcl

      ...


    2. 실행중인 모든 ora_* 프로세스를 강제 종료한다.

    $ kill -9 ` ps -ef | grep ora_ | awk '{print $2}'`

    -bash: kill: (15600) - 그런 프로세스가 없음


    [root@localhost dbhome_1]# ps -ef |grep ora_

    root      15723  12087  0 12:56 pts/0    00:00:00 grep --color=auto ora_



    3. 데이터베이스를 다시 시작한다.

    $ lsnrctl start

    sqlplus / as sysdba

    SQL> startup


    이 문제는 처음 설치했을 때만, 발생하는 것으로 보인다.





    V. 오라클 데이터베이스 서버 서비스 등록 및 방화벽 설정하기

    1. 시작 서비스 등록하기

    매번 데이터베이스를 수작업으로 시작/종료할 수는 없기 때문에, 시스템에 서비스로 자동 시작 및 종료할 수 있도록 한다.

    • /etc/oratab 수정

    오라클 데이터베이스 설치과정(root.sh)중에 생성된 파일로  ORACLE_SID 에 대한 식별을 외부에 제공해준다.

    orcl 에 대해 마지막 칼럼 N 을 Y 로 수정한다.

    # This file is used by ORACLE utilities.  It is created by root.sh

    # and updated by either Database Configuration Assistant while creating

    # a database or ASM Configuration Assistant while creating ASM instance.


    # A colon, ':', is used as the field terminator.  A new line terminates

    # the entry.  Lines beginning with a pound sign, '#', are comments.

    #

    # Entries are of the form:

    #   $ORACLE_SID:$ORACLE_HOME:<N|Y>:

    #

    # The first and second fields are the system identifier and home

    # directory of the database respectively.  The third field indicates

    # to the dbstart utility that the database should , "Y", or should not,

    # "N", be brought up at system boot time.

    #

    # Multiple entries with the same $ORACLE_SID are not allowed.

    #

    #

    orcl:/opt/oracle12/app/product/12.2.0/dbhome_1:Y


    1) Run Level (SysV) 스타일 서비스
    • oracle 서비스 스크립트 작성

    /etc/init.d/oracle

    # chkconfig: 2345 90 10

    # description: The Oracle Database is an Object-Relational Database Management System.

    # processname: oracle


    . /etc/rc.d/init.d/functions


    LOCKFILE=/var/lock/subsys/oracle

    ORACLE_BASE=/opt/oracle12/app/

    ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1

    ORACLE_USER=oracle


    case "$1" in

       'start')

              if [ -f $LOCKFILE ]; then

                    echo $0 already running.

                    exit 1

              fi

              echo -n $"Starting Oracle Database:"

              su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start"

              su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"

              touch $LOCKFILE

              ;;

       'stop')

              if [ ! -f $LOCKFILE ]; then

                   echo $0 already stopping.

                   exit 1

              fi

              echo -n $"Stopping Oracle Database:"

              su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop"

              su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut"          

              rm -f $LOCKFILE

              ;;

       'restart')

              $0 stop

              $0 start

              ;;

       'status')

              if [ -f $LOCKFILE ]; then

                  echo $0 started.

              else

                  echo $0 stopped.

              fi

              ;;

        *)

              echo "Usage: $0 [start|stop|status]"

              exit 1

    esac

    exit 0


    • 서비스 시작하기
    시스템이 시작할 때마다 실행할 수 있도록 서비스에 등록한다.
    # chkconfig --add oracle

    # chkconfig –list

    알림: 이 출력 결과에서는 SysV 서비스만을 보여주며 기존의 systemd 서비스는

    포함되어 있지 않습니다. SysV 설정 데이터는 기존의 systemd  설정에 의해

    덮어쓰여질 수 있습니다.


          'systemctl list-unit-files'를 사용하여 systemd 서비스를 나열하실 수 있습니다.

           특정 대상에 활성화된 서비스를 확인하려면

           'systemctl list-dependencies [target]'을 사용하십시오.


    jenkins         0:해제  1:해제  2:활성  3:활성  4:활성  5:활성  6:해제

    netconsole      0:해제  1:해제  2:해제  3:해제  4:해제  5:해제  6:해제

    network         0:해제  1:해제  2:활성  3:활성  4:활성  5:활성  6:해제

    oracle          0:해제  1:해제  2:활성  3:활성  4:활성  5:활성  6:해제


    # service oracle restart


    2) System Control 스타일 서비스

    요즘 대부분의 리눅스는 위와 같은 전통적인 Run Level Init 스크립트 방식이 아닌 systemctl 서비스 방식을 사용하고 있다.
    여기서 오라클 리스너와 데이터베이스 시작 서비스 설정 파일을 추가하고 사용하는 방식에 대해 다룬다.
    오라클 TFA(Trace File Analyzer) 를 설치했다면, /etc/systemd/system 폴더 밑에 oracle-tfa.service 파일을 확인할 수 있다.

    • 오라클 리스너 서비스
    /etc/systemd/system/oracle.service
    [Unit]
    Description=Oracle Database
    Requires=network.target

    [Service]
    Type=forking
    Restart=no
    Environment=ORACLE_BASE=/opt/oracle12/app/
    Environment=ORACLE_HOME=/opt/oracle12/app/product/12.2.0/dbhome_1
    Environment=ORACLE_HOME_LISTNER=/opt/oracle12/app/product/12.2.0/dbhome_1
    Environment=ORACLE_SID=orcl

    ExecStart=/opt/oracle12/app/product/12.2.0/dbhome_1/bin/dbstart $ORACLE_HOME
    ExecStop=/opt/oracle12/app/product/12.2.0/dbhome_1/bin/dbshut $ORACLE_HOME
    User=oracle

    [Install]
    WantedBy=multi-user.target

    위의 지저분한 환경변수들은 하나의 파일에 두고 다음과 같이 설정할 수도 있다.
    EnvironmentFile=-/etc/sysconfig/oracle12
    • 오라클 데이터베이스 서비스

    위의 dbstart 실행 스크립트안에 lsnrctl 를 시작하는 명령이 포함되어 있으므로, 아래는 사실 필요가 없다.


    /etc/systemd/system/lsnrctl.service
    [Unit]
    Description=oracle listener
    After=network.target

    [Service]
    Type=forking
    Environment=ORACLE_BASE=/opt/oracle12/app/
    Environment=ORACLE_HOME=/opt/oracle12/app/product/12.2.0/dbhome_1
    Environment=ORACLE_HOME_LISTNER=/opt/oracle12/app/product/12.2.0/dbhome_1
    Environment=ORACLE_SID=orcl

    ExecStart=/opt/oracle12/app/product/12.2.0/dbhome_1/bin/lsnrctl start
    ExecStop=/opt/oracle12/app/product/12.2.0/dbhome_1/bin/lsnrctl stop

    User=oracle

    [Install]
    WantedBy=multi-user.target

    • 서비스 시작하기
    # systemctl daemon-reload  [ systemd 서비스 파일 변경시 실행한다. ]

    # systemctl start lsnrctl
    # systemctl enable lsnrctl
    Created symlink from /etc/systemd/system/multi-user.target.wants/lsnrctl.service to /etc/systemd/system/lsnrctl.service.


    # systemctl start oracle
    # systemctl enable oracle
    Created symlink from /etc/systemd/system/multi-user.target.wants/oracle.service to /etc/systemd/system/oracle.service.


    lsnrctl (리스너) 서비스가 처음 시작할 때, 오류가 나면 다음과 같이 실행한다.
    # systemctl stop lsnrctl
    # killall tnslsnr
    # systemctl start lsnrctl


    2. 방화벽 설정하기

     대부분의 시스템에서는 방화벽을 사용하기 때문에, 원격 사용자 또는 관리자가 원격에서 오라클 서버를 사용하기 위해서는 일부 포트를 개방해야 한다.

    # firewall-cmd --get-active-zones

    public

    interfaces: ens33 (네트워크 인터페이스 이름은 시스템마다 다르다.)


    # firewall-cmd --zone=public --add-port=1521/tcp --add-port=5500/tcp --add-port=5520/tcp --add-port=3938/tcp --permanent

    success


    # firewall-cmd --reload

    success


    # firewall-cmd --list-ports

    1521/tcp 5500/tcp 5520/tcp 3938/tcp



    오라클에서 사용하는 주요 포트 번호는 다음과 같다.

     포트 번호

    프로토콜

     내용

     1521

    TCP 

     Oracle SQL*NetListener 

     1630

    TCP 

     Connection Manager 

     3938

    HTTP 

     Oracle Management Agent 

     1158/5500

    TCP/HTTP 

     Oracle Enterprise Manager Database Console 

     5520

    TCP 

     Oracle Enterprise Manager Database Console  


    오라클 데이터베이스 서버의 포트에 대한 정보는 다음 페이지를 참조하기 바란다.



    VI. Oracle Enterprise Manager(EM Server)


    오라클 엔터프라이즈 서버(EM) 를 설치했다면, 웹에서 5500번 포트를 이용하여 접속할 수 있다.


    로그인 계정은 sys 또는 system 계정으로 초기 설치시에 사용한 관리자 암호를 입력하면 된다.


    현재 데이터베이스 서버의 상태, 성능, 장애, 리소스등에 대한 모니터링을 할 수 있으며, 데이터베이스를 관리할 수 있다.


    만약, Enterprise Manager (EM Server)가 동작하지 않는다면, 다음과 같이 실행한다. XDB dispatcher를 확인한다.

    EM Web Console 은 XDB 스키마에서 동작되기 때문이다.


    HTTPS 를 통해 5500 포트로 접근하도록 한다.

    SQL> show parameter dispatchers


    NAME                                 TYPE        VALUE

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

    dispatchers                          string      (PROTOCOL=TCP) (SERVICE=orclXDB)

    max_dispatchers                      integer


    SQL> exec dbms_xdb_config.sethttpsport (5500);


    PL/SQL 처리가 정상적으로 완료되었습니다.


    SQL> show parameter dispatchers


    NAME                                 TYPE        VALUE

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

    dispatchers                          string      (PROTOCOL=TCP) (SERVICE=orclXD

                                                     B)

    max_dispatchers                      integer

    SQL> select dbms_xdb_config.gethttpsport () from dual;


    DBMS_XDB_CONFIG.GETHTTPSPORT()

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

                              5500


    포트를 변경할려면, 5500 대신 5502 등의 포트로 변경하면 된다.



    VII. sqldeveloper 윈도우 클라이언트 프로그램


    sql developer 는 오라클 설치 파일에 포함된 윈도우용 클라이언트 프로그램이다. 

    $ORACLE_HOME/sqldeveloper 폴더에서 찾을 수 있다.


    자바 런타임이 설치되어 있다면, 해당 폴더를 윈도우로 복사 후 다음과 같이 사용할 수 있다. (sqldeveloper.exe 실행)



    원격 오라클 데이터베이스에 접속하여 서버를 관리할 수 있는 기능을 제공한다.



    이 문서에서는 해당 도구의 자세한 설명은 생략한다.


    - 끝 - 



    댓글

Designed by Tistory.