# netwok setup on each node
nmcli connection show --active

nmcli connection modify enp1s0 ipv4.address 192.168.0.95/24
nmcli connection modify enp1s0 ipv4.method manual ipv6.method ignore
nmcli connection modify enp1s0 ipv4.gateway 192.168.0.1
nmcli connection modify enp1s0 ipv4.dns 192.168.0.8
nmcli connection modify enp1s0 ipv4.dns-search swgalaxy

nmcli connection modify enp2s0 ipv4.address 192.168.1.95/24
nmcli connection modify enp2s0 ipv4.method manual ipv6.method ignore

nmcli connection modify enp10s0 ipv4.address 192.168.2.95/24
nmcli connection modify enp10s0 ipv4.method manual ipv6.method ignore

hostnamectl set-hostname rodia-db03.swgalaxy

# attach disks in each node
virsh attach-disk ylesia-db03 /vm/ssd0/ylesia-rac/disk_array/asm_01.img vdd --driver qemu --subdriver raw --targetbus virtio --persistent
virsh attach-disk ylesia-db03 /vm/ssd0/ylesia-rac/disk_array/asm_02.img vde --driver qemu --subdriver raw --targetbus virtio --persistent
virsh attach-disk ylesia-db03 /vm/ssd0/ylesia-rac/disk_array/asm_03.img vdf --driver qemu --subdriver raw --targetbus virtio --persistent
virsh attach-disk ylesia-db03 /vm/ssd0/ylesia-rac/disk_array/asm_04.img vdg --driver qemu --subdriver raw --targetbus virtio --persistent
virsh attach-disk ylesia-db03 /vm/ssd0/ylesia-rac/disk_array/asm_05.img vdh --driver qemu --subdriver raw --targetbus virtio --persistent


- unzip distrib in grid home
- unzip last GIRU in a temporary location
- apply GIRU in silent mode over the base GI distrib

# on each node
##############

mkdir -p /app/oracle
chmod 775 /app/oracle
chown -R oracle:oinstall /app/oracle

cd /app/oracle/
mkdir -p admin  base  grid  oraInventory  rdbms  staging_area
chmod 775 admin  base  grid  oraInventory  rdbms  staging_area

chown -R oracle:oinstall admin rdbms staging_area
chown -R grid:oinstall grid  oraInventory base

su - grid
mkdir -p /app/oracle/grid/product/19


# on first node
###############

# unzip distrib
cd /app/oracle/grid/product/19
unzip /mnt/yavin4/kit/Oracle/Grid_Infra/19/distrib/LINUX.X64_193000_grid_home.zip

# update Opatch
rm -rf OPatch
unzip /mnt/yavin4/kit/Oracle/opatch/p6880880_190000_Linux-x86-64.zip

cd /app/oracle/staging_area/
unzip /mnt/yavin4/kit/Oracle/Grid_Infra/19/GIRU/GIRU_19.27/p37641958_190000_Linux-x86-64.zip 

# apply the RU on this ORACLE_HOME
# on first node as grid

export ORACLE_BASE=/app/oracle/base
export ORACLE_HOME=/app/oracle/grid/product/19
export PATH=$ORACLE_HOME/bin:$PATH

$ORACLE_HOME/gridSetup.sh -silent -applyRU /app/oracle/staging_area/37641958/36758186
$ORACLE_HOME/gridSetup.sh -silent -applyRU /app/oracle/staging_area/37641958/37642901
$ORACLE_HOME/gridSetup.sh -silent -applyRU /app/oracle/staging_area/37641958/37643161
$ORACLE_HOME/gridSetup.sh -silent -applyRU /app/oracle/staging_area/37641958/37654975
$ORACLE_HOME/gridSetup.sh -silent -applyRU /app/oracle/staging_area/37641958/37762426

# to satisfy ALL pre-requisits, to do on ALL nodes

dnf install -y $ORACLE_HOME/cv/rpm/cvuqdisk-1.0.10-1.rpm

# in /etc/security/limits.conf

# Oracle
oracle soft stack 10240
grid soft stack 10240
grid soft memlock 3145728
grid hard memlock 3145728

# in /etc/sysctl.conf

# other oracle settings
kernel.panic = 1


# temporary SWAP
dd if=/dev/zero of=/mnt/unprotected/tmp/oracle/swap_20g.img bs=1G count=20
mkswap /mnt/unprotected/tmp/oracle/swap_20g.img
swapon /mnt/unprotected/tmp/oracle/swap_20g.img
free -h

##############

# pre-check as grid
export ORACLE_BASE=/app/oracle/base
export ORACLE_HOME=/app/oracle/grid/product/19
export PATH=$ORACLE_HOME/bin:$PATH

$ORACLE_HOME/runcluvfy.sh stage -pre crsinst -n ylesia-db01,ylesia-db02,ylesia-db03


# ASM disks
lsblk --list | egrep "vdd|vde|vdf|vdg|vdh"
ls -ltr /dev/vd[d-h]

fdisk ..... all disk


lsblk --list | egrep "vdd|vde|vdf|vdg|vdh"
ls -ltr /dev/vd[d-h]1

# install asmlib on all nodes
dnf install -y oracleasm-support-3.1.0-10.el9.x86_64.rpm 
dnf install -y oracleasmlib-3.1.0-6.el9.x86_64.rpm 

