DB_NAME = MYNEWDB
SID = MYNEWDB
-- 採用作業系統認證 (OS Authentication)
基於 $ORACLE_HOME/admin/sample/pfile/init.ora 修改,存放於 D:\Oracle\ora92\database\initMYNEWDB.ora
# 共享伺服器 (MTS)
dispatchers = "(PROTOCOL=TCP)(SERVICE=MYNEWDBXDB)"
# 實例名稱
instance_name = MYNEWDB
# 安全與審計
remote_login_passwordfile = EXCLUSIVE
# 排序區
pga_aggregate_target = 25165824
sort_area_size = 524288
# 全域資料庫名
db_domain = ""
db_name = MYNEWDB
# 控制檔 (多路鏡像)
control_files = (
"D:\Oracle\oradata\MYNEWDB\CONTROL01.CTL",
"D:\Oracle\oradata\MYNEWDB\CONTROL02.CTL",
"D:\Oracle\oradata\MYNEWDB\CONTROL03.CTL"
)
# SGA 記憶體配置
java_pool_size = 33554432
large_pool_size = 8388608
shared_pool_size = 50331648
# 相容參數
compatible = 9.2.0
# 診斷與追蹤
background_dump_dest = D:\Oracle\admin\MYNEWDB\bdump
core_dump_dest = D:\Oracle\admin\MYNEWDB\cdump
user_dump_dest = D:\Oracle\admin\MYNEWDB\udump
# 其它
processes = 150
sessions = 170
transactions = 187
open_cursors = 300
db_block_size = 8192
db_files = 200
-- Windows: 建立服務
ORADIM -NEW -SID MYNEWDB -INTPWD password -STARTMODE MANUAL -PFILE D:\Oracle\ora92\database\initMYNEWDB.ora
-- 設定環境變數
SET ORACLE_SID=MYNEWDB
-- 啟動至 NOMOUNT
SQLPLUS /NOLOG
CONNECT / AS SYSDBA
STARTUP NOMOUNT PFILE=D:\Oracle\ora92\database\initMYNEWDB.ora
CREATE DATABASE MYNEWDB
USER SYS IDENTIFIED BY sys_password
USER SYSTEM IDENTIFIED BY system_password
LOGFILE GROUP 1 ('D:\Oracle\oradata\MYNEWDB\REDO01.LOG') SIZE 50M,
GROUP 2 ('D:\Oracle\oradata\MYNEWDB\REDO02.LOG') SIZE 50M,
GROUP 3 ('D:\Oracle\oradata\MYNEWDB\REDO03.LOG') SIZE 50M
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXLOGHISTORY 1000
MAXDATAFILES 200
MAXINSTANCES 1
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
DATAFILE 'D:\Oracle\oradata\MYNEWDB\SYSTEM01.DBF' SIZE 300M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE 'D:\Oracle\oradata\MYNEWDB\SYSAUX01.DBF' SIZE 200M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
DEFAULT TABLESPACE users
DATAFILE 'D:\Oracle\oradata\MYNEWDB\USERS01.DBF' SIZE 100M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE temp
TEMPFILE 'D:\Oracle\oradata\MYNEWDB\TEMP01.DBF' SIZE 50M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
UNDO TABLESPACE undotbs1
DATAFILE 'D:\Oracle\oradata\MYNEWDB\UNDOTBS01.DBF' SIZE 100M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED;
-- 索引表空間
CREATE TABLESPACE indx
DATAFILE 'D:\Oracle\oradata\MYNEWDB\INDX01.DBF' SIZE 100M AUTOEXTEND ON;
-- 應用專用表空間
CREATE TABLESPACE app_data
DATAFILE 'D:\Oracle\oradata\MYNEWDB\APP_DATA01.DBF' SIZE 500M AUTOEXTEND ON;
CREATE TABLESPACE app_index
DATAFILE 'D:\Oracle\oradata\MYNEWDB\APP_IDX01.DBF' SIZE 200M AUTOEXTEND ON;
@?/rdbms/admin/catalog.sql -- 核心視圖、同義詞、公共同義詞
@?/rdbms/admin/catproc.sql -- PL/SQL 套件、系統套件
@?/rdbms/admin/utlrp.sql -- 重新編譯無效物件
-- 10g/11g 額外腳本
@?/rdbms/admin/catjava.sql -- Java 虛擬機相關 (若安裝 JVM)
@?/sqlplus/admin/pupbld.sql -- SQL*Plus PRODUCT_USER_PROFILE
ORACLE_SID、ORACLE_HOME 環境變數$ORACLE_HOME/dbs/init${ORACLE_SID}.oraorapwd file=$ORACLE_HOME/dbs/orapw${ORACLE_SID} password=sys_password entries=10/u01/app/oracle/admin/${ORACLE_SID}SELECT name, open_mode FROM v$database; → OPEN READ WRITESELECT tablespace_name, status FROM dba_tablespaces; → SYSTEM/SYSAUX/UNDO/TEMP/USERS 皆 ONLINESELECT count(*) FROM dba_objects WHERE status = 'INVALID'; → 0 (或極少)SELECT * FROM v$version; → 版本資訊正確| 失敗點 | 典型錯誤 | 對策 |
|---|---|---|
| 參數檔路徑/語法 | ORA-01078, LRM-00109 | 逐行核對、使用 SPFILE 轉換驗證 |
| 控制檔目錄不存在 | ORA-00210, ORA-00202 | 預先建立目錄、檢查權限 |
| 字符集不支援 | ORA-01034, ORA-12714 | 確認 CHARACTER SET 拼寫、資料庫版本支援 |
| 資料字典腳本失敗 | ORA-00600, ORA-04031 | 增加 SHARED_POOL_SIZE、分步執行 |
| Windows 服務未啟動 | ORA-12560, TNS-12541 | services.msc 啟動 OracleServiceSID |
手動建立資料庫是 DBA 理解 Oracle 架構的「解剖實驗」。從參數檔到資料字典,每一步都映射到實例啟動、儲存分配、元資料初始化的核心機制。掌握此 SOP,不懼無 DBCA 環境,亦能從容交付生產級資料庫。