首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 手動創建數據庫完整實戰:從參數文件到數據字典視圖的 9 步驟詳解

     編輯:Oracle 資料庫基礎

為何要掌握手動創建?

DBCA 圖形化雖便捷,但手動創建是 DBA 核心基本功:理解實例與數據庫關係、排查啟動失敗、異構遷移、自動化部署腳本編寫、面試必考。

9 步驟標準流程

1. 確定標識

DB_NAME=MYNEWDB
SID=MYNEWDB

2. 管理員認證方式

OS 認證(本例採用)或密碼文件認證(REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE)。

3. 創建初始化參數文件 (PFILE)

複製 $ORACLE_HOME/admin/sample/pfile/initsmpl.ora 修改,保存為 D:\Oracle\ora92\database\initMYNEWDB.ora。關鍵參數:

# 實例與域
INSTANCE_NAME=MYNEWDB
DB_NAME=MYNEWDB
DB_DOMAIN=""

# 內存
SGA_TARGET=0              # 手動管理
SHARED_POOL_SIZE=50331648
LARGE_POOL_SIZE=8388608
JAVA_POOL_SIZE=33554432
DB_CACHE_SIZE=25165824
PGA_AGGREGATE_TARGET=25165824

# 存儲
DB_BLOCK_SIZE=8192
CONTROL_FILES=("D:\Oracle\oradata\MYNEWDB\CONTROL01.CTL",
               "D:\Oracle\oradata\MYNEWDB\CONTROL02.CTL",
               "D:\Oracle\oradata\MYNEWDB\CONTROL03.CTL")

# Undo
UNDO_MANAGEMENT=AUTO
UNDO_TABLESPACE=UNDOTBS
UNDO_RETENTION=10800

# 診斷
BACKGROUND_DUMP_DEST=D:\Oracle\admin\MYNEWDB\bdump
USER_DUMP_DEST=D:\Oracle\admin\MYNEWDB\udump
CORE_DUMP_DEST=D:\Oracle\admin\MYNEWDB\cdump
TIMED_STATISTICS=TRUE

# 進程
PROCESSES=150
OPEN_CURSORS=300

# 字符集
NLS_LANGUAGE=SIMPLIFIED CHINESE
NLS_TERRITORY=CHINA

4. 創建實例 (Windows)

C:\> SET ORACLE_SID=MYNEWDB
C:\> ORADIM -NEW -SID MYNEWDB -INTPWD MYNEWDB -STARTMODE MANUAL -PFILE D:\Oracle\ora92\database\initMYNEWDB.ora

ORADIM 管理 Windows 服務:創建/刪除/啟動/關閉實例服務。

5. 啟動實例至 NOMOUNT

SQLPLUS /NOLOG
CONNECT SYS/MYNEWDB AS SYSDBA
STARTUP NOMOUNT;

僅分配 SGA、啟動後台進程,**未掛載控制文件、未打開數據庫**。

6. 執行 CREATE DATABASE

CREATE DATABASE MYNEWDB
  MAXINSTANCES 1
  MAXLOGHISTORY 1
  MAXLOGFILES 5
  MAXLOGMEMBERS 5
  MAXDATAFILES 100
  DATAFILE 'D:\Oracle\oradata\mynewdb\system.dbf' SIZE 50M
  UNDO TABLESPACE UNDOTBS DATAFILE 'D:\Oracle\oradata\mynewdb\undotbs.dbf' SIZE 50M
    AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
  DEFAULT TEMPORARY TABLESPACE TEMPTS
  CHARACTER SET US7ASCII
  NATIONAL CHARACTER SET AL16UTF16
  LOGFILE GROUP 1 ('D:\Oracle\oradata\mynewdb\redo01.log') SIZE 100M,
          GROUP 2 ('D:\Oracle\oradata\mynewdb\redo02.log') SIZE 100M,
          GROUP 3 ('D:\Oracle\oradata\mynewdb\redo03.log') SIZE 100M;

同步執行 $ORACLE_HOME/rdbms/admin/sql.bsq:創建 SYSTEM 表空間/回滾段、SYS/SYSTEM 用戶、數據字典基表/索引、預定義角色。

7. 創建業務表空間

CREATE TABLESPACE USERS DATAFILE 'D:\Oracle\oradata\mynewdb\users01.dbf' SIZE 100M
  REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL;

CREATE TABLESPACE INDX DATAFILE 'D:\Oracle\oradata\mynewdb\index01.dbf' SIZE 100M
  REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL;

8. 構建數據字典視圖

@D:\Oracle\ora92\rdbms\admin\catalog.sql;  -- V$ 視圖、同義詞、PUBLIC 授權
@D:\Oracle\ora92\rdbms\admin\catproc.sql;  -- PL/SQL 包體、標準包

9. 創建 SPFILE 並重啟驗證

CREATE SPFILE FROM FILE='D:\Oracle\ora92\database\initMYNEWDB.ora';
SHUTDOWN IMMEDIATE;
STARTUP;

生成 SPFILEMYNEWDB.ORA,實現參數持久化與動態修改能力。

避坑檢查清單

  • 目錄預創建:oradata\MYNEWDB、admin\MYNEWDB\bdump|udump|cdump。
  • 字符集選型:生產環境**強制 AL32UTF8**,避免 US7ASCII 導致中文存儲不可用。
  • 控制文件多路徑冗余(至少 2 個,建議 3 個不同磁盤)。
  • Undo 表空間啟用自動擴展,防止長事務「Snapshot too old」。
  • 啟動後驗證:SELECT NAME, OPEN_MODE FROM V$DATABASE; → MYNEWDB READ WRITE。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved