標籤:database oracle
1、 含義:PFILE是parameterfile的縮寫,SPFILE是server parameter file的縮寫,通過全稱的字面含義,我們可以得到pfile和spfile都是oracle提供的參數檔案,裡面寫著各種參數的初始值,比如Database Buffer的值為196M等,檔案尾碼名都是.ora;
2、 區別:spfile是oracle9i release2引進的新事物,在這之前oracle中只有pfile的概念。Pfile是一種靜態參數檔案,可以通過任何文字編輯器進行開啟、編輯和儲存。而spfile是一種二進位檔案,只能通過ALTER SYSTEM SET …… SCOPE=SPFILE語句修改,修改後需要重啟資料庫執行個體後才會生效。相比pfile而言,spfile具有安全的優勢;
3、 啟動方式:oracle9i以後,資料庫執行個體啟動時如果不明確指定使用pfile啟動資料庫執行個體,則會去預設路徑尋找spfile檔案,這裡需要補充的是pfile與spfile的預設路徑是$oracle_home/database,在我的資料庫本機上,我的路徑就是:E:\app\neusoft\product\11.2.0\dbhome_1\database;
4、 預設pfile與spfile檔案名稱:正常預設情況下,pfile檔案的檔案名稱應該為INIT+資料庫執行個體名+.ORA尾碼名,比如我本機資料庫的執行個體名是orcl,則預設pfile的檔案名稱應該為INITorcl.ORA;而spfile的預設檔案名稱SPFILE+資料庫執行個體名+.ORA的尾碼名,例如我原生spfile的檔案名稱是SPFILEorcl.ORA;
5、 建立方式:如果需要建立pfile檔案,我們可以根據本機資料庫的spfile來建立,建立文法是:CREATE PFILE FROM SPFILE;也可以對於即將產生的pfile檔案指定組建目錄和自訂名稱,例如:CREATE PFILE=’F:\PFILE123.ORA’ FROM SPFILE;但是我們無法在當前資料庫執行個體正在使用的spfile預設路徑重建預設名稱的spfile檔案,即我們無法使用下面語句:CREATE SPFILE FROM PFILE;因為這句話代表在預設路徑即database路徑下產生預設名稱SPFILEorcl.ORA的spfile檔案,而這個檔案已經被當前資料庫執行個體使用。
6、 建立許可權要求:建立pfile或spfile檔案需要使用者擁有sysdba許可權,預設sys使用者具備sysdba許可權,如果使用其他使用者(如system),請先對system使用者賦予sysdba許可權,授權語句是:GRANTSYSDBA TO system;
7、 查看當前資料庫執行個體是否使用spfile啟動:sqlplus視窗執行showspfile,如果spfile有值(spfile路徑),則代表當前資料庫執行個體是通過spfile方式啟動的;
1、 我們可以通過v$parameter動態視圖查看指定參數的值、修改情況;
2、 查詢語句:
select name, value, ismodified, issys_modifiable from v$parameter
where name like ‘db_create_file_dest%‘;
3、 關於欄位ismodified的說明:
欄位含義是表示參數在執行個體啟動後是否被修改,值有3個:MODIFIED\SYSTEM_MOD\FALSE
MODIFIED表示執行個體啟動後使用alter session修改過;
SYSTEM_MOD表示執行個體啟動後使用alter system修改過;
FALSE表示執行個體啟動後從未修改過;
4、 關於欄位issys_modifiable的說明:
欄位含義是表示參數是否可以被altersystem修改並且修改後產生影響的時間,值有3個:
IMMEDIATE:表示可以使用alter system修改並且修改後立即生效;
DEFERRED:表示可以使用alter system修改並在下一個會話中生效;
FALSE:除對於啟動執行個體有影響的參數外其他都不可以修改並且需要重啟執行個體;
selectnameas參數名稱,
valueas當前參數值,
decode(ismodified,
‘MODIFIED‘,
‘使用altersession修改過‘,
‘SYSTEM_MOD‘,
‘使用altersystem修改過‘,
‘未被修改過‘) as執行個體啟動後修改方式,
decode(ISSYS_MODIFIABLE,
‘IMMEDIATE‘,
‘當前會話立即生效‘,
‘DEFERRED‘,
‘延遲下個會話生效‘,
‘重啟執行個體生效‘) as生效時間
fromv$parameter
1、 OMF是ORACLE MANAGED FILES的簡寫,翻譯過來即oracle管理檔案,是從oracle 10g新推出的概念,已在指定預設路徑資訊後,簡化日常操作命令書寫;
2、 查看是否啟用OMF,可以在sqlplus視窗介面輸入:showparameter db_create_file_dest,如果該參數有值(路徑資訊),則代表啟用了OMF管理;
3、 可以使用altersystem或alter session啟用db_create_file_dest參數,參數的路徑預設應該為資料庫執行個體的資料庫檔案所在目錄,樣本如下:
ALTER SYSTEM SET db_create_file_dest=’ E:\app\neusoft\oradata\orcl’;
4、 按照上述第3個步驟操作完畢後,就可以啟用OMF技術特性了。
5、 下面我們舉個例子進行說明,如果我們沒有開啟OMF技術特性,比如我們需要建立一個資料表空間test,我們至少應該這麼寫語句:CREATE TABLESPACE test DATAFILE ‘E:\app\neusoft\oradata\orcl\TEST.DBF’;語句中包含資料資料表空間的存放路徑,不指明的話,oracle會提示錯誤並建立失敗。如果我們指定了db_create_file_dest的預設路徑即代表開啟了OMF技術特性,那麼我們在以後建立資料表空間、記錄檔、控制檔案的時候,就可以省略資料表空間建立的路徑資訊、大小,新建立的資料表空間會在預設路徑下產生。但是在實際生產環境中酌情使用。
6、 Windows作業系統正常情況下,oracle資料檔案、記錄檔、控制檔案的所屬路徑都應該是在oradata目錄下,例如我本機資料庫的目錄是:E:\app\neusoft\oradata\orcl
如果我們將參數db_create_file_dest的值設定為E:\app\neusoft\oradata
我們可以這樣實現:
Alter system setdb_create_file_dest=’ E:\app\neusoft\oradata’;
然後我們來建立一個資料表空間test01,我們可以直接這樣寫
Create tablespace test01;
然後我們就會發現oracle在E:\app\neusoft\oradata\orcl目錄下自動建立了一個datafile的新目錄,裡面存放著我們剛建立的資料表空間,資料表空間的大小預設是100M,名稱預設是:O1_MF_DUSHUAI_BBQ2GWSK_.DBF,名稱中包含我們指定的資料表空間名稱;
我們可以通過內建的函數包查看我們建立的資料表空間的屬性資訊,語句如下:
selectdbms_metadata.get_ddl(‘TABLESPACE‘,‘DUSHUAI‘) from dual;
得到的大文本CLOB結果如下:
CREATE TABLESPACE"DUSHUAI" DATAFILE
SIZE 104857600
AUTOEXTEND ON NEXT 104857600MAXSIZE 32767M
LOGGING ONLINE PERMANENTBLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULTNOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO
1、 Nomount:僅是知道掛在各類執行個體啟動所需檔案的地址等基本資料;
2、 Mount:已經掛載執行個體啟動,但是沒有進行一致性檢查等操作;
3、 Open:預設資料庫執行個體啟動startup的預設項目,表示正常啟動資料庫執行個體;
附:資料庫異常關閉後啟動的順序
1.前滾所有未寫入資料檔案的REDO
2.開啟資料庫
3.復原所有未提交的資料
本文出自 “oralce學習之路” 部落格,請務必保留此出處http://dushuai.blog.51cto.com/9461011/1599738
Oracle 參數檔案、v$parameter動態視圖、OMF特性、啟動