使用create database語句建立資料庫的詳細操作步驟

eric0435發表於2014-04-10

使用create database語句建立資料庫的步驟如下:
1.指定一個例項識別符號SID
2.確保設定了必要的環境變數
3.選擇一個資料庫管理員驗證方法
4.建立一個初始化引數檔案
5.(只用於windows平臺)建立一個例項
6.連線例項
7.建立一個伺服器引數檔案
8.啟動例項
9.執行create database
10.建立額外的表空間
11.執行指令碼來建立資料字典檢視
12.(可選項)執行指令碼來安裝可選項
13.備份資料庫
14.(可選項)啟用自動例項啟動

步驟1:指定一個例項識別符號(SID)
對於你的例項定義一個唯一的oracle系統識別符號(SID),開啟一個命令視窗並設定ORACLE_SID環境變數.ORACLE_SID用來與相同主機上其它的例項進行區分.ORACLE_SID在特定平臺上有些字元是被限制使用的.在有些平臺上,SID是區分大小寫的.注意:最常見的做法是將SID設定為與資料庫名稱相同.資料庫的最大字元個數是8

在UNIX和Linux作業系統中設定SID的語法如下:
如果是Bourne, Bash, or Korn shell
ORACLE_SID=mynewdb
export ORACLE_SID

如果是C shell
setenv ORACLE_SID mynewdb

在windows作業系統中設定SID的語法如下:
set ORACLE_SID=mynewdb

步驟2:確保設定了必要的環境變數
依賴於你的作業系統,在你啟動SQL*Plus之前,必須要設定環境變數或者至少要驗證設定的正確性

例如,在大多數平臺中,ORACLE_SID和ORACLE_HOME必須要設定.另外建議設定PATH變數包含ORACLE_HOME/bin目錄.
在UNIX和Linux平臺上必須手工設定這些環境變數.在windows平臺中,OUI自動在windows登錄檔中指定ORACLE_HOME
和ORACLE_SID的值.如果在安裝時不建立資料庫,OUI不會在登錄檔中設定ORACLE_SID,當在以後建立資料庫時要設定
ORACLE_SID環境變數.

步驟3:選擇一個資料庫管理員驗證方法
為了能建立一個資料庫你必須被驗證且被授予合適的系統許可權.作為一個管理員可以用以下幾種方式來驗證
.使用密碼檔案來驗證
.使用操作來驗證
在這一步你要決定一個驗證方法

為了使用密碼檔案來進行驗證需要建立一個密碼檔案.為了使用作業系統來進行驗證你要確保你登入主機的使用者是一個
合適的作業系統使用者組的成員.在UNIX和Linux平臺中通常是dba使用者組,在windows平臺上安裝軟體的使用者會自動的新增到所要求的使用者組中.

步驟4:建立初始化引數檔案
當oracle例項啟動時會讀取一個初始化引數檔案.這個檔案可以是文字檔案它可以使用文字編輯器來編輯,也可以是二進位制檔案它是由資料庫建立和動態修改的.二進位制檔案也叫伺服器引數檔案.在這一步你可以建立一個文字引數檔案.在最後一步透過文字檔案建立伺服器引數檔案.

如果手工建立初始化引數檔案,確保它包含下面列表中的引數,所有其它沒有列出的引數都有預設值

---------------------------------------------------------------------------------------------
引數值                        強制             注意
---------------------------------------------------------------------------------------------
DB_NAME                       Yes              資料庫識別符號.它的值必須與create database
                                               語句中的值相對應.最大長度為8個字元

CONTROL_FILES                 No               強烈建議設定這個引數.如果沒有提供,那麼資料庫
                                               例項將在初始化引數檔案相同的目錄建立一個控制
                                               檔案.提供這個引數可以多路複用控制檔案

MEMORY_TARGET                 No               啟用自動記憶體管理設定例項使用的記憶體總量.可以選
                                               擇其它的初始化引數來手工控制記憶體的使用
