溫馨提示×

如何在Ubuntu上配置Oracle多實例

小樊
46
2025-10-12 09:37:57
欄目: 云計算

在Ubuntu上配置Oracle多實例的步驟

一、前置準備

在配置Oracle多實例前,需完成以下基礎工作:

  1. 安裝Oracle Database軟件:確保已在Ubuntu上安裝Oracle Database(如11gR2、19c等版本),且安裝時選擇“單實例”模式(多實例需后續手動配置)。
  2. 創建Oracle用戶與組:創建oinstall、dba組及oracle用戶,設置密碼并賦予sudo權限。
  3. 配置環境變量:編輯oracle用戶的~/.bashrc文件,添加以下內容(替換為實際安裝路徑):
    export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
    export PATH=$ORACLE_HOME/bin:$PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
    export ORACLE_SID=orcl  # 默認實例SID,后續啟動多實例時需修改
    
    執行source ~/.bashrc使變量生效。

二、創建多實例的數據庫目錄

每個實例需要獨立的數據文件目錄、控制文件目錄重做日志目錄。以創建orcl(默認實例)和orcl2(第二個實例)為例:

# 創建實例根目錄
sudo mkdir -p /u01/app/oracle/oradata/{orcl,orcl2}
sudo mkdir -p /u01/app/oracle/fast_recovery_area/{orcl,orcl2}

# 設置目錄權限(僅oracle用戶可訪問)
sudo chown -R oracle:oinstall /u01/app/oracle/oradata
sudo chown -R oracle:oinstall /u01/app/oracle/fast_recovery_area
sudo chmod -R 750 /u01/app/oracle/oradata
sudo chmod -R 750 /u01/app/oracle/fast_recovery_area

初始化第二個實例(orcl2)

使用dbca(Database Configuration Assistant)圖形化工具或命令行創建第二個實例:

# 切換至oracle用戶
su - oracle

# 啟動dbca(圖形化界面)
dbca

# 或使用命令行(非交互式,需提前準備響應文件)
dbca -silent -createDatabase \
  -templateName General_Purpose.dbc \
  -gdbName orcl2 \
  -sid orcl2 \
  -createAsContainerDatabase false \
  -datafileDestination /u01/app/oracle/oradata/orcl2 \
  -recoveryAreaDestination /u01/app/oracle/fast_recovery_area/orcl2 \
  -emConfiguration NONE \
  -characterSet AL32UTF8 \
  -memoryPercentage 40 \
  -databaseType MULTIPURPOSE

等待初始化完成,確保orcl2實例成功創建。

三、配置監聽器(Listener)

監聽器負責接收客戶端連接請求并轉發至對應實例。需修改listener.ora文件(位于$ORACLE_HOME/network/admin目錄):

# 編輯listener.ora文件
vi $ORACLE_HOME/network/admin/listener.ora

添加第二個實例的SID描述(以orclorcl2為例):

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (SID_NAME = orcl)
      (ORACLE_HOME = $ORACLE_HOME)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = orcl2)
      (SID_NAME = orcl2)
      (ORACLE_HOME = $ORACLE_HOME)
    )
  )

說明

  • LISTENER部分定義監聽器的地址(IP、端口),1521為默認端口,可根據需求修改。
  • SID_LIST_LISTENER部分列出監聽器管理的所有實例,每個實例需指定GLOBAL_DBNAME(全局數據庫名,可與SID不同)、SID_NAME(實例SID)和ORACLE_HOME(Oracle安裝目錄)。

四、配置本地命名(TNSNAMES)

tnsnames.ora文件用于客戶端通過服務名連接實例。編輯tnsnames.ora文件:

vi $ORACLE_HOME/network/admin/tnsnames.ora

添加兩個實例的連接配置:

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

ORCL2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl2)
    )
  )

說明

  • SERVICE_NAME需與實例的GLOBAL_DBNAME一致(或根據實例配置調整)。
  • 若實例使用不同端口(如orcl用1521,orcl2用1522),需修改ADDRESS部分的PORT值。

五、啟動與停止多實例

1. 啟動監聽器

lsnrctl start

驗證監聽器狀態:

lsnrctl status

應顯示監聽器正在運行,且包含orclorcl2兩個實例的SID描述。

2. 啟動實例

切換至目標實例(通過ORACLE_SID環境變量指定),然后啟動:

# 啟動orcl實例
export ORACLE_SID=orcl
sqlplus / as sysdba
SQL> startup

# 啟動orcl2實例
export ORACLE_SID=orcl2
sqlplus / as sysdba
SQL> startup

3. 關閉實例

# 關閉orcl實例
export ORACLE_SID=orcl
sqlplus / as sysdba
SQL> shutdown immediate

# 關閉orcl2實例
export ORACLE_SID=orcl2
sqlplus / as sysdba
SQL> shutdown immediate

# 關閉監聽器
lsnrctl stop

4. 快速切換實例

可通過以下命令快速切換實例(無需重復輸入export):

alias orcl="export ORACLE_SID=orcl; sqlplus / as sysdba"
alias orcl2="export ORACLE_SID=orcl2; sqlplus / as sysdba"

添加至~/.bashrc文件后,直接輸入orclorcl2即可切換至對應實例。

六、驗證多實例連接

1. 本地連接(通過SID)

# 連接orcl實例
sqlplus sys/change_on_install@orcl as sysdba

# 連接orcl2實例
sqlplus sys/change_on_install@orcl2 as sysdba

2. 本地連接(通過服務名)

# 連接orcl實例
sqlplus sys/change_on_install@ORCL as sysdba

# 連接orcl2實例
sqlplus sys/change_on_install@ORCL2 as sysdba

3. 遠程連接(需配置防火墻和監聽器)

若需遠程連接,需確保:

  • Ubuntu防火墻開放監聽器端口(如1521):
    sudo ufw allow 1521/tcp
    
  • 客戶端tnsnames.ora文件中配置正確的連接信息(與服務器端一致)。

注意事項

  1. 資源分配:多實例共享服務器CPU、內存等資源,需根據實例負載調整Oracle內存參數(如SGA_TARGET、PGA_AGGREGATE_TARGET)。
  2. 監聽器端口沖突:若多個實例使用同一端口,需確保監聽器能正確路由請求(靜態注冊或動態注冊)。
  3. 實例狀態監控:使用ps -ef | grep pmon查看實例進程,lsnrctl status查看監聽器狀態,確保實例正常運行。
  4. 備份策略:為每個實例單獨配置備份(如RMAN),避免數據丟失。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女