oracle 11G引數檔案之伺服器引數檔案(spfile)與例項啟動的關係

eric0435發表於2014-04-16

在資料庫啟動時需要讀取引數檔案來分配記憶體區域並定位控制檔案的位置,oracle資料庫中的初始化引數傳統上是儲存在一個文字初始化引數檔案中的.為了更好地管理,可以選擇使用一個二進位制的伺服器引數檔案來管理初始化引數對它的修改在資料庫重啟後仍然生效.下面來介紹如何使用這種方法來管理初始化引數.

什麼是伺服器引數檔案
伺服器引數檔案可以被認為是一個初始化引數檔案庫它被儲存在執行oracle資料庫伺服器的系統中.它被設計為服務端初始化引數檔案.儲存在伺服器引數檔案中的初始化引數是永久生效的.當例項執行時對引數的任何改變在資料庫重啟之後是仍然有效的.這消除了為了使alter system語句的改變永久生效而要手工修改初始化引數的需要.它也提供了對資料庫伺服器自動調整的基礎.

一個伺服器引數檔案是透過使用create spfile語句從文字初始化引數檔案來初始化建立.(也可以透過DBCA來直接建立).伺服器引數檔案是一個二進位制檔案不能使用文字編輯器來修改.oracle資料庫提供了其它的介面來檢視和修改伺服器引數檔案中的引數.

注意:雖然你能使用一個文字編輯器來開啟一個二進位制伺服器引數檔案但不能手工修改它.如果修改會損壞檔案.你將不能重啟例項,如果例項正在執行那麼它會終止執行.

當執行沒有pfile子句的startup命令,oracle例項會在作業系統特定的預設位置來搜尋一個伺服器引數檔案並從檔案中讀取初始化引數.如果沒有找到伺服器引數檔案,例項將搜尋一個文字初始化引數.如果伺服器引數檔案存在但你想使用一個文字初始化引數來覆蓋那麼在執行startup命令時指定pfile子句.
下面來舉例說明:
1.執行不帶pfile子句的startup命令,從下面的輸出可以看出啟動時自動搜尋了伺服器引數檔案spfilejycs.ora

SQL> startup
ORACLE instance started.

Total System Global Area  630501376 bytes
Fixed Size                  2215984 bytes
Variable Size             385880016 bytes
Database Buffers          234881024 bytes
Redo Buffers                7524352 bytes
Database mounted.
Database opened.
SQL> show parameter spfile

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /u01/app/oracle/11.2.0/db/dbs/
                                                 spfilejycs.ora

2.刪除伺服器引數檔案spfilejycs.ora,再執行執行不帶pfile子句的startup命令,從下面的輸出可以看出在啟動時
在搜尋不到伺服器引數檔案時就會搜尋文字初始化引數檔案initjycs.ora

[oracle@jyrac1 dbs]$ mv spfilejycs.ora spfilejycs.ora.bak

SQL> startup
ORACLE instance started.

Total System Global Area  630501376 bytes
Fixed Size                  2215984 bytes
Variable Size             385880016 bytes
Database Buffers          234881024 bytes
Redo Buffers                7524352 bytes
Database mounted.
Database opened.
SQL> show parameter spfile   

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string

3.刪除文字初始化引數檔案initjycs.ora,再執行執行不帶pfile子句的startup命令,從下面的輸出可以看出在啟動時
在搜尋不到伺服器引數檔案時就會搜尋文字初始化引數檔案initjycs.ora,但是因為我們刪除了文字初始化引數檔案
initjycs.ora所以提示找不到這個檔案

[oracle@jyrac1 dbs]$ mv initjycs.ora initjycs.ora.bak

SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/11.2.0/db/dbs/initjycs.ora'

4.執行帶pfile子句的startup命令,將使用文字初始化引數檔案來替代伺服器引數檔案,可以看到spfile引數值為空說明是使用文字初始化引數來啟動的例項

SQL> startup pfile='/u01/app/oracle/11.2.0/db/dbs/initjycs.ora'
ORACLE instance started.

Total System Global Area  630501376 bytes
Fixed Size                  2215984 bytes
Variable Size             385880016 bytes
Database Buffers          234881024 bytes
Redo Buffers                7524352 bytes
Database mounted.
Database opened.
SQL> show parameter spfile

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string

