首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Linux 安裝 Oracle 一鍵自動化 Shell 腳本套件 (用戶、核心參數、目錄、環境變數)

     編輯:Oracle 資料庫基礎

腳本架構設計

主腳本 install.sh 依序調用五大模組,採冪等設計 (重複執行不報錯、不破壞現狀)。

模組一:建立用戶與群組 (adduser.sh)

#!/bin/bash
ADDGROUPS="oinstall dba"
ADDUSERS="oracle"
for group in $ADDGROUPS; do
  if ! grep -q "^$group:" /etc/group; then
    groupadd $group
    echo "Add new group $group"
  else
    echo "Group $group already existed"
  fi
done
for user in $ADDUSERS; do
  if ! id $user &>/dev/null; then
    useradd $user
    echo "Add new user $user"
  else
    echo "User $user already existed"
  fi
done
usermod -g oinstall -G dba oracle && echo "Modify oracle account success" || echo "Modify oracle account failure"

模組二:建立目錄結構 (mkdir.sh)

#!/bin/bash
ORACLE_FILE_BASE="/u01/app/oracle"
ORACLE_FILE_VAR="/var/opt/oracle"
ORACLE_FILE_HOME="$ORACLE_FILE_BASE/product/10.2.0/db_1"
for dir in $ORACLE_FILE_BASE $ORACLE_FILE_VAR $ORACLE_FILE_HOME; do
  if [ -d "$dir" ]; then
    echo "Directory $dir already existed"
  else
    mkdir -p "$dir"
    chown -R oracle:dba "$dir"
    echo "Create and chown $dir success"
  fi
done

模組三:配置 Oracle 用戶環境變數 (chprofile.sh)

#!/bin/bash
PROFILES="/home/oracle/.bashrc"
for PROFILE in $PROFILES; do
  if [ -f "$PROFILE" ] && ! grep -q "ORACLE_BASE" "$PROFILE"; then
    cat >> "$PROFILE" << 'END'
# Oracle configure profile parameters
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_OWNER=oracle
export ORACLE_SID=orcl
export ORACLE_TERM=vt100
export THREADS_FLAG=native
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export LANG=en_US
END
    echo "Add Oracle profile to $PROFILE success"
  else
    echo "Oracle profile already existed in $PROFILE"
  fi
done

模組四:設定用戶資源限制 (limits.sh)

#!/bin/bash
LIMITS_FILE="/etc/security/limits.conf"
if [ -f "$LIMITS_FILE" ] && ! grep -q "oracle soft nofile" "$LIMITS_FILE"; then
  cat >> "$LIMITS_FILE" << 'END'
# Oracle configure shell parameters
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
END
  echo "Add limits.conf success"
else
  echo "limits.conf already configured"
fi

模組五:核心參數調優 (sysctl.sh)

#!/bin/bash
SYSCTL_FILE="/etc/sysctl.conf"
RCLOCAL_FILE="/etc/rc.local"
if [ -f "$SYSCTL_FILE" ] && ! grep -q "kernel.shmmax" "$SYSCTL_FILE"; then
  cat >> "$SYSCTL_FILE" << 'END'
# Oracle configure kernel parameters
kernel.shmmax = 4294967296
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
END
  /sbin/sysctl -p
  echo "sysctl.conf updated"
elif [ -f "$RCLOCAL_FILE" ] && ! grep -q "kernel.shmmax" "$RCLOCAL_FILE"; then
  # 兼容無 sysctl.conf 系統
  cat >> "$RCLOCAL_FILE" << 'END'
echo 536870912 > /proc/sys/kernel/shmmax
echo 4096 > /proc/sys/kernel/shmmni
echo 2097152 > /proc/sys/kernel/shmall
echo "250 32000 100 128" > /proc/sys/kernel/sem
echo 65536 > /proc/sys/fs/file-max
echo "1024 65000" > /proc/sys/net/ipv4/ip_local_port_range
END
  . $RCLOCAL_FILE
  echo "rc.local updated"
else
  echo "Kernel parameters already configured"
fi

使用說明

  1. 將所有 .sh 放同一目錄,賦權 chmod +x *.sh。
  2. 以 root 執行 ./install.sh。
  3. 腳本會自動檢測現狀,僅補缺不覆蓋,可重複安全執行。
  4. 執行完切換 oracle 用戶 source ~/.bashrc 驗證環境變數。

備註:核心參數數值針對 1GB 記憶體機器,生產環境請依實際記憶體 (建議 SGA 佔 60-70%) 計算調整 shmmax、shmall。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved