• Oracle 安裝路徑放到 /data,而不是 /u01
  • 業務用户就是 V3XUSER(不需要額外創建其他業務用户)
  • **實例名(SID)**你需要明確,這個是數據庫的“名字”,比如 OA 可以用默認 orcl,也可以改成 v3xoa 之類更貼近項目的標識

關鍵點解釋

1. 安裝路徑

Oracle 的兩個關鍵路徑:

  • ORACLE_BASE:Oracle 基礎路徑,比如 /data/app/oracle
  • ORACLE_HOME:實際安裝的 home 目錄,比如 /data/app/oracle/product/11.2.0/dbhome_1

2. 用户

  • 安裝時系統會創建 Linux 用户 oracle(運行數據庫的操作系統賬號)
  • 數據庫的業務用户就是 V3XUSER(這個是數據庫裏的 Schema)

所以,這兩個概念要區分:

  • oracle → Linux 系統用户(用來啓動數據庫、執行 sqlplus)
  • V3XUSER → Oracle 數據庫用户(表空間屬主)

3. 實例名(SID)

  • SID 是 Oracle 數據庫實例的名字,可以理解為數據庫服務標識
  • 你可以選擇:
  • orcl(默認)
  • 或者更直觀,例如:v3xoa

調整後的自動化安裝腳本

下面是修改後的關鍵配置,安裝路徑在 /data 下,實例名改成 v3xoa,數據庫用户就是 V3XUSER

#!/bin/bash
set -e

####### 配置變量 #######
ORACLE_USER=oracle
ORACLE_GROUP=oinstall
ORACLE_DBA_GROUP=dba
ORACLE_BASE=/data/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
ORACLE_SID=v3xoa
ZIP1="/tmp/p13390677_112040_Linux-x86-64_1of7.zip"
ZIP2="/tmp/p13390677_112040_Linux-x86-64_2of7.zip"

# OA數據庫初始化相關
OA_TBS=V3XSPACE
OA_TBS_FILE=/data/oracle/data/V3XSPACE.DBF
OA_USER=V3XUSER
OA_PASS="Seeyon@1234"

####### 檢查安裝包 #######
if [ ! -f "$ZIP1" ] || [ ! -f "$ZIP2" ]; then
    echo "[ERROR] 找不到Oracle安裝包,請將兩個zip放到/tmp"
    exit 1
fi

####### 安裝依賴 #######
yum install -y binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ \
               glibc glibc-devel libaio libaio-devel libX11 libXau libXi \
               libXtst libXrender make sysstat unzip

####### 關閉SELinux和防火牆 #######
setenforce 0 || true
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
systemctl stop firewalld || true
systemctl disable firewalld || true

####### 創建Oracle用户和組 #######
groupadd -g 54321 $ORACLE_GROUP || true
groupadd -g 54322 $ORACLE_DBA_GROUP || true
useradd -u 54321 -g $ORACLE_GROUP -G $ORACLE_DBA_GROUP $ORACLE_USER || true
echo "oracle" | passwd --stdin $ORACLE_USER

####### 創建安裝目錄 #######
mkdir -p $ORACLE_HOME
mkdir -p $(dirname $OA_TBS_FILE)
chown -R $ORACLE_USER:$ORACLE_GROUP /data
chmod -R 775 /data

####### 配置oracle用户環境變量 #######
cat <<EOF >> /home/$ORACLE_USER/.bash_profile
export ORACLE_BASE=$ORACLE_BASE
export ORACLE_HOME=$ORACLE_HOME
export ORACLE_SID=$ORACLE_SID
export PATH=\$ORACLE_HOME/bin:\$PATH
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
EOF

####### 解壓安裝包 #######
su - $ORACLE_USER -c "mkdir -p ~/install && cd ~/install && unzip $ZIP1 && unzip $ZIP2"

####### 靜默安裝Oracle 11g #######
su - $ORACLE_USER -c "~/install/database/runInstaller -silent -ignorePrereq \
-responseFile ~/install/database/response/db_install.rsp \
-waitforcompletion \
oracle.install.option=INSTALL_DB_SWONLY \
ORACLE_HOME=$ORACLE_HOME \
ORACLE_BASE=$ORACLE_BASE"

####### 執行root腳本 #######
/data/app/oracle/oraInventory/orainstRoot.sh
$ORACLE_HOME/root.sh

####### 創建數據庫實例 #######
su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbca -silent -createDatabase \
  -templateName General_Purpose.dbc \
  -gdbName $ORACLE_SID \
  -sid $ORACLE_SID \
  -characterSet AL32UTF8 \
  -createAsContainerDatabase false \
  -memoryPercentage 30 \
  -emConfiguration NONE \
  -sysPassword oracle \
  -systemPassword oracle \
  -dbsnmpPassword oracle"

####### OA初始化SQL #######
INIT_SQL=/tmp/init_v3x.sql
cat <<EOF > $INIT_SQL
WHENEVER SQLERROR EXIT;

-- OA 表空間
CREATE SMALLFILE TABLESPACE $OA_TBS
DATAFILE '$OA_TBS_FILE' SIZE 30720M AUTOEXTEND ON NEXT 200M MAXSIZE UNLIMITED
LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

-- OA 用户
CREATE USER $OA_USER PROFILE DEFAULT IDENTIFIED BY "$OA_PASS"
DEFAULT TABLESPACE $OA_TBS TEMPORARY TABLESPACE TEMP ACCOUNT UNLOCK;
GRANT CREATE SESSION, ALTER SESSION, CREATE VIEW TO $OA_USER;
GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO $OA_USER;

-- 示例表
CREATE TABLE $OA_USER.CTP_FORM (
    ID NUMBER(19) PRIMARY KEY,
    FORM_NAME VARCHAR2(255) NOT NULL,
    CREATOR_ID NUMBER(19),
    CREATE_TIME DATE DEFAULT SYSDATE
);

CREATE SEQUENCE $OA_USER.SEQ_CTP_FORM START WITH 1 INCREMENT BY 1 NOCACHE;

-- 檢查字符集
SELECT value FROM nls_database_parameters WHERE parameter='NLS_CHARACTERSET';

EXIT;
EOF

su - $ORACLE_USER -c "sqlplus / as sysdba @$INIT_SQL"

echo "[INFO] 安裝完成: Oracle 11gR2 (SID=$ORACLE_SID) 已啓動"
echo "[INFO] OA 用户=$OA_USER 已創建,表空間=$OA_TBS"

主要調整

  • 安裝路徑:/data/app/oracle(ORACLE_HOME 在 /data/app/oracle/product/...
  • 數據文件路徑:/data/oracle/data/V3XSPACE.DBF
  • 實例名(SID):用變量 ORACLE_SID=v3xoa,可以改成你喜歡的
  • 自動初始化 OA 用户就是 V3XUSER
  • 運行腳本結束後,就有:
  • Oracle 數據庫在 /data
  • 實例名=v3xoa
  • 用户=V3XUSER,密碼=Seeyon@1234
  • 表空間=V3XSPACE

我建議在正式部署前你 確認 SID 名字 是不是用 v3xoa

jdbc:oracle:thin:@172.16.10.10:1521/v3xoa

如果你想保持默認 orcl,只要改腳本里的 ORACLE_SID 變量即可。