為何需要多實例
- 伺服器資源有限,需整合多個應用資料庫。
- 開發/測試/教學環境隔離,不影響生產實例。
環境基準
- 硬體:Sun E250,1 GB RAM。
- OS:Solaris 8 簡體中文版。
- Oracle:8.1.7 Enterprise Edition。
- 既有實例:
pbcti (SID=pbcti)。
- 新建實例:
test (SID=test)。
逐步建立新實例
- 設定環境變數:
ORACLE_SID=test; export ORACLE_SID
- 建立密碼檔:
orapwd file=$ORACLE_HOME/dbs/orapwtest password=test entries=5
- 準備參數檔:複製
$ORACLE_HOME/dbs/init.ora 為 $HOME/test/pfile/inittest.ora 並修改關鍵參數 (見下)。
- 建立目錄結構:
mkdir -p $HOME/test/{pfile,bdump,cdump,udump}
- 啟動 NOMOUNT:
sqlplus internal/test
STARTUP NOMOUNT PFILE=/home1/oracle/test/pfile/inittest.ora
- CREATE DATABASE:
CREATE DATABASE test
LOGFILE GROUP 1 '/home1/oracle/test/test1a.log' SIZE 5M,
GROUP 2 '/home1/oracle/test/test2a.log' SIZE 5M
DATAFILE '/home1/oracle/test/sys1test.dbf' SIZE 100M
CHARACTER SET WE8ISO8859P1;
- 建立資料字典視圖:
@$ORACLE_HOME/rdbms/admin/catalog.sql
- 安裝 PL/SQL 套件:
@$ORACLE_HOME/rdbms/admin/catproc.sql
- 安裝 PRODUCT_USER_PROFILE (PUPBLD):
@$ORACLE_HOME/sqlplus/admin/pupbld.sql
完成後 SHUTDOWN IMMEDIATE; STARTUP PFILE=... 重啟。
- 建立應用表空間:
CREATE TABLESPACE users DATAFILE '/home1/oracle/test/users1.dbf' SIZE 20M ...;
CREATE TABLESPACE rbk DATAFILE '/home1/oracle/test/rbk.dbf' SIZE 20M;
CREATE TEMPORARY TABLESPACE temp TEMPFILE '/home1/oracle/test/temp.dbf' SIZE 10M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
CREATE PUBLIC ROLLBACK SEGMENT rb1 TABLESPACE rbk STORAGE (INITIAL 100K NEXT 100K MINEXTENTS 20 MAXEXTENTS 100 OPTIMAL 3M);
- 建立測試用戶與授權:
CREATE USER test IDENTIFIED BY test DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 5M ON users;
GRANT CREATE SESSION, CREATE TABLE TO test;
- 驗證連線:
ORACLE_SID=test; export ORACLE_SID; sqlplus test/test → Connected.
- 客戶端 Net8 配置:在
tnsnames.ora 新增 test 服務名,測試遠端連線。
關鍵參數檔範例 (inittest.ora)
db_name = "test"
instance_name = test
service_names = test
control_files = ("/home1/oracle/test/test01.ctl","/home1/oracle/test/test02.ctl")
db_block_buffers = 19200
shared_pool_size = 52428800
large_pool_size = 614400
java_pool_size = 20971520
processes = 150
db_block_size = 4096
remote_login_passwordfile = exclusive
compatible = "8.1.0"
# ... 其他參數略
管理多實例提醒
- 每個實例擁有獨立 SID、參數檔、控制檔、資料檔、Listener 服務名。
- 記憶體總和 (SGA+PGA) 不可超過實體 RAM 70-80%。
- 使用
oratab + dbstart/dbshut 統一啟停。
- Listener 單一進程可服務多 SID,於
listener.ora SID_LIST 註冊。