如何生成SPFILE文件


  1.spfile是Oracle9i之后引入的,目的是提高系統安全性。在Oracle8i下初始化參數文件為文本文件,可以使用文本編輯器進行編輯,當需要修改初始化參數時,需要在init.ora文件中修改,再重新啟動數據庫實例。在Oracle10g,引入了服務器參數文件(spfile),可以簡化初始化參數的管理。spfile文件時一個二進制文件,不能使用文本編輯器(雖然文本編輯器打開后,能夠看到參數內容),否則可能造成Oracle無法識別spfile文件。
  以下以我自己系統安裝的Oracle與大叫討論這二者的用法:
  D盤是Oracle10G的主安裝目錄,分別在1D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.31420101014242D:\oracle\product\10.2.0\db_1\database\initorcl.ora3D:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ORA3個位置可以找到pfile、spfile的位置和spfile,其中1就是那個文本文件pfile,2指的是3的位置(路徑),3就是哪個二進制文件spfile,如果spfile被損壞了,那么重新啟動數據庫就會報找不到spfile的錯誤,這事需要通過pfile創建spfile:
 create spfile from pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.3142010101424';
  並且重新啟動數據庫時用startup pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.3142010101424'。
  如果2被修改了路徑,那么3的位置要做相應的調整,不然數據庫重啟啟動會暴同樣的錯誤。
  如果1被損壞或刪除,數據庫可以照常啟動,但為了保險,我們還是重新創建一個新的pfile:
  create pfile='
D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.3142010101424' from spfile;
  2.查看系統是以pfile還是spfile 啟動
  Select isspecified,count(*) from v$spparameter group by isspecified;
 如果 isspecified里有true,表明用spfile進行了指定配置
 如果全為false,則表明用pfile啟動

  3.使用SPfile的好處:
 Spfile 改正了pfile管理混亂的問題,在多結點的環境里,pfile會有多個image
    啟動時候需要跟蹤最新的image。這是個煩瑣的過程。
 用spfile以后,所有參數改變都寫到spfile里面(只要定義 scope=spfile或both),參數配置有個權威的來源。

4.從spfile獲取pfile
 Create pfile='d:pfileSID.ora' from spfile;
 Create pfile='d:pfileSID.ora' from spfile='spfile_location';

5.從pfile獲取spfile
 Create spfile from pfile='Your_pfile_location'
 Create spfile='spfile_location' from pfile='Your_pfile_location'
 
6.動態修改參數
 alter system set parameter=Value scope=spfile|both|memory
 
7.Startup nomount的時候需要讀去spfile或pfile,兩者共存,spfile優先

8.試驗心得:

 環境:window2003  Oracle10g

 問題描述一個數據庫實例,包含二個數據庫(test,orcl),因為設置錯誤的參數造成orcl數據庫spfile文件損壞。通過create spfile生成文件后,一次一只能啟動一個數據庫。

解決過程:

C:\Documents and Settings\hsx>set oracle_sid=orcl

C:\Documents and Settings\hsx>sqlplus/nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 5月 15 17:37:34 2010

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

SQL> conn sys/sys as sysdba
已連接到空閑例程。
SQL> create spfile from pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.or
a.3142010101424';

文件已創建。

SQL> startup pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.314201010
1424'
ORACLE 例程已經啟動。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             167775108 bytes
Database Buffers          436207616 bytes
Redo Buffers                7135232 bytes
數據庫裝載完畢。
數據庫已經打開。
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             184552324 bytes
Database Buffers          419430400 bytes
Redo Buffers                7135232 bytes
數據庫裝載完畢。
數據庫已經打開。
SQL> Select isspecified,count(*) from v$spparameter group by isspecified;

ISSPEC   COUNT(*)
------ ----------
TRUE           23
FALSE         236


備注:假如有多個數據庫的話,可以通過設置set oracle_sid, 然后pfile單獨啟動

 
場景:當你因為修改系統參數的原因,造成數據庫沒有辦法正常啟動,可以利用一下方式,通過重建spfile,快速解決該故障。
1.SQL>conn /as sysdba
   連接到空閑例程
2.SQL> create spfile from pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.or
a.052011184726';
  重建spfile
3.SQL>shutdown abort
  關閉數據庫
4.SQL>startup
 重啟數據庫
至此問題解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM