ORACLE 21c GRID AND DATABASE INSTALLATION ON ORACLE LINUX 8.4 (ORACLE 21c RESTART INSTALLATION)

Oracle Linux 8 kurlumu için aşağıdaki yazıyı inceleyebilirsiniz.

Öncelikle yum preinstall 21c paketini yükleyerek user ve kernel ayarlarını bizim için hazır yapılmış hale gelmesini sağlayalım;

# dnf install -y oracle-database-preinstall-21c

--veya eski usul

# yum install -y oracle-database-preinstall-21c

birde update yapalım

# dnf update -y

--veya

# yum update -y

Eğer makinemizi internete çıkaramıyorsak, aşağıdaki gibi kernel ayarlarmızı yapmalıyız. /etc/sysctl.conf dosyasına parametrelerimiz aşağıdaki gibi olacak şekilde girmeliyiz.

fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500

Kernel parametrelerinin aktif olabilmesi için;

/sbin/sysctl -p
# Veya
/sbin/sysctl -p /etc/sysctl.d/98-oracle.conf

Ayrıca /etc/security/limits.d/oracle-database-preinstall-21c.conf dosyasına aşağıdaki içeriği eklemeliyiz

oracle   soft   nofile    1024
oracle   hard   nofile    65536
oracle   soft   nproc    16384
oracle   hard   nproc    16384
oracle   soft   stack    10240
oracle   hard   stack    32768
oracle   hard   memlock    134217728
oracle   soft   memlock    134217728
oracle   soft   data    unlimited
oracle   hard   data    unlimited

Kurulacak paketler için ise kurlum diskini mount ederek içerisindek aşağıdaki rpm leri yüklemeliyiz.

dnf install -y bc
dnf install -y binutils
dnf install -y compat-openssl10
dnf install -y elfutils-libelf
dnf install -y glibc
dnf install -y glibc-devel
dnf install -y ksh
dnf install -y libaio
dnf install -y libXrender
dnf install -y libX11
dnf install -y libXau
dnf install -y libXi
dnf install -y libXtst
dnf install -y libgcc
dnf install -y libnsl
dnf install -y libstdc++
dnf install -y libxcb
dnf install -y libibverbs
dnf install -y make
dnf install -y policycoreutils
dnf install -y policycoreutils-python-utils
dnf install -y smartmontools
dnf install -y sysstat

# Added by me.
dnf install -y unixODBC

User ve Group ları kontrol edelim eksik olanları ekleyelim

# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54330(racdba),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba)

-- Gruplarımızda eksik varsa ekleyelim

groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper 
#groupadd -g 54324 backupdba
#groupadd -g 54325 dgdba
#groupadd -g 54326 kmdba
#groupadd -g 54327 asmdba
#groupadd -g 54328 asmoper
#groupadd -g 54329 asmadmin
#groupadd -g 54330 racdba

useradd -u 54321 -g oinstall -G dba,oper oracle

Selinux disabled yapalım ve firewall kapatıp disable yapalım.

# vi /etc/selinux/config
SELINUX=disabled

# systemctl stop firewalld
# systemctl disable firewalld

Hosts dosyamızı düzenleyelim

# vi /etc/hosts

150.150.100.114 orcl21c.frkcvk.com      orcl21c

Oracle kullanıcısına password atayalım

# passwd oracle

İlgili dizinlerimizi oluşturuyoruz;

mkdir -p /u01/app/oracle/product/21.0.0.0/db
mkdir -p /u01/app/21.0.0.0/grid
chown -R oracle:oinstall /u01
chmod -R 775 /u01

Oracle kullanısına geçiş yaparak, Grid yazılımı ve Database yazılımı için gerekli ortam değişkenlerini set edelim.

# su - oracle

vi .bash_profile

TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

ORACLE_HOSTNAME=orcl21c.frkcvk.com; export ORACLE_HOSTNAME
ORACLE_UNQNAME=ORCL; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
GRID_HOME=/u01/app/21.0.0.0/grid; export GRID_HOME
DB_HOME=$ORACLE_BASE/product/21.0.0.0/db; export DB_HOME
ORACLE_HOME=$DB_HOME; export ORACLE_HOME
ORACLE_SID=ORCL; export ORACLE_SID
ORACLE_HOME_LISTNER=$ORACLE_HOME export ORACLE_HOME_LISTNER
ORACLE_TERM=xterm; export ORACLE_TERM
BASE_PATH=/usr/sbin:$PATH; export BASE_PATH
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH

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

Grid değişkenlerini kolay set etmek adına aşağıdaki dosyayı hazırlıyorum.

vi .grid

ORACLE_SID=+ASM; export ORACLE_SID
ORACLE_HOME=$GRID_HOME; export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH

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

Oracle ASM için disklerimizi hazırlayalım.

ASMLIB için rpm dosyasını indirelim ve kuralım;

