#!/bin/bash

NODE_NAME=$1
echo "=== Cài đặt Oracle RAC Node: $NODE_NAME ==="

# Cập nhật hệ thống
yum update -y

# Cài đặt các gói cần thiết
yum install -y oracle-database-preinstall-19c
yum install -y unzip wget nfs-utils

# Cấu hình hosts
cat >> /etc/hosts << 'EOF'
# Public IPs
192.168.56.31 rac1.localdomain rac1
192.168.56.32 rac2.localdomain rac2

# Private IPs (Interconnect)
192.168.57.31 rac1-priv.localdomain rac1-priv
192.168.57.32 rac2-priv.localdomain rac2-priv

# Virtual IPs
192.168.56.33 rac1-vip.localdomain rac1-vip
192.168.56.34 rac2-vip.localdomain rac2-vip

# SCAN IPs
192.168.56.35 rac-scan.localdomain rac-scan
EOF

# Tạo user oracle và grid
useradd -m oracle
useradd -m grid
echo "oracle:oracle123" | chpasswd
echo "grid:grid123" | chpasswd

# Tạo groups
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

# Thêm users vào groups
usermod -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,oper oracle
usermod -g oinstall -G asmadmin,asmdba,asmoper,dba grid

# Tạo thư mục Oracle
mkdir -p /u01/app/grid
mkdir -p /u01/app/12.2.0/grid
mkdir -p /u01/app/oracle/product/12.2.0/dbhome_1
chown -R grid:oinstall /u01/app/grid
chown -R grid:oinstall /u01/app/12.2.0
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01

# Cấu hình môi trường Grid
cat >> /home/grid/.bash_profile << 'EOF'
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/12.2.0/grid
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
EOF

# Cấu hình môi trường Oracle
cat >> /home/oracle/.bash_profile << 'EOF'
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
export ORACLE_SID=ORCL1
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
EOF

# Cấu hình kernel parameters cho RAC
cat >> /etc/sysctl.conf << 'EOF'
kernel.shmmax = 4398046511104
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
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
fs.aio-max-nr = 1048576
EOF

sysctl -p

# Cấu hình shared disks
echo "Cấu hình shared disks cho ASM..."
if [ "$NODE_NAME" = "rac1" ]; then
    echo "/dev/sdb /u01/app/grid/asm_disk1 ext4 defaults 0 0" >> /etc/fstab
    echo "/dev/sdc /u01/app/grid/asm_disk2 ext4 defaults 0 0" >> /etc/fstab
fi

echo "Oracle RAC Node $NODE_NAME đã được chuẩn bị!"
echo "Cần cài đặt Grid Infrastructure và Oracle Database thủ công"