查询初始化参数的方法很多,比如SHOW PARAMETER,或查询V$PARAMETER等,这里简单总结一下。
这一篇描述CREATE PFILE的方法检查初始化参数。
前面介绍了很多种方法,这些方法都是在数据库中查询初始化参数的设置。其实还有一种方法更加的一目了然,就是CREATE PFILE的方式:
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA/test/spfiletest.ora
SQL> create pfile = '/export/home/oracle/inittest1.ora' from spfile;
文件已创建。
SQL> host more /export/home/oracle/inittest1.ora
test2.__db_cache_size=541065216
test1.__db_cache_size=524288000
test2.__java_pool_size=4194304
test1.__java_pool_size=4194304
test2.__large_pool_size=4194304
test1.__large_pool_size=4194304
test1.__oracle_base='/data/oracle'#ORACLE_BASE set from environment
test2.__oracle_base='/data/oracle'#ORACLE_BASE set from environment
test2.__pga_aggregate_target=260046848
test1.__pga_aggregate_target=260046848
test2.__sga_target=775946240
test1.__sga_target=775946240
test2.__shared_io_pool_size=0
test1.__shared_io_pool_size=0
test2.__shared_pool_size=218103808
test1.__shared_pool_size=234881024
test2.__streams_pool_size=0
test1.__streams_pool_size=0
*.audit_file_dest='/data/oracle/admin/test/adump'
*.audit_trail='db'
*.cluster_database=true
*.cluster_database_instances=3
*.compatible='11.1.0.0.0'
*.control_files='+DATA/test/controlfile/current.529.684067899'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_domain=''
*.db_name='test'
*.diagnostic_dest='/data/oracle'
test1.instance_number=1
test2.instance_number=2
*.log_archive_config=''
*.log_archive_dest_1='LOCATION=/data/oracle/oradata/test/archivelog'
*.open_cursors=300
test1.open_cursors=500
test2.open_cursors=700
*.pga_aggregate_target=256901120
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
test1.remote_login_passwordfile='SHARED'
*.sga_target=772800512
test1.thread=1
test2.thread=2
*.undo_tablespace='UNDOTBS1'
test2.undo_tablespace='UNDOTBS2'
使用了这个语句,所有的SPFILE中设置的初始化参数设置都一目了然。
除了CREATE PFILE FROM SPFILE外,11g还增加了CREATE PFILE FROM MEMORY选项,使得用户可以直接从数据库当前生效的参数来生成PFILE文件,利用这个方法,就可以解决上一篇文章最后介绍的PFILE中设置的实例级参数覆盖SPFILE中数据库级参数的情况:
SQL> create pfile = '/export/home/oracle/inittest1.ora' from memory;
文件已创建。
SQL> host more /export/home/oracle/inittest1.ora
# Oracle init.ora parameter file generated by instance test1 on 06/12/2009 15:18:46
test1.__db_cache_size=500M
test2.__db_cache_size=516M
*.__java_pool_size=4M
*.__large_pool_size=4M
*.__oracle_base='/data/oracle' # ORACLE_BASE set from environment
*.__pga_aggregate_target=248M
*.__sga_target=740M
*.__shared_io_pool_size=0
test1.__shared_pool_size=224M
test2.__shared_pool_size=208M
*.__streams_pool_size=0
*._always_anti_join='CHOOSE'
*._always_semi_join='CHOOSE'
*._b_tree_bitmap_plans=TRUE
*._bloom_filter_enabled=TRUE
*._bloom_pruning_enabled=TRUE
*._complex_view_merging=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_complex_pred_selectivity=TRUE
*._optimizer_compute_index_stats=TRUE
*._optimizer_connect_by_combine_sw=TRUE
*._optimizer_connect_by_cost_based=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_elimination=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=240
*._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_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_transitivity_retain=TRUE
*._optimizer_undo_cost_change='11.1.0.6'
*._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
*._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='/data/oracle/admin/test/adump'
*.audit_trail='DB'
*.cluster_database=TRUE
*.cluster_database_instances=3
*.compatible='11.1.0.0.0'
*.control_files='+DATA/test/controlfile/current.529.684067899'
test1.core_dump_dest='/data/oracle/diag/rdbms/test/test1/cdump'
test2.core_dump_dest='/data/oracle/diag/rdbms/test/test2/cdump'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_domain=''
*.db_name='test'
*.diagnostic_dest='/data/oracle'
test1.instance_number=1
test2.instance_number=2
*.log_archive_config=''
*.log_archive_dest_1='LOCATION=/data/oracle/oradata/test/archivelog'
*.log_buffer=4197376 # log buffer update
*.open_cursors=500
*.optimizer_dynamic_sampling=2
*.optimizer_mode='ALL_ROWS'
*.pga_aggregate_target=245M
*.plsql_warnings='DISABLE:ALL' # PL/SQL warnings at init.ora
*.processes=150
*.query_rewrite_enabled='TRUE'
test1.remote_login_passwordfile='SHARED'
test2.remote_login_passwordfile='EXCLUSIVE'
*.resource_manager_plan=''
*.result_cache_max_size=3808K
*.sga_target=740M
*.skip_unusable_indexes=TRUE
test1.thread=1
test2.thread=2
test1.undo_tablespace='UNDOTBS1'
test2.undo_tablespace='UNDOTBS2'
但是这种方法显然也存在问题,首先从得到的结果看,里面除了包含用户设置的初始化参数外,还包含了大量的隐含参数。如果这些隐患参数是Oracle用于自动调整的双下划线参数也不奇怪,问题是大部分都是Oracle不推荐设置的单下划线隐含参数。不过这倒是一个查看Oracle隐患参数的好办法。
另外一个问题是,这个方法只对当前实例设置的参数有效,而无法合并多个实例的设置,对比上面的OPEN_CURSORS参数的设置和下面查询的结果就可以发现这个问题:
SQL> select sid, name, value
2 from v$spparameter
3 where name = 'open_cursors';
SID NAME VALUE
---------- ------------------------------ --------------------------------------------------
* open_cursors 300
test1 open_cursors 500
test2 open_cursors 700
SQL> select inst_id, name, value
2 from gv$system_parameter
3 where name = 'open_cursors';
INST_ID NAME VALUE
---------- ------------------------------ --------------------------------------------------
1 open_cursors 500
2 open_cursors 500
显然CREATE PFILE获取的结果和SPFILE中的设置并不相符,下面修改一下初始化参数OPEN_CURSORS的值:
SQL> alter system set open_cursors = 400;
系统已更改。
SQL> create pfile = '/export/home/oracle/inittest1.ora' from memory;
文件已创建。
SQL> host more /export/home/oracle/inittest1.ora | grep open_cursors
*.open_cursors=400
从这个结果可以看到,CREATE PFILE获取的PFILE只对当前实例有效,虽然获取的结果包含多个实例的设置,但是这些设置可能和其他实例上的真正设置并不相符。
oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html