'Database/Oracle'에 해당하는 글 20건

systemctl 로 자동실행을 설정할 수도 있지만 기존의 init.d 를 사용할 수도 있다.

 

 

1. oracle 서비스 스크립트 작성

 

# vi /etc/rc.d/init.d/oracle

#!/bin/bash
# oracle: Start/Stop Oracle Database 11g R2
#
# chkconfig: 345 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_HOME=/app/oracle/product/11.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"
    su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl start dbconsole"
    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"
    su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl stop dbconsole"
    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
# End of file

 

 

2. /etc/oratab 수정

 

orcl:/app/oracle/product/11.2.0/dbhome_1:Y

 

부팅시 dbstart 유틸리티를 사용하도록 설정(Y)

 

 

3. chkconfig 등록

 

# chmod 755 /etc/rc.d/init.d/oracle
# chkconfig --add oracle
# chkconfig oracle on

 

 

4. 재부팅 후 프로세스 확인

 

# /etc/init.d/oracle status
oracle started.
# ps ax | grep ora

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

systemctl 는 RHEL 7 에 도입된 systemd 를 관리/제어하는 명령어이다. /usr/lib/systemd/system/ 디렉토리에 .service 파일을 만들어 서비스를 추가할 수 있다. Oracle 구동에 필요한 lsnrctl 과 dbstart 역시 직관적으로 사용할 수도 있지만 부팅시 자동실행을 위해 서비스에 등록해 본다.

 

  • /usr/lib/systemd/system/oracle_listener.service
  • /usr/lib/systemd/system/oracle_instance.service

 

 

1. listener 서비스 작성

 

# vi /usr/lib/systemd/system/oracle_listener.service

[Unit]
Description=oracle listener
After=network.target

[Service]
Type=forking
User=oracle
Group=dba
Environment=ORACLE_BASE=/app/oracle
Environment=ORACLE_HOME=/app/oracle/product/11.2.0/dbhome_1
Environment=ORACLE_SID=orcl
ExecStart=/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start
ExecStop=/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl stop

[Install]
WantedBy=multi-user.target

 

 

2. instance 서비스 작성

 

# vi /usr/lib/systemd/system/oracle_instance.service

[Unit]
Description=oracle instance
After=network.target syslog.target

[Service]
Type=forking
User=oracle
Group=dba
Environment=ORACLE_BASE=/app/oracle
Environment=ORACLE_HOME=/app/oracle/product/11.2.0/dbhome_1
Environment=ORACLE_SID=orcl
ExecStart=/app/oracle/product/11.2.0/dbhome_1/bin/dbstart ORACLE_HOME
ExecStop=/app/oracle/product/11.2.0/dbhome_1/bin/dbshut ORACLE_HOME

[Install]
WantedBy=multi-user.target

 

 

3. systemd 에 등록 후 자동실행 설정

 

# systemctl daemon-reload
# systemctl enable oracle_listener.service
# systemctl enable oracle_instance.service

 

 

4. /etc/oratab 수정

 

orcl:/app/oracle/product/11.2.0/dbhome_1:Y

 

부팅시 dbstart 유틸리티를 사용하도록 설정(Y)

 

 

5. 재부팅 후 프로세스 확인

 

 

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

CentOS 7 에서 Oracle 11g 에 설치하기.

 

 

1. 다운로드

 

