天天看點

翻譯:Oracle9i管理者指南第二章

  2 建立資料庫 這一章讨論建立資料庫的過程,包含以下内容: 1.         建立資料庫之前的規劃 2.         使用資料庫配置助手 3.         手動建立資料庫 4.         了解CREATE DATABASE語句 5.         資料庫建立中的故障排除 6.         删除資料庫 7.         建立資料庫之後的規劃 8.         初始化參數和資料庫建立 9.         使用伺服器端參數檔案管理初始化參數 2.1 建立資料庫之前的規劃 資料庫的建立準備了幾個作業系統檔案協同工作,來完成資料庫的功能。你隻需要建立一次資料庫而不必理會他有多少個資料檔案或者有多少個執行個體要通路它。建立資料庫也能夠删除一個已經存在的資料庫的資訊,然後使用相同的名字和實體結建構立一個新的資料庫。這部分包含以下内容: 1.         為建立資料庫作計劃 2.         滿足建立的要求 3.         決定如何建立資料庫 2.1.1為建立資料庫作計劃 1.       設計資料庫表和索引以及估計他們所需要的空間大小 2.       計劃組成資料庫的作業系統檔案。通過合理的規劃檔案 io分布,可以大大提高資料庫性能。當你安裝oracle和建立資料庫時,有幾種可以用來分布io。例如,将重做日志檔案放在獨立的磁盤内;控制資料複雜度(一個資料塊的行數)。 3.       考慮使用 oracle管理檔案的特性建立和管理作業系統檔案 4.       選擇全局資料庫名,這個名字表示資料庫在網絡中名字和位置。通過設定 DB_NAME和DB_DOMAIN初始化參數來完成。 5.       熟悉初始化參數檔案中的各種參數。熟悉伺服器參數檔案的概念和操作。伺服器參數檔案允許你在伺服器的磁盤上長期儲存和管理初始化參數。 6.       選擇資料庫字元集。所有的字元資料(包括資料字典裡的)都儲存在資料庫字元集中。建立資料庫時必須指定字元集。如果使用不同字元集的使用者要通路資料庫,就選擇一個包含所有字元集的超集。否則,字元轉換會帶來成本增加和潛在的資料丢失。你可以指定一個備用的字元集。 7.       考慮你的資料庫支援的時間區域。 Oracle使用一個時間區域檔案提供有效的時間區域。如果你确定你需要使用一個時間域,而它又不在預設的時間區域檔案中(timezone.dat),但是它在大時間區域檔案中(timezlrg.dat),你必須設定ORA_TZFILE環境變量來指定大時間區域檔案。 8.       選擇标準資料庫塊大小。在資料庫建立過程中,用 DB_BLOCK_SIZE初始化參數指定,資料庫建立之後,不能再改動。系統表空間和大多數其他表空間都使用标準資料庫塊大小。此外,你可以在建立資料庫時指定四個非标準塊大小。 9.       使用回退表空間管理你的回退日志,而不要使用回退段。 10.    準備一個備份和恢複政策來保護資料庫。多重儲存控制檔案,選擇合适的備份模式,管理線上和歸檔重做日志檔案,都很重要。 11.    熟悉啟動和關閉執行個體, mount和打開資料庫的概念和操作 2.1.2 滿足建立的要求 為了建立新的資料庫,下面的先決條件必須滿足: 1.         安裝所需的oracle軟體,包括設定各種環境變量,為軟體和資料庫檔案建立目錄結構。 2.         你要擁有資料庫管理者所必須的作業系統權限。你必須通過作業系統認證或者秘密檔案認證,允許你在資料庫打開之前啟動或者關閉執行個體。 3.         必須有足夠的記憶體啟動執行個體。 4.         必須有足夠的磁盤空間。 2.1.3 确定如何建立資料庫 建立資料庫包括以下幾個步驟: 1.       建立資訊結構,包括資料字典, oracle通過它來通路和使用資料庫。 2.       建立和初始化控制檔案和重做日志檔案。 3.       建立新的資料檔案或者擦除之前資料檔案中的資料。 4.       你可以使用 CREATE DATABASE 語句來進行這些操作,但是在資料庫可用之前,其他的操作是必要的,比如建立使用者和臨時表空間,建立資料字典表的視圖,安裝oracle内置包等等。   你有以下選擇來建立資料庫: 1.       使用資料庫配置助手(DBCA) 2.       使用腳本 3.       更新已經存在的資料庫 2.2 使用DBCA建立資料庫 略 2.3 手工建立資料庫 這一部分講述手工建立資料庫的步驟: 1.       确定資料庫執行個體的 SID 2.       确定資料庫管理者認證方法 3.       建立初始化參數檔案 4.       連接配接執行個體 5.       啟動執行個體 6.       調用 CREATE DATABASE語句 7.       建立其餘的表空間 8.       運作腳本建立資料字典視圖 9.       運作腳本安裝其餘選項 10.    建立伺服器端參數檔案 11.    備份資料庫 2.3.1 确定資料庫的SID 确定SID,并且相應的設定好環境變量ORACLE_SID,資料庫執行個體的SID用來将目前執行個體和以後可能建立的執行個體進行區分。 % setenv ORACLE_SID mynewdb 初始化檔案中的 DB_NAME參數應該與ORACLE_SID相比對。 2.3.2建立資料庫管理者認證方法 略 2.3.3建立初始化參數檔案 執行個體(由記憶體結構SAG和背景程序組成)啟動過程中要讀取初始化參數檔案。得到初始化參數檔案的一個好辦法是修改一個已有的初始化參數檔案。為了簡化操作,将初始化參數檔案放在Oracle預設的位置上,這樣的話,當資料庫啟動時,就沒有必要再指定pfile參數了,因為Oracle會自動尋找在預設位置的初始化參數檔案。 Platform                  Default Name                  Default Location UNIX                    init$ORACLE_SID.ora          $ORACLE_HOME/dbs Windows                  init$ORACLE_SID.ora          $ORACLE_HOME/database 如果一個資料庫的名字是mynewdb,下面就是該資料庫的初始化檔案: # Cache and I/O DB_BLOCK_SIZE=4096 DB_CACHE_SIZE=20971520   # Cursors and Library Cache CURSOR_SHARING=SIMILAR OPEN_CURSORS=300   # Diagnostics and Statistics BACKGROUND_DUMP_DEST=/vobs/oracle/admin/mynewdb/bdump CORE_DUMP_DEST=/vobs/oracle/admin/mynewdb/cdump TIMED_STATISTICS=TRUE USER_DUMP_DEST=/vobs/oracle/admin/mynewdb/udump   # Control File Configuration CONTROL_FILES=("/vobs/oracle/oradata/mynewdb/control01.ctl", "/vobs/oracle/oradata/mynewdb/control02.ctl", "/vobs/oracle/oradata/mynewdb/control03.ctl")   # Archive LOG_ARCHIVE_DEST_1='LOCATION=/vobs/oracle/oradata/mynewdb/archive' LOG_ARCHIVE_FORMAT=%t_%s.dbf LOG_ARCHIVE_START=TRUE   # Shared Server # Uncomment and use first DISPATCHES parameter below when your listener is # configured for SSL # (listener.ora and sqlnet.ora) # DISPATCHERS = "(PROTOCOL=TCPS)(SER=MODOSE)", # "(PROTOCOL=TCPS)(PRE=oracle.aurora.server.SGiopServer)" DISPATCHERS="(PROTOCOL=TCP)(SER=MODOSE)", "(PROTOCOL=TCP)(PRE=oracle.aurora.server.SGiopServer)", (PROTOCOL=TCP) # Miscellaneous COMPATIBLE=9.2.0 DB_NAME=mynewdb # Distributed, Replication and Snapshot DB_DOMAIN=us.oracle.com REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE # Network Registration INSTANCE_NAME=mynewdb   # Pools JAVA_POOL_SIZE=31457280 LARGE_POOL_SIZE=1048576 SHARED_POOL_SIZE=52428800 # Processes and Sessions PROCESSES=150 # Redo Log and Recovery FAST_START_MTTR_TARGET=300 # Resource Manager RESOURCE_MANAGER_PLAN=SYSTEM_PLAN # Sort, Hash Joins, Bitmap Indexes SORT_AREA_SIZE=524288 # Automatic Undo Management UNDO_MANAGEMENT=AUTO UNDO_TABLESPACE=undotbs 2.3.4連接配接到執行個體 $ SQLPLUS /nolog CONNECT SYS/password AS SYSDBA 2.3.5啟動執行個體 不mount資料庫,僅僅啟動執行個體。通常,隻是在建立和維護資料庫的時候才這樣做。 STARTUP NOMOUNT 此時,資料庫并不存在,隻有SGA和背景程序被建立。 2.3.6調用create database語句 CREATE DATABASE mynewdb USER SYS IDENTIFIED BY pz6r58 USER SYSTEM IDENTIFIED BY y1tz5p LOGFILE GROUP 1 ('/vobs/oracle/oradata/mynewdb/redo01.log') SIZE 100M, GROUP 2 ('/vobs/oracle/oradata/mynewdb/redo02.log') SIZE 100M, GROUP 3 ('/vobs/oracle/oradata/mynewdb/redo03.log') SIZE 100M MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXLOGHISTORY 1 MAXDATAFILES 100 MAXINSTANCES 1 CHARACTER SET US7ASCII NATIONAL CHARACTER SET AL16UTF16 DATAFILE '/vobs/oracle/oradata/mynewdb/system01.dbf' SIZE 325M REUSE EXTENT MANAGEMENT LOCAL DEFAULT TEMPORARY TABLESPACE tempts1 DATAFILE '/vobs/oracle/oradata/mynewdb/temp01.dbf' SIZE 20M REUSE UNDO TABLESPACE undotbs DATAFILE '/vobs/oracle/oradata/mynewdb/undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED; 1.       資料庫建立之後,資料庫名稱是 mynewdb,它的全局資料庫名是mynewdb.us.oracle.com。 2.       控制檔案通過初始化參數 CONTROL_FILES來建立。 3.       SYS使用者的密碼是 pz6r58,SYSTEM使用者的密碼是y1tz5p。這兩個子句在Oracle9i中是可選,但是如果設定了任何一個密碼,那麼兩個密碼都必須設定。 4.       該資料庫有三個線上重做日志組,通過 LOGFILE子句來指定,MAXLOGFILES, MAXLOGMEMBERS, and MAXLOGHISTORY都是對日志檔案的限制。 5.       MAXDATAFILES指定了資料庫可以打開的資料檔案的最大數量,該數量會影響到控制檔案的大小。在建立資料庫的過程中所設定的參數,有些會受到其他因素的影響。比如,設定了 MAXDATAFILES之後,Oracle在控制檔案中要配置設定空間存放資料檔案的檔案名,即使資料庫隻有一個資料檔案。然而,因為控制檔案本身也有大小的限制(跟作業系統有關),很有可能不能把所有CREATE DATABASE的參數都設定為他們理論上的最大值。 6.       MAXINSTANCES 指定了隻有一個執行個體能夠mount和打開這個資料庫。US7ASCII字元集被指定為資料庫儲存資料使用的字元集。 7.       系統表空間由/vobs/oracle/oradata/mynewdb/system01.dbf組成,如果該檔案已經存在,将會被重寫。 8.       系統表空間是本地化管理的表空間。 9.       DEFAULT_TEMPORARY_TABLESPACE子句建立并命名了一個預設的臨時表空間。 10.    UNDO_TABLESPACE子句建立并命名了一個撤銷表空間,用來存儲撤銷記錄,前提是在初始化參數檔案中把 UNDO_MANAGEMENT設定為AUTO。 11.    因為 ARCHIVELOG子句在CREATE DATABASE語句中沒有調用,是以重做日志檔案并不會被歸檔,這是資料庫建立過程的通常做法,ALTER DATABASE語句可以用來切換到ARCHIVELOG模式。初始化檔案中的LOG_ARCHIVE_DEST_1,LOG_ARCHIVE_FORMAT, and LOG_ARCHIVE_START三個參數與歸檔有關。 2.3.7建立額外的表空間 為了使資料局效率更高,需要建立額外的表空間和檔案 CONNECT SYS/password AS SYSDBA -- create a user tablespace to be assigned as the default tablespace for users CREATE TABLESPACE users LOGGING DATAFILE '/vobs/oracle/oradata/mynewdb/users01.dbf' SIZE 25M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL; -- create a tablespace for indexes, separate from user tablespace CREATE TABLESPACE indx LOGGING DATAFILE '/vobs/oracle/oradata/mynewdb/indx01.dbf' SIZE 25M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL; EXIT 2.3.8 運作腳本建立資料字典視圖 運作腳本建立視圖,同義詞和 pl/sql包: CONNECT SYS/password AS SYSDBA @/vobs/oracle/rdbms/admin/catalog.sql @/vobs/oracle/rdbms/admin/catproc.sql EXIT 2.3.9 運作腳本安裝其他選項(可選) 略 2.3.10建立伺服器參數檔案 Oracle建議建立一個伺服器參數檔案,作為維護初始化參數的動态方式。下面的腳本根據初始化參數檔案建立了一個伺服器初始化參數檔案,并把該初始化參數檔案放在預設位置。執行個體關閉後重新啟動時,就會使用預設位置的伺服器初始化參數檔案。 CONNECT SYS/password AS SYSDBA -- create the server parameter file CREATE SPFILE='/vobs/oracle/dbs/spfilemynewdb.ora' FROM PFILE='/vobs/oracle/admin/mynewdb/scripts/init.ora'; SHUTDOWN -- this time you will start up using the server parameter file CONNECT SYS/password AS SYSDBA STARTUP EXIT 2.3.11 備份資料庫 略 2.4 了解CREATE DATABASE語句 當你執行一個CREATE DATABASE語句時, oracle執行了至少如下操作。更多的操作取決于在CREATE DATABASE語句中的子句和你已經設定的初始化參數。 1.       建立資料檔案 2.       建立控制檔案 3.       建立重做日志檔案和建立歸檔模式 4.       建立系統表空間和系統回退段 5.       建立資料字典 6.       設定字元集 7.       設定資料庫時間區域 8.       Mount并打開資料庫 2.4.1 保護資料庫:為sys和system使用者設定密碼 CREATE DATABASE語句中用于為 sys和system使用者設定密碼的子句是 USER SYS IDENTIFIED BY password USER SYSTEM IDENTIFIED BY password 如果這兩個使用者沒有被設定密碼,那麼他們将被配置設定預設密碼 change_on_install和 manager。日志檔案中,将被寫入一條記錄,表明使用預設密碼。為了保護資料庫,在資料庫建立後,應使用alter user語句改變這些密碼。 2.4.2 簡化資料庫建立和管理的子句 2.4.2.1 使用自動撤銷管理:建立一個撤銷表空間 Oracle推薦使用撤銷表空間代替回退段,這需要使用一套不同的初始化參數,并且要将UNDO TABLESPACE子句包含在 CREATE DATABASE語句中。如果希望使用自動回退管理,則必須有如下的初始化參數: UNDO_MANAGEMENT=AUTO 在這種模式下,撤銷資訊儲存在撤銷表空間,而不是回退段中,被 oracle自動管理。如果你希望建立一個命名的撤銷标空間,你可以在資料庫建立時加入UNDO TABLESPACE子句。如果你忽略了這個子句,但是又指定了自動撤銷管理, oracle建立一個名為SYS_UNDOTBS的預設撤銷表空間。 2.4.2.2 建立預設的臨時表空間 CREATE DATABASE 語句中的 DEFAULT TEMPORARY TABLESPACE子句指定一個臨時表空間。對于沒有指定臨時表空間的使用者,這個表空間作為預設的臨時表空間。使用者可以在CREATE DATABASE中指定一個預設的臨時表空間。但是,如果沒有臨時表空間被指定,他們使用system表空間作為臨時表空間。使用system表空間作為臨時表空間很不合理,為避免這種情況,同時避免為每個使用者配置設定一個臨時表空間,就需要在CREATE DATABASE 語句中通過DEFAULT TEMPORARY TABLESPACE子句指定一個臨時表空間。如果你決定以後要該比臨時表空間,或者在建立資料庫後再建立一個初始的臨時表空間,你可以建立一個臨時表空間(CREATE TEMPORARY TABLESPACE),然後使用ALTER DATABASE DEFAULT TEMPORARY TABLESPACE将它用作資料庫的臨時表空間。使用者将被自動切換到這個臨時表空間中。下面的語句配置設定了一個新的預設臨時表空間: ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tempts2; 新的預設臨時表空間必須是已經存在的表空間。當使用本地管理的系統表空間時,新的預設臨時表空間也必須是本地管理的。你不能 drop一個預設的臨時表空間,但可以配置設定一個新的預設臨時表空間,然後drop掉前一個。不允許将臨時表空間修改為永久表空間,也不允許将一個臨時表空間offline。使用者可以使用DATABASE_PROPERTIES視圖得到目前預設臨時表空間。 PROPERTY_NAME列包含“DEFAULT_TEMP_TABLESPACE”,PROPERTY_VALUE列包含預設臨時表空間名稱。 2.4.2.3 使用oracle管理檔案 通過使用 oracle管理檔案特性,可以将CREATE DATABASE語句中的子句和參數數量達到最少。如果在初始化參數檔案中包含DB_CREATE_FILE_DEST或者DB_CREATE_ONLINE_LOG_DEST_n參數,oracle将建立和管理以下結構的底層作業系統檔案: 1.       表空間 2.       臨時表空間 3.       控制檔案 4.       Online重做日志檔案 例如: CREATE DATABASE rbdb1 USER SYS IDENTIFIED BY pz6r58 USER SYSTEM IDENTIFIED BY y1tz5p UNDO TABLESPACE undotbs DEFAULT TEMPORARY TABLESPACE tempts1; 1.       沒有DATAFILE子句,oracle在系統表空間建立一個oracle管理的資料檔案 2.       沒有LOGFILE子句,oracle建立兩個oracle管理的日志檔案組 3.       沒有DATAFILE子句指定撤銷表空間,oracle為撤銷表空間建立一個oracle管理的資料檔案 4.       沒有TEMPFILE子句指定預設臨時表空間,oracle建立一個oracle管理的臨時檔案 5.       此外,如果初始化參數檔案中沒有CONTROL_FILES參數,oracle建立一個oracle管理的控制檔案 2.4.3 建立一個本地管理system表空間 當在 CREATE DATABASE語句中指定了EXTENT MANAGEMENT LOCAL子句後,oracle建立一個本地管理的system表空間。初始化參數COMPATIBLE必須指定為9.2或者更高。如果沒有指定EXTENT MANAGEMENT LOCAL子句,将建立一個資料字典管理的system表空間。本地管理表空間比資料字典管理表空間又更好的性能。本地管理表空間預設情況下由AUTOALLOCATE産生,這意味着由oracle決定它的區的大小。 你也許會注意到因為自動配置設定政策的原因,在本地管理的系統表空間中建立的對象大小有一個增量。建立一個本地管理的系統表空間,而又指定 uniform區大小,是不可能的。當你建立一個本地管理的系統表空間,确認以下條件已經滿足了: 1.       必須存在預設的臨時表空間,該臨時表空間不是系統表空間 2.       不能在字典管理表空間上建立回退段。如果,系統表空間是本地管理的,不能在字典管理表空間上建立回退段。 為了滿足第一個條件,可以在CREATE DATABASE語句中指定 DEFAULT TEMPORARY TABLESPACE子句,或者不包含該子句,oracle在預設位置使用預設的名字建立表空間。為了滿足第二個條件,oracle建議不要使用回退段管理撤銷資訊,而使用自動撤銷管理。可以在CREATE DATABASE語句中加入UNDO TABLESPACE來建立指定的撤銷表空間,如果沒有包含該語句,oracle在預設位置使用預設的名字建立本地管理撤銷表空間。 2.4.4指定資料庫時間域和時間域檔案 略 2.4.5 指定force logging模式 通過使用 nologging子句,某些資料庫操作不會産生日志記錄。指定nologging可以加速操作,但是也可能引起媒體恢複和備份資料庫的問題。Oracle提供了一種方式,使得即使有些語句中有nologging語句,仍然會産生記錄。Oracle中臨時表空間和臨時段不會産生日志,是以force logging不會對他們産生影響。 為了使資料庫處于FORCE LOGGING,在 CREATE DATABASE中使用FORCE LOGGING子句。如果沒有該子句,則不會處于FORCE LOGGING狀态。使用ALTER DATABASE NO FORCE LOGGING子句取消FORCE LOGGING狀态。對資料庫可以設定FORCE LOGGING狀态,對表空間也可以單獨設定FORCE LOGGING。但如果資料庫設定了FORCE LOGGING,它優先于表空間的狀态設定。FORCE LOGGING是永久屬性,這意味着,即使資料庫重新啟動,它仍然處于同樣的狀态。然而,如果控制檔案被重新建立了,FORCE LOGGING屬性需要重新設定。(木魚青 2007.6.11) 2.5 資料庫建立的故障定位 如果由于任何原因導緻資料庫建立失敗,則關閉執行個體并删除 CREATE DATABASE語句建立的所有檔案,然後再一次建立。 2.6 drop資料庫 為了 drop資料庫,必須删除所有的資料檔案,重做日志檔案以及其它相關檔案(控制檔案,初始化參數檔案,歸檔日志檔案)。可以查詢資料字典視圖V$DATAFILE, V$LOGFILE, and V$CONTROLFILE分别得到上述檔案名稱。如果資料庫處于歸檔模式,檢查歸檔日志的所在位置,該位置由初始化參數LOG_ARCHIVE_DEST_n, or LOG_ARCHIVE_DEST and LOG_ARCHIVE_DUPLEX_DEST指定。如果使用 dbca建立資料庫,也可以使用它來删除資料庫和清理檔案。 2.7 建立資料庫之後的規劃 建立資料庫之後,執行個體處于運作狀态,資料庫處于打開狀态可以正常使用。這時你也許希望進行一下的一些操作。 2.7.1 一些安全性的考慮 一個新建立的資料庫有至少三個使用者可用來管理資料庫:SYS, SYSTEM和OUTLN。如果改變安裝選項,也可以有其他使用者: MDSYS ( interMedia Spatial) ORDSYS ( interMedia Audio) ORDPLUGINS ( interMedia Audio) CTXSYS (Oracle Text) DBSNMP (Enterprise Manager Intelligent Agent) 2.7.2 安裝資料庫示例模式 略   2.8初始化參數和資料庫建立 Oracle在一開始的初始化檔案中已經提供合适的值,可以修改這些初始化參數檔案以增加其他參數,這完全取決于你的安裝選項以及你希望如何調整資料庫。對于初始化檔案中沒有指定的參數, oracle都提供預設能的值。如果你是第一次建立資料庫,建議你盡可能少的設定參數。慢慢熟悉之後,可以使用 ALTER SYSTEM 動态調整初始化參數。如果你使用文本格式的初始化參數檔案,你的修改隻對目前執行個體有效。為使他們長期有效,你必須在初始化參數檔案中手工修改它們,否則,下次關閉重新開機資料庫後,ALTER SYSTEM的修改會失效。如果使用伺服器端參數檔案,ALTER SYSTEM所做的修改,即使關閉重新開機仍然有效。 這部分内容介紹一些參數,在建立資料庫之前,你可能會增加活着修改這些參數: 1.         确定全局資料庫名稱 2.         指定控制檔案 3.         指定資料庫塊大小 4.         設定對SGA大小有影響的參數 5.         指定程序的最大數量 6.         指定撤銷空間的管理方法 7.         設定許可參數 2.8.1 确定全局資料庫名稱 全局資料庫名由本地資料庫名和域名組成。初始化參數DB_NAME是本地名, DB_DOMAIN是域名。例如: DB_NAME = test DB_DOMAIN = us.acme.com 則 GLOBAL_NAME = test.us.acme.com 可以使用 ALTER DATABASE RENAME GLOBAL_NAME語句來修改全局資料庫名。否則,你必須關閉資料庫,修改DB_NAME和DB_DOMAIN參數然後重建控制檔案,然後啟動資料庫。 DB_NAME初始化參數必須是一個不超過 8個字元的字元串。資料庫建立期間,DB_NAME被記錄到資料檔案,重做日志檔案,控制檔案中。如果在執行個體啟動過程中,參數檔案中的DB_NAME和控制檔案中的資料庫名不同,則資料庫啟動失敗。DB_DOMAIN一般是擁有資料庫的組織的名字。如果你所建立的資料庫,将作為一個分布式資料庫的一部分,則要特别注意這一參數。 2.8.2 指定控制檔案 在初始化參數檔案中加入 CONTROL_FILES參數,并指向一個控制檔案清單。在執行CREATE DATABASE語句時,CONTROL_FILES指定的控制檔案自動生成。如果沒有指定該參數,oracle将使用預設名稱。在建立資料庫時,如果你希望oracle使用新的控制檔案,則不要指定任何已經存在的檔案名。如果你希望重用已經存在的控制檔案,那麼将CONTROL_FILES指定的檔案名與已經存在的檔案名相比對。Oracle推薦,每個資料庫至少在兩個不同的驅動器上儲存兩個控制檔案。 2.8.3 指定資料庫塊大小 DB_BLOCK_SIZE參數指定資料庫标準塊大小。該值對系統标空間有效,預設情況下,對其他标空間也有效。 Oracle支援四種非标準塊大小。DB_BLOCK_SIZE指定最經常使用的塊大小,通常是4k或8k。如果沒有指定該參數,則由作業系統指定。資料庫建立後,該參數不能再修改。如果資料庫塊和作業系統塊大小不同,怎前者是後者的整數倍。 2.8.3 指定SGA大小 這一部分讨論影響 sga大小的參數。除了SGA_MAX_SIZE外,其餘參數都可以通過 ALTER SYSTEM動态修改。SGA的大小可以通過改變這些參數來動态調整。 SGA_MAX_SIZE參數在執行個體的整個生命期内,限制 sga的大小。你可以動态修改緩沖池,共享池,大池的大小,但一定要確定所有部分的總和不超過SGA_MAX_SIZE。如果沒有指定該參數,oracle使用在初始化時,所有确定部分的大小的總和作為sag的最大值。 DB_CACHE_SIZE指定标準塊大小的緩沖區。緩沖區參數都是可以動态修改的。如果使用塊大小的整數倍,則除了要設定DB_CACHE_SIZE之外,還要設定DB_nK_CACHE_SIZE參數, oracle對DB_CACHE_SIZE有預設值,但DB_nK_CACHE_SIZE的預設值是0。大的緩沖區能減少磁盤讀寫次數,提高性能。然而,同時也會占用大量記憶體,增加記憶體換頁。非标準塊大小緩沖區的大小和數量,有以下參數指定:DB_2K_CACHE_SIZE,DB_4K_CACHE_SIZE,DB_8K_CACHE_SIZE,DB_16K_CACHE_SIZE,DB_32K_CACHE_SIZE。 DB_BLOCK_SIZE=4096 DB_CACHE_SIZE=12M DB_2K_CACHE_SIZE=8M DB_8K_CACHE_SIZE=4M 上例表示,标準塊大小為 4k,标準塊大小的緩沖區為12M,2k塊大小的緩沖區為8M,8k塊大小的緩沖區為4M。 共享池參數SHARED_POOL_SIZE和大池參數LARGE_POOL_SIZE。 2.8.4 指定程序的最大數量 PROCESSES的值大于等于 6,其中5個背景程序,1一個使用者程序。如果希望對50個使用者服務,則該參數應設定為55。 2.8.5 指定撤銷空間管理方法 所有的 oracle資料庫都有一套方法來維護資料庫回退,撤銷,修改得資訊。這些資訊在送出之前就構成了交易記錄,oracle稱這些記錄為撤銷記錄,oracle允許你将這些記錄儲存在撤銷表空間或回退段中。 UNDO_MANAGEMENT參數決定執行個體是否以自動撤銷管理方式啟動,或以手工撤銷管理方式啟動,後者将撤銷記錄儲存在回退段中。 AUTO啟用自動撤銷管理模式,MANUAL啟用手工撤銷管理模式。預設是後者。 當執行個體以自動撤銷管理方式啟動時,他使用第一個可用的撤銷表空間。當執行 CREATE DATABASE語句,而UNDO_MANAGEMENT又為AUTO時,一個名為SYS_UNDOTBS的預設撤銷表空間被建立。無論何時啟動資料庫,這個表空間,都是oracle正常選擇使用的撤銷表空間。你可以設定UNDO_TABLESPACE參數,它指令執行個體使用由它指定的撤銷表空間。如果沒有撤銷表空間可用,執行個體啟動後,将使用system回退段,正常情況下,不推薦這樣使用,一條警告資訊寫入警告檔案,提示系統在沒有撤銷表空間的情況下運作。Oracle推薦使用撤銷表空間,而不要使用回退段。撤銷表空間簡化了管理,并使你能夠設定撤銷保持時間。 如果在手工撤銷管理方式啟動, ROLLBACK_SEGMENTS參數是一列資料庫所需要的非系統回退段。如果沒有設定該參數,則使用系統回退段。Oracle推薦使用撤銷表空間,而不要使用回退段。 2.8.6 設定許可參數 略 2.9 使用伺服器端參數檔案管理初始化參數 oracle以往使用文本格式的參數檔案儲存初始化參數。從9i開始可以使用一個二進制伺服器端參數檔案維護參數。這一部分包括: 1.         什麼是伺服器端參數檔案 2.         移植為伺服器端參數檔案 3.         建立伺服器端參數檔案 4.       Spfile初始化檔案 5.       使用 ALTER SYSTEM修改初始化參數 6.         導出伺服器端參數檔案 7.         備份伺服器端參數檔案 8.         伺服器端參數檔案的錯誤和恢複 9.       浏覽參數設定 2.9.1 什麼是伺服器端參數檔案 伺服器端參數檔案(spfile)可以認為是在運作oracle伺服器的機器上維護初始化參數的倉庫。儲存在伺服器端參數檔案的初始化參數是永久的,這意味着,在執行個體運作時,對參數的修改,即使執行個體重新啟動了,仍然有效。這樣就不必在使用alter system修改之後,還需要手工更新初始化參數檔案。伺服器端參數檔案首先通過 CREATE SPFILE 語句從傳統初始化檔案生成。伺服器端參數檔案是二進制的,不能通過文本編輯器察看和修改。 執行個體啟動時,首先讀spfile取得初始化參數設定。不帶有PFILE子句的startup指令會從spfile中讀取資訊,而帶有PFILE子句的startup指令,則會從傳統初始化參數檔案(pfile)讀取資訊。 2.9.2 移植成伺服器端參數檔案 如果你現在正使用 pfile,那麼下面步驟可以生成一個spfile: 1.       如果 pfile是在一台客戶機上,那麼先把該檔案傳到伺服器上。 2.       使用CREATE SPFILE語句建立一個 spfile。不必啟動資料庫來調用CREATE SPFILE。 3.       使用新建立的 spfile啟動執行個體。 2.9.3 建立spfile Spfile檔案必須首先被建立,然後才能被 startup使用。必須有SYSDBA或者 SYSOPER權限才能調用CREATE SPFILE。下面的例子示範了如何從pfile檔案/u01/oracle/dbs/init.ora建立一個spfile。在這個例子中,沒有指定spfile檔案的名字,是以,該檔案在預設的位置,使用預設的名字spfile$ORACLE_SID.ora。 CREATE SPFILE FROM PFILE='/u01/oracle/dbs/init.ora'; 下面的例子是指定名字的 spfile檔案: CREATE SPFILE='/u01/oracle/dbs/test_spfile.ora' FROM PFILE='/u01/oracle/dbs/test_init.ora'; Spfile總是在伺服器端被建立,如果已經存在同名的,該 spfile将被重寫。Oracle建議spfile使用預設位置和預設的檔案名,這樣可以簡化管理。比如,startup指令會從預設位置讀取spfile。CREATE SPFILE可以在執行個體啟動之前或者之後執行。但是,如果執行個體已經使用 spfile啟動,而你又試圖建立同樣名稱的spfile,這樣會産生一個錯誤。   2.9.4 spfile初始化參數 spfile中的參數包含目前 spfile的名稱。當伺服器使用預設的spfile啟動(startup不使用PFILE子句)時,SPFILE子句被自動包含。 SHOW PARAMETERS SPFILE 語句可以查詢spfile的名稱。在pfile中同樣可以設定SPFILE參數,表明正在使用的spfile。也可以将SPFILE參數設定為一個非預設位置的spfile。不能将pfile檔案中的IFILE參數設定為spfile檔案名。 2.9.5使用ALTER SYSTEM修改初始化參數 使用 pfile檔案時,因為沒有一個自動更新pfile檔案的機制,是以在使用ALTER SYSTEM修改了參數後,仍然要手工更新 pfile,否則下次啟動後,剛修改的參數會失效。而使用spfile則能克服這一點。 在使用ALTER SYSTEM SET修改參數時,可以加入 SCOPE子句,表示參數修改的有效範圍。如果沒有使用spfile,則将SCOPE設定為BOTH或者SPFILE都是錯誤的。使用spfile時,預設SCOPE為BOTH,沒有使用spfile時,預設SCOPE為MEMORY。COMMENT子句允許對參數進行注釋,當SCOPE為spfile和both時,注釋被寫入spfile中。下面是兩個例子: ALTER SYSTEM SET JOB_QUEUE_PROCESSES=50 COMMENT='temporary change on Nov 29' SCOPE=MEMORY;   ALTER SYSTEM SET LOG_ARCHIVE_DEST_4='LOCATION=/u02/oracle/rbdb1/',MANDATORY,'REOPEN=2' COMMENT='Add new destimation on Nov 29' SCOPE=SPFILE; 對于值為字元串的參數來說可以通過如下方式将參數恢複為預設值: ALTER SYSTEM SET parameter = ''; 但對于值為數字的參數的來說,必須将該參數設定為預設值。 2.9.6 導出spfile 可以導出一個 spfile來建立一個pfile,這樣做的原因有: 1.       建立 spfile的備份 2.       由于診斷的原因,列出所有目前執行個體正使用的參數 3.       導出第一個 spfile,修改之後重新建立它 導出的檔案可以用來啟動使用 PFILE選項的執行個體。 CREATE PFILE 語句用來導出 spfile 。你必須有 SYSDBA 和 SYSOPER 權限來執行這個語句。導出的檔案儲存在伺服器端。下面的例子示範了如何從 spfile建立一個pfile CREATE PFILE FROM SPFILE; 因為沒有指定名字,系統使用預設的名字。下面的例子使用了具體的檔案名: CREATE PFILE='/u01/oracle/dbs/test_init.ora' FROM SPFILE='/u01/oracle/dbs/test_spfile.ora'; 2.9.7 備份spfile 略 2.9.8 spfile的錯誤與恢複 無論是讀還是寫 spfile,都可能出現錯誤,這時有兩種選擇: 1.       關閉執行個體,恢複 spfile,啟動執行個體 2.       忽略對參數的讀寫操作 2.9.10 浏覽參數設定 SHOW PARAMETERS 用于檢視目前使用的參數值 CREATE PFILE V$PARAMETER 該視圖得到目前有效的參數值 V$PARAMETER2 内容同上,但更友善浏覽 V$SPPARAMETER 該視圖包含目前 spfile檔案的内容,如果沒有spfile,傳回null