轉自:http://blog.csdn.net/onebigday/article/details/6108348,http://www.linuxidc.com/Linux/2012-11/73715.htmjava
你們都知道,spfile是oracle 9i以後引入的,目的是提升系統安全性。在Oracle8i下初始化參數文件爲文本文件,能夠使用文本編輯器進行編輯,當須要修改初始化參數時,須要在init.ora文件中修改,再從新啓動數據庫實例。linux
在Oracle10g,引入了服務器參數文件(SPFILE),能夠簡化初始參數的管理。spfile文件是一個二進制文件,不能使用文件編輯器編輯(雖然經過文本編輯器打開後,可以看到參數內容),不然可能形成Oracle沒法識別SPFILE文件。數據庫
我下面以我本身系統安裝的ORACLE與你們討論這二者的用法,E盤是oracle10G的主安裝目錄,那麼分別在緩存
1) E:/oracle/product/10.2.0/admin/orcl/pfile/init.ora.2192009203642 // pfile文件安全
2) E:/oracle/product/10.2.0/db_1/database/initorcl.ora // 儲存spfile文件路徑服務器
3) E:/oracle/product/10.2.0/db_1/dbs/SPFILEORCL.ORA // spfile文件多線程
1.若是spfile被損壞了,那麼重啓數據庫就會報找不到spfile的錯誤,這時須要經過pfile建立spfile:oracle
create spfile from pfile=' E:/oracle/product/10.2.0/admin/orcl/pfile/init.ora.2192009203642';dom
而且重啓數據庫時用:編輯器
startup pfile=' E:/oracle/product/10.2.0/admin/orcl/pfile/init.ora.2192009203642'。
2. 若是2被修改了路徑,那麼3的位置要作相應的調整,否則數據庫重啓會報一樣的錯誤。3. 若是1被損壞或刪除了,沒有關係,數據庫能夠照常啓動,但爲了保險,咱們仍是從新
建立一個pfile:
create pfile=' E:/oracle/product/10.2.0/admin/orcl/pfile/init.ora.2192009203642' from spfile;
問題:
1)建立spfile後,該文件方到哪了?
答:使用create spfile from pfile=’..’ , 生成的spfile文件(文件名仍是SPFILEORCL.ORA),但存放目錄發生變化,存放在2的那個目錄下,但是initorcl.ora內容卻沒有發生變化???
爲了使spfile恢復的原來的目錄下,指定目錄,使用以下命令:
Create spfile=’ E:/oracle/product/10.2.0/db_1/dbs/SPFILEORCL.ORA’
From pfile=' E:/oracle/product/10.2.0/admin/orcl/pfile/init.ora.2192009203642'
show parameter spfile; // 查看spfile位置
2)如何查看oracle是以spfile仍是pfile啓動?
答:Select isspecified,count(*) from v$spparameter group by isspecified;
若是isspecified裏有true,代表用spfile進行了指定配置
若是全爲false,則代表用pfile啓動
3)spfile和pfile啓動oracle 有何區別?
附:
從spfile獲取pfile
Create pfile='d:pfileSID.ora' from spfile;
Create pfile='d:pfileSID.ora' from spfile='spfile_location';
從pfile獲取spfile
Create spfile from pfile='Your_pfile_location'
Create spfile='spfile_location' from pfile='Your_pfile_location'
動態修改參數
alter system set parameter=Value scope=spfile|both|memory
SCOPE參數有三個可選值:
MEMORY:只改變當前實例運行;
SPFILE:只改變SPFILE的設置(若是修改的是靜態參數,則必須指定SCOPE=SPFILE,不然將會報ORA-02095錯。);
BOTH:改變實例及SPFILE(使用BOTH選項實際上等同於不帶參數的ALTER SYSTEM語句)。
Startup nomount的時候須要讀去spfile或pfile,二者共存,spfile優先
用startup(默認)啓動的順序
一、直接在默認路徑下查找spfileSID.ora --(spfile)
若是沒有再查找2
二、直接在默認路徑下查找spfile.ora
若是沒有再查找3
三、直接在默認路徑下查找initSID.ora --(pfile)
若是尚未 就會報錯……
強制用pfile啓動
SQL>startup pfile='Your_Pfile.ora'
startup spfile='/data/oracle/product/10.2.0/db_1/dbs/dbs/spfile_mqq.ora' force
經過pfile鏈接到spfile啓動
修改pfile文件
數據庫的初始化參數文件分析
內容 說明
MTS 多線程服務器配置標識,Oracle 9i 裏稱爲共享服務器配置
dispatchers="(PROTOCOL=TCP) (SERVICE=testXDB)" 多線程服務器配置
Optimizer 最優化
hash_join_enabled=TRUE 優化程序選擇散列鏈接
query_rewrite_enabled=FALSE 啓動或禁用對實體化視圖的查詢重寫
star_transformation_enabled=FALSE 肯定基於成本的查詢轉換是否應用到星型查詢中
# Job Queues 做業列隊
job_queue_processes=10 做業列隊進程數
# Instance Identification 實例標識
instance_name=test 實例名
# Miscellaneous 其餘
aq_tm_processes=1
compatible=9.2.0.0.0 兼容性
# Security and Auditing 安全審覈
remote_login_passwordfile=EXCLUSIVE 指定操做系統或口令文件是否有檢查用戶口令的權限。
# Sort, Hash Joins, Bitmap Indexes 排序, 散列聯接, 位圖索引
pga_aggregate_target=25165824 指定PGA的最大內存量
sort_area_size=524288 指定排序區使用的最大內存量
# Database Identification 數據庫標識SID
db_domain=domin
db_name=test
# File Configuration 文件配置
control_files=("C:oracleoradatatestCONTROL01.CTL", "C:oracleoradatatestCONTROL02.CTL",
"C:oracleoradatatestCONTROL03.CTL") # Pools 池
java_pool_size=33554432 java池用於存儲 Java 的方法、類定義和 Java 對象。
large_pool_size=8388608 大型池用於共享服務器的會話內存、並行執行的消息緩衝區以及RMAN 備份和恢復的磁盤 I/O 緩衝區。
shared_pool_size=50331648 共享池用於存儲共享遊標、存儲的過程、控制結構和並行執行消息緩衝區等對象。
# Cursors and Library Cache 遊標和庫高速緩存
open_cursors=300 指定一次會話可打開的遊標量
# System Managed Undo and Rollback Segments 系統管理的撤消和回退段
undo_management=AUTO 指定系統使用的撤消空間管理方式爲SUM(外部分配)
undo_retention=10800
undo_tablespace=UNDOTBS1 指定回滾表空間
# Diagnostics and Statistics 診斷和統計
background_dump_dest=C:oracleadmintestbdump 後臺進程跟蹤文件
core_dump_dest=C:oracleadmintestcdump 核心轉儲跟蹤文件
timed_statistics=TRUE 收集操做系統的計時信息(優化)
user_dump_dest=C:oracleadmintestudump 用戶進程跟蹤文件
# Processes and Sessions 進程和會話
processes=150 同時鏈接到數據庫的用戶進程數量
# Redo Log and Recovery 重作日誌和恢復
fast_start_mttr_target=300 指定從單個 fast_start_mttr_target=300 指定從單個數據庫例程數據庫例程崩潰中恢復所需的時間
# Cache and I/O 高速緩存和I/O
db_block_size=8192 指定數據塊大小(數值不能改變)
db_cache_size=25165824 指定數據緩衝區的大小
db_file_multiblock_read_count=16 涉及一個徹底連續掃描的一次I/O操做中讀取塊的最大數量