본문 바로가기
개발(코딩) 경험 저장소/서버,유틸 설치 및 관리

[linux][oracle11g] CentOS7에 Oracle11g 설치

by 주니우스 2023. 5. 21.
반응형

프로젝트를 진행하면서 TEST를위해 Oracle11g가 필요해졌다.

처음에는 Oracle 11g Xe 도커에 설치해서 TEST를 해봤는데 Xe는 연결수에 제한이 있어서 TEST시 디비 connect 가 안되는 문제가 발생하여, Oracle 11g Enterprise 버전도 TEST용으로는 사용이 가능하것 같아서 설치해본 과정을 남긴다.

 

1. OS : CentOS 7 버전을 설치했다.(나중에 시간날때 8 설치 해볼 예정)

 (같은 Redhat 클론 버전인 Rocky 8에 설치해보려고 몇번 시도해봤지만 안되어서 빠르게 7버전에 설치했다.)

 

2. 구글과 네이버를 통해 설치 문서를 찾아보면 원격으로 X11을 통해서 설치하던데 설정 따라 해봐도 잘 안되어

    시간 낭비 안하려고 VMware로 설치 연습하고 실제 TEST PC에 설치했다.

    19c 설치하면서 다시 시도해봤는데 linux 에 X11 관련 패키지 설치하고 내 윈도우에 Xming 설치/실행후

    아래처럼 putty 세팅해주니까 잘된다.   ":0.0"

   

 

 

3. Oracle 11g를 설치하기위한 GUI가 필요한데 GNOME GUI는 Oracle설치중 팝업창이 안보이는 문제가 있어 방법을 찾다 찾다 안되었지만 KDE GUI 를 통해서 해결했기 때문에 linux 설치시 GUI는 KDE로 설치했다.

   아래 이미지가 오류 팝업창이 뜬거고 메인 화면이 비활성화 되어 흐려진 이미지다. 

   처음에 나도 왜 저기서 멈춰있지, 왜 아무것도 안뜨지 싶었는데, 자세히 보면 빨간색 원안에 세로로 하얀 줄이보인다.

   이것이 팝업창이 뜬거다.... ㅋㅋ  화살표 키도 안되고, 다른 키로도 안되고, 그래픽카드를 여러개 바꿔봤지만 안되었지만 linux GUI를 KDE 바꾸고 나니 정상적으로 팝업화면이 떴다.

 

4. JDK는 linux 패키지 버전 1.8 을 사용했다.

 

 


linux 설치

linux 설치를 정리하려는 글도 아니고 oracle 설치를 linux에 하려는 분들이면 linux 설치는 다 할줄 아실테니 필요한 설정 부분만 간단히 언급하겠다.

 

1. 언어팩 설정

Oracle 하고 관련이 있을지는 모르지만 예전 DB에서 linux 에 한글 언어팩이 없어서  한글이 깨젓던 적이 있어서 linux 설치시 늘 한글을 추가한다.

 

 

2. GUI 선택

linux 설치시 옵션 창에서 SOFTWARE SELECTION 중 "Server with GUI" 를 선택하고 "KDE" 를 체크하고 설치한다.

 

 

3. 필요한 패키지 설치(전부 Oracle 하고 직접적 필요한지는 모르겠다. 여러 자료들에 하라니까..)

 

[root@localhost ~]# yum -y install compat-libstdc++-33.x86_64 binutils elfutils-libelf elfutils-libelf-devel
    Rocky 8 버전에서는 compat-libstdc++이 중단되어 아래와 같이 7버전을 다운 받아 설치해야한다.

    wget https://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm

    rpm -i "compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm"

 

[root@localhost ~]# yum -y install glibc glibc-common glibc-devel glibc-headers gcc gcc-c++ libaio-devel

[root@localhost ~]# yum -y install unixODBC unixODBC-*

[root@localhost ~]# yum -y install unzip make

    CentOS 7 에서는 upzip 이 없고 Rocky 8 에서는 make 가 없다.

 

 

 

4. SELINUX 를 설정한다.

 

[root@localhost ~]# vi /etc/selinux/config

