[Oracle Database 19c] restart

DB 2023. 5. 25. 16:57

상황

oracle database 19c 를 centos 7에 설치 후 

- @설치 참고: https://oracle-base.com/articles/19c/oracle-db-19c-installation-on-oracle-linux-7

잘 사용하다가 docker 를 설치하기 위해 시스템을 재부팅했더니 oracle 이 꺼져있었다.

 

따라서 위 설치 참고 링크에서 

installation 이 완료 된 후 database 및 listener 를 실행하기 위한 start_all.sh 를 만들어서 실행 시켰다.

 

방법

모든 작업은 oracle 을 설치할때 생성한 oracle 계정으로 실행되었다.

1. /home/oracle/scripts 에 

설치했을 때의 ~/.bash_profile 을 참고하여 setEnv.sh 파일을 생성하고,

- setEnv.sh

더보기
cat > /home/oracle/scripts/setEnv.sh
# Oracle Settings
export TMP=/tmp
export TMPDIR=$TMP

export ORACLE_HOSTNAME=ol7-19.localdomain
export ORACLE_UNQNAME=cdb1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORA_INVENTORY=/u01/app/oraInventory
export ORACLE_SID=cdb1
export PDB_NAME=pdb1
export DATA_DIR=/u02/oradata

export PATH=/usr/sbin:/usr/local/bin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

 

2. start_all.sh, stop_all.sh 파일을 생성 한 후 실행권한을 주었다.

- start_all.sh

더보기
cat > /home/oracle/scripts/start_all.sh
#!/bin/bash
. /home/oracle/scripts/setEnv.sh

export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES

dbstart $ORACLE_HOME

 

 

- stop_all.sh

더보기
cat > /home/oracle/scripts/stop_all.sh
#!/bin/bash
. /home/oracle/scripts/setEnv.sh

export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES

dbshut $ORACLE_HOME

 

- 실행 권한 주기

chown -R oracle:oinstall /home/oracle/scripts
chmod u+x /home/oracle/scripts/*.sh

 

3. ORACLE_HOME 이 잘 세팅되어있는지 확인해보고, 값이 없으면 bash_profile을 다시 적용해주었다.

> echo $ORACLE_HOME
설정해 두었던 /u01/app/oracle/product/19.0.0/dbhome_1 이 나오지 않는 경우

> source ~/.bash_profile

 

4. /etc/oratab 파일을 listener 와 database 를 실행하도록 확인 후 수정해주었다.

SOLARIS 제외한 UNIX platform 에선 ORATAB=/etc/oratab 이며,

$ORACLE_SID:$ORACLE_HOME:<N|Y|W>
example> main:/usr/lib/oracle/emagent_10g:Y

W 는 dbstart 가 ASM 인스턴스가 돌아간 후에 database 가 자동 시작되게 하는 거라고 한다.

 

 

5. 확인작업으로 

ps -ef | grep pmon 을 통해 oracle database 가 돌 때 같이 도는 oracle process monitor 가 작동중인지 확인했으며,

lsntctl status 를 통해 리스터의 현 상태를 확인해 볼 수 있다.

sqlplus / as sysdba 로 접속해볼 수도 있다.

 

상황

oracle 은 동작하는데 DBeaver client 에서 접속이 안될때,

- @oracle 접속 안되는 이유: https://jhnyang.tistory.com/entry/DB-Sql-developer-%EC%97%90%EB%9F%AC-The-Network-Adapter-could-not-establish-the-connection-%EC%9B%90%EC%9D%B8%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0%EB%B2%95

SID, Service Name 설정 및 방화벽 설정을 차례로 체크해보다가 방화벽에 의한 것임을 알고 

방화벽에 1521 포트를 열어주었다.

> systemctl status firewalld
> firewall-cmd --permanent --zone=public --add-port=1521/tcp
> firewall-cmd --reload
> firewall-cmd --permanent --zone=public --list-ports
1521/tcp

 

블로그 이미지

uchacha

개발자 일지

,