手動建庫 (Manual Database Creation) 能讓 DBA 完全掌控文件佈局、參數配置、存儲屬性,是理解 Oracle 架構的最佳練習。本文記錄 11g 環境下的前置準備步驟。
# 進入數據文件根目錄
cd $ORACLE_BASE/oradata
ls
# 假設已有 PROD 庫
# 創建新庫 SID 目錄
mkdir HYL
cd HYL
# 規劃多磁盤分佈目錄 (根據實際掛載點調整)
mkdir dump disk1 disk2 disk3 disk4 disk5
# dump 目錄下細分三類追蹤文件
cd dump
mkdir bdump cdump udump
# bdump: 背景進程跟蹤 (alert.log 等)
# cdump: 核心轉儲
# udump: 用戶進程跟蹤 (SQL Trace 文件)
# 遞歸授權給 oracle 用戶及 oinstall 組
chown -R oracle:oinstall /u01/app/oracle/oradata/HYL
# 目錄權限 755 (owner rwx, group rx, other rx)
chmod -R 755 /u01/app/oracle/oradata/HYL
關鍵點:所有數據文件、控制文件、Redo Log、參數文件、追蹤目錄必須在 oracle 用戶可寫路徑下,否則啟動失敗。
cd $ORACLE_HOME/dbs
vi initHYL.ora
核心參數模板:
*.sga_target=400M
# 物理內存 80% 給 SGA+PGA,SGA:PGA ≈ 4:1
*.db_name=HYL
*.control_files='/u01/app/oracle/oradata/HYL/disk1/control01.ctl',
'/u01/app/oracle/oradata/HYL/disk2/control01.ctl',
'/u01/app/oracle/oradata/HYL/disk3/control01.ctl'
*.undo_management=AUTO
*.undo_tablespace=UNDOTBS
*.user_dump_dest=/u01/app/oracle/oradata/HYL/dump/udump
*.background_dump_dest=/u01/app/oracle/oradata/HYL/dump/bdump
*.core_dump_dest=/u01/app/oracle/oradata/HYL/dump/cdump
export ORACLE_SID=HYL
sqlplus / as sysdba
SQL> STARTUP NOMOUNT;
-- 實例啟動,僅分配 SGA、啟動背景進程,未掛載控制文件
下一步需根據官方文檔範例編寫包含以下子句的 CREATE DATABASE 語句:
USER SYS IDENTIFIED BY ... USER SYSTEM IDENTIFIED BY ...LOGFILE GROUP ... (多路徑多路復用)DATAFILE ... SIZE ... AUTOEXTEND ... (系統、Sysaux、Undo、Temp、Users 等)CHARACTER SET AL32UTF8 NATIONAL CHARACTER SET AL16UTF16EXTENT MANAGEMENT LOCALDEFAULT TABLESPACE users DATAFILE ...DEFAULT TEMPORARY TABLESPACE temp TEMPFILE ...UNDO TABLESPACE undotbs DATAFILE ...CREATE DATABASE → 數據庫創建完成,處於 MOUNT/OPEN 狀態。@?/rdbms/admin/catalog.sql、@?/rdbms/admin/catproc.sql 建立數據字典與內置包。@?/rdbms/admin/utlrp.sql 編譯無效對象。| 維度 | 手動建庫 | DBCA |
|---|---|---|
| 可控性 | 完全可控,每個文件路徑、大小、參數可定製 | 向導式,選項有限 |
| 學習價值 | 極高,強制理解架構 | 低 |
| 生產效率 | 低,易拼寫錯誤 | 高,模板化、驗證完善 |
| 適用場景 | 教學、特殊架構、無圖形界面服務器 | 生產標準化部署 |
建議:生產環境優先使用 DBCA 響應文件靜默安裝;手動建庫作為技能儲備與應急方案。