본문 바로가기
인프라 7기/Oracle

Oracle 19c 설치 매뉴얼

by 킹버거 2023. 4. 17.

-- CentOS7 (64bit) 환경에 Oracle 19c 설치

- CentOS7 최소 사양
Memory 2GB
Processors 1
Hard Disk(SCSI) 60GB
CD/DVD (IDE) Auto detct // Linux 이미지
Network Adapter Bridged(Automatic)
Display Auto detect

- Linux 설치 매뉴얼 
step 1) 방화벽 비활성화 > #ntsysv > firewalld.service * 제거 
step 2) /etc/rc.d/rc.local 파일에 다음 내용 추가 > rdate -s time.bora.net
step 3) /etc/rc.d/rc.local 파일 권한 변경 > #chmod u+x /etc/rc.d/rc.local 
* CentOS7은 /etc/rc.d/rc.local 파일에 실행 권한이 없다. 그러므로 반드시 추가해준다. 
step 4) selinux 비활성화 > /etc/selinux/config > #SELINUX=disabled 
+ 오라클 자동 실행 
step 5) /etc/oratab 파일 수정 > '$ORACLE_SID:$ORACLE_HOME:Y' 추가 
step 6) /etc/rc.d/rc.local 파일에 다음 내용 추가 > su - ora19c -c /app/ora19c/19c/bin/"lsnrctl start"
su - ora19c -c /app/ora19c/19c/bin/dbstart

- Oracle 원본 파일 다운로드 
FTP를 통해 오라클 원본 파일 'LINUX.X64_193000_db_home.zip' Download
step 1) #yum install ftp [FTP 설치]
step 2) 경로 이동 cd /app/ora19c/19c
step 3) 'LINUX.X64_193000_db_home.zip' Download
ftp [Server IP] ftp 192.168.10.11
해당 파일이 존재하는 디렉터리로 이동 cd /home2/data/down/DB/DBMS/19c
get [파일명] get LINUX.X64_193000_db_home.zip

- Linux 환경 설정
step 1) Oracle 관리 계정 및 그룹 생성
<환경 요약>
호스트명, IP: ora19c, 192.168.10.115
설치 계정: ora19c (UID: 1900)
소속 그룹: dba (GID: 1900)
홈 디렉터리: /home/ora19c
$ORACLE_BASE: /app/ora19c
$ORACLE_HOME: /app/ora19c/19c 

#groupadd -g 1900 dba
#useradd -g dba -u 1900 ora19c
#passwd ora19c
****** 관리자 접속을 위한 패스워드 파일 생성 
#orapwd file=$ORACLE_HOME/dbs/orapwDB19 password=admin1234 force=y format=12
#sqlplus sys/admin1234@dal as sysdba 는 외부에서 접속할 때 !

orapwd 
file=[패스워드파일]
force=[y/n]
* 패스워드 파일이 있을 경우 강제로 생성한다.
format=[호환버전]
* 12 이하로 지정하면 패스워드에 특수문자 불필요
entries=[인원수]
****** sqlplus / as sysdba는 자기 서버에 들어갈 때만 !

#mkdir -p /app/ora19c/19c
#mkdir -p /app/oraInventory
$ORACLE_BASE는 oraInventory 디렉터리에 대한 권한이 없으므로 
ora19c 계정이 /app 디렉터리에 대한 소유권과 쓰기 권한을 갖도록 설정한다.
#chown -R ora19c.dba /app/ora19c
#chown -R ora19c.dba /app/oraInventory
#chgrp -R dba /app
#chmod -R 775 /app

step 2) 리눅스 설정 
#vi /etc/hosts > 다음 내용 추가
192.168.10.115 DB19.itclass.co.kr DB19

step 3) 추가 패키지 설치 - 오라클 설치에 반드시 필요
#yum -y install ksh libaio-devel compat-libcap1 compat-libstdc++-33 glibc-devel libstdc++-devel gcc-c++
#yum install -y https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm 
만약 해당 rpm 파일이 이미 존재한다면, #rpm -Uvh oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm 
step 4) ora19c 계정 설정
- ora19c 계정으로 로그인
- .bash_profile 설정 
#vi.bash_profile 
# oracle setup
export ORACLE_OWNER=ora19c
export ORACLE_BASE=/app/ora19c
export ORACLE_HOME=/app/ora19c/19c
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_SID=DB19
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_HOSTNAME=DB19.itclass.co.kr
export TMP=/tmp
export TMPDIR=$TMP
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME:/usr/bin:.
- ora19c 계정으로 재로그인 후 설정 확인
#env |grep ORACLE