Oracle 11g 는 다운로드 하는 것 부터가 불편하다. 구글에서 대충 검색하면 현재 보편화된 19c 다운로드 페이지로 이동되고, 모든 버전을 확인하고 다운받으려면 Oracle Software Delivery Cloud 사이트(https://edelivery.oracle.com) 로 이동해야 한다. 마찬가지로 oracle 계정이 필요하다.

 

 

2. X window 준비

 

Oracle 11g 는 X window 환경을 필요로 하기 때문에 X window 환경을 준비한다.

 

  • 방법1. GUI 용 서버 설치
    # yum groupinstall 'Server with GUI'
  • 방법2. GNOME Desktop 설치
    # yum groupinstall 'GNOME Desktop'
  • 방법3. 최소한의 X11 패키지 설치 및 Xming(원격) 사용하기
    link: Xming 설치 링크

 

CentOS GUI 환경에서는 설치 중 에러 메시지 등이 깨져 보일 수 있는데 이럴 때는 설치를 중단하고 윈도우즈 환경(Xming) 에서 원격 접속하면 설치 중 메시지들을 정상적으로 확인할 수 있다.

 

 

3. 오라클 계정/그룹 생성

 

# groupadd dba
# useradd -g dba oracle
# passwd oracle

 

 

4. 설치 디렉토리 및 권한 설정

 

원하는 ORACLE_BASE 디렉토리를 생성한다.

 

# mkdir -p /app/oracle
# chown -R oracle:dba /app

 

 

5. 설치 전 준비사항

 

오라클 설치 전에는 메모리도 확보해야 하고, 파일 디스크립터, OS 커널 파라미터 설정도 해야 하고, 의존 라이브러리도 설치해야 한다. 아무 설정 없이 오라클 설치를 진행하면 다음의 화면을 만날 수 있다.

 

 

ignore all 을 체크하고 설치를 진행해도 오라클 설치는 마칠 수 있지만, 정상적으로 설치가 완료됐다고 볼 수도 없고 굳이 그렇게 설치할 필요도 없다. 또 ignore 체크를 해도 진행되지 않는 경우도 있다. 나는 Swap Memory 와 pdksh(Public domain Korn shell) 때문에 진행이 되지 않은 적이 있다.

 

 

5.1 OS 커널 파라미터 값 설정 (ignore 로 fix 가능)

 

# vi /etc/sysctl.conf

# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 10523004
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128

fs.aio-max-nr = 1048576
fs.file-max = 6815744

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

 

# /sbin/sysctl -p

 

 

5.2 유저 자원 사용 제한값 설정 (ignore 로 fix 가능)

 

# vi /etc/security/limits.conf
...
oracle soft nproc 2048
oracle hard nproc 65536
oracle soft nofile 1024
oracle hard nofile 65536

 

 

5.3 의존 라이브러리 설치

 

# yum -y install compat-libstdc++-33.x86_64 binutils elfutils-libelf elfutils-libelf-devel
# yum -y install glibc glibc-common glibc-devel glibc-headers gcc gcc-c++ libaio libaio-devel
# yum -y install libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel

# yum -y install unzip wget

 

 

5.4 pdfsh 설치

 

다운로드 사이트

http://rpm.pbone.net/info_idpl_2398776_distro_redhat7.x_com_pdksh-5.2.14-8.i386.rpm.html

 

# wget ftp://ftp.pbone.net/mirror/archive.download.redhat.com/pub/redhat/linux/7.0/en/os/i386/RedHat/RPMS/pdksh-5.2.14-8.i386.rpm
# rpm -Uvh --nodeps pdksh-5.2.14-8.i386.rpm --force

 

 

5.5. oracle 계정 환경변수 설정

 

# vi /home/oracle/.bash_profile
export ORACLE_BASE=/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export PATH=$PATH:$ORACLE_HOME/bin

 

ORACLE_BASE, ORACLE_HOME 이나 SID 등은 필요에 맞게 수정한다.

 

 

5.6 Swap 메모리 설정

 

이 부분은 조금 이해가 안된다. Oracle 11g R2 설치시 최소 메모리가 1GB 인데, 한번은 16GB 시스템에서 Actual Value 가 8GB, Expected Value 가 16GB 로 되어 진행되지 않은 적이 있다. 메모리가 부족하지도 않은데 시스템 메모리 만큼 영끌하라는게 말이됨? 아무튼 이런 이유로 진행이 되지 않는다면 Expected Value 까지 swap 메모리를 확보해야 한다.

 

link: Swap memory 생성 참고

 

 

6. oracle 11g 설치파일 준비

 

oracle 11g 설치 파일을 서버에서 직접 다운받은게 아니라면 ftp 등을 이용하여 oracle 11g 파일을 서버에 업로드한다. oracle 11g 설치 파일을 oracle 계정이 실행할 수 있도록 설정하고 installer 를 실행한다.

 

# mv V17530-01_1of2.zip /home/oracle
# mv V17530-01_2of2.zip /home/oracle
# chown oracle:dba /home/oracle/V17530*

 

 

7. installer 실행

 

installer 를 실행하는데 있어 가장 중요한 것이 oracle 계정으로 로그인 하는 것이다. su / sudo 등을 이용하지 않고 새로운 세션에서 oracle 계정으로 로그인 해야 한다.

 

$ unzip V17530-01_1of2.zip
$ unzip V17530-01_2of2.zip
$ ./database/runInstaller

 

만약 한글판일 경우 한글이 깨지면,

 

$ export LANG=C
$ export LC_ALL=C
$ ./database/runInstaller

 

 

8. 설치 과정

 

  • Configure Security Updates : pass
  • Installation Option : Create and configure a database
  • System Class : Server Class
  • Grid Options : Single instance database installation
  • Install Type : Typical install
  • Database Edition : Enterprise Edition
  • Installation Location : default (/app/oracle)
  • Create Inventory : default
  • Prerequisite Checks : Ignore All

 

 

9. 설치 중 오류 수정

 

$ vi /app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk
ctxhx: $(CTXHXOBJ) 
    -static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)

 

$ vi /usr/oracle/app/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk
$(SYSMANBIN) emdctl:
    $(MK_EMAGENT_NMECTL) -lnnz11

 

 

10. 구성 스크립트 실행(Root)

 

# /app/oraInventory/orainstRoot.sh
# /app/oracle/product/11.2.0/dbhome_1/root.sh

 

 

11. 설치 완료 후 계정 생성

 

