Oracle Database 12c Release 2 (12.2.0.1) 를 RHEL 계열 리눅스에 GUI 설치 프로그램으로 설치하고 systemd 에 등록한다. 설치 프로그램 · netca · dbca 가 X 화면을 요구하므로 X 포워딩이나 VNC 로 붙어 진행한다. 2022년 테스트 됨.
위 버전과 저장소는 오래된 것이라 저장소가 존재하지 않을 수 있다.
현행 버전 설치는 Oracle AI Database 26ai Free 설치 가이드 를 본다.
sudo yum -y install binutils compat-libcap1 gcc gcc-c++ glibc glibc.i686 glibc-devel glibc.i686 ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++l7.i686 libstdc++-devel libstdc++-devel.i686 compat-libstdc++-33 compat-libstdc++-33.i686 libXi libXi.i686 libXtst libXtst.i686 make sysstat
설치 중 유효성 검사에서 부족하다고 나오는 값을 /etc/sysctl.conf 에 넣는다.
net.ipv4.conf.all.arp_notify = 1
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048579
sudo sysctl -p
/etc/pam.d/login 의 session required pam_namespace.so 다음 줄에 한 줄을 넣는다.
session required pam_limits.so
/etc/security/limits.conf 맨 아래에 oracle 사용자 제한을 넣는다.
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
경로는 사정에 맞게 바꾼다.
sudo groupadd dba
sudo useradd -m -g dba oracle
sudo passwd oracle
sudo mkdir -p /u01/app/oracle
sudo chown -R oracle:dba /u01/app
sudo chmod -R 775 /u01
oracle 사용자의 ~/.bash_profile 맨 아래에 넣는다.
umask 022
export ORACLE_BASE=/u01/app/oracle
설치 파일을 둘 임시 디렉터리를 만들고 12c Release 2 zip 을 옮겨 둔다.
su - oracle
mkdir ~/tmp
압축을 푼 디렉터리에서 설치 프로그램을 실행한다. GUI 가 뜬다.
cd ~/tmp
unzip linuxx64_12201_database.zip
./database/runInstaller
설치가 끝나면 ~/.bash_profile 에 홈과 경로를 더한다.
export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
source ~/.bash_profile
oracle 사용자로 netca 를 실행해 Listener 를 만든다. GUI 가 뜬다.
netca
ss -napt # 1521 포트가 열렸는지 본다
tnsping localhost
방화벽이 켜져 있으면(firewall-cmd --state) 포트를 연다.
firewall-cmd --add-port=1521/tcp --permanent
firewall-cmd --reload
oracle 사용자로 dbca 를 실행하고 Create database 를 골라 진행한다. GUI 가 뜬다.
dbca
생성이 끝나면 /etc/oratab 에서 SID 줄 끝의 N 을 Y 로 바꾼다. dbstart 가 이 값을 보고 자동 기동 대상을 고른다.
orcl:/u01/app/oracle/product/12.2.0/dbhome_1:Y
~/.bash_profile 에 SID 를 넣고 접속을 확인한다.
export ORACLE_SID=orcl
source ~/.bash_profile
sqlplus /nolog
connect / as sysdba
select instance_name, host_name, version, startup_time from v$instance;
exit
root 권한으로 환경 파일과 유닛 두 개를 만든다. 파일 이름의 orcl 은 SID 다.
/etc/sysconfig/orcl.oracledb
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
ORACLE_SID=orcl
/usr/lib/systemd/system/orcl@lsnrctl.service
[Unit]
Description=Oracle Net Listener
After=network.target
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/orcl.oracledb
ExecStart=/u01/app/oracle/product/12.2.0/dbhome_1/bin/lsnrctl start
ExecStop=/u01/app/oracle/product/12.2.0/dbhome_1/bin/lsnrctl stop
User=oracle
[Install]
WantedBy=multi-user.target
/usr/lib/systemd/system/orcl@oracledb.service
[Unit]
Description=Oracle Database service
After=network.target lsnrctl.service
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/orcl.oracledb
ExecStart=/u01/app/oracle/product/12.2.0/dbhome_1/bin/dbstart $ORACLE_HOME
ExecStop=/u01/app/oracle/product/12.2.0/dbhome_1/bin/dbshut $ORACLE_HOME
User=oracle
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable orcl@lsnrctl orcl@oracledb
su oracle 뒤 echo $PATH 에 $ORACLE_HOME/bin 이 없으면 .bash_profile 이 읽히지 않은 것이다. login · sshd 가 직접 연 로그인 셸이 아니라 대화식 셸로 간주돼 .bash_profile 을 읽지 않기 때문이다. 이때는 같은 값을 ~/.bashrc 에 넣는다.
umask 022
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=orcl