- 설치용 패키지 준비 [Oracle Database 19c]
step 1) 압축 해제
#unzip LINUX.X64_193000_db_home.zip

step 2) Installer 실행 
VMWARE 터미널에서 실행해야 함
#cd /app/ora19c/19c
설치 파일은 database 디렉터리에 생성된다.
#./runInstaller

step 3) Universal Installer
[설치 과정]
[구성 옵션] 단일 인스턴스 데이터베이스 생성 및 구성
[시스템 클래스] 데스크톱 클래스
[일반 설치 구성] Oracle Base: /app/ora19c
데이터베이스 파일 위치: /app/ora19c/oradata
전역 데이터베이스 이름: DB19.itclass.co.kr[혹은 DB19]
* 컨테이너 데이터베이스로 생성 절대 체크해서는 안 됨.
[인벤토리 생성] 인벤토리 디렉토리: /app/oraInventory
[루트 스크립트 실행 구성] 자동으로 구성 스크립트 실행 > "루트" 사용자 인증서 사용 > 비밀번호 
... 
[완료]

- 사용자 계정 생성 
step 1) 관리자 접속
$ sqlplus /as sysdba 
step 2) 테이블스페이스 확인
- USERS, TEMP 테이블 스페이스를 확인한다.
SQL> SELECT tablespace_name, status FROM dba_tablespaces;
step 3) 접속 가능한 사용자를 확인한다.
SQL> SELECT username, account_status FROM dba_users
  2> WHERE account_status = 'OPEN';
step 4) st 계정 생성 
SQL> CREATE USER [사용자]
  2> IDENTIFIED BY [암호]
  3> DEFAULT TABLESPACE [테이블스페이스]
  4> TEMPORARY TABLESPACE [테이블스페이스]
  5> QUOTA UNLIMITED ON [테이블스페이스];
step 5) 권한 부여
SQL> GRANT connect, resource TO st;
SQL> GRANT create view TO resource;
SQL> GRANT execute ON dbms_crypto TO resource;

step 6) 접속 확인 
- 추가한 사용자로 접속을 확인한다. 
$ sqlplus 사용자/암호

-- Oracle Network 설정과 접속
<시스템 구성>
1. 오라클 서버
IP: 192.168.10.115(oracle), 192.168.10.11(dal)
HOST명: DB19.itclass.co.kr
ORACLE_OWER: ora19c
ORACLE_HOME: /app/ora19c/19c
TNS_ADMIN: $ORACLE_HOME/network/admin
* $TNS_ADMIN은 listener.ora 파일을 저장하는 위치를 지정하는 환경변수로 $ORACLE_HOME 아래에 위치한다. 
ORACLE_SID: DB19

2. 리눅스 클라이언트
IP: 192.168.10.111
ORACLE_HOME: /app/ora19c/19c

3. 윈도우 클라이언트
IP: 192.168.10.110
ORACLE_HOME: /app/ora19c/19c

------------------------------------------------
-- 오라클 서버 설정 : 리스너(Listener) 구동
- listener.ora 파일의 구성 - 자동생성 
$ vi $TNS_ADMIN/listener.ora

LISTENER = 
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DB19.itclass.co.kr)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER = 
(SID_LIST = 
(SID_DESC = 
(SID_NAME = DB19) * 수정
(ORACLE_HOME = /app/ora19c/19c) * 수정
)
)

- Default 리스너명은 listener이다.
- HOST: 서버의 호스트명이나 IP 주소
- PORT: TCP port 번호
- SID_NAME: Instance명
- 클라이언트는 반드시 <호스트명>에 해당하는 <IP>에 접근 가능해야 한다.

- lsnrctl 명령 
$ lsnrctl [옵션] <리스너명>
* 리스너명을 적어주지 않으면 Default 리스너인 listener이 작동됨.
[옵션]
- start: 리스너 시작
- stop: 리스너 종료
- status: 리스너의 상태를 출력 (listener.ora 파일 내용 확인 가능)
- reload: listener.ora 다시 읽음 