遷移到伺服器引數檔案
如果你當前正使用一個文字初始化引數檔案那麼使用下面的步驟來遷移到伺服器引數檔案:
1.如果初始化引數檔案在一個客戶端系統中,那麼可以使用ftp將這個檔案從客戶端系統傳輸到伺服器系統.
注意:如果你從一個oracle rac環境中遷移一個伺服器引數檔案,你必須合併所有例項特定的初始化引數檔案為一個單獨的初始化引數檔案.這樣做是為了使用oracle rac中的所有例項共同使用一個伺服器引數檔案.

2.使用create spfile from pfile命令在預設位置建立一個伺服器引數檔案.
這個語句將讀取一個文字初始化引數來建立一個伺服器引數檔案.

3.啟動或重啟例項
這個例項將會在預設位置查詢一個新的spfile檔案來啟動

建立伺服器引數檔案
可以使用create spfile語句來建立一個伺服器引數檔案.必須有sysdba或sysoper系統許可權來執行這個語句.
注意:當使用dbca建立資料庫時它會自動的建立一伺服器引數檔案

create spfile語句可以在例項啟動之前或之後執行.然而如果例項已經使用一個伺服器引數檔案啟動了執行這個建立伺服器引數檔案的語句就會報錯.

SQL> create spfile from memory;  
create spfile from memory
*
ERROR at line 1:
ORA-32002: cannot create SPFILE already being used by the instance

可以從一個存在的文字初始化引數檔案或從記憶體來建立一個伺服器引數檔案(spfile).從記憶體來建立伺服器引數檔案這意味著複製初始化引數的當前值到伺服器引數檔案中.

下面的例子從一個文字初始化引數檔案/u01/oracle/dbs/init.ora來建立伺服器引數檔案.在這個例子中沒有指定spfile檔名所以這個被建立的檔案將會使用平臺特定的預設名和位置.

SQL>CREATE SPFILE FROM PFILE='/u01/oracle/dbs/init.ora';

下面的例子在建立伺服器引數檔案時提供了檔名和儲存的位置:

SQL>CREATE SPFILE='/u01/oracle/dbs/test_spfile.ora' FROM PFILE='/u01/oracle/dbs/test_init.ora';

下面的例子將在預設位置將用記憶體中的初始化引數的當前值來建立伺服器引數檔案:

SQL>CREATE SPFILE FROM MEMORY;

SQL> create spfile from memory;  
create spfile from memory
*
ERROR at line 1:
ORA-32002: cannot create SPFILE already being used by the instance

SQL> create spfile from memory;

File created.

下面將用記憶體中的初始化引數的當前值來建立文字初始化引數檔案將與用spfile檔案建立的文字初始化引數檔案進行比較可以明顯看到從記憶體來建立的檔案中多了以_開頭的引數

SQL> create pfile from memory;

File created.