SELINUX=enforcing 부분을 disabled 로 변경한다.

 

 


 

Oracle 설치 사전 작업

Oracle 설치 전 필요한 값들 설정을 한다.(최적화 값인지는 모르겠다. 나중에 찬찬히~ )

 

1. 커널 파라미터 값 설정 (하단에 아래 내용 추가)

[root@localhost ~]# 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

 

[root@VMCentOS79 ~]# /sbin/sysctl -p

 

2. 자원 사용 값 설정(하단에 아래 내용 추가)

[root@localhost ~]# vi /etc/security/limits.conf

oracle soft nproc 2048
oracle hard nproc 65536
oracle soft nofile 1024
oracle hard nofile 65536

 

 

3.Oracle 유저 생성

[root@localhost ~]# groupadd dba


[root@localhost ~]# useradd -g dba oracle


[root@localhost ~]# passwd oracle

 

 

 

4. 오라클 설치 디렉토리생성 및 권한 설정(Oracle 설치 디렉토리는 /app/oracle )

[root@localhost ~]# mkdir -p /app/oracle

 

[root@localhost ~]# chown -R oracle:dba /app

 

[root@localhost ~]# chmod -R 775 /app

 

 

 

5. Oracle 1521 포트 방화벽 오픈

[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=1521/tcp

 

 

6. Oracle 계정의 환경변수를 저장합니다.

[root@localhost ~]# su - oracle

 

[oracle@localhost ~]$ vi .bash_profile

export ORACLE_BASE=/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_HOME_LISTNER=$ORACLE_HOME/bin/lsnrctl
export ORACLE_SID=orcl
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export NLS_LANG=KOREAN_KOREA.AL32UTF8

export PATH=$PATH:$ORACLE_HOME/bin

# alias
alias ss='sqlplus / as sysdba'

 

위의 aliase ss는 편의상~

 

7. 재부팅

리눅스 설정을 이것 저것 바꾸었으니 재부팅 한번 해준다.


 

 

Oracle 설치

1. 재부팅후 Oracle 계정으로 로그인 한다. 로그인 시 KDE 선택.

 

2. 설치 파일 업로드 및 압축 해제

설치 파일 업로드는 ftp로 옮기든, usb로 옮기든, scp로 옮기든 여러가지 방법이 있으니 익숙한 방법으로 업로드 하시면 되고 저는 oracle 계정 홈에 임의로 install 이라는 디렉토리를 만들고 업로드 및 압축해제를 혹시 모를 권한 문제 발생을 없애려고 모두 oracle 계정으로 수행함. 

압축해제는 두개 파일이고 아래 명령으로 해주면 됩니다. 

압축해제 하면 각각 해제된 디렉토리가 생성되는 게 아니고 모두 "database" 디렉토리로 들어갑니다.

오라클에서 다운받으면 파일 이름이 저렇게 코드(?) 형태로 되어있다. 문자열형태로 무슨파일인지 알수 있는 이름으로 해주면 좋을텐데~ 여러파일 받고 나니 나중에는 좀 헷갈리더라ㅎㅎ

 

[oracle@localhost install]$ unzip V17530-01_1of2.zip

[oracle@localhost install]$ unzip V17530-01_2of2.zip

 

 

 

3. 설치 시작

압푹 해제된 database 디렉토리에 들어가면 연두색의 실행가능 파일로 "runInstaller" 이 설치 명령이다.

[oracle@localhost database]$ ./runInstaller

 

 

 

4. 첫 UI 설치 화면 시작


첫 화면은 아래와 같이 뜬다.

체크박스가 선택되어있는데 체크 해제하고 Next를 누른다.


그러면 아래 이미지 처럼 이메일주소 안적었다고 팝업창으로 경고 하는데 그냥 무시하고 Yes 누른다.


아래 옵션은 설치 옵션인데 화면 기본값은 "Create and configure a database" 이다.

Oracle 설치 문서를 구글링 해본 사람들은 알겠지만 문서에 따라서 

"Create and configure a database" 를 선택한 사람도 있고 "Install database software only" 를 선택한 사람도 있다.

"Create and configure a database"  는 설치하면서 DB 생성 까지 하면서 설치하고

"Install database software only" 는 DB생성은 하지 않고 Oracle 설치만 한다.

나는 뒤에서도 설명하겠지만 우선 Oracle 잘 설치하고 나서 DBCA로 DB생성을 하면 되기 때문에 

"Install database software only" 로 선택했다.  


아래 설정은 기본값 그대로 두었다.

내가 필요한 부분은 TEST용 Oracle 이기 때문에 Clusters 이런거 필요없어서~


언어추가 

기본 English 만 있는데 Korean 선택해서 추가해준다.


Oracle 버전 선택(세부적인 차이는 잘 모르겠지만 Enterprise 가 좋으니~)

기본값인 "Enterprise Edition" 을 그대로 Next 를 누른다.


Oracle 설치 위치를 보여주는데 내가 저~위 쪽에서 .bash_profile 에 추가했던 위치들이니 확인 정도만 하고 Next.


이 화면도 그냥 Next.


Group은 oracle 계정의 group 이 dba 니까 그대로 Next.


그리고 나면 짧게 프로그레스바 휘리릭 지나가고 아래 창이 뜨는데

기분나쁘게 Status 가 Failed 이라고 떠있긴 하지만.....

Ignore All 을 선택하고 Next 를 클릭한다.


간단한 요약창이 표시 되고 Finish를 클릭하면 설치를 시작한다.


이것이 내가 처음에언급해서 팝업창이 안뜨던 그래서 KDE로 해결했다는 그 문제의 팝업창이다.

설치를 진행하다 보면 84% 즈음해서 아래의 팝업창이 뜬다. 

이 팝업과 바로 뒤에 같은 팝업 다른 파일이름으로 한번 더 뜨는데, 이 팝업이 뜰때는 해당 파일 스크립트를 조금 수정하고 Retry를 눌러야 하는데 그게 안되었던거다.

정상적으로 팝업창이 뜰때는 키보드 방향키로 왼쪽을 한번 누르면 Continue 에서 Retry로 이동 하고 enter를 누르면 되기때문에 팝업창이 안보이더라도 똑같이 동작하리라 생각하고 해봤지만 안되었다.

하지만 KDE GUI에서는 잘 보였으니 나는 해결 됨 ㅎㅎ.

 

 

위의팝업창과 UI는 그대로 둔채로 원격 ssh 접속이든 KDE UI에서든 터미널을 하나 열어 편집한다.

 

[oracle@localhost database]$ vi /app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk

 

11 라인에 

 $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)  부분 앞에 -static을 추가해준다.

 

