Linux RHEL Oracle 11g 설치{23년4월21일/24일}
참고 블로그
https://xxsiyoung.tistory.com/3
[21.02.02 수정] CentOS 7에 Oracle 11g 설치 완벽정리!
- 사전준비 Oracle 11g 파일을 준비합니다. https://www.oracle.com/database/technologies/oracle-database-software-downloads.html Database Software Downloads | Oracle Oracle Database 11g Release 2 Standard Edition, Standard Edition One, and Enterpr
xxsiyoung.tistory.com
먼저 자신이 11g에 대한 파일이 없다면, 이곳에서 다운을 받을 수 있다.
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
Database Software Downloads | Oracle
Oracle Database Express Edition Previous Database Release Software Oracle Database 10.2, 11.x, 12.x, and 18c are available as a media or FTP request for those customers who own a valid Oracle Database product license for any edition. To request access to t
www.oracle.com
다운을 받기 전에 나의 리눅스의 bit 환경이 어떻게 되는지 확인하는 방법은 아래의 명령어를 입력해주면 답을 얻을 수 있다.
[root@localhost ~]# getconf LONG_BIT
64
RHEL 환경의 현재 모습은 백지와 같은 상황인데 이전에는 19c 설치를 하여서 조금 더 수월하게 하였지만, 현재는 조금 더 불편한 11g를 설치해보려고 한다.
우선 백지장이었던 환경에 yum에 대해 설정을 잡아줘야 한다.
[root@localhost ~]# cd /etc/yum
[root@localhost yum]# ls
fssnap.d pluginconf.d protected.d vars version-groups.conf
[root@localhost yum]# mkdir repos.d
[root@localhost yum]# ls
fssnap.d pluginconf.d protected.d repos.d vars version-groups.conf
[root@localhost yum]# cd repos.d/
[root@localhost repos.d]# vi daum.repo
[root@localhost repos.d]# cat daum.repo
[base]
name=CentOS-$releasever - Base
baseurl=http://ftp.daum.net/centos/7/os/$basearch/
gpgcheck=1
gpgkey=http://ftp.daum.net/centos/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates
baseurl=http://ftp.daum.net/centos/7/updates/$basearch/
gpgcheck=1
gpgkey=http://ftp.daum.net/centos/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras
baseurl=http://ftp.daum.net/centos/7/extras/$basearch/
gpgcheck=1
gpgkey=http://ftp.daum.net/centos/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://ftp.daum.net/centos/7/centosplus/$basearch/
gpgcheck=1
gpgkey=http://ftp.daum.net/centos/RPM-GPG-KEY-CentOS-7
이후에 yum update를 입력하여 진행을 해줘야 한다.
##여기서 sudo는 강제로 진행을 한다는 뜻으로 받아들여 지면 되는데, 그냥 해보고 안되었을때 sudo를 입력해 진행을 해주면 된다. 만약 sudo를 했어도 안된다는 뜻은 부족한 상황이니 주의깊게 진행하는 것으로 하자.
yum에 대한 패키지가 업데이트가 되었다면, 이제 rpm...을 하고 싶으나 내가 알기로는 rpm의 경우는 19c에서 가능한 것으로 알고 있으며 실제로 공부를 할때 11g와 19c 비슷하지만 다르게 공부하는 이유가 바로 rpm의 존재 여부 때문인 것으로 판단되어 지고 있다.
그래서 11g의 경우는 rpm이 없으니 직접적으로 패키지를 설치해줘야 한다.
지금부터가 시작이라고 볼 수 있다!
위의 yum 설정을 위해 누군가가 올려둔 daum.repo의 경우에는 몇가지 필요로 하는 패키지들이 들어있어서 아래의 명령어 입력시 Nothing to do 라는 문구를 볼 수 있는데 이미 설치가 되어 있어서 설치를 안한다는 뜻이다.
설치가 안되어 있어서 설치를 진행되고 나면 complete! 를 확인해볼 수 있다.
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-devel
yum -y install libaio libgcc libstdc++ libstdc++ make sysstat unixODBC unixODBC-devel
yum -y install unzip
yum -y install compat-libstdc++-33.x86_64 binutils elfutils-libelf elfutils-libelf-devel
참고한 블로그에서 피드백이 한가지 있는데 다음과 같은 내용이 있었다.
위의 내용을 입력시 발생되는 내용
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/repo/arch combination/
removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt
Error: Cannot find a valid baseurl for repo: base
YumRepo Error: All mirror URLs are not using ftp, http[s] or file. Eg. Invalid release/repo/arch combination/removing mirrorlist with no valid mirrors: /var/cache/yum/i386/6/base/mirrorlist.txt
Error: Cannot find a valid baseurl for repo: base
해당 내용의 문제점은
CentOS6 버전 업데이트 지원이 종료되면서 yum update 등 명령어 사용 시 발생합니다. 이때, 해결방법을 알려드리겠습니다. 32bit, 64bit 에 따라 명령어가 다르니 getconf LONG_BIT명령어를 통해 리눅스의 비트를 확인해주세여! [ 해결방법 ] // 32bit [root@localhost ~]# echo "https://vault.centos.org/6.10/os/i386/" > /var/cache/yum/i386/6/base/mirrorlist.txt [root@localhost ~]# echo "http://vault.centos.org/6.10/extras/i386/" > /var/cache/yum/i386/6/extras/mirrorlist.txt [root@localhost ~]# echo "http://vault.centos.org/6.10/updates/i386/" > /var/cache/yum/i386/6/updates/mirrorlist.txt // 64bit [root@localhost ~]# echo "https://vault.centos.org/6.10/os/x86_64/" > /var/cache/yum/x86_64/6/base/mirrorlist.txt [root@localhost ~]# echo "http://vault.centos.org/6.10/extras/x86_64/" > /var/cache/yum/x86_64/6/extras/mirrorlist.txt [root@localhost ~]# echo "http://vault.centos.org/6.10/updates/x86_64/" > /var/cache/yum/x86_64/6/updates/mirrorlist.txt 명령어 입력 후, 다음 명령어 실행해주세염 [root@localhost ~]# yum update 참고로 열라 오래걸리더라고여... update가 모두 끝나면 에러났던 위의 yum install 설치 명령어들 다시 입력하면 잘 설치됩니다! |
라는 내용이 명시되어 있는데 현재 내가 사용하고 있는 것은 CentOS7이기 때문에 문제가 없지만 앞으로 고객사에 방문시 해당 문제점이 있다면 7올 변경을 하든 아니면 Oracle 버전을 32로 낮추던가 해서 준비를 하면 될 것 같다.
이제부터가 rpm 없이 파라미터 설정값을 입력하는 부분인데 나중에 19c의 경우는 아래의 블로그를 참고하면 될것 같다.
https://lemonandgrapefruit.tistory.com/242
CentOS 7에 Oracle 19c 설치
설치하기 전 oracle 설치파일 다운 다음 링크로 접속하여 Oracle 설치파일을 다운로드 할 것이다. https://www.oracle.com/database/technologies/oracle-database-software-downloads.html 여기에서 리눅스 기반 파일을 다운
lemonandgrapefruit.tistory.com
현재는 11g를 하는 것이 괜히 위의 내용과 같이 하지 않도록 주의하자.
커널 파라미터 값 설정하기
[root@localhost ~]# vi /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
#원래는 위의 내용만 존재하였으나 아래의 내용을 추가해주면 된다.
# 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@localhost ~]# /sbin/sysctl -p
kernel.shmmax = 68719476736
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
유저의 자원 사용 제한값을 설정
limits.conf의 맨 마지막 줄에
oracle soft nproc 2048
oracle hard nproc 65536
oracle soft nofile 1024
oracle hard nofile 65536
위의 4줄 추가하기
[root@localhost ~]# vi /etc/security/limits.conf
[root@localhost ~]# cat /etc/security/limits.conf
# /etc/security/limits.conf
#
#This file sets the resource limits for the users logged in via PAM.
#It does not affect resource limits of the system services.
#
#Also note that configuration files in /etc/security/limits.d directory,
#which are read in alphabetical order, override the settings in this
#file in case the domain is the same or more specific.
#That means for example that setting a limit for wildcard domain here
#can be overriden with a wildcard setting in a config file in the
#subdirectory, but a user specific setting here can be overriden only
#with a user specific setting in the subdirectory.
#
#Each line describes a limit for a user in the form:
#
#<domain> <type> <item> <value>
#
#Where:
#<domain> can be:
# - a user name
# - a group name, with @group syntax
# - the wildcard *, for default entry
# - the wildcard %, can be also used with %group syntax,
# for maxlogin limit
#
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
#
#<item> can be one of the following:
# - core - limits the core file size (KB)
# - data - max data size (KB)
# - fsize - maximum filesize (KB)
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open file descriptors
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of processes
# - as - address space limit (KB)
# - maxlogins - max number of logins for this user
# - maxsyslogins - max number of logins on the system
# - priority - the priority to run user process with
# - locks - max number of file locks the user can hold
# - sigpending - max number of pending signals
# - msgqueue - max memory used by POSIX message queues (bytes)
# - nice - max nice priority allowed to raise to values: [-20, 19]
# - rtprio - max realtime priority
#
#<domain> <type> <item> <value>
#
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
# End of file
oracle soft nproc 2048
oracle hard nproc 65536
oracle soft nofile 1024
oracle hard nofile 65536
SELinux 해제하기 (방화벽 해제하기)
해당 내용은 이미 접해 봤지만 내가 당시에 입력했던 내용으로는 enforcing 에서 permissive 관대해진다라는 뜻인데 참고한 블로그에서는 disabled 장애를 주다 두가지의 차이점을 찾아보면 아래의 블로그에서 공부를 해보는게 좋을 것으로 판단 된다.
(조금 내용에 대해 번역을 하자면 permissive는 경고를 주는 것이고 disabled는 그냥 비활성화 내용인 것 같다.
https://www.lesstif.com/ws/%EB%8F%99%EC%9E%91-%EB%AA%A8%EB%93%9C-48988478.html
동작 모드
www.lesstif.com
우선은 공부하는 단계이니 여러가지를 경험하는게 좋을 것 같으니 이번에는 disabled로 진행해보도록 하겠다.
[root@localhost ~]# vi /etc/selinux/config
[root@localhost ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled # < 이 부분을 수정한 것
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
위의 내용대로 일부분 설정은 완료 되었으니 이제 오라클 계정을 생성해보려고 한다.
반드시 해당 내용을 숙지해야하는 부분은 19c 당시 계정 생성을 했을때 모르고 따라하기만 했는데 무슨 차이점이 있는지를 반드시 판단해서 포스팅 해보도록 하겠다.
현재 11g 설치에 대한 참고 블로그에 대해서 내용을 파악하고 있는데 19c 참고 블로그와 다르게 명확한 설명을 해주고 있었다.
19c에서는 몇가지 설치경로를 할때 권한을 주고 이랬는데 11g 참고블로그에서는 설치경로 대신에 명확하게 권한설정 환경변수 등에 대해서 알려주었다. 틀은 19c로 했지만 제대로 된 공부를 알려주는 것은 현재의 블로그 같다.
(물론 이전의 블로그가 나쁘다는 것은 아니지만, 보다 친절한 내용 설명은 11g가 좋다는 뜻이다.)
유저생성
유저를 생성하고 패스워드 설정하기
[root@localhost ~]# groupadd dba
[root@localhost ~]# useradd -g dba oracle
[root@localhost ~]# passwd oracle
Changing password for user oracle.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
오라클 설치 경로
오라클 설치할 디렉토리 생성 후 방금 서비스계정으로 oracle에 계정 권한을 부여하기
[root@localhost ~]# mkdir -p /app/oracle
[root@localhost ~]# chown -R oracle:dba /app
[root@localhost ~]# chmod -R 775 /app
## 위의 내용중에 보면 mkdir -p /app/oracle 에대해서 생성을 하게 되었는데, 막상 변수에서는 /product/11.2.0/dbhome_1 이 부분이 존재하지 않았다. 그렇기에 cd /app/oracle 에 들어가서 ls를 입력하면 아무런 정보가 존재하지 않으므로 개인적으로 위의 내용을 더 추가하여 폴더를 생성하려고 한다.
11g 참고 블로그의 오점을 발견한 샘이다.
[oracle@localhost ~]$ mkdir -p /app/oracle/product/11.2.0/dbhome_1
이제 권한을 부여했으니 oracle에 대한 계정 접속 후 변수를 저장한다.
여기서 변수는 .bash_profile을 말한다.
[root@localhost ~]# su - oracle
위의 방법도 있지만 혹시 몰라 저장을 위해 종료 후 oracle 자체로 접속을 해서 진행했다.
변수 저장하기
11g 명령어
[oracle@localhost ~]$ vi .bash_profile
[oracle@localhost ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
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
# alias
alias ss='sqlplus / as sysdba'
19c 명령어와의 차이점이 있다면
export LANG=C 의 있고 없고의 차이점과
SID의 차이점이다.
NLS_LANG의 유/무
이 3가지의 차이점에 대해서 공부가 필요하다.
## 해당 LANG=C 의 경우는 언어팩을 말한다.
[oracle@localhost database]$ export LANG=C
[oracle@localhost database]$ export LC_ALL=C
또한 bash_profile 의 경우는 고정을 하는 것이지만, 세션에서 하는 export의 경우는 해당 세션만 진행 후 reboot를 하면 자동으로 풀린다고 보면 된다.
ORACLE 설치하기
나의 경우는 현재 home/oracle 에 파일을 옮겼는데 이곳은 계정폴더이지 이곳에서 설치를 하면 안된다.
우선은 보이는데로 filezilla든 MobaXterm이든 해당 폴더를 업로드 한 후 내가 설치할 폴더에 집어 넣어주면 되는데, 내가 설치할 곳은 /app/oracle/product/11.2.0/dbhome_1 이곳에 설치를 해주려고 한다.
[oracle@localhost ~]$ cd /home/oracle/
[oracle@localhost ~]$ ls
V17530-01_1of2.zip V17530-01_2of2.zip
위의 두 폴더는 원래 명칭과 다르기 때문에 직접 다운을 받은 사람들의 경우는 zip파일 명을 잘 파악할 수 있도록 한다.
현재 oracle 계정에 있기 때문에 mv를 이용해 목표하는 곳으로 옮겨준다.
그리고 애초에 이곳은 상대폴더 압축을 풀더라도 ./runInstaller 에 대한 권한은 없는 것으로 판단할 수 있다.
[oracle@localhost ~]$ cd /home/oracle/
[oracle@localhost ~]$ ls
V17530-01_1of2.zip V17530-01_2of2.zip
[oracle@localhost ~]$ mv /home/oracle/V17530-01_1of2.zip /app/oracle/product/11.2.0/dbhome_1/
[oracle@localhost ~]$ mv /home/oracle/V17530-01_2of2.zip /app/oracle/product/11.2.0/dbhome_1/
[oracle@localhost ~]$ cd $ORACLE_HOME
[oracle@localhost dbhome_1]$ ls
V17530-01_1of2.zip V17530-01_2of2.zip
압축풀기
[oracle@localhost dbhome_1]$ unzip V17530-01_1of2.zip
[oracle@localhost dbhome_1]$ unzip V17530-01_2of2.zip
# 11g의 경우에는 자동으로 database라는 폴더를 생성 후 해당 폴더 안으로 zip이 풀리게 된다.
# 19c와는 다른 상황이라고 보면 된다.
알집을 모두 풀었다면, 이제 설치를 해줘야 하는데, 19c 당시에는 x11 forwarding을 문제없이 해줬지만, 새로운 가상 환경인 jslee11g 에서는 설치가 되어 있지 않으므로 x11 forwarding을 진행해줘야 한다.
이전 블로그에 잘못 명시되어 있어서 수정 작업을 했지만, 그래도 이곳에서도 작성을 해보도록 하겠다.
# X11 환경을 설정
[root@localhost ~]# yum install xorg-x11-apps.x86_64
[root@localhost ~]# yum install xorg-x11-xauth.x86_64
[root@localhost ~]# yum install xorg-x11-server-Xorg.x86_64
또는
[root@localhost ~]# yum install xorg*
#xorg에 대한 모든 프로그램을 설치한다.
# ssh 환경 설정
[root@localhost ~]# vi /etc/ssh/sshd_config
[root@localhost ~]# cat /etc/ssh/sshd_config
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
[root@localhost ~]# xhost +
# 만약 이때 아래처럼 나올 경우
-bash: xhost: command not found
# 부족한 xorg를 설치한다던가 (xorg*를 했을 경우 할 필요는 없을듯 하다.)
[root@localhost ~]# echo $DISPLAY
# echo $DISPLAY를 입력시 아무런 내용이 나오지 않는다면, 설정이 잡혀있지 않다는 뜻이다.
# 그렇기에 export를 통해 display 주소를 입력해줘야 한다.
# 현재 0:0으로 xming을 통해 확인했으니
[root@localhost ~]# export DISPLAY=localhost:0.0
# localhost ip 주소 입력이 아닌 말그대로 그대로 localhost:0.0을 입력해주면 된다.
그리고 제대로 작동을 위해 리눅스 서버를 정상 종료 하고 다시 실행한다.
## 문제점이 하나 있었다면 이후 서비스 계정으로 접속 후 export DISPLAY=localhost:0.0 을 입력 후 reboot 작업을 하라고 하는데 reboot 후 발생되는 문제점은 바로 export 한 주소가 변경된다는 점이다! 이때 당황하지 마록 그냥 xclock 설치되어 있으니 실행 시켜보면 문제 없이 진행된다고 가정한다면 그냥 된다 보면된다. 나의 경우는 localhost:10.0으로 자동 변경되는데 문제 삼지 말고 되면 되는 거다.
문제는 해결되었으니 이제 오라클 11g를 설치하면 된다.
[oracle@localhost database]$ ls
doc install response rpm runInstaller sshsetup stage welcome.html
[oracle@localhost database]$ ./runInstaller
Starting Oracle Universal Installer...
finish 후 이때부터 설치가 진행되는데 절전모드로 인해 가상 환경이 풀린 경우가 있다. 이전에도 똑같은 문제가 발생된 적이 있었는데 이때를 위해 고정 아이피를 등록해주는게 좋다.
대역대 변경하기 (고정 ip 등록 방법)
기본적으로 네트워크 정보의 명령어는 ifconfig / ip addr
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.111.139 netmask 255.255.255.0 broadcast 192.168.111.255
ether 00:0c:29:00:e4:a3 txqueuelen 1000 (Ethernet)
RX packets 223441 bytes 25944518 (24.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 276675 bytes 50303191 (47.9 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 672428 bytes 303536781 (289.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 672428 bytes 303536781 (289.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:00:e4:a3 brd ff:ff:ff:ff:ff:ff
inet 192.168.111.139/24 brd 192.168.111.255 scope global ens33
valid_lft forever preferred_lft forever
gateway 정보 확인은 하지만 제대로 명시가 되지 않은 경우가 있다.
[root@localhost ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 0 0 0 ens33
link-local 0.0.0.0 255.255.0.0 U 1002 0 0 ens33
192.168.111.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
기본적으로 할당된 IP들이라 보면 되는데
네트쿠어크 서브넷 IP : 192.168.XXX.0
본체호스트와 통신을 위한 IP : 192.168.XXX.1
VMware 게이트웨이 : 192.168.xxx.2
그렇기에 나의 VMware gateway는 192.168.111.2
고정 IP 설정하기
[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# ls
ifcfg-ens33 ifdown-eth ifdown-post ifdown-Team ifup-aliases ifup-ipv6 ifup-post ifup-Team init.ipv6-global
ifcfg-lo ifdown-ippp ifdown-ppp ifdown-TeamPort ifup-bnep ifup-isdn ifup-ppp ifup-TeamPort network-functions
ifdown ifdown-ipv6 ifdown-routes ifdown-tunnel ifup-eth ifup-plip ifup-routes ifup-tunnel network-functions-ipv6
ifdown-bnep ifdown-isdn ifdown-sit ifup ifup-ippp ifup-plusb ifup-sit ifup-wireless
# 현재 나의 경우는 ens33으로 진행되므로 해당 부분을 수정해줘야 하는데 환경에 따라 "" 넣고 안넣고는
# 부여된 상황에 따라서 넣어줘야 한다.
# BOOTPROTO에서 dhcp 면 ip 자동할당이기 때문에 static 혹 manual로 변경하여 고정 ip로 사용한다.
# 두가지의 차이점은 명확하게 나오진 않았으나 static으로 사용하는 것을 추천하나 manaul로도 가능하다.
# 확인해본 결과 둘의 큰차이점은 없다.
# BOOTPROTO="dhcp" 에서 "manual" 로 변경하기
# 마지막 이후에 IPADDR="부여받은IP"
# NETMASK란 IP주소에 대한 네ㅡ워크 아이디와 호스트 아이디를 구분하기 위해 사용되며,
# 정확한 표현은 서브넷 마스크(Subnet Mask)
# NETMASK="255.255.255.0"
# GATEWAY는 공유기의 아이피를 말하는 것인데 환경마다 다르며 자신의 공유기 아이피를 입력하되
# 가상환경의 경우에는 아이피 주소 뒤에 .2로 마무리 되는 것으로 파악된다.
# GATEWAY="192.168.111.2"
[root@localhost network-scripts]# vi ifcfg-ens33
[root@localhost network-scripts]# cat ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="manual"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="7808acf4-84c6-42b6-907e-e85db1828311"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.111.139"
NETMASK="255.255.255.0"
GATEWAY="192.168.111.2"
설정이 완료 되었다면, systemctl restart network 를 통해 네트워크를 재기동 해준다.
하지만, 그럼에도 설치 중에 문제가 발생되었는데 첫번째로 드는 생각은 절전모드 발생으로 인해서 그런것이다 생각하고 생성된 디렉토리 삭제 뿐 아니라 oraInventory 또한 삭제를 해준 후 재설치를 진행해주는게 좋은 상황이다. 라고 했지만 이점이 문제가 되는 것은 아니었다.
위와 같은 상황이 발생되었다면 다음 단계로 진행을 해주면 되는데, MobaXterm의 서비스 계정은 Oracle 설치로 인해 창을 끌 수 없는 상황이니 새로운 탭으로 서비스계정에 접속을 한 후 문제점인 ins-ctx.mk를 찾아 들어가줍니다.
[oracle@localhost ~]$ cd /app/oracle/product/11.2.0/dbhome_2/ctx/lib/
[oracle@localhost lib]$ vi ins_ctx.mk
# 해당 문장을 찾는다.
ctxhx: $(CTXHXOBJ)
$(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
# 이후 수정을 한 후 저장한다.
ctxhx: $(CTXHXOBJ)
-static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
이후 X server:0.0에서 실행 중이던 것을 Retry 해준다.
하지만 추가적으로 문제가 발생되니 해당 문제점에 다시 들어가본다.
[oracle@localhost ~]$ cd /app/oracle/product/11.2.0/dbhome_2/sysman/lib/ins_emagent.mk
[oracle@localhost lib]$ vi ins_emagent.mk
#아래의 문장을 찾는다.
$(SYSMANBIN)emdctl:
$(MK_EMAGENT_NMECTL)
#아래의 문장으로 수정해준다.
$(SYSMANBIN)emdctl:
$(MK_EMAGENT_NMECTL)-lnnz11
이후 문제 없이 설치가 되었다가 아래와 같이 나오는데 root 계정으로 아래의 내용을 실행 시켜주면 된다.
[root@localhost ~]# /app/oraInventory/orainstRoot.sh
Changing permissions of /app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /app/oraInventory to dba.
The execution of the script is complete.
[root@localhost ~]# /app/oracle/product/11.2.0/dbhome_2/root.sh
Running Oracle 11g root.sh script...
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /app/oracle/product/11.2.0/dbhome_2
Enter the full pathname of the local bin directory: [/usr/local/bin]: #Enter 누르기
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.sh script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
이후 설치를 완료 한 후 환경변수를 적용합니다.
[oracle@localhost ~]$ source ~/.bash_profile
리스너 생성
[oracle@localhost ~]$ netca
-bash: netca: command not found
# 위와 같이 command not found 가 발생된다면?
# 오라클 소프트웨어가 설치된 경로로 들어가서 cd bin을 한다.
# 특이점은 참고블로그는 설치를 dbhome_2로 해놓고 작성상 dbhome_1 에서 실행을 시켰는지 의문이다.
# 설치상 dbhome_2에 있었기 때문에 해당 디렉토리로 들어가서 bin에서 ./netca를 실행해주었다.
[oracle@localhost /]$ cd app/oracle/product/11.2.0/dbhome_2
[oracle@localhost dbhome_2]$ cd bin
[oracle@localhost bin]$ ./netca
Oracle Net Services Configuration:
데이터베이스 생성
[oracle@localhost ~]$ dbca
# 위와 같이 되어 있어야 하나, 아마도 현재 .bash_profile 에서 수정을 해야할 것으로 보여진다.
# 우선은 안되고 있으니 이전 리스터 netca 설치와 마찬가지로 dbhome_2/bin 에서 실행하고자 한다.
[oracle@localhost ~]$ cd /app/oracle/product/11.2.0/dbhome_2/bin
[oracle@localhost bin]$ ./dbca
현재 bash_profile에서의 sid 설정은 orcl 로 해두었기 때문에
orcl로 해두었는데 19c 설치 당시에는 ORACLE_SID=oracle19 로 해두었다.
이는 변경을 하면 글로벌 데이터베이스 네임도 동일하게 해줘야 하는 것으로 보여진다.
하지만 현재는 orcl 로 해두었으니 이에 맞춰서 입력을 해준다.
관리자 전체 계정에 동일 패스워드를 사용한다는 옵션 체크 후 패스워드 설정
쉬운 비밀번호 같은데 그냥 하겠냐? yes
나의 경우는 컴퓨터가 느려서 그런지 화면 창이 뜨지 않는 현상이 발생되었다.
아래처럼 나와야하는데 스크립트가 연결이 안되어서 한참을 기다리다 눈대중으로 ok 버튼을 눌렀더니 설치 환경이 나왔는데 이 마저도 제대로 나오지 않아서(다음 단계는 설치 단계니 다른 것을 누를 필요가 없다.)기다리기만 했다.
기다리고 난뒤 아래와 같이 되었다.
데이터베이스 및 리스너 실행
현재 11g의 경우는 bash_profile에 allas로 sysdba로 접속하는 별칭을 주었기에 ss만 입력해도 된다.
## 주의
현재 참고한 블로그에서 오류가 있었는데 설치경로를 설정 당시에는 dbhome_1로 해놓고 설치시 dbhome_2로 해서 그대로 따라하였다가, bash_profile 에서의 path 부분이 인식을 못해서 netca라든가 dbca가 먹히지 않은 것이 발생되었다.
이럴때는 bash_profile에서의 PATH부분을 보고 수정을 해준다던지 아니면 수작업으로 dbhome_2로 들어가서 하던지 선택해야한다.
# 기존 bash_profile
[oracle@localhost ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
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
# alias
alias ss='sqlplus / as sysdba'
# 변경된 path
[oracle@localhost ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
export ORACLE_BASE=/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_2
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
# alias
alias ss='sqlplus / as sysdba'
완료
[oracle@localhost ~]$ ss
SQL*Plus: Release 11.2.0.1.0 Production on Mon Apr 24 15:32:56 2023
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>