[oracle@jyrac1 dbs]$ cat initjycs.ora
jycs.__db_cache_size=234881024
jycs.__java_pool_size=4194304
jycs.__large_pool_size=4194304
jycs.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
jycs.__pga_aggregate_target=209715200
jycs.__sga_target=633339904
jycs.__shared_io_pool_size=0
jycs.__shared_pool_size=373293056
jycs.__streams_pool_size=4194304
*.audit_file_dest='/u01/app/oracle/admin/jycs/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/app/oracle/oradata/jycs/control01.ctl','/u01/app/oracle/flash_recovery_area/jycs/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='jycs'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=4070572032
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=jycsXDB)'
*.open_cursors=300
*.pga_aggregate_target=209715200
*.processes=150
*.remote_login_passwordfile='exclusive'
*.sga_target=631242752
*.undo_tablespace='UNDOTBS1'
[oracle@jyrac1 dbs]$ cat initjycs.ora
# Oracle init.ora parameter file generated by instance jycs on 04/14/2014 10:33:22
__db_cache_size=224M
__java_pool_size=4M
__large_pool_size=4M
__oracle_base='/u01/app/oracle' # ORACLE_BASE set from environment
__pga_aggregate_target=200M
__sga_target=604M
__shared_io_pool_size=0
__shared_pool_size=356M
__streams_pool_size=4M
_aggregation_optimization_settings=0
_always_anti_join='CHOOSE'
_always_semi_join='CHOOSE'
_and_pruning_enabled=TRUE
_b_tree_bitmap_plans=TRUE
_bloom_filter_enabled=TRUE
_bloom_folding_enabled=TRUE
_bloom_pruning_enabled=TRUE
_complex_view_merging=TRUE
_compression_compatibility='11.2.0.0.0'
_connect_by_use_union_all='TRUE'
_convert_set_to_join=FALSE
_cost_equality_semi_join=TRUE
_cpu_to_io=0
_dimension_skip_null=TRUE
_eliminate_common_subexpr=TRUE
_enable_type_dep_selectivity=TRUE
_fast_full_scan_enabled=TRUE
_first_k_rows_dynamic_proration=TRUE
_gby_hash_aggregation_enabled=TRUE
_generalized_pruning_enabled=TRUE
_globalindex_pnum_filter_enabled=TRUE
_gs_anti_semi_join_allowed=TRUE
_improved_outerjoin_card=TRUE
_improved_row_length_enabled=TRUE
_index_join_enabled=TRUE
_ksb_restart_policy_times='0'
_ksb_restart_policy_times='60'
_ksb_restart_policy_times='120'
_ksb_restart_policy_times='240' # internal update to set default
_left_nested_loops_random=TRUE
_local_communication_costing_enabled=TRUE
_minimal_stats_aggregation=TRUE
_mmv_query_rewrite_enabled=TRUE
_new_initial_join_orders=TRUE
_new_sort_cost_estimate=TRUE
_nlj_batching_enabled=1
_optim_adjust_for_part_skews=TRUE
_optim_enhance_nnull_detection=TRUE
_optim_new_default_join_sel=TRUE
_optim_peek_user_binds=TRUE
_optimizer_adaptive_cursor_sharing=TRUE
_optimizer_better_inlist_costing='ALL'
_optimizer_cbqt_no_size_restriction=TRUE
_optimizer_coalesce_subqueries=TRUE
_optimizer_complex_pred_selectivity=TRUE
_optimizer_compute_index_stats=TRUE
_optimizer_connect_by_combine_sw=TRUE
_optimizer_connect_by_cost_based=TRUE
_optimizer_connect_by_elim_dups=TRUE
_optimizer_correct_sq_selectivity=TRUE
_optimizer_cost_based_transformation='LINEAR'
_optimizer_cost_hjsmj_multimatch=TRUE
_optimizer_cost_model='CHOOSE'
_optimizer_dim_subq_join_sel=TRUE
_optimizer_distinct_agg_transform=TRUE
_optimizer_distinct_elimination=TRUE
_optimizer_distinct_placement=TRUE
_optimizer_eliminate_filtering_join=TRUE
_optimizer_enable_density_improvements=TRUE
_optimizer_enable_extended_stats=TRUE
_optimizer_enhanced_filter_push=TRUE
_optimizer_extend_jppd_view_types=TRUE
_optimizer_extended_cursor_sharing='UDO'
_optimizer_extended_cursor_sharing_rel='SIMPLE'
_optimizer_extended_stats_usage_control=224
_optimizer_fast_access_pred_analysis=TRUE
_optimizer_fast_pred_transitivity=TRUE
_optimizer_filter_pred_pullup=TRUE
_optimizer_fkr_index_cost_bias=10
_optimizer_group_by_placement=TRUE
_optimizer_improve_selectivity=TRUE
_optimizer_join_elimination_enabled=TRUE
_optimizer_join_factorization=TRUE
_optimizer_join_order_control=3
_optimizer_join_sel_sanity_check=TRUE
_optimizer_max_permutations=2000
_optimizer_mode_force=TRUE
_optimizer_multi_level_push_pred=TRUE
_optimizer_native_full_outer_join='FORCE'
_optimizer_new_join_card_computation=TRUE
_optimizer_null_aware_antijoin=TRUE
_optimizer_or_expansion='DEPTH'
_optimizer_order_by_elimination_enabled=TRUE
_optimizer_outer_to_anti_enabled=TRUE
_optimizer_push_down_distinct=0
_optimizer_push_pred_cost_based=TRUE
_optimizer_rownum_bind_default=10
_optimizer_rownum_pred_based_fkr=TRUE
_optimizer_skip_scan_enabled=TRUE
_optimizer_sortmerge_join_inequality=TRUE
_optimizer_squ_bottomup=TRUE
_optimizer_star_tran_in_with_clause=TRUE
_optimizer_system_stats_usage=TRUE
_optimizer_table_expansion=TRUE
_optimizer_transitivity_retain=TRUE
_optimizer_try_st_before_jppd=TRUE
_optimizer_undo_cost_change='11.2.0.1'
_optimizer_unnest_corr_set_subq=TRUE
_optimizer_unnest_disjunctive_subq=TRUE
_optimizer_use_cbqt_star_transformation=TRUE
_optimizer_use_feedback=TRUE
_or_expand_nvl_predicate=TRUE
_ordered_nested_loop=TRUE
_parallel_broadcast_enabled=TRUE
_partition_view_enabled=TRUE
_pivot_implementation_method='CHOOSE'
_pre_rewrite_push_pred=TRUE
_pred_move_around=TRUE
_push_join_predicate=TRUE
_push_join_union_view=TRUE
_push_join_union_view2=TRUE
_px_minus_intersect=TRUE
_px_pwg_enabled=TRUE
_px_ual_serial_input=TRUE
_query_rewrite_setopgrw_enable=TRUE
_remove_aggr_subquery=TRUE
_replace_virtual_columns=TRUE
_right_outer_hash_enable=TRUE
_selfjoin_mv_duplicates=TRUE
_sql_model_unfold_forloops='RUN_TIME'
_sqltune_category_parsed='DEFAULT' # parsed sqltune_category
_subquery_pruning_enabled=TRUE
_subquery_pruning_mv_enabled=FALSE
_table_scan_cost_plus_one=TRUE
_union_rewrite_for_gs='YES_GSET_MVS'
_unnest_subquery=TRUE
_use_column_stats_for_function=TRUE
audit_file_dest='/u01/app/oracle/admin/jycs/adump'
audit_trail='DB'
compatible='11.2.0.0.0'
control_files='/u01/app/oracle/oradata/jycs/control01.ctl'
control_files='/u01/app/oracle/flash_recovery_area/jycs/control02.ctl'
core_dump_dest='/u01/app/oracle/diag/rdbms/jycs/jycs/cdump'
db_block_size=8192
db_domain=''
db_name='jycs'
db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
db_recovery_file_dest_size=3882M
diagnostic_dest='/u01/app/oracle'
dispatchers='(PROTOCOL=TCP) (SERVICE=jycsXDB)'
log_buffer=7192576 # log buffer update
open_cursors=300
optimizer_dynamic_sampling=2
optimizer_mode='ALL_ROWS'
pga_aggregate_target=200M
plsql_warnings='DISABLE:ALL' # PL/SQL warnings at init.ora
processes=150
query_rewrite_enabled='TRUE'
remote_login_passwordfile='EXCLUSIVE'
result_cache_max_size=3104K
sga_target=604M
skip_unusable_indexes=TRUE
undo_tablespace='UNDOTBS1'