-- Linux Client 설정과 접속 
- Local naming 방식에서 sqlnet.ora 파일의 구성 : 자동 생성 
NAMES.DIRECTORY_PATH= (<변환방식>)
& vi $TNS_ADMIN/sqlnet.ora
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

- Local naming 방식에서 tnsnames.ora 파일의 구성 
<TNS 명> = 
(DESCRIPTION = 
(ADDRESS = (PROTOCOL = TCP)(HOST = <IP 주소>)(PORT = <port 번호>))
(CONNECT_DATA = (SID = <서버의 SID>))
)

- TNS 명: 접속 서버의 네트워크 이름
호스트명은 각 클라이언트가 임의로 정한다 (DNS 도메인명과는 무관하다.)
- HOST: 오라클 서버의 IP 주소
- PORT: 접속 서버의 리스너 port 번호
- SID: 접속 오라클 서버의 SID
$ vi $TNS_ADMIN/tnsnames.ora

[실습]
$ vi $TNS_ADMIN/tnsnames.ora
oracle = 
(DESCRIPTION = 
(ADDRESS = (PROTOCOL = tcp)(HOST = 192.168.10.115)(port = 1521))
(CONNECT_DATA = (SID = DB19))
)
dal = 
(DESCRIPTION = 
(ADDRESS = (PROTOCOL = tcp)(HOST = 192.168.10.11)(port = 1521))
(CONNECT_DATA = (SID = DB19))
)
$ tnsping oracle 혹은 [tnsping 192.168.10.115] < 권장x 
$ tnsping dal 혹은 [tnsping 192.168.10.11] < 권장x
$ sqlplus php/php@oracle
$ sqlplus php/php@dal

-- 윈도우 클라이언트 설정과 접속 
step 1) 윈도우도 TNS_ADMIN 디렉터리에 파일이 위치한다.
sqlnet.ora 파일 편집
tnsnames.ora 파일 편집
step 2) 오라클 서버와 연결 확인 
step 3)Windows용 sqlplus를 이용하여 DB 접속 
#sqlplus st01/st01@dal 
#sqlplus st01/st01@oracle 

-- Oracle instance client 설치 
<설치 과정>
step 1. 오라클 인스턴스 클라이언트 설치 
step 2. 접속 환경 설정 
step 3. 접속 테스트

step 1) 오라클 인스턴스 클라이언트 설치 
https://www.oracle.com/kr/index.html에서 다음 파일들을 다운받는다.
'oracle-instantclient19.5-basic-19.5.0.0.0-1.x86_64.rpm'
'oracle-instantclient19.5-devel-19.5.0.0.0-1.x86_64.rpm'
* /usr/lib/oracle/19.5가 ORACLE_BASE 디렉터리로 설치된다.
# rpm -Uvh oracle-instantclient19.5-basic-19.5.0.0.0-1.x86_64.rpm 
# rpm -Uvh oracle-instantclient19.5-sqlplus-19.5.0.0.0-1.x86_64.rpm
* 리눅스 환경 그룹이 [최소 설치]인 경우 libaio 패키지 설치가 필요하다.
#yum install -y libaio
* sqlnet.ora 파일과 tnsnames.ora 파일을 생성한다.
#mkdir -p /usr/lib/oracle/network/admin/
#vi /usr/lib/oracle/network/admin/sqlnet.ora
NAMES.DIRECTORY_PATH=(TNSNAMES)
#vi /usr/lib/oracle/network/admin/tnsnames.ora
ora115 = 
(DESCRIPTION =
(ADDRESS = (PROTOCOL = tcp)(HOST = 192.168.10.115)(port = 1521))
(CONNECT_DATA = (SID = DB19))
 )
step 2) 접속 환경 설정 
* 각 사용자의 .bash_profile에 다음을 추가한다. 
# oracle install
export TNS_ADMIN=/usr/lib/oracle/network/admin
export LD_LIBRARY_PATH=/usr/lib/oracle/19.5/client64/lib/oracle/19
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
(또는 AMERICAN_AMERICA.KO16MSWIN949)
* 또는 동일한 설정을 /etc/profile에 설정할 수도 있다.
모든 리눅스 계정에서 오라클 접속이 가능하다.

step 3) 접속 테스트
* 접속을 확인한다.
# sqlplus 계정/패스워드@TNS명