Oracle
- OracleDB는 리눅스 환경과 윈도우 환경을 지원한다.
- 일반적으로 개발환경 구축시에는 어떤 운영체제를 사용해도 상관없으나, 서비스용 데이터베이스 구축 시에는 리눅스 환경으로 구축한다
CentOS7 가상머신 생성(Virtualbox)
- 가상머신의 이름은 별도 제한은 없으나 이름에 게스트 운영체제의 이름을 넣으면 머신 종류가 자동으로 설정된다. 종류가 제대로 설정되지 않으면 가상머신이 정상 구동되지 않으므로 주의!!
- 메모리는 기본값이 2048MB이나 오라클 데이터베이스가 최소 요구하는 값이 4096mb이므로 컴퓨터 사양에 따라 적절하게 4096 이상 녹색바의 범위 내에서 설정한다
- CPU는 실습 중에는 특별히 조정하지 않아도 문제는 없다
- 자동 파티셔닝으로 운영체제를 설치하기 때문에 스왑 파티셔닝 사이즈에 맞게 적절히 저장공간을 크게 잡는다
- 가상 HDD의 경우 미리 할당 옵션을 사용하지 않는 경우 가상머신에서 저장하는 만큼 사이즈가 커지는 형태로 동작한다
- 생성한 가상머신의 설정으로 이동한다
- 설치 이미지 선택
- 네트워크는 어댑터에 브리지로 선택
가상 머신을 호스트 PC와 연결 된 네트워크에 연결한다
- 언어는 영어로 진행한다
- 머신의 타임 존 설정
- 시간은 네트워크 설정 후 자동으로 잡히므로 그대로 둔다
- 파티셔닝은 자동으로 설정한다.
설정을 바꾸지 말고 그대로 done 눌러서 나온다
- 호스트 네임은 여러 서버가 있는 환경에서 주소를 대신할 수 있는 서버의 별명으로 볼 수 있다
- 위의 메뉴를 체크하면 가상머신 시작마다 자동으로 네트워크를 활성화해준다.
- 관리자 계정인 root는 기본 활성되는 계정이기 때문에 패스워드를 별도로 초기화 해줘야 한다
- 설치 과정이 끝나면 버튼을 클릭
- 재시작
- 먼저 계정을 입력 후 패스워드를 입력한다.
- 패스워드 입력해도 보이지 않으므로 정확하게 입력하고 엔터
- 가상머신의 IP 주소 조회
- virtualbox 가상머신의 기본 네트워크 장비인 enp0s3에서 inet 항목의 IP 주소값을 확인한다.
IP 주소 수동 설정(NMTUI)
- 리눅스의 터미널 환경에서 사용하는 네트워크 설정도구는 여럿 있으나 centos는 NMTUI를 기본으로 사용한다
- 첫번째 메뉴 edit a connection 선택
- enp0s3의 설정을 수정하기 위해 edit으로 방향키를 눌러 이동 후 선택한다.
- IPv4 항목의 automatic을 선택한다
- 수동으로 설정값을 변경
- addresses : 수동으로 고정할 IP 주소
- gateway : 게이트웨이 장비의 주소를 적는다. 일반적으로 공유기의 주소
- dns : ISP의 DNS나 유명 DNS 서버를 입력한다. 어떤걸 적어도 무관
- 그냥 설정값 한번 켜고 끄고 back으로 나온다
- 핑으로 신호 오가는 것 체크
- 중지는 컨트롤 + C
세션 추가
시스템 업데이트 & GNOME Desktop 설치
[root@oracleDB ~]# yum update -y && yum group install "GNOME Desktop" -y |
- yum update -y : 시스템을 최신상태로 업데이트
- yum group install "GNOME Desktop" -y : 그룹 패키지 GNOME Desktop 서치
- -y 옵션은 설치 과정에서 확인하는 단계를 생략하는 옵션이다
오라클 관련 패키지 사전 설치
- mobaxterm에서 드래그해서 블록된 내용은 자동 복사된다
- 붙여넣기 기본설정은 우클릭이다
[root@oracleDB ~]# 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 |
커널 설정
- 기본의 리눅스 커널 설정은 일반 사용에는 문제가 없지만 데이터베이스와 같은 대량의 파일을 접근하고 사용하는 환경에는 제약이 있다. 필수는 아니지만 운영목적인 경우 커널의 제한값을 완화시킬 필요가 있다
[root@oracleDB ~]# MEMTOTAL=$(free -b | sed -n '2p' | awk '{print $2}') |
[root@oracleDB ~]# SHMMAX=$(expr $MEMTOTAL / 2) |
[root@oracleDB ~]# SHMMNI=4096 |
[root@oracleDB ~]# PAGESIZE=$(getconf PAGE_SIZE) |
[root@oracleDB ~]# cat > /etc/sysctl.d/50-oracle.conf << EOF fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmmax = $SHMMAX kernel.shmall = $(expr \( $SHMMAX / $PAGESIZE \) \* \( $SHMMNI / 16 \)) kernel.shmmni = $SHMMNI kernel.sem = 250 32000 100 128 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 = 1048576 EOF |
- 위의 명령어는 cat ~ EOF까지 한번에 복사해서 입력한다.
- 마지막 EOF 뒤에는 공백같은 필요없는 문자가 붙으면 안된다.
[root@oracleDB ~]# sysctl --system |
* Applying /usr/lib/sysctl.d/00-system.conf ...
* Applying /usr/lib/sysctl.d/10-default-yama-scope.conf ...
kernel.yama.ptrace_scope = 0
* Applying /usr/lib/sysctl.d/50-default.conf ...
kernel.sysrq = 16
kernel.core_uses_pid = 1
kernel.kptr_restrict = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.conf.all.promote_secondaries = 1
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
* Applying /etc/sysctl.d/50-oracle.conf ...
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmax = 1986512896
kernel.shmall = 124156928
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
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 = 1048576
* Applying /usr/lib/sysctl.d/60-libvirtd.conf ...
fs.aio-max-nr = 1048576
* Applying /etc/sysctl.d/99-sysctl.conf ...
* Applying /etc/sysctl.conf ...
사용자 그룹 / 계정 생성
[root@oracleDB ~]# i=54321; for group in oinstall dba oper backupdba dgdba kmdba asmdba asmoper asmadmin racdba; do groupadd -g $i $group; i=$(expr $i + 1) done |
- oracle 서비스 관리 그룹 생성
- 하이라이트 부분을 한번에 복사해서 붙여넣기
[root@oracleDB ~]# useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba,racdba -d /usr/oracle oracle |
- oracle 서비스 관리 계정 생성
[root@oracleDB ~]# passwd oracle |
Changing password for user oracle.
New password: 1234 (안보임)
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 1234 (안보임)
passwd: all authentication tokens updated successfully.
GUI 환경 활성화
- GUI 환경을 기본값으로 설정
[root@oracleDB ~]# systemctl set-default graphical.target |
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
[root@oracleDB ~]# reboot |
환경 변수 설정
- oracle 계정에 서비스에 필요한 환경변수를 설정한다.
[oracle@oracleDB ~]$ su root -l |
Password: 1234 (root계정 패스워드)
Last login: Tue Nov 28 16:21:48 KST 2023 from 192.168.7.200 on pts/0
- root 계정으로 전환
오라클 도구 설치 경로 생성 / 설정
[root@oracleDB ~]# mkdir -p /u01/app/oracle |
- 생성된 경로는 root가 생성했기 때문에 root계정의 소유이다
- oracle 서비스 관리는 oracle 계정으로 해야하기 때문에 원활한 작업을 위해 oracle로 소유권을 바꿔준다
[root@oracleDB ~]# chown -R oracle:oinstall /u01/app |
- 설치 경로에 대한 권한을 설정
[root@oracleDB ~]# chmod -R 755 /u01 |
오라클 설치
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
Database Software Downloads | Oracle
Run the Oracle Database Enterprise Edition Container Image with Docker Contains Oracle Database Enterprise Edition 21c running on Oracle Linux 7. Ideal for macOS, Linux, and other platforms. Use the following pull command for the latest: docker pull contai
www.oracle.com
ZIP -> 수동 설치
RPM -> 자동이지만 커스텀 불가
커널 설정값 수정
- 계정은 root로 로그인
login as: root
root@192.168.7.231's password: 1234
[root@oracleDB ~]# nano /etc/pam.d/login |
- 파일의 하단에서 아래값의 위치를 찾아 하이라이트 된 부분의 내용을 추가한다.
GNU nano 2.3.1 File: /etc/pam.d/login Modified
session required pam_selinux.so open
session required pam_namespace.so
session required pam_limits.so
session optional pam_keyinit.so force revoke
session include system-auth
session include postlogin
-session optional pam_ck_connector.so
File Name to Write: /etc/pam.d/login
^G Get Help M-D DOS Format M-A Append M-B Backup File
^C Cancel M-M Mac Format M-P Prepend
- 컨트롤 + O(저장) → 엔터 → 컨트롤 + x(종료)
[root@oracleDB ~]# nano /etc/security/limits.d/50-oracle.conf |
- 아래 항목의 값들을 작성한다.
- mobaxterm에서는 우클릭이 붙여넣기
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
- 컨트롤 + O(저장) → 엔터 → 컨트롤 + x(종료)
Oracle(LINUX) 계정으로 전환
[root@oracleDB ~]# su oracle -l |
Last login: Tue Nov 28 17:39:10 KST 2023 from 192.168.7.200 on pts/0
oracle 계정 환경 변수 등록
- 리눅스 환경에서는 파일명 앞에 '.'이 있으면 숨김파일로 인식된다.
- 홈디렉토리 아래의 .bash_profile은 계정의 환경변수를 저장하는 시스템 파일이다.
- ORACLE_BASE 환경 변수는 오라클 데이터베이스 도구가 설치되는 경로
[oracle@oracleDB ~]$ nano ~/.bash_profile |
- 파일의 가장 아랫부분에 아래의 하이라이트의 내용을 추가한다.
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
umask 022
export ORACLE_BASE=/u01/app/oracle
- 컨트롤 + O(저장) → 엔터 → 컨트롤 + x(종료)
- database 경로를 생성한다.
[oracle@oracleDB ~]$ mkdir database |
- mobaxterm에서는 sFTP를 지원한다.
- scp 명령어와 동일한 방식이다.
[oracle@oracleDB ~]$ cd database/ |
[oracle@oracleDB database]$ ls |
LINUX.X64_193000_db_home.zip
- 설치 파일 압축 풀기
[oracle@oracleDB database]$ unzip LINUX.X64_193000_db_home.zip |
- 작업 완료 후 확인
[oracle@oracleDB database]$ ls |
addnode dmu LINUX.X64_193000_db_home.zip perl sqldeveloper
apex drdaas md plsql sqlj
assistants dv mgw precomp sqlpatch
bin env.ora network QOpatch sqlplus
clone has nls R srvm
crs hs odbc racg suptools
css install olap rdbms ucp
ctx instantclient OPatch relnotes usm
cv inventory opmn root.sh utl
data javavm oracore root.sh.old wwg
dbjava jdbc ord root.sh.old.1 xdk
dbs jdk ords runInstaller
deinstall jlib oss schagent.conf
demo ldap oui sdk
diagnostics lib owm slax
[oracle@oracleDB database]$ exit |
logout
[root@oracleDB ~]# exit |
logout
OUI(Oracle Universal Installer)
- 데이터베이스 설치 도구
- 기존 접속을 종료하고 oracle 계정으로 재접속한다.
login as: oracle
oracle@192.168.7.231's password: 1234
[oracle@oracleDB ~]$ cd database/ [oracle@oracleDB database]$ ./runInstaller |
- 데이터베이스 툴만 설치를 진행한다.
- 데이터베이스 생성은 별도로 진행할 예정
- 데이터베이스의 구성은 인스턴스와 데이터베이스가 1:1인 구성으로 진행한다.
- summary로 넘어가기전 Prerequisite Checks 페이지가 나오는 경우 앞선 설정 과정에서 누락되거나 잘못된 설정이 들어가 있을 수 있다.
- 항목에서 수정 가능한 경우 자동, 수동 방식으로 문제점을 fix할 수 있으나 fix가 불가능한 경우에는 운영체제부터 다시 시작해야 할 수 있다. (대부분 파티션 관련 문제가 많음.)
- swap 파티션 관련 문제인 경우 ignore로 무시하고 진행해도 크게 문제는 없음.
- root 자격증명을 사용하기 전 팝업. yes를 선택하고 이어 진행한다.
- 오라클 관련 도구 설치 완료!
환경 변수 추가2
- ORACLE_HOME 환경변수는 데이터베이스의 생성 경로를 가리킨다.
- ORACLE_BASE 도구가 설치된 경로를 가리킨다.
[oracle@oracleDB ~]$ nano ~/.bash_profile |
- 파일의 가장 아랫부분에 다음의 하이라이트 부분의 내용을 추가해준다.
…
export PATH
umask 022
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/usr/oracle/database
export PATH=$PATH:$ORACLE_HOME/bin
- 컨트롤 + O, 엔터, 컨트롤 + X
[oracle@oracleDB ~]$ source ~/.bash_profile |
- 터미널 설정값을 다시 읽어서 터미널에 적용하는 명령어.
'⛏️ > Mysql | Oracle' 카테고리의 다른 글
[Oracle] 개발 환경 구축 (0) | 2023.11.29 |
---|---|
[SQL] 20. DDL, DML (0) | 2023.11.29 |
[SQL] 19. JOIN (1) | 2023.11.07 |
[SQL] 18. 집합연산자 (0) | 2023.11.07 |
[SQL] 17. 모델링과 정규화 (1) | 2023.10.24 |