標籤:注意 必須 base 大數 mem end history extent sys
Oracle資料庫的建立與刪除 之 CREATE DATABASE語句 2011-08-28 16:42:48
分類: Oracle
一、概念
一個Oracle資料庫,最基本的構成(邏輯):
- (1)system資料表空間 1個 --> # 用於存貯“資料字典”
- (2)sysaux資料表空間 1個 --> # 用於存貯“不屬於資料字典,但Oracle管理所需要的表”
- (3)redo log日誌 2組 --> # 用於“記錄所有已提交資料及動作”
- a. 需要至少2組,一組寫滿後,切換到另一組。
這時可以對已寫滿的這一組日誌進行備份,備份後清空給下一次使用]
- b. 一組中可以有多份日誌,但它們的內容是完全相同的。這樣就不用擔心因
為某一個記錄檔出問題而影響以後在恢複過程中的使用。
- (4)暫存資料表空間 1個 --> # 用於“記憶體排序”時,工作區空間不夠時使用
- (5)undo資料表空間 1個 --> # 用於“回退儲存在磁碟上的未提交的資料”
二、實踐
- create database {ORACLE_NAME} --> # 資料庫名,一般與ORACLE_SID相同
- user sys identified by {密碼} --> # 不設定,則預設為“change_on_install”
- user system identified by {密碼} --> # 不設定,則預設為“manager”
- maxlogfiles 5 --> # 最大日誌組數
- maxlogmembers 5 --> # 日誌組中最多成員數
- maxloghistory 1 --> #(RAC環境下有效,暫不深入)
- maxdatafiles 100 --> # 最大資料檔案數(與“DB_FILES”之間的關係?)
// 9i後,由DB_FILES參數來控制“最大資料檔案數”。這個參數名存實亡。
- logfile group 1 (‘/u01/app/oracle/oradata/orcl/redo01a.log‘,
‘/u01/app/oracle/oradata/orcl/redo01b.log‘,
‘/u01/app/oracle/oradata/orcl/redo01c.log‘) size 20M,
- group 2 (‘/u01/app/oracle/oradata/orcl/redo02a.log‘,
‘/u01/app/oracle/oradata/orcl/redo02b.log‘,
‘/u01/app/oracle/oradata/orcl/redo02c.log‘) size 20M,
- group 3 (‘/u01/app/oracle/oradata/orcl/redo03a.log‘,
‘/u01/app/oracle/oradata/orcl/redo03b.log‘,
‘/u01/app/oracle/oradata/orcl/redo03c.log‘) size 20M
- --> # 建立日誌組,及組中成員
- character set WE8ISO8859P1 --> # 資料庫字元集
- national character set UTF8 --> # 國家字元集
- extent management local --> # 指定system資料表空間中,擴充段的管理方式
[ local | dictionary ]
- // 使用“本地管理(local)”,即位元影像管理方式。(見後面的“Oracle體繫結構”部分)
// 設定為“本地管理”時,必須同時指定擴充塊的大小(兩種方式):
1、UNIFORM SIZE(統一大小){單位:“K” 或 “M”};
2、AUTOALLOCATE(自動分配)
// 預設為“字典管理(dictionary)”方式。
e.g//
- extent management local autoallocate
- extent management local uniform size 128k
- extent management dictionary
-
- datafile ‘/u01/app/oracle/oradata/orcl/system01.dbf‘ size 500M
--> # 建立“system資料表空間”
- sysaux datafile ‘/u01/app/oracle/oradata/orcl/sysaux01.dbf‘ size 500M
--> # 建立“sysaux資料表空間”
- default tablespace users
- datafile ‘/u01/app/oracle/oradata/orcl/users01.dbf‘ size 500M autoextend on maxsize unlimited --> # 建立“預設(永久)資料表空間”
// 使用者建立表時,若沒有指定資料表空間,則放在此資料表空間中
- default temporary tablespace temptbs
- tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf‘ size 300M
--> # 建立“預設暫存資料表空間”
- undo tablespace undotbs1
- datafile ‘/u01/app/oracle/oradata/orcl/undotbs01.dbf‘ size 300M autoextend on maxsize unlimited --> # 建立“undo資料表空間”(即:撤銷資料表空間)
// 注意:這裡的undo資料表空間名,一定要與
“參數檔案中的undo資料表空間”名稱一樣,否則建立失敗
- set time_zone = ‘+08:00‘; --> # 指定時區
三、CREATE DATABASE的其他子句
- maxinstances --> # 一個資料庫最多可以有多少個執行個體(用於RAC下)
- noarchivelog / archivelog --> # 非歸檔模式 / 歸檔模式
force logging --> #
除了對暫存資料表空間的操作,對其他對象的所有操作都需要記到日誌中
- set default tablespace smallfile | bigfile --> # 指定資料表空間的物理實現方式
- // smallfile 一個資料表空間可以有一個或多個資料檔案組成
- // bigfile 一個資料表空間只能有一個資料檔案組成
(一般用於ASM環境下)
四、技巧
(1)終端視窗A:
- SQL> startup nomount ;
(2)終端視窗B:
- SQL> tail -f $ORACLE_BASE/admin/$ORACLE_SID/bdump/alert_orcl.log
(3)終端視窗A:
- SQL> create database ....;
(4)終端視窗B:
- (這時,可以看到create database語句的執行細節)
參考:Oracle資料庫的建立與刪除 之 CREATE DATABASE語句
Oracle 建立資料庫