13.1 恢复密码文件
密码文件(linux 为例)在$ORACLE_HOME/dbs目录下,文件名的前缀是orapw,后接数据库实例名。
[oracle@DSI backup]$ cd /u01/app/oracle/product/11.2.0/db_1/dbs/
-rw-r----- 1 oracle oinstall 1536 Jul 25 10:15 orapworcl
该文件只为两个权限服务:SYSDBA和SYSOPER
密码文件的丢失或损坏导致需要访问该文件的相关操作都失败,比如,使用有SYSDBA和SYSOPER权限的远程登录都会失败,影响oracle的管理控制台 database console、grid control
$ sqlplus / as sysdba $ sqlplus sys/xxx@orcl as sysdba ERROR ORA-01031: insufficient privileges SQL> grant sysdba to hr ERROR ORA-01994: GRANT failed: password file missing or disabled
若初始化参数remote_login_passwordfile的值为NONE,数据库的行为特征与密码文件损坏一模一样。
密码文件的恢复很简单,使用orapwd命令重建一个密码文件
$ orapwd file=$ORACLE_HOME/dbs/orapworcl password=oracle force=y
--force参数覆盖已有的密码文件
参数ignorecase将SYS的密码设置为11g以前的不区分大小写
普通用户的密码大小写是否区分由参数sec_case_sensitive_logon.
13.2 恢复参数文件
没有参数文件db无法启动到nomount阶段,当参数文件损坏时没有备份,dba可以通过参数文件pfile的形式重建。
首先查看告警日志,所有非默认的参数均记在其内,这是恢复参数文件最准确的方法
[oracle@DSI dbs]$ cd /u01/app/oracle/diag/rdbms/orcl/orcl/trace/ [oracle@DSI trace]$ tail -n 200 alert_orcl.log Using parameter settings in server-side spfile /u01/app/oracle/product/11.2.0/db_1/dbs/spfileorcl.ora System parameters with non-default values: processes = 150 memory_target = 752M control_files = "/u01/app/oracle/oradata/orcl/control01.ctl" control_files = "/u01/app/oracle/fast_recovery_area/orcl/control02.ctl" db_block_size = 8192 compatible = "11.2.0.4.0" db_recovery_file_dest = "/u01/app/oracle/fast_recovery_area" db_recovery_file_dest_size= 4977M undo_tablespace = "UNDOTBS1" remote_login_passwordfile= "EXCLUSIVE" db_domain = "" dispatchers = "(PROTOCOL=TCP) (SERVICE=orclXDB)" audit_file_dest = "/u01/app/oracle/admin/orcl/adump" audit_trail = "DB" db_name = "orcl" open_cursors = 300 diagnostic_dest = "/u01/app/oracle"
若连告警日志都没有了,dba应当理解那些参数是必须设置的
11g在自动内存管理机制与新的诊断日志路径管理的帮助下,必须指定的参数
:DB_NAMECONTROL_FILES
如果没有db_name参数,实例无法启动
DB_NAMEDB_BLOCK_SIZECOMPATIBLE 可以在文件头部取得
不设置或错误会报错
ORA-01103
ORA-00058
参数compatible的特点是只能增大不能减小,默认是11.2.0
参数instance_name和service_name可以从环境变量oracle_sid、密码文件名及tnsname.ora文件中找回。
参数processopen_cursorssessions可以考虑设置的大一些,
其他参数尽量不设置,一般使用默认值就能打开数据库。
不能打开数据库要具体分析。
若在数据库运行时发现参数文件出了问题,可以使用11g的新命令“create pfile/spfile from memory” 从内存中创建一个pfile参数文件
SQL> create pfile='/tmp/initorcl.ora.memory' from memory; File created. [oracle@DSI trace]$ cat /tmp/initorcl.ora.memory # Oracle init.ora parameter file generated by instance orcl on 07/29/2019 15:20:17
除非必要,应将以下画线起始的隐含参数删掉 [oracle@DSI trace]$ grep -v '^(_|#).*' /tmp/initorcl.ora.memory >/tmp/initorcl.ora.nohidden [oracle@DSI trace]$ cat /tmp/initorcl.ora.nohidden
注意,如果采用window自动打开资源管理计划的话,发现参数resource_manager_plan应该删掉
等下次关闭db后,再将spfile创建回来
SQL> create spfile from pfile=’/tmp/initorcl.ora.nohidden’;
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[oracle@DSI trace]$ grep -v '^(_|#).*' /tmp/initorcl.ora.memory # Oracle init.ora parameter file generated by instance orcl on 07/29/2019 15:20:17 __db_cache_size=320M __java_pool_size=4M __large_pool_size=8M __oracle_base='/u01/app/oracle' # ORACLE_BASE set from environment __pga_aggregate_target=288M __sga_target=464M __shared_io_pool_size=0 __shared_pool_size=120M __streams_pool_size=0 _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.4.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_enable_table_lookup_by_nl=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=192 _optimizer_false_filter_pred_pullup=TRUE _optimizer_fast_access_pred_analysis=TRUE _optimizer_fast_pred_transitivity=TRUE _optimizer_filter_pred_pullup=TRUE _optimizer_fkr_index_cost_bias=10 _optimizer_full_outer_join_to_outer=TRUE _optimizer_group_by_placement=TRUE _optimizer_improve_selectivity=TRUE _optimizer_interleave_jppd=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_join_to_inner=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.4' _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_partition_scan_enabled=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/orcl/adump' audit_trail='DB' background_dump_dest='/u01/app/oracle/diag/rdbms/orcl/orcl/trace' #Deprecate parameter compatible='11.2.0.4.0' control_files='/u01/app/oracle/oradata/orcl/control01.ctl' control_files='/u01/app/oracle/fast_recovery_area/orcl/control02.ctl' core_dump_dest='/u01/app/oracle/diag/rdbms/orcl/orcl/cdump' db_block_size=8192 db_domain='' db_name='orcl' db_recovery_file_dest='/u01/app/oracle/fast_recovery_area' db_recovery_file_dest_size=4977M diagnostic_dest='/u01/app/oracle' dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)' log_buffer=6479872 # log buffer update memory_target=752M open_cursors=300 optimizer_dynamic_sampling=2 optimizer_mode='ALL_ROWS' plsql_warnings='DISABLE:ALL' # PL/SQL warnings at init.ora processes=150 query_rewrite_enabled='TRUE' remote_login_passwordfile='EXCLUSIVE' result_cache_max_size=1952K skip_unusable_indexes=TRUE undo_tablespace='UNDOTBS1' user_dump_dest='/u01/app/oracle/diag/rdbms/orcl/orcl/trace' #Deprecate parameter