如果使用預設的spfile檔名和預設位置或者指定一個spfile檔名和位置.如果存在一個同名的spfile檔名它將覆蓋這個檔案而不會有警告資訊.

當從一個文字初始化引數檔案建立伺服器引數檔案spfile時,在初始化引數檔案中在相同行的特定註釋會作為引數設定在spfile檔案中被維護.所有其它的註釋會被忽略.

oracle建議你允許資料庫給spfile使用預設名和預設儲存位置.這簡化的資料庫的管理.比如使用startup命令就會從預設位置讀取spfile檔案.

下面的表格顯示了在UNIX,Linux和Windows平臺上的文字初始化引數檔案pfile和伺服器引數檔案spfile的預設檔名和儲存位置.

PFILE and SPFILE Default Names and Locations on UNIX, LInux, and Windows
-------------------------------------------------------------------------------------------------------------
platform      pfile default name    spfile default name     pfile default location   spfile default location
-------------------------------------------------------------------------------------------------------------
unix,linux    initORACLE_SID.ora    spfileORACLE_SID.ora    ORACLE_HOME/dbs或者       不使用oracle asm:
                                                            與資料檔案在同一個目錄       ORACLE_HOME/dbs或者與
                                                                                      資料檔案在同一個目錄
                                                                                      使用oracle asm:與資料檔案
                                                                                      在同一個磁碟組


windows       initORACLE_SID.ora    spfileORACLE_SID.ora    ORACLE_HOME\database      不使用oracle asm:
                                                                                      ORACLE_HOME\database
                                                                                      使用oracle asm:與資料檔案
                                                                                      在同一個磁碟組

---------------------------------------------------------------------------------------------------------------

注意:在啟動時,例項首先搜尋一個名叫spfileORACLE_SID.ora的spfile檔案,如果沒有找到就會搜尋spfile.ora檔案.
使用spfile.ora能讓所有的oracle rac例項使用相同的伺服器引數檔案.

如果spfile沒找到例項將搜尋文字初始化引數檔案initORACLE_SID.ora.

如果你不是在預設位置建立一個spfile檔案那麼你必須建立一個預設的pfile在pfile檔案的根部指示這個伺服器引數檔案.