$ sqlplus / as sysdba
SQL> CREATE USER username identified by password;
SQL> GRANT resource, connect, dba to username;
SQL> SELECT * FROM ALL_USERS

USERNAME                          USER_ID CREATED
------------------------------ ---------- ------------------
OOPS4U                                 91 10-JUL-21

 

username 과 password 에 원하는 계정정보 입력.

 

 

12. 방화벽 port 열기

 

# firewall-cmd --zone=public --add-port=1521/tcp --permanent
# firewall-cmd --reload

 

 

13. 클라이언트 접속 테스트

 

SQL Developer 설치

https://www.oracle.com/tools/downloads/sqldev-downloads.html

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Xming + putty 로 oracle 11g 설치하기.
설치는 알아서들 하시고... 실제 제목은 설치 화면 띄우기?

리눅스에 오라클을 설치할 때 꼭 필요한 것이 GUI 환경이다. Xming 이나 X window manager 를 이용하면 원격으로 GUI 환경의 창을 띄울 수 있다. (무료인 Xming 추천) 서버가 로컬에 있다면 X window 깔고 GUI 화면에서 작업하면 되겠지만, 원격에서 X window 가 깔리지 않았을 때 GUI 창을 띄우는데 어떤 것들이 필요한지 테스트 해 보았다.

* 윈도우환경
  - OS : Windows 10
  - Xming 최신버전 (기본값으로 설치)
  - putty

* 서버환경
  - OS : CentOS 7 minimal (OS 설치시 네트워크 on)

 

 

1. putty 설정 후 접속
  - Connection - SSH - X11 - Enable X11 forwarding 체크


  - /etc/ssh/sshd_config 파일에도 X11Forwarding 옵션이 있지만 기본적으로 활성화 상태이다.
  - 이 두 옵션이 모두 활성화 된 상태여야 한다.

2. yum 업데이트 및 최소 X window 설치

# su -
# yum update
# yum install -y unzip
# yum install -y xorg-x11-apps.x86_64
# yum install -y xorg-x11-xauth.x86_64
# yum install -y xorg-x11-server-Xorg.x86_64


3. putty 새 세션에서 xclock 실행하고 Xming 구동 확인

$ xclock


4. oracle 계정 생성

# groupadd dba
# useradd -g dba oracle
# passwd oracle


5. ftp 로 알아서 Oracle 11g 업로드 후 압축 해제

# su - oracle
$ unzip V17530-01_1of2.zip
$ unzip V17530-01_2of2.zip

 

6. 새 세션에서 oracle 계정으로 로그인 후 oracle 설치 실행

$ ./database/runInstaller

 


물론 아무 설정없이 이 따위로 진행했다가는 에러 폭격을 맞겠지만, X window 창 띄우기가 그닥 어렵지 않다는 점...


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Remote connection

Database/Oracle 2013. 4. 26. 19:31

리스너만 가동되고 있다면, 오라클 데이터베이스에 원격으로 접속하는 것도 가능합니다.
Toad 로 연결을 시도해 봤는데 오라클 클라이언트를 설치하지 않으면 접속조차 안되더군요.
구글링 결과 클라이언트 설치 없이도 가능하다는 분이 간혹 있는데 저는 안되는 걸로 결론 내렸습니다.^^;

 

오라클 클라이언트 설치 후에 Toad 에서 direct 로 접속을 했고, sqlplus 로도 접속이 됐습니다.
sqlplus 접속 시 username 은 다음의 형식을 참조하여 접속할 수 있습니다.

 

user@"host[:port][/service_name][:server][/instance_name]"

 

- host : 호스트 이름이나 IP 주소를 입력
- port : 생략하면 표준 포트인 1521 할당
- service_name : DB_NAME.DB_DOMAIN 으로 구성
- server : 서비스 핸들러 타입 (dedicated, shared, pooled)
- instance_name : 접속할 인스턴스

 

 

sql*plus 외부 접속 예제)

 

// 데이터베이스에 접속하지 않고 일단 SQL*Plus 시작
$ sqlplus /nolog

// system 사용자로 로컬 데이터베이스 접속
SQL> conn system

// sysdba 권한으로 sys 사용자 접속
SQL> conn sys as sysdba

// 로컬에서 sysdba 권한으로 접속
SQL> conn / as sysdba

// dbhost.example.com 이란 호스트에서 가동중인 orcl.example.com 데이터베이스에 nick 사용자로 접속
SQL> conn nick@"dbhost.example.com/orcl.example.com"

// 호스트 이름 대신 ip 사용
SQL> conn nick@"192.0.2.1/orcl.example.com"

// 기본 포트 이외의 포트 지정
SQL> conn nick@"dbhost.example.com:1522/orcl.example.com"

// 서비스 이름을 생략하고 인스턴스 지정
SQL> conn nick@"dbhost.example.com//orcl"

// 클라이언트에서 sales1으로 지정된 net 서비스로 로그인
SQL> conn nick@sales1


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,