-static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)

그리고 Oracle 설치 UI의 팝업창에서 Retry를 클릭하면 진행이 되다고 곧바로 다시 팝업창이 뜬다.

자세히 보면 같은 팝업창인데 파일 경로와 이름만 바뀌었다.

 

다시 터미널 창에서 vi로 해당 파일을 열어준다.

[oracle@localhost database]$ vi /app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk

 

190라인 에 

$(MK_EMAGENT_NMECTL)  의 맨 뒤에 -lnnz11 를 추가해준다.

 

$(MK_EMAGENT_NMECTL) -lnnz11

저장한 후 다시 Oracle 설치 UI의 팝업창에서 Retry를 클릭하면 진행 진행이 된다.

 

위 작업 시 참고 사항

* 문서 작성을 위해 수정과 Retry 를 위처럼 두번에 걸쳐 했지만 실제로 나는 ins_ctx.mk 파일을 수정할때 두번째 팝업창에 나올 ins_emagent.mk 파일까지 같이 수정해 버린다. 그러면 처음 한번만 Reetry 클릭하면 두번째는 뜨지 않는다.

* 처음 설치하는 분들은 위의 수정 파일 위치를 라인으로 찾기 힘들텐데 캡쳐이미지 처럼 노란색 라인수를 표시하게 하려면 vi 명령모드 에서 set nu 를 주면 vi에서도 라인 수가 위 이미지 처럼 표시된다.