# cd /tmp
# wget https://download.Oracle.com/otn_software/asmlib/oracleasmlib-2.0.17-1.el8.x86_64.rpm
# wget https://public-yum.oracle.com/repo/OracleLinux/OL8/addons/x86_64/getPackage/oracleasm-support-2.1.12-1.el8.x86_64.rpm
# yum localinstall ./oracleasm-support-2.1.12-1.el8.x86_64.rpm ./oracleasmlib-2.0.17-1.el8.x86_64.rpm

# rpm -ivh oracleasm*

Oracle ASM konfigure edelim

# oracleasm configure -i
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver.  The following questions will determine whether the driver is
loaded on boot and what permissions it will have.  The current values
will be shown in brackets ('[]').  Hitting <ENTER> without typing an
answer will keep that current value.  Ctrl-C will abort.

Default user to own the driver interface []: oracle

Default group to own the driver interface []: dba

Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done

Oracle ASM init komutu ile ilgili dizinleri oluşturalım

# oracleasm init
Creating /dev/oracleasm mount point: /dev/oracleasm
Loading module "oracleasm": oracleasm
Configuring "oracleasm" to use device physical block size
Mounting ASMlib driver filesystem: /dev/oracleasm

Daha önceden formatladığımız diskleri ASM diski olarak ekleyelim;

# oracleasm createdisk DATA1 /dev/sdb1
Writing disk header: done
Instantiating disk: done

# oracleasm createdisk FRA1 /dev/sdc1
Writing disk header: done
Instantiating disk: done

# oracleasm listdisks
DATA1
FRA1

GRID Home dizinine grid yazılımının zip dosyasını koyarak 775 izini verelim ve unzip edelim. Ardından grid kurulumuna geçelim.

$ chmod 775 V1011504-01_grid.zip
$ unzip V1011504-01_grid.zip
$ ./gridSetup.sh

Standalone kurulum yapacağımız için, Oracle restart kısmını seçiyoruz.

Disklerimizi görmez ise Discovery path ksmını düzenleyelim. DATA Disk grubumuzu External olarak seçiyoruz, zaten tek disk olduğu için diğer seçeneklerde hata alıyor olacağız.

ASM Intsance için SYS ve ASMSNMP passworlarını tek password olarak ayarlıyoruz.

Ortamımızda bir Cloud Control olmadığı için geçiyoruz.

ASM disk grupları için dba OS grubunu seçmiştik o yüzden burada da dba grubunu seçerek devam ediyoruz. Çıkan uyarıya next diyerek devam edelim

Minimum 8GB RAM olması gerekiyordu fakat ben 4GB RAM üzerine kurulum yapıyorum o yüzden Ignore diyerek devam ediyorum.

Yukarıdaki scriptleri root user ile ve sıralı olarak çalıştırıyoruz. Succsessfully ifadesini gördükten sonra. Ok diyerek devam edelim.

Grid Infrastructure kurulumu başarı ile tamamlandı. Şimdi Database yazılımını kuralım.

Oracle user ile önceden ayarladığımız .bash_profile ortam değişkenlerini set edelim ve sonra $ORACLE_HOME dizinine Database yazılımı zip dosyasını ekleyerek 775 izini verip unzip edip, sonrasında kurulumu başlatalım. Buradaki kurulumda software only olarak kurulumu yapıp sonrasında dbca komutu ile bir database oluşturacağız.

$ chmod 775 V1011496-01_db.zip
$ unzip V1011496-01_db.zip
$ ./runInstaller

Herhangi bir düzeltilecek durum yok ise Install diyerek ilerleyelim.

root user ile scripti çalıştırıyoruz. Script tamamlandıktan sonra OK diyerek devam ediyoruz.

Database software olarak yüklendi şimdi dbca komutu ile bir database create etmeye geldi sıra;

$ dbca

Burada Typical seçeneği ile devam edilebilirdi fakat be Advanced seçeneği ile devam ediyor ve herşeyi tek tek seçerek oluşturmak istiyorum.

Yine custom diyerek kendi özelliklerimi kendim seçmeyi tercih ediyorum.

Burada dikkat edersek en son Oracle 19c de olan Container Database olmadan kurulum artık mümkün değil mecburen, Multitanent mimaride kurulum yapmamız gerekiyor. Ayrıca oluşturulan her PDB için Local UNDO oldun mu olmasın mı? bu seçeneği de bize sormakta. Ben burada 1 adet PDB oluşturmayı seçerek devam edeceğim, ayrıca her PDB için local UNDO da oldun diyeceğim.

Kontroller sonrası her şey tamamsa Finish diyerek devam ediyoruz.

Kurulum tamamlandı, sqlplus ile bağlanarak kontrollerimizi sağlayalım.

$ sqlplus / as sysdba

SQL*Plus: Release 21.0.0.0.0 - Production on Tue Sep 7 16:51:29 2021
Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.


Connected to:
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
BANNER_FULL
--------------------------------------------------------------------------------
BANNER_LEGACY
--------------------------------------------------------------------------------
    CON_ID
----------
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
         0

BANNER
--------------------------------------------------------------------------------
BANNER_FULL
--------------------------------------------------------------------------------
BANNER_LEGACY
--------------------------------------------------------------------------------
    CON_ID
----------


SQL>