當使用dbca建立資料庫且使用oracle asm時,dbca將會把spfile儲存在一個oracle asm磁碟組也會在pfile檔案的部指示這個伺服器引數檔案.

spfile初始化引數
spfile初始化引數包含了當前伺服器引數檔案的名字.當資料庫使用預設的伺服器引數檔案時,也就是執行沒有pfile引數的startup命令時--這個spfile的值由伺服器內部指定.在SQL*Plus中執行show parameter spfile(或任何其它的方法來查詢引數的值)來顯示當前使用的伺服器引數檔名.

改變初始化引數值
使用alter system語句來設定,修改或還原初始化引數值.如果你正使用一個文字初始化引數檔案,alter system語句就只能對當前例項改變引數的值.因為沒有機制可以自動更新磁碟上的文字初始化引數檔案.你必須手工更新.使用伺服器引數檔案可以克服這個問題.

有兩種型別的初始化引數檔案
.動態初始化引數對於當前oracle例項是可以修改的.這種改變會立即生效.
.靜態初始化引數對於當前例項是不能修改的.必須修改文字初始化引數檔案或者伺服器引數檔案中的引數然後重新啟動例項使修改生效

設定或修改初始化引數值
使用有set子句的alter system的語句來設定或修改初始化引數的值.可選scope子句用來指定修改的範圍:

----------------------------------------------------------------------------------------------------
scope clause                       description
----------------------------------------------------------------------------------------------------
scope=spfile                      這種修改只應用於伺服器引數檔案.它的效果如下:
                                  .對當前例項不會生效
                                  .對於動態和靜態引數只有在重啟例項之後才會生效
                                  這是唯一可以修改靜態引數的scope範圍級別

scope=memory                      這種修改只應用於記憶體.它的效果如下:
                                  .這種改變只應用於當前例項且會立即生效
                                  .對於動態引數會立即生效.但是不是永久生效因為沒有更新spfile檔案
                                  對於靜態參靈數不能在這個範圍級別進行修改

scope=both                        這種修改應用於伺服器引數檔案和記憶體,它的效果如下:
                                  .對於當前例項這種改變會立即生效
                                  .對於動態引數會永久生效因為修改了伺服器引數檔案.
                                  對於靜態參靈數不能在這個範圍級別進行修改
----------------------------------------------------------------------------------------------------

如果設定scope=spfile或scope=both有錯誤例項使用伺服器引數檔案是不能啟動的.如果例項是使用伺服器引數檔案啟動的那麼預設的引數修改範圍級別為scope=both.如果例項是使用文字初始化引數檔案來啟動的那麼預設的引數修改範圍級別為scope=memory

對於動態引數,還可以指定deferred關鍵字.當指定這個關鍵字後改變只對以後的會話生效.

當你設定scope為spfile或both時可以選擇comment子句來對引數使用一個文字字串作為註釋.這個註釋也會被寫入伺服器引數檔案中.

下面的語句將修改在連線被刪除之前允許的登入失敗的最大次數.它包含了一註釋且明確地指出了修改只對伺服器引數檔案生效.

SQL>ALTER SYSTEM SET SEC_MAX_FAILED_LOGIN_ATTEMPTS=3 COMMENT='Reduce from 10 for tighter security.' SCOPE=SPFILE;

下面的例子介紹瞭如何對複雜初始化引數進行設定這個引數有一個列表屬性.下面的語句可以改變已經存在的設定或者使用一個新的歸檔目錄

SQL>ALTER SYSTEM
2 SET LOG_ARCHIVE_DEST_4='LOCATION=/u02/oracle/rbdb1/',MANDATORY,'REOPEN=2'
3 COMMENT='Add new destination on Nov 29'
4 SCOPE=SPFILE;

當一個引數值是由列表值組成你不能透過位置或者次序數字來統計圖單個屬性.在每次修改這個引數時必須指定一個完全列表值.新的完全列表可以替換舊的引數列表值.

清除初始化引數值
可以使用alter system reset命令來清除(刪除)例項啟動時所用的spfile檔案中的任何引數設定.scope=memory和scope=both是不被允許的.scope=spfile子句不被要求但可以包含.

你可能想清除spfile檔案中的一個引數使其在下次啟動時使用預設引數值.這樣做可能有以下幾種原因:
.為了診斷列出當前例項的所有引數值.可以使用show parameters命令或者查詢v$parameter或v$parameter2檢視
.為了修改伺服器引數檔案首先要將其匯出建立成文字初始化引數檔案再修改,修改後再使用create spfile命令從文字初始化引數檔案來重新建立伺服器引數檔案.