systemctl start oracleasm.service

oracleasm configure -i

(answers: grid, asmdba and all default)

echo "kernel.io_uring_disabled = 0" >> /etc/sysctl.conf
sysctl -p

# create ASM disks on first node
oracleasm createdisk DATA_01 /dev/vdd1
oracleasm createdisk DATA_02 /dev/vde1
oracleasm createdisk DATA_03 /dev/vdf1
oracleasm createdisk RECO_01 /dev/vdg1
oracleasm createdisk RECO_02 /dev/vdh1

oracleasm scandisks
oracleasm listdisks

# on other nodes, only scan and list ASL disks

# on first node, grid setup
$ORACLE_HOME/gridSetup.sh

# RDBMS install
###############

# unzip distrib
mkdir -p /app/oracle/rdbms/product/19
cd /app/oracle/rdbms/product/19
unzip /mnt/yavin4/kit/Oracle/Oracle_Database_19/distrib/LINUX.X64_193000_db_home.zip 


# update Opatch
rm -rf OPatch
unzip /mnt/yavin4/kit/Oracle/opatch/p6880880_190000_Linux-x86-64.zip

# apply the RU on this ORACLE_HOME
# on first node as oracle

export ORACLE_BASE=/app/oracle/base
export ORACLE_HOME=/app/oracle/rdbms/product/19
export PATH=$ORACLE_HOME/bin:$PATH

$ORACLE_HOME/runInstaller -silent -applyRU /app/oracle/staging_area/37641958/36758186
$ORACLE_HOME/runInstaller -silent -applyRU /app/oracle/staging_area/37641958/37642901
$ORACLE_HOME/runInstaller -silent -applyRU /app/oracle/staging_area/37641958/37643161
$ORACLE_HOME/runInstaller -silent -applyRU /app/oracle/staging_area/37641958/37654975
$ORACLE_HOME/runInstaller -silent -applyRU /app/oracle/staging_area/37641958/37762426

# install from a X session
$ORACLE_HOME/runInstaller

# on all nodes
chmod -R 775 /app/oracle/base/admin /app/oracle/base/diag

cat <<EOF! >> /etc/oratab
SET19:/app/oracle/rdbms/product/19:N
EOF!


# using DBCA to create/delete database

export ORACLE_DB_NAME=AERON
export ORACLE_UNQNAME=AERONPRD
export PDB_NAME=REEK
export NODE1=ylesia-db01
export NODE2=ylesia-db02
export NODE3=ylesia-db03
export SYS_PASSWORD="Secret00!"
export PDB_PASSWORD="Secret00!"

# create MULTITENANT database
dbca -silent -createDatabase \
  -templateName General_Purpose.dbc \
  -sid ${ORACLE_UNQNAME} \
  -gdbname ${ORACLE_UNQNAME} -responseFile NO_VALUE \
  -characterSet AL32UTF8 \
  -sysPassword ${SYS_PASSWORD} \
  -systemPassword ${SYS_PASSWORD} \
  -createAsContainerDatabase true \
  -numberOfPDBs 1 \
  -pdbName ${PDB_NAME} \
  -pdbAdminPassword ${PDB_PASSWORD} \
  -databaseType MULTIPURPOSE \
  -automaticMemoryManagement false \
  -totalMemory 3072 \
  -redoLogFileSize 128 \
  -emConfiguration NONE \
  -ignorePreReqs \
  -nodelist ${NODE1},${NODE2},${NODE3} \
  -storageType ASM \
  -diskGroupName +DATA \
  -recoveryGroupName +RECO \
  -useOMF true \
  -initparams db_name=${ORACLE_DB_NAME},db_unique_name=${ORACLE_UNQNAME},sga_max_size=3G,sga_target=3G,pga_aggregate_target=512M  \
  -enableArchive true \
  -recoveryAreaDestination +RECO \
  -recoveryAreaSize 30720 \
  -asmsnmpPassword ${SYS_PASSWORD}

# create NON-CDB database
dbca -silent -createDatabase \
  -templateName General_Purpose.dbc \
  -sid ${ORACLE_UNQNAME} \
  -gdbname ${ORACLE_UNQNAME} -responseFile NO_VALUE \
  -characterSet AL32UTF8 \
  -sysPassword ${SYS_PASSWORD} \
  -systemPassword ${SYS_PASSWORD} \
  -createAsContainerDatabase false \
  -databaseType MULTIPURPOSE \
  -automaticMemoryManagement false \
  -totalMemory 3072 \
  -redoLogFileSize 128 \
  -emConfiguration NONE \
  -ignorePreReqs \
  -nodelist ${NODE1},${NODE2},${NODE3} \
  -storageType ASM \
  -diskGroupName +DATA \
  -recoveryGroupName +RECO \
  -useOMF true \
  -initparams db_name=${ORACLE_DB_NAME},db_unique_name=${ORACLE_UNQNAME},sga_max_size=3G,sga_target=3G,pga_aggregate_target=512M  \
  -enableArchive true \
  -recoveryAreaDestination +RECO \
  -recoveryAreaSize 30720 \
  -asmsnmpPassword ${SYS_PASSWORD}


# delete database
dbca -silent -deleteDatabase \
  -sourceDB AERONPRD \
  -sysPassword ${SYS_PASSWORD} \
  -forceArchiveLogDeletion
  