雖然 DBCA (Database Configuration Assistant) 提供圖形化建庫介面,但掌握手工建庫流程有助於深入理解 Oracle 架構。本文記錄在 Windows Server 平台上,使用 SQL*Plus 執行腳本手工建立 Oracle 10g 資料庫的完整步驟與關鍵腳本內容。
mkdir d:\Oracle\product\10.1.0\database
mkdir e:\Oracle\admin\Ora10g\bdump
mkdir e:\Oracle\admin\Ora10g\cdump
mkdir e:\Oracle\admin\Ora10g\create
mkdir e:\Oracle\admin\Ora10g\pfile
mkdir e:\Oracle\admin\Ora10g\udump
mkdir e:\Oracle\Flash_recovery_area
mkdir e:\Oracle\oradata
mkdir e:\Oracle\oradata\Ora10g
REM 設定 SID
set ORACLE_SID=Ora10g
REM 建立實例服務 (手動啟動),再改為自動
d:\oracle\product\10.1.0\DB_1\bin\oradim.exe -new -sid Ora10g -startmode manual -spfile
d:\oracle\product\10.1.0\DB_1\bin\oradim.exe -edit -sid Ora10g -startmode auto -spfile
REM 建立密碼檔
d:\oracle\product\10.1.0\DB_1\bin\orapwd.exe file=d:\Oracle\product\10.1.0\db_1\PWDOra10g.ora password=SysPassword force=y
需先備妥 init.ora 放置於 D:\Oracle\admin\Ora10g\scripts\,關鍵參數包含 db_name, control_files, undo_management, *.dump_dest 等。
CONNECT SYS/SysPassword AS SYSDBA
SET ECHO ON
SPOOL D:\Oracle\admin\Ora10g\create\CreateDB.log
STARTUP NOMOUNT PFILE="D:\Oracle\admin\Ora10g\scripts\init.ora";
CREATE DATABASE Ora10g
MAXINSTANCES 1
MAXLOGHISTORY 1
MAXLOGFILES 5
MAXLOGMEMBERS 3
MAXDATAFILES 100
DATAFILE 'E:\Oracle\oradata\Ora10g\system01.dbf' SIZE 250M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL
DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE 'E:\Oracle\oradata\Ora10g\temp01.dbf' SIZE 40M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
UNDO TABLESPACE "UNDOTBS1" DATAFILE 'E:\Oracle\oradata\Ora10g\undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET AL16UTF16
LOGFILE GROUP 1 ('E:\Oracle\oradata\Ora10g\redo01.log') SIZE 102400K,
GROUP 2 ('E:\Oracle\oradata\Ora10g\redo02.log') SIZE 102400K,
GROUP 3 ('E:\Oracle\oradata\Ora10g\redo03.log') SIZE 102400K;
SPOOL OFF
EXIT;
CONNECT SYS/SysPassword AS SYSDBA
SET ECHO ON
SPOOL D:\Oracle\admin\Ora10g\create\CreateDBFiles.log
CREATE TABLESPACE "INDX" LOGGING DATAFILE 'E:\Oracle\oradata\Ora10g\indx01.dbf' SIZE 25M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
CREATE TABLESPACE "TOOLS" LOGGING DATAFILE 'E:\Oracle\oradata\Ora10g\tools01.dbf' SIZE 10M REUSE AUTOEXTEND ON NEXT 320K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
CREATE TABLESPACE "USERS" LOGGING DATAFILE 'E:\Oracle\oradata\Ora10g\users01.dbf' SIZE 25M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
SPOOL OFF
EXIT;
CONNECT SYS/SysPassword AS SYSDBA
SET ECHO ON
SPOOL D:\Oracle\admin\Ora10g\create\CreateDBCatalog.log
@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catexp7.sql
@?/rdbms/admin/catblock.sql
@?/rdbms/admin/catproc.sql
@?/rdbms/admin/catoctk.sql
@?/rdbms/admin/owminst.plb
CONNECT SYSTEM/Manager
@?/sqlplus/admin/pupbld.sql
CONNECT SYSTEM/MANAGER
SET ECHO ON
SPOOL D:\Oracle\admin\Ora10g\create\sqlPlusHelp.log
@?/sqlplus/admin/help/hlpbld.sql helpus.sql
SPOOL OFF
EXIT;
CONNECT SYS/SysPassword AS SYSDBA
SET ECHO ON
SPOOL D:\Oracle\admin\Ora10g\create\postDBCreation.log
@?/rdbms/admin/utlrp.sql -- 重新編譯失效物件
SHUTDOWN IMMEDIATE;
CONNECT SYS/SysPassword AS SYSDBA
SET ECHO ON
SPOOL D:\Oracle\admin\Ora10g\create\postDBCreation.log APPEND
CREATE SPFILE='D:\oracle\product\10.1.0\db_1\database\spfileOra10g.ora' FROM PFILE='D:\Oracle\admin\Ora10g\scripts\init.ora';
STARTUP;
EXIT;
Linux 下流程同理,差異在於路徑分隔符、環境變數設定 (export ORACLE_HOME, LD_LIBRARY_PATH) 及使用 orapwd、sqlplus 完整路徑呼叫。建議撰寫 Shell Script (create_db.sh) 串聯上述四個 .sql 腳本自動化執行。
CREATE DATABASE 時確定,事後修改極其困難。UNDO_TABLESPACE 參數值必須與 CREATE DATABASE 中定義的 Undo 表空間名稱一致。EXTENT MANAGEMENT LOCAL 及 SEGMENT SPACE MANAGEMENT AUTO (ASSM) 簡化空間管理。utlrp.sql 編譯所有 PL/SQL 物件,並建立 SPFILE 利於動態參數調整。