檔案-spfile說明

oracle_db發表於2012-05-16
SPFILE優點:
杜絕引數檔案的繁殖,有多個PFILE,且版本內容不一的情況。不必手動查詢維護所有引數檔案,與PFILE對應。
SPFILE命名:
預設=spfile$oracle_sid.ora如:spfileTESTENV01.ora
SPFILE可以隨便放在一個目錄嗎?
可以,但是推薦放在預設目錄下!
如何由PFILE轉換成SPFILE?
CREATE SPFILE FROM PFILE
SPFILE的引數值如何修改設定?
alter system set parameter=value[comment='text'] [deferred] scope=[memory][spfile][both]
deferred指定系統修改是否只對以後的會話有效,預設情況下alter system會立即生效,但是有些引數不能立即修改。
如何檢視那些參考必須使用deferred選項?
QL> show user;
USER is "SYS"
SQL> select name from v$parameter where issys_modifiable='DEFERRED';

NAME
--------------------------------------------------------------------------------
backup_tape_io_slaves
audit_file_dest
object_cache_optimal_size
object_cache_max_size_percent
sort_area_size
sort_area_retained_size
olap_page_pool_size

7 rows selected.

SQL> 
對那些需要使用deferred選項的引數,如果沒有給到正確選項會出什麼錯?
SQL> alter system set sort_area_size=65536;
alter system set sort_area_size=65536
                                    *
ERROR at line 1:
ORA-02096: specified initialization parameter is not modifiable with this
option


SQL> alter system set sort_area_size=65536 deferred;

System altered.

SQL> 

SCOPE=MEMORY|SPFILE|BOTH都是什麼意思?
SCOPE=MEMORY 只在例項中修改;資料庫重啟後將不再儲存。下一次重啟資料庫時,設定還是修改前的樣子。

SCOPE=SPFILE 只修改SPFILE 中的值。資料庫重啟並再次處理SPFILE 之前,這個修改不會生效。有些引數只能使用這個選項來修改,例如,processes 引數就必須使用SCOPE=SPFILE,因為我們無法修改活動例項的processes 值。

SCOPE=BOTH 是指,記憶體和SPFILE 中都會完成引數修改。這個修改將反映在當前例項中,下一次重啟時,這個修改也會生效。這是使用SPFILE 時預設的作用域值。如果使用init.ora 引數檔案,預設值則為SCOPE=MEMORY,這也是此時惟一合法的值。

如何刪除SPFILE中的引數值,取消設定?

alter system reset parameter  scope=xxx sid=xxx

如何根據SPFILE建立PFILE?

QL> create pfile='/u01/oracle/dbs/testpfile.ora' from spfile;

File created.

SQL> !
[oracle@oraclelinux ~]$ pwd
/u01/oracle
[oracle@oraclelinux ~]$ cd dbs
[oracle@oraclelinux dbs]$ ls
DBTEST2           init.ora           lkDBTEST2           spfiledbtest.ora
hc_TESTENV01.dat  initTESTENV01.ora  snapcf_TESTENV01.f  spfileTESTENV01.ora
initDBTEST2.ora   lkDBTEST           spfileDBTEST2.ora   testpfile.ora
[oracle@oraclelinux dbs]$ ll
total 7320
-rwxr-xr-x  1 oracle oinstall     273 Mar 22 10:48 DBTEST2
-rw-rw----  1 oracle oinstall    1544 May  2 11:07 hc_TESTENV01.dat
-rw-r--r--  1 oracle oinstall     906 Mar 22 11:10 initDBTEST2.ora
-rw-r-----  1 root   root        2403 May  2 11:01 init.ora
-rw-r-----  1 oracle oinstall    2403 Mar 15 14:08 initTESTENV01.ora
-rw-rw----  1 oracle oinstall      24 May  2 11:08 lkDBTEST
-rw-rw----  1 oracle oinstall      24 May  2 11:07 lkDBTEST2
-rw-r-----  1 oracle oinstall 7389184 May 15 17:34 snapcf_TESTENV01.f
-rw-r-----  1 oracle oinstall    2560 Mar 22 15:51 spfileDBTEST2.ora
-rw-r-----  1 oracle oinstall    2560 Mar 15 13:26 spfiledbtest.ora
-rw-r-----  1 oracle oinstall    2560 May 16 17:36 spfileTESTENV01.ora
-rw-r--r--  1 oracle oinstall     991 May 16 17:43 testpfile.ora
[oracle@oraclelinux dbs]$ 

SPFILE丟失了怎麼辦?

可以從資料庫的ALERT檔案中找到相關資訊進行恢復,根據ALERT檔案中的資訊建立PFILE,然後建立SPFILE


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

相關文章