쭉 설치가 되다가 root권한으로 스크립트 실행 안내 팝업창이 뜬다.

안내 해주는대로 아래 두개 스크립트를 root 권한 으로 실행하라는 말이다.

/app/oraInventory/orainstRoot.sh

/app/oracle/product/11.2.0/dbhome_1/root.sh

 

Oracle 설치 GUI 를 그대로 둔 채로, 터미널 창을 root 권한으로 열어 해당 스크립트를실행한다.

두번째 스크립트는 엔터를 한번 입력한다.


설치 완료,  이걸로 Oracle 설치는 완료 되었다.

위이 창에서 Close를 클릭하면 설치 UI는 종료되고 처음 ./runInstaller 실행했던 터미널만 남는다.


 

Oracle 리스너 설정

Oracle 설치가 끝났지만 우리가 접속 해서 사용하기 위해선 DB 생성 뿐만 아니라 리스너도 설정해야한다.

터미널 창에서 netca 입력하면 Oracle Net Configuration 창이 뜬다. 

Listener configuration 선택된 기본 그대로 Next 한다.


처음 Oracle 설치 옵션에서 "Install database software only" 를 선택해서 설치 했기때문에 리스너가 없는 상태이다. 

Add 선택된 그대로 Next.


Listener name 은 기본 그대로 Next.


protocols 도 그대로 Next.


포트번호 수정하는 화면인데 나는 디폴트 포트 그대로 사용. Next


또다른 리스너를 설정하겠냐고 묻는데 지금은 필요없으니 그대로 Next.


그러고 나면 complete 창이 뜨고 netca를 실행했던 뒷 콘솔에서도 successfully 라고 올라온다.


위 사진에서 Next를 누르면 다시 netca의 첫화면으로 간다.

나는 더이상 리스너를 추가 또는 수정할건 없으니 Finish 를 클릭한다.

그러면 창이 닫히고 netca를 실행했던 터미널 창만 남는다. 리스너 설정 완료.


 

Oracle DB 생성

DB를 생성하기 위해 터미널 창에서 dbca 입력하면 Database Configuration Assistant 창이 뜬다. Next 클릭.


DB생성, Next 누름


이건 기본 디폴트 값 그대로 Next


여기 SID 넣는 부분인데 이부분은 생각나는대로 넣는게 아니고 

우리가 설치 전 .bash_profile 에 넣었던   export ORACLE_SID=orcl  여기 값을 넣어야 한다.

내 문서를 보고 따라하신 분이면 orcl 이니 orcl 이라고 타이핑 하면 된다.(대소문자 구분함)

이거 안맞으면 DB 실행이 안됨


기본값 그대로 Next


Administrative passwords 설정창인데 아래쪽 All Accounts 를 동일한 패스워드로설정하는 부분 체크하고 패스워드입력한다.


패스워드가 Oracle 권장 기준에 안맞으면 팝업창으로 안내 해주는데 그냥 Yes 누르고 continue 하면 된다.


Storage 설정. Next 


복구관련 설정인듯 한데 기본값 그대로 Next.


그냥 Next


이번 설정 창에는 4개의 탭이 있는데 약간의 설정 수정이 필요하다.

메모리 탭은 서버 시스템에 따라 할당되는것 같아서 그대로 두고

Sizing 탭으로 이동 한다.


Sizing 탭에서 Processes 를 수정한다.

동시접속 사용자 연결 수인데... 이게 기본값은 150이다.

내가 Oracle 11g Xe를 포기하고 Enterprise 버전을 설치하게 된 이유인데

지금 프로젝트에 DB연결이 많아서 인지 프로젝트 하나에서 150을 초과할때가 있다.

그러면 연결 초과 되었다고 error 가 발생하는데, 그래서 500으로 늘려준다.


Character Sets 탭에서는 한글에 맞춰서 수정해 준다.


Connection Mode 는 기본값 그대로 Next를 클릭한다.


그러면 요약 정보 뜨고 Next 클릭


Finish 클릭.

마지막 확인 창에서 OK 클릭


설치가 진행된다.