匯出的文字初始化引數檔案pfile可以使用startup pfile命令來啟動例項.

為了執行create pfile語句必須要有sysdba或sysoper系統許可權.匯出的檔案在資料庫伺服器端生成.它可能包含了引數的註釋並一起作為引數被設定.

下面的語句用來從spfile檔案來建立pfile

SQL>create pfile from spfile;

因為沒有指定檔名,資料庫將使用一個平臺特定的檔名來建立一個文字初始化引數檔案pfile,而且它是使用平臺特定的預設的伺服器引數檔案spfile來建立的

下面的語句用來從spfile檔案來建立pfile,但是指定了檔名:

SQL>CREATE PFILE='/u01/oracle/dbs/test_init.ora' FROM SPFILE='/u01/oracle/dbs/test_spfile.ora';

注意:可以使用記憶體中的當前引數值來建立一個pfile檔案.例如:

SQL>CREATE PFILE='/u01/oracle/dbs/test_init.ora' FROM MEMORY;

備份伺服器引數檔案
可以透過匯出的形式來備份伺服器引數檔案.如果你的資料庫使用rman來例項備份和恢復策略那麼可以使用rman來建立一個spfile檔案的備份.當使用rman備份資料庫時spfile檔案會自動備份,但是rman也能讓你指定對當前活動的spfile建立一個備份.

恢復丟失或者損壞的伺服器引數檔案
如果伺服器引數檔案(spfile)丟失或者損壞了,那麼當前例項可能會出現故障或者在下次啟動例項時會失敗.有下面幾種方法來恢復spfile:
.如果例項正在執行可以使用下面的命令從記憶體中使用當前引數值來重新建立一個伺服器引數檔案spfile

SQL>create spfile from memory;

這個命令將在預設位置使用預設檔名來建立一個spfile檔案.也可以指定新的目錄和檔名.

.如果你有一個有效的文字初始化引數檔案(pfile),可以使用下面的命令從pfile檔案來建立spfile:

SQL>create spfile from pfile;

這個命令將在預設位置使用預設檔名來建立一個spfile檔案,或者不使用預設位置的預設的pfile來建立的語句如下:

SQL>CREATE SPFILE='/u01/oracle/dbs/test_spfile.ora' FROM PFILE='/u01/oracle/dbs/test_init.ora';

.從備份中還原spfile

.如果你的情況以上方法都不能使用,那麼執行以下步驟來建立:
1.從告警日誌(alert.log)中所列出的引數值來建立一個文字初始化引數檔案(pfile)
當例項啟動時所使用的初始化引數將會寫入告警日誌檔案中.可以將這些引數資訊複製到新的pfile檔案中.

2.使用pfile檔案來建立spfile

在引數更新時出現讀/寫錯誤
在引數被更新時如果讀取或者寫伺服器引數檔案出錯那麼這個錯誤報告會被寫入告警日誌檔案且後繼的對伺服器引數檔案的
更新將會忽略.這時可以執行下面的操作:
1.關閉例項,恢復伺服器引數檔案後再重新啟動例項.

2.如果不關心後繼的引數修改是不是永久生效可以繼續執行資料庫

檢視引數設定
可以使用以下幾種方法來檢視引數設定

--------------------------------------------------------------------------------------------------------
方法                                   描述
--------------------------------------------------------------------------------------------------------
show parameters                       這個命令將會顯示影響當前會話的初始化引數值

show spparameters                     這個命令將會顯示伺服器引數檔案中的初始化引數值

create pfile                          這個命令將使用伺服器引數檔案或者記憶體中當前引數的值
                                      來建立一個文字初始化引數檔案.可以使用任何文字編輯器
                                      來檢視pfile

v$parameter                           這個檢視將顯示影響當前會話的初始化引數.使用檢視更容易
                                      區分列表引數值因為每一個列表引數值顯示為一行

v$system_parameter                    這個檢視顯示影響當前例項的初始化引數.一個新的會話會繼承
                                      例項級別的引數值

v#system_parameter2                   這個檢視顯示影響當前例項的初始化引數.一個新的會話會繼承
                                      例項級別的引數值,使用檢視更容易區分列表引數值因為每一個
                                      列表引數值顯示為一行

v$spparameter                         這個檢視顯示了spfile的當前內容.如果例項沒有使用spfile啟動
                                      這個檢視在isspecified列返回false.


---------------------------------------------------------------------------------------------------------
 

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

相關文章