---------------------------------------------------------------------------------------------

為了方便起見,在oracle資料庫的預設值位置儲存初始化引數檔案且使用預設的檔名.在啟動資料庫時,它將不需要
在執行startup命令時指定pfile子句.因為oracle資料庫會自動在預設位置查詢初始化引數檔案.

步驟5:(只適用於windows)建立一個例項
在windows平臺上在你連線到一個例項之前如果這個例項不存在你必須手工建立它.使用oradim命令將建立一個oracle
例項

為了建立一個例項:
在一個windows命令提示符處輸入下面的命令:
oradim -NEW -SID sid -STARTMODE MANUAL -PFILE pfile
sid是期待的SID(例如newdb),pfile是完全路徑的文字初始化引數檔案.這個命令只會建立例項不會啟動例項.

注意:在這裡沒有將-startmode引數設定為auto是因為它會讓新的例項啟動並試圖掛載資料庫.

步驟6:連線例項
啟動SQL*Plus並使用sysdba系統許可權來連線到oracle例項.
.使用密碼檔案驗證輸入下面的命令且輸入sys密碼:

[oracle@jyrac1 ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Wed Apr 9 09:59:55 2014

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> conn sys as sysdba
Enter password:
Connected to an idle instance.

.使用作業系統驗證輸入下面命令:

[oracle@jyrac1 ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Wed Apr 9 09:59:08 2014

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> conn / as sysdba
Connected to an idle instance.

SQL*Plus輸出下面資訊:
Connected to an idle instance

注意:SQL*Plus可能輸出類似於下面的資訊:

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

如果是這樣,例項已經啟動了.你可能連線到一個錯誤的例項了.執行exit命令退出SQL*Plus,檢查ORACLE_SID的值
然後重複這個步驟

步驟7:建立伺服器引數檔案
伺服器引數檔案能讓你使用alter system命令來修改初始化引數且讓改變在資料庫重新啟動後仍然生效.可以透過
一個文字引數檔案來建立一個伺服器引數檔案.

下面的SQL*Plus命令將從預設位置使用預設名稱來讀取一個文字初始化引數檔案(pfile),透過文字初始化引數檔案
來建立一個伺服器引數檔案(spfile)並將spfile使用預設的spfile名稱寫到預設位置.
create spfile from pfile;

如果不使用預設的名字和位置也可以對pfile和spfile提供檔名和路徑

注意:在伺服器引數檔案起作用之前必須要重啟資料庫.雖然在這裡建立一個伺服器引數檔案是一個可選項,但是建議
建立一個伺服器引數檔案.如果不建立伺服器引數檔案那麼例項在啟動時將繼續讀取文字初始化引數檔案

更重要的:如果正使用oracle管理檔案功能且初始化引數檔案不包含control_files引數,那麼在執行create database語句時就必須建立一個伺服器引數檔案資料庫能儲存控制檔案的名字和位置.

步驟8:啟動例項
啟動例項不載入資料庫.通常只在資料庫建立或者執行資料庫維護操作時使用.使用帶有nomount子句的startup命令.
在下面的例子中,因為初始化引數檔案或伺服器引數檔案存放在預設位置所以不需要指定pfile子句.

SQL> startup nomount
ORACLE instance started.

Total System Global Area  217157632 bytes
Fixed Size                  2211928 bytes
Variable Size             159387560 bytes
Database Buffers           50331648 bytes
Redo Buffers                5226496 bytes

步驟9:執行create database語句
為了建立一個新的資料庫使用create database語句
例1:
下面的語句建立資料庫jy.這個資料庫名必須與初始化引數檔案中的db_name相同.這個例子假設下面的條件成立:
.初始化引數檔案使用control_files引數指定了控制檔案的數量和位置
.存在目錄/u01/app/oracle/oradata/jy

SQL> CREATE DATABASE jy
  2  USER SYS IDENTIFIED BY "zzh_2046"
  3  USER SYSTEM IDENTIFIED BY "zzh_2046"
  4  LOGFILE GROUP 1 ('/u01/app/oracle/oradata/jy/redo01a.log','/u01/app/oracle/oradata/jy/redo01b.log') SIZE 50M BLOCKSIZE 512,
  5  GROUP 2 ('/u01/app/oracle/oradata/jy/redo02a.log','/u01/app/oracle/oradata/jy/redo02b.log') SIZE 50M BLOCKSIZE 512,
  6  GROUP 3 ('/u01/app/oracle/oradata/jy/redo03a.log','/u01/app/oracle/oradata/jy/redo03b.log') SIZE 50M BLOCKSIZE 512
  7  MAXLOGFILES 5
  8  MAXLOGMEMBERS 5
  9  MAXLOGHISTORY 1
 10  MAXDATAFILES 100
 11  CHARACTER SET ZHS16GBK
 12  NATIONAL CHARACTER SET AL16UTF16
 13  EXTENT MANAGEMENT LOCAL
 14  DATAFILE '/u01/app/oracle/oradata/jy/system01.dbf' SIZE 325M REUSE
 15  SYSAUX DATAFILE '/u01/app/oracle/oradata/jy/sysaux01.dbf' SIZE 325M REUSE
 16  DEFAULT TABLESPACE users
 17  DATAFILE '/u01/app/oracle/oradata/jy/users01.dbf'
 18  SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
 19  DEFAULT TEMPORARY TABLESPACE tempts1
 20  TEMPFILE '/u01/app/oracle/oradata/jy/temp01.dbf'
 21  SIZE 20M REUSE
 22  UNDO TABLESPACE undotbs
 23  DATAFILE '/u01/app/oracle/oradata/jy/undotbs01.dbf'
 24  SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

Database created.

建立的資料庫有以下特徵:
.資料庫名為jy.

.由於在引數檔案中沒有指定control_files引數,資料庫自動地在引數檔案位置建立了一個控制檔案

.sys和system使用者的密碼為指定的zzh_2046.從oracle11g開始密碼是區分大小寫的.兩個指定sys和
system使用者的密碼的子句不是強制性的.然而如果你指定子句就必須對它們都指定.

.新建立的資料庫有三組重做日誌檔案,每一組有兩個成員由logfile子句指定.maxlogfiles,maxlogmembers和
maxloghistory指定了重做日誌的限制.重做日誌檔案的塊大小被設定為了512 bytes.和磁碟上的物理塊大小相同.
如果塊大小與物理塊大小相同(預設值)那麼blocksize子句是一個可選項.物理塊的大小通常是512,1024和4096.
對於磁碟使用4K的塊大小可以選擇指定blocksize為4096

.maxdatafiles指定了在資料庫中能開啟的資料檔案的最大個數.這個值的大小會影響控制檔案的大小.
注意:在建立資料庫時可以設定多個限制.有些限制透過作業系統限制來實現的.例如,如果設定了maxdatafiles,
oracle資料庫會在控制檔案中分配足夠的空間來儲存maxdatafiles引數所指定個數的檔名.即使資料庫一開始
只有一個資料檔案.然而因為控制檔案的最大大小與作業系統相關,在create database的引數中可能無法設定為
理論上的最大值.

.字符集ZHS16GBK用來在資料庫中儲存資料

.字符集AL16UTF16用來指定national character set,用來儲存nchar,nclob或nvarchar2型別的資料

.system表空間由作業系統檔案組成/u01/app/oracle/oradata/jy/system01.dbf由datafile子句來建立.如果已經
存在一個相同的檔名那麼它將會被覆蓋.

.system表空間建立為本地管理表空間

.sysaux表空間由作業系統檔案組成/u01/app/oracle/oradata/jy/sysaux01.dbf由sysaux datafile子句來建立

.default tablespace子句對資料庫建立和命名一個預設的永久表空間

.default temporary tablespace了句對資料庫建立和命名一個預設的臨時表空間

.如果在初始化引數檔案中指定了undo_management=auto,unod tablespace子句建立和命名一個undo表空間用來
儲存資料庫的undo資料.如果忽略這個引數預設值就是auto.

.重做日誌檔案在初始化時不進行歸檔,因為archivelog子句在create database語句中沒有指定.在建立資料庫時
這是常見的行為.可以在建立資料庫之後使用alter database語句來切換到archivelog模式.在初始化引數檔案中
與歸檔有關的初始化引數為log_archive_dest_1和log_archive_format.

注意:
.確保在create database語句的所用的所有目錄都已經建立好.create database語句不會建立目錄
.如果沒有使用oracle管理檔案,那麼每一個子句必須包括一個datafile或tempfile子句
.如果資料庫建立失敗,那麼可以檢視告警日誌來判斷失敗的原因且修正.
.為了在失敗後重新提交create database語句你必須首先關閉例項且刪除之前create database語句所建立的任何
檔案

示例2
這個例子將使用oracle管理檔案來建立一個資料庫.它能讓你使用一個更簡單的create database語句來建立一個
資料庫.為了使用oracle管理檔案必須指定初始化引數db_create_file_dest.這個引數定義了在建立資料庫各種
檔案的儲存目錄和名稱.下面的語句就是在初始化引數檔案中設定這個引數:
db_create_file_dest='/u01/app/oracle/oradata'

使用oracle管理檔案和下面的create database語句,資料庫將建立system和syaaux表空間,還可以建立語句中所
指定的額外的表空間,且會對所有資料檔案,控制檔案和重做日誌檔案使用預設的大小和屬性.注意這些屬性和其它
預設的資料庫屬性透過這種方法進行設定可能不能滿足你生產環境的要求,所以建議你根據需要修改配置.

SQL> startup nomount
ORACLE instance started.

Total System Global Area  217157632 bytes
Fixed Size                  2211928 bytes
Variable Size             159387560 bytes
Database Buffers           50331648 bytes
Redo Buffers                5226496 bytes
SQL> show parameter db_create_file_dest

NAME                                 TYPE                    VALUE
------------------------------------ ----------------------  ------------------------------
db_create_file_dest                  string                  /u01/app/oracle/oradata

SQL> CREATE DATABASE cs
  2  USER SYS IDENTIFIED BY "zzh_2046"
  3  USER SYSTEM IDENTIFIED BY "zzh_2046"
  4  EXTENT MANAGEMENT LOCAL
  5  DEFAULT TEMPORARY TABLESPACE temp
  6  UNDO TABLESPACE undotbs1
  7  DEFAULT TABLESPACE users;

Database created.

使用oracle管理檔案時會將控制檔案,資料檔案,重做日誌檔案以不同的目錄來儲存

[oracle@jyrac1 CS]$ pwd
/u01/app/oracle/oradata/CS

[oracle@jyrac1 CS]$ ls
controlfile  datafile  onlinelog

[oracle@jyrac1 datafile]$ ls -lrt
total 318828
-rw-r----- 1 oracle oinstall 104865792 Apr  9 11:40 o1_mf_temp_9n9jb02z_.tmp
-rw-r----- 1 oracle oinstall 104865792 Apr  9 11:41 o1_mf_users_9n9jb08d_.dbf
-rw-r----- 1 oracle oinstall 104865792 Apr 10 08:31 o1_mf_system_9n9j9p4h_.dbf
-rw-r----- 1 oracle oinstall  10493952 Apr 10 08:41 o1_mf_undotbs1_9n9j9y6l_.dbf
-rw-r----- 1 oracle oinstall 104865792 Apr 10 08:41 o1_mf_sysaux_9n9j9tj4_.dbf

[oracle@jyrac1 controlfile]$ ls -lrt
total 7676
-rw-r----- 1 oracle oinstall 7847936 Apr 10 08:46 o1_mf_9n9j9lxs_.ctl

[oracle@jyrac1 onlinelog]$ ls
o1_mf_1_9n9j9m5x_.log  o1_mf_2_9n9j9mfv_.log

注意:如果create database語句失敗且如果不能完成步驟7,那麼確保對於這個例項這裡不存在伺服器引數檔案(spfile)
例如,一個spfile包含了所有控制檔案的完全路徑,如果create database語句失敗,如果這些控制檔案不存在,確保你在重啟例項之後刪除一個你不使用的spfile檔案

步驟10:建立額外的表空間
為了使用資料庫的功能你必須為你的應用資料建立額外的表空間.下面的指令碼用來建立額外的表空間:

SQL> CREATE TABLESPACE apps_tbs LOGGING
  2  DATAFILE '/u01/app/oracle/oradata/jy/apps01.dbf'
  3  SIZE 50M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
  4  EXTENT MANAGEMENT LOCAL;

Tablespace created.

SQL> CREATE TABLESPACE indx_tbs LOGGING
2 DATAFILE '//u01/app/oracle/oradata/jy/indx01.dbf'
3 SIZE 50M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
4 EXTENT MANAGEMENT LOCAL;

Tablespace created.

步驟11:執行指令碼建立資料字典檢視
執行必要的指令碼來建立資料字典檢視,同義詞,PL/SQL包

SQL> @$ORACLE_HOME/rdbms/admin/catalog.sql
SQL> @$ORACLE_HOME/rdbms/admin/catproc.sql
SQL> @$ORACLE_HOME/sqlplus/admin/pupbld.sql

catalog.sql指令碼建立資料字典表的檢視,動態效能檢視和許多檢視的公共同義詞.授予public來訪問同義詞
catproc.sql執行所有要使用的PL/SQL的建立指令碼
pupbld.sql SQL*Plus所要求的指令碼

步驟12:(可選項)執行指令碼來安裝額外的選項
你可能想執行其它的指令碼.這些指令碼是由你選擇使用或安裝的功能所決定的.如果你想安裝其它的oracle產品與
資料庫一起工作那麼你將要執行其它的指令碼來建立一些額外的資料字典表.

步驟13:備份資料庫
對資料庫執行一個完全備份來確保如果出現介質故障能夠有一個完整的檔案備份.可以使用rman進行備份

步驟14:(可選項)啟用自動例項啟動
你可能想配置oracle例項在作業系統重啟之後自動啟動.可以檢視作業系統相關的文件.例如對於windows平臺
可以使用下面的命令來配置資料庫根據作業系統重啟而重啟例項:
ORADIM -EDIT -SID sid -STARTMODE AUTO -SRVCSTART SYSTEM [-SPFILE]
如果想讓例項在自動重啟時使用spfile必須指定-spfile引數

指定create database語句的子句
當執行create database語句時,oracle資料庫會執行一些操作.實際操作的執行依賴於在create database語句中指定的子句和你設定的初始化引數.oracle資料庫至少執行以下操作:
建立資料庫的資料檔案
建立資料庫的控制檔案
建立資料庫的重做日誌檔案和建立archivelog模式
建立system表空間
建立sysaux表空間
建立資料字典
設定資料庫儲存資料的字符集
設定資料庫的時區
載入資料庫和開啟資料庫

指定sys和system使用者的密碼來保護資料庫
create database語句中有子句可以指定sys和system使用者的密碼:
.user sys identified by password
.user system identified by password
如果忽略這些子句那麼這些使用者將會使用預設的密碼change_on_install和manager,且會在告警日誌檔案中寫入一條記錄來指示預設密碼已經被使用.為了保持資料庫你必須在資料庫建立之後使用alter user語句來修改密碼.

oracle建議你指定這些子句即使它們是可選項.預設的密碼是通用的,如果你忘記了修改那麼你的資料庫處於很容易攻擊的狀態.

當你選擇密碼時要注意在oracle 11g中密碼是區分大小寫的.也可能資料庫對密碼有格式要求.

建立本地管理的system表空間
在create database語句中指定extent management local子句來建立一個本地管理的system表空間.初始化引數compatible必須設定為10.0.0或都更高的值這個建立語句才能執行成功.如果你不指定extent management local子句,那麼預設情況下會建立一個字典管理system表空間.字典管理表空間已經被棄用.

如果你使用本地管理的system表空間來建立資料庫而不使用oracle管理檔案那麼要確保滿足下面的條件:
.在create database語句中指定default temporary tablespace子句
.在create database語句中指定undo tablespace子句

sysaux表空間
sysaux表空間總是在資料庫建立時被建立的.sysaux表空間作為system表空間的輔助表空間來使用的.因為它是許多資料庫的功能和產品所要求的預設表空間,它減少了資料庫要求的表空間數.它還會減少system表空間的負載.

可以在create database語句中使用sysaux datafile子句來指定sysaux表空間的資料檔案屬性.在資料庫中sysaux表空間的強制屬性包括:
permanent
read write
extent management local
segment space management auto

不能使用alter tablespace語句來修改這些屬性任何試圖修改的操作都會返回一個錯誤資訊.不能對sysaux表空間重新命名也不能刪除sysaxu表空間.

sysaux表空間的大小取決於資料庫元件佔用sysaux表空間的大小.可以透過查詢v$sysaux_occupants檢視來檢視這些元件.基於這些元件的初始大小,sysaux表空間在資料庫建立時至少在400MB以上.在資料庫完全部署後依賴於它的使用和工作負載對sysaux表空間的所要求的大小會增加.

SQL> select sum(space_usage_kbytes)/1024 MB from v$sysaux_occupants;

        MB
----------
   623.875

如果對system表空間包含了datafile子句那麼必須指定sysaux datafile子句否則create database語句將會失敗.這個要求如果使用oracle管理檔案就不是必須的.sysaux表空間與system表空間有相同的安全屬性.

使用自動undo管理:建立一個undo表空間
自動undo管理需要使用一個undo表空間.為了啟用自動undo管理需要將初始化引數undo_management設定為auto.或者忽略這個引數資料庫預設值就是使用自動undo管理是.

SQL> show parameter undo_management

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO

在自動undo管理模式下,undo資料被儲存在undo表空間中由oracle資料庫來管理.為了定義和命名一個undo表空間必須在create database語句中包含一個undo tablespace子句.如果忽略這個子句自動undo管理會被啟用那麼資料庫會建立一個預設undo表空間名叫sys_undotbs

建立一個預設的永久表空間
create database語句中的default tablespace子句用來對資料庫指定一個預設的永久表空間.oracle資料庫對非system使用者指定到這個表空間不用顯式的指定不同的永久表空間.如果你不指定這個子句,那麼對於非system使用者來說system表空間是預設的永久表空間.oracle建議建立一個預設的永久表空間.

建立一個預設臨時表空間
create database語句中的default temporary tablespace子句用來建立一個預設的臨時表空間.oracle將這個表空間指定為使用者的臨時表空間而不用再顯式的來指定臨時表空間.例如我們在建立資料庫jy的語句中指定了預設永久表空間users和臨時表空間temp.下面來建立一個新的使用者並檢視它的永久表空間和臨時表空間是不是為users和temp.

SQL> create user test identified by test;

User created.

SQL> select username,default_tablespace,temporary_tablespace from dba_users where username='TEST';

USERNAME                       DEFAULT_TABLESPACE             TEMPORARY_TABLESPACE
------------------------------ ------------------------------ ------------------------------
TEST                           USERS                          TEMP

可以看到我們建立一個使用者test,沒有顯式地指定永久表空間和臨時表空間,資料庫自動指定了永久表空間和臨時表空間.

在create user語句中可以顯式的指定一個臨時表空間或表空間組給使用者.然而如果你不這樣做且沒有對資料庫指定預設的臨時表空間,那麼資料庫會對這些使用者指定system表空間來作為它們的臨時表空間.在system表空間中儲存臨時資料不是一種可取的方法.而且給每一個使用者單獨指定臨時表空間的很麻煩的.因此oracle建議在create database語句中使用default temporary tablespace子句.
注意:當指定system表空間為本地管理表空間後,system表空間不能用作臨時表空間.在這種情況下你必須建立一個預設的臨時表空間.

在建立資料庫時指定oracle管理檔案
透過使用oracle管理檔案這個功能可以在使用create database語句時使用最少數量的子句和引數.可以對由oracle資料庫建立和管理的檔案指定一個目錄或者一個oracle asm磁碟組.

在你的初始化引數檔案中透過db_create_file_dest,db_create_online_log_dest_n或db_recovery_file_dest引數中的任何一個來指示oracle資料庫來建立和管理資料庫的底層作業系統檔案.oracle資料庫將按照你指定的初始化引數和create database語句中指定的子句所指定的資料庫結構來建立和管理作業系統檔案.
.表空間和它們的資料檔案
.臨時表空間和它們的臨時檔案
.控制檔案
.重做日誌檔案
.歸檔重做日誌檔案
.閃回日誌
.塊改變跟蹤檔案
.rman備份

下面的create database語句在假設你已經指定必要的初始化引數後oracle管理檔案是怎樣工作的情況

CREATE DATABASE cs
USER SYS IDENTIFIED BY "zzh_2046"
USER SYSTEM IDENTIFIED BY "zzh_2046"
EXTENT MANAGEMENT LOCAL
DEFAULT TEMPORARY TABLESPACE temp
UNDO TABLESPACE undotbs1
DEFAULT TABLESPACE users;

.system表空間建立為本地管理表空間.如果不使用extent management local子句,system表空間將建立為字典管理表空間這是不建議的

.沒有指定datafile子句,所以資料庫對system表空間建立一個oracle管理資料檔案

.沒有指定logfile子句,所以資料庫將建立兩組oracle管理的重做日誌組.

SQL> select  group# from v$log;

    GROUP#
----------
         1
         2
[oracle@jyrac1 onlinelog]$ ls -lrt
total 205016
-rw-r----- 1 oracle oinstall 104858112 Apr  9 11:40 o1_mf_2_9n9j9mfv_.log
-rw-r----- 1 oracle oinstall 104858112 Apr 10 10:22 o1_mf_1_9n9j9m5x_.log

.沒有包括sysaux datafile子句,所以資料庫將對sysaux表空間建立一個oracle管理的資料檔案

.對於undo tablespace和default tablespace子句沒有指定datafile子句,所以資料庫對這些表空間中的每一個都建立一個oracle管理的資料檔案.

.對於default temporaray tablespace子句沒有指定tempfile子句,所以資料庫將會建立一個oracle管理的臨時檔案.

.如果在初始化引數檔案中沒有指定control_files引數那麼資料庫也會建立一個oracle管理的控制檔案

.如果你正在使用一個伺服器引數檔案那麼資料庫將會自動設定適當的初始化引數

在建立資料庫時支援大數檔案表空間
oracle資料庫為了簡化表空間的管理透過建立大檔案表空間來支援超大型資料庫的管理.大檔案表空間只包含一個資料檔案,但是這個資料檔案最多可以包含4G個資料塊.在oracle資料庫中最多的資料檔案個數被限制了(通常是64K個檔案).因此大檔案表空間可能顯著的增加一個oracle資料庫的儲存容量.

下面將介紹在create database語句中如何支援大檔案表空間
指定預設的表空間型別在create database語句中的set default ... tablespace子句將決定後續的create tablespace語句的預設表空間型別.可以設定為set default bigfile tablespacea或者set default smallfile tablespace.如果你忽略這個子句,那麼預設的是小檔案表空間,它是傳統的oracle資料庫表空間型別.一個小檔案表空間最多能包含1022個資料檔案,每個資料檔案最多能包含4M個資料塊.

下面的create database語句被修改為使用大檔案表空間:

SQL> startup nomount
ORACLE instance started.

Total System Global Area  217157632 bytes
Fixed Size                  2211928 bytes
Variable Size             159387560 bytes
Database Buffers           50331648 bytes
Redo Buffers                5226496 bytes
SQL> CREATE DATABASE cs
  2  USER SYS IDENTIFIED BY "zzh_2046"
  3  USER SYSTEM IDENTIFIED BY "zzh_2046"
  4  EXTENT MANAGEMENT LOCAL
  5  SET DEFAULT BIGFILE TABLESPACE
  6  DEFAULT TEMPORARY TABLESPACE temp
  7  UNDO TABLESPACE undotbs1
  8  DEFAULT TABLESPACE users;

Database created.

SQL> select name,bigfile from v$tablespace;

NAME                                                         BIGFIL
------------------------------------------------------------ ------
SYSTEM                                                       YES
SYSAUX                                                       YES
UNDOTBS1                                                     YES
TEMP                                                         YES
USERS                                                        YES

從上面資訊可以看到資料庫cs中的表空間都是大檔案表空間

在資料庫建立之後可以使用帶有set default tablespace了句的alter database語句來動態的改變預設的表空間型別

SQL> ALTER DATABASE SET DEFAULT BIGFILE TABLESPACE;

Database altered

可以透過查詢database_properties資料字典檢視來查詢資料庫當前的預設表空間型別

SQL> SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME = 'DEFAULT_TBS_TYPE';

PROPERTY_VALUE
--------------------------------------------------------------------------------
BIGFILE

覆蓋預設的表空間型別
system和sysaux表空間總是使用預設的表空間型別來建立的.然而對於create database操作中的undo和default temporary表空間可以顯式的覆蓋預設的表空間型別.

例如,可以在預設表空間型別為小檔案表空間的情況下建立一個大檔案型別的undo表空間:

SQL> startup nomount
ORACLE instance started.

Total System Global Area  217157632 bytes
Fixed Size                  2211928 bytes
Variable Size             159387560 bytes
Database Buffers           50331648 bytes
Redo Buffers                5226496 bytes
SQL> CREATE DATABASE cs
  2  USER SYS IDENTIFIED BY "zzh_2046"
  3  USER SYSTEM IDENTIFIED BY "zzh_2046"
  4  EXTENT MANAGEMENT LOCAL
  5  DEFAULT TEMPORARY TABLESPACE temp
  6  BIGFILE UNDO TABLESPACE undotbs1
  7  DEFAULT TABLESPACE users;

Database created.

也可以在預設表空間型別為大檔案表空間的情況下建立一個小檔案型別的預設臨時表空間:

SQL> startup nomount
ORACLE instance started.

Total System Global Area  217157632 bytes
Fixed Size                  2211928 bytes
Variable Size             159387560 bytes
Database Buffers           50331648 bytes
Redo Buffers                5226496 bytes
SQL> CREATE DATABASE cs
  2  USER SYS IDENTIFIED BY "zzh_2046"
  3  USER SYSTEM IDENTIFIED BY "zzh_2046"
  4  EXTENT MANAGEMENT LOCAL
  5  SET DEFAULT BIGFILE TABLESPACE
  6  DEFAULT TEMPORARY TABLESPACE temp
  7  UNDO TABLESPACE undotbs1
  8  SMALLFILE DEFAULT TABLESPACE users;

Database created.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-1139469/,如需轉載,請註明出處,否則將追究法律責任。

相關文章