설치가 완료 되며 아래와 같은 창이 뜨면 Exit 클릭. 그러면 UI 창이 자동으로 종료 되며 설치 완료~~~!!

 

 

 


 

Oracle 사용 설정 및 사용자 추가

 

설정을 위해 oracle 계정의 .bash_profile 을 다시 적용해 준다.

[oracle@localhost database]$ source ~/.bash_profile

그러면 alias 준 ss(sqlplus / as sysdba) 명령을 쓸수있다.

내 문서 대로 했다면 Oracle DB가 실행 되고 있는 상태이다.

종료와 다시 실행을 해보면 아래와 같다. 종료는 shutdown immediate 명령으로 하면 된다.

 

리스너 상태 확인


DBeaver로 접속을 확인한다.


DBeaver 에서 접속을 확인 함

아직 계정을 생성하지 않았기 때문에 기본 Schemas 만 보인다.

계정을 생성하면 그 계정이름이 아래 Schemas 에 보인다.


계정 생성 (Schemas 와 비슷한 개념으로 이해하면 되는데 정확히는 다르다.)

테스트 용 계정 oratestuser 계정을 생성해보자. oratestpasswd 가 패스워드다.

그리고 테스트 용이니까 권한을 다 준다.

 

CREATE USER oratestuser identified by oratestpasswd;

GRANT resource, connect, dba to oratestuser;

 

그리고 나서 다시 DBeaver로 접속을 해보면 oratestuser 가 Schemas 에 보이는 것을 확인할 수 있다.

 

 

 

 

 


 

 

Oracle 기타 설정

 

 

1. 패스워드 만료기간(default 180일) 변경

SELECT * FROM dba_profiles WHERE profile='DEFAULT';

ALTER profile default limit password_life_time unlimited;

 

2. 동시 접속 가능 processes 수 수정(UI로 설치시 500으로 수정한 부분, UI에서 수정 못했다면 아래명령 확인해서 수정)

select * from v$resource_limit where resource_name in ('processes','sessions');
alter system set processes=500 scope=spfile;

MAX_UTILIZATION : instance가 시작된 이후 최대 사용된 수
PROCESSES : Oracle에 동시접속할 수 있는 user process의 최대값
SESSIONS : System에서 생성될 수 있는 session의 최대 값.

(PROCESSES 값을 늘리면 SESSIONS의 값은 자동으로 PROCESSES 값의 약 1.5배로 늘어난다.)

 

3. Oracle을 재실행한다.

shutdown immediate;
startup;

 


 

Oracle 자동실행 설정

여기까지 오면 사용하는데는 문제 없지만 

이제부터 재부팅 때마다. Oracle를 시작 해주는게 여간 불편하지 않을수 없다.

그리고 생각보다 우리 사무실 정전 잘 된다. 또 테스트 PC의 부족으로 종종 다른 하드나 SSD부텨여서 다른설치한다.

지금은 알것 같지만 몇달 지나면 Oracle 실행법도 다 잊어먹을거 뻔하다~.

 

CentOS 6 버전대에서는 나름의 방식으로 자동 재실행 스크립트를 작성했던것 같지만

7버전 이후엔 systemctl 로 비교적 간단히 재실행 등록을 할수 있다.

 

1. oratab 수정

[root@localhost ~]# vi /etc/oratab

하단 끝부분의 'N'으로 되어있는 부분을 'Y'로 변경


2. listener 서비스 작성 및 추가(신규생성)

[root@localhost ~]# 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

 


3. instance 서비스 작성 및 추가(신규생성)

[root@localhost ~]# 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

 


4. systemd 에 등록

[root@localhost ~]# systemctl enable oracle_listener.service

[root@localhost ~]# systemctl enable oracle_instance.service

 

 

 

 

 

여기까지 하면 TEST용 Oracle 11g 사용이 가능해 보인다.

원격터미널에서의 설치나 Rocky 8버전에서의 설치는..... 노는 김에 염불한다고 해볼수는 있겠지만...

최소한의 목적이 달성된 상태에서 해볼지는 모르겠다~~^^;

아직도 현업에서는 11g를 많이 쓰긴 한다만~

반응형

댓글