오라클 사전 설치 작업 중 램 크기 확인, 사용자 및 그룹 생성, 필수 디렉토리 생성
물리 램 크기 확인, 스왑 공간 확인하는 명령이다. 스왑 공간 사이즈 16GB 이내일 때 램과 동일 크기만큼이어야 하고, 그 이상일 땐 16GB이면 된다.
[root@enp0s3 ~]# free
total used free shared buff/cache available
Mem: 2914260 602512 1815152 8356 496596 2254292
Swap: 3145724 6920 3138804
아래의 /dev/mapper/ol-root 46G 6.7G 40G 15% / 는 /tmp 디렉토리 공간에 해당한다. 최소 1GB 요구된다. 또한, /dev/shm 마운트 영역이 tmpfs 유형인지 확인한다.
[root@enp0s3 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.4G 0 1.4G 0% /dev
tmpfs 1.4G 0 1.4G 0% /dev/shm
tmpfs 1.4G 9.5M 1.4G 1% /run
tmpfs 1.4G 0 1.4G 0% /sys/fs/cgroup
/dev/mapper/ol-root 46G 6.7G 40G 15% /
/dev/sda1 1014M 347M 668M 35% /boot
tmpfs 285M 28K 285M 1% /run/user/1000
tmpfs 285M 0 285M 0% /run/user/0
시스템 아키텍처가 소프트웨어를 실행하는 것이 가능한지 여부 확인한다:
[root@enp0s3 sjh]# uname -m
x86_64
설치된 Linux의 배포 및 버전을 확인한다:
[root@enp0s3 sjh]# cat /etc/oracle-release
Oracle Linux Server release 7.9
필요한 커널 에라타가 설치되었는지 확인한다:
[root@enp0s3 sjh]# uname -r
3.10.0-1160.42.2.el7.x86_64
필수 패키지가 설치되어있는지 rpm -q 옵션 명령으로 확인하고 필요 시 설치한다.
필요한 그룹이 존재하는지 확인하고, 그룹을 추가한다: grep이나 tail, vim 등으로 /etc/group 파일 확인해서 알 수 있다.
[root@enp0s3 ~]# tail /etc/group
avahi:x:70:
postdrop:x:90:
postfix:x:89:
ntp:x:38:
stapusr:x:156:
stapsys:x:157:
stapdev:x:158:
tcpdump:x:72:
sjh:x:1000:
vboxsf:x:982:sjh
groupadd, useradd 명령의 절대 경로는 /usr/sbin/groupadd, /usr/sbin/useradd이다. 그래서 사용자, 그룹 생성시 # /usr/sbin/groupadd -g 54325 dgdba 처럼 입력해도 아래와 동일한 결과를 얻는다.
[root@enp0s3 ~]# groupadd -g 54321 oinstall
[root@enp0s3 ~]# groupadd -g 54322 dba
[root@enp0s3 ~]# groupadd -g 54323 oper
[root@enp0s3 ~]# groupadd -g 54324 backupdba
[root@enp0s3 ~]# groupadd -g 54325 dgdba
[root@enp0s3 ~]# groupadd -g 54326 kmdba
[root@enp0s3 ~]# groupadd -g 54327 asmdba
[root@enp0s3 ~]# groupadd -g 54328 asmoper
[root@enp0s3 ~]# groupadd -g 54329 asmadmin
[root@enp0s3 ~]# groupadd -g 54330 racdba
[root@enp0s3 ~]# grep oinstall /etc/group # 일반적으로는 one by one 으로 작업 전/후 확인하는 것이 좋다
oinstall:x:54321:
[root@enp0s3 ~]# tail /etc/group # 또는 tail 이나 vim으로 한번에 작업 후 확인
oinstall:x:54321:
dba:x:54322:
oper:x:54323:
backupdba:x:54324:
dgdba:x:54325:
kmdba:x:54326:
asmdba:x:54327:
asmoper:x:54328:
asmadmin:x:54329:
racdba:x:54330:
설치 소유자 사용자 (예: oracle) 을 생성한다. 이름은 관습적으로 소문자 oracle을 사용하고, uid는 그룹명 oinstall의 gid와 동일한 ID값으로 설정한다.
[root@enp0s3 ~]# useradd -u 54321 -g oinstall -G dba, oper, backupdba, dgdba, kmdba, asmdba, asmoper, asmadmin, racdba oracle
[root@enp0s3 ~]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54327(asmdba)
생성한 오너 사용자에 대한 비밀번호를 설정한다. 그 계정으로 들어가서 passwd 입력해도 되지만, 짧거나 쉬운 비밀번호는 생성/변경이 불가능해서 root로 그 계정에 설정해주는 것이 좋다 (경고는 뜨지만 업데이트 가능).
[root@enp0s3 ~]# passwd oracle
oracle 사용자의 비밀 번호 변경 중
새 암호:
잘못된 암호: 암호는 8 개의 문자 보다 짧습니다
새 암호 재입력:
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.
오라클이 설치될 디렉토리이자 ORACLE_HOME 환경 변수 디렉토리를 생성하고 소유자와 파일 시스템 접근 권한을 변경한다:
[root@enp0s3 ~]# mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
[root@enp0s3 ~]# mkdir -p /u01/app/oraInventory
[root@enp0s3 ~]# chown -R oracle:oinstall /u01/app/oracle
[root@enp0s3 ~]# chown -R oracle:oinstall /u01/app/oraInventory
[root@enp0s3 ~]# chmod -R 775 /u01/app # 기존 755 에서 775로 권한 변경
[root@enp0s3 ~]# ls -la /u01/app/oracle
합계 0
drwxrwxr-x. 3 oracle oinstall 21 11월 8 17:02 .
drwxrwxr-x. 4 root root 40 11월 8 17:09 ..
drwxrwxr-x. 3 oracle oinstall 20 11월 8 17:02 product
[root@enp0s3 ~]# ls -la /u01/app/oraInventory
합계 0
drwxr-xr-x. 2 oracle oinstall 6 11월 8 17:09 .
drwxrwxr-x. 4 root root 40 11월 8 17:09 ..
업데이트: 755로 진행하자
/etc/selinux/config 파일에서 다음 부분을 수정한다:
SELINUX=permissive
수정 후 서버 재시작하거나 # setenforce Permissive 명령을 실행한다.
적절한 곳에 스크립트 파일을 생성하거나, 바로 ~<사용자명>/ 디렉토리에 .bash_profile 파일에 다음 내용을 추가한다.
방법 1: 아래 내용을 /home/<사용자명>/.bash_profile 파일에 추가/수정한다.
# Oracle Settings
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:/usr/sbin:/usr/local/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_LANG=AMERICAN_KOREA.AL32UTF8
추가 후 source 명령이나 .(마침표) 명령으로 수정 반영한다.
방법2: 커맨드 라인에 다음 내용을 입력한다. 다음처럼 cat 명령으로 파일 생성 시, 내용 중의 $(달러) 기호는 \(백슬래시) 특수문자로 이스케이프한다.
[oracle@enp0s3 ~]$ mkdir ~oracle/scripts
[oracle@enp0s3 ~]$ cat > /home/oracle/scripts/setEnv.sh << EOF
> # Oracle Settings
> export TMP=/tmp
> export TMPDIR=\$TMP
>
> export ORACLE_BASE=/u01/app/oracle
> export ORACLE_HOME=\$ORACLE_BASE/product/19.0.0/dbhome_1
> export ORACLE_SID=orcl
> export PATH=\$ORACLE_HOME/bin:/usr/sbin:/usr/local/bin:usr/bin
> export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
> export CLASSPATH=\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib
> export NLS_LANG=AMERICAN_KOREA.AL32UTF8
> EOF
.bash_profile 파일 끝에 setEnv.sh 파일에 대한 참조를 추가한다.
[oracle@enp0s3 ~]$ echo ". /home/oracle/scripts/setEnv.sh" >> /home/oracle/.bash_profile
startup/shutdown 서비스에서 호출할 수 있는 스크립트를 만든다. 소유권과 접근 권한도 확인한다.
[oracle@enp0s3 dbhome_1]$ cat > /home/oracle/scripts/start_all.sh << EOF
> #!/bin/bash
> . /home/oracle/scripts/setEnv.sh
>
> export ORAENV_ASK=NO
> . oraenv
> export ORAENV_ASK=YES
>
> dbstart \$ORACLE_HOME
> EOF
[oracle@enp0s3 dbhome_1]$ cat > /home/oracle/scripts/stop_all.sh << EOF
> #!/bin/bash
> . /home/oracle/scripts/setEnv.sh
>
> export ORAENV_ASK=NO
> . oraenv
> export ORAENV_ASK=YES
>
> dbshut \$ORACLE_HOME
> EOF
[oracle@enp0s3 dbhome_1]$ ls -la ~oracle/scripts/
합계 16
drwxr-xr-x. 2 oracle oinstall 62 11월 9 10:11 .
drwx------. 6 oracle oinstall 4096 11월 9 10:06 ..
-rw-r--r--. 1 oracle oinstall 384 11월 9 10:05 setEnv.sh
-rw-r--r--. 1 oracle oinstall 120 11월 9 10:08 start_all.sh
-rw-r--r--. 1 oracle oinstall 119 11월 9 10:11 stop_all.sh
[oracle@enp0s3 dbhome_1]$ chmod u+x ~oracle/scripts/*.sh
[oracle@enp0s3 dbhome_1]$ ls -la ~oracle/scripts/
합계 16
drwxr-xr-x. 2 oracle oinstall 62 11월 9 10:11 .
drwx------. 6 oracle oinstall 4096 11월 9 10:06 ..
-rwxr--r--. 1 oracle oinstall 384 11월 9 10:05 setEnv.sh
-rwxr--r--. 1 oracle oinstall 120 11월 9 10:08 start_all.sh
-rwxr--r--. 1 oracle oinstall 119 11월 9 10:11 stop_all.sh