在配置Oracle多實例前,需完成以下基礎工作:
oinstall
、dba
組及oracle
用戶,設置密碼并賦予sudo權限。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
使用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.ora
文件(位于$ORACLE_HOME/network/admin
目錄):
# 編輯listener.ora文件
vi $ORACLE_HOME/network/admin/listener.ora
添加第二個實例的SID描述(以orcl
和orcl2
為例):
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.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
值。lsnrctl start
驗證監聽器狀態:
lsnrctl status
應顯示監聽器正在運行,且包含orcl
和orcl2
兩個實例的SID描述。
切換至目標實例(通過ORACLE_SID
環境變量指定),然后啟動:
# 啟動orcl實例
export ORACLE_SID=orcl
sqlplus / as sysdba
SQL> startup
# 啟動orcl2實例
export ORACLE_SID=orcl2
sqlplus / as sysdba
SQL> startup
# 關閉orcl實例
export ORACLE_SID=orcl
sqlplus / as sysdba
SQL> shutdown immediate
# 關閉orcl2實例
export ORACLE_SID=orcl2
sqlplus / as sysdba
SQL> shutdown immediate
# 關閉監聽器
lsnrctl stop
可通過以下命令快速切換實例(無需重復輸入export
):
alias orcl="export ORACLE_SID=orcl; sqlplus / as sysdba"
alias orcl2="export ORACLE_SID=orcl2; sqlplus / as sysdba"
添加至~/.bashrc
文件后,直接輸入orcl
或orcl2
即可切換至對應實例。
# 連接orcl實例
sqlplus sys/change_on_install@orcl as sysdba
# 連接orcl2實例
sqlplus sys/change_on_install@orcl2 as sysdba
# 連接orcl實例
sqlplus sys/change_on_install@ORCL as sysdba
# 連接orcl2實例
sqlplus sys/change_on_install@ORCL2 as sysdba
若需遠程連接,需確保:
sudo ufw allow 1521/tcp
tnsnames.ora
文件中配置正確的連接信息(與服務器端一致)。SGA_TARGET
、PGA_AGGREGATE_TARGET
)。ps -ef | grep pmon
查看實例進程,lsnrctl status
查看監聽器狀態,確保實例正常運行。