首页 | 摘要显示 | 上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 下一页

Oracle Archives

August 7, 2007

10g中不同Oracle优化器版本的参数差异

NAME8.1.79.2.010.2.0.1
_trace_optionstextmultipletext
_db_block_adjchk_level785615367888921678889216
_always_semi_joinOFFCHOOSECHOOSE
_ordered_nested_loopFALSETRUETRUE
_optimizer_max_permutations8000020002000
query_rewrite_enabledFALSEFALSETRUE
_mmv_query_rewrite_enabledFALSEFALSETRUE
_index_join_enabledFALSETRUETRUE
_table_scan_cost_plus_oneFALSETRUETRUE
_cost_equality_semi_joinFALSETRUETRUE
_new_initial_join_ordersFALSETRUETRUE
_optim_peek_user_bindsFALSETRUETRUE
_gs_anti_semi_join_allowedFALSETRUETRUE
_optim_new_default_join_selFALSETRUETRUE
optimizer_dynamic_sampling012
_pre_rewrite_push_predFALSETRUETRUE
_union_rewrite_for_gsOFFYES_GSET_MVSYES_GSET_MVS
_generalized_pruning_enabledFALSETRUETRUE
_optim_adjust_for_part_skewsFALSETRUETRUE
_optimizer_compute_index_statsFALSEFALSETRUE
_optimizer_filter_pred_pullupFALSEFALSETRUE
optimizer_features_enable8.1.79.2.010.2.0.1
optimizer_modeCHOOSECHOOSEALL_ROWS
_always_anti_joinOFFCHOOSECHOOSE
_partition_view_enabledFALSEFALSETRUE
_b_tree_bitmap_plansFALSETRUETRUE
_cpu_to_io10000
_optimizer_cost_modelIOCHOOSECHOOSE
_optimizer_undo_cost_change8.1.79.2.010.2.0.1
_optimizer_system_stats_usageFALSETRUETRUE
_new_sort_cost_estimateFALSETRUETRUE
_complex_view_mergingFALSETRUETRUE
_unnest_subqueryFALSETRUETRUE
_pred_move_aroundFALSETRUETRUE
_remove_aggr_subqueryFALSEFALSETRUE
_optimizer_squ_bottomupFALSEFALSETRUE
_push_join_predicateFALSETRUETRUE
_push_join_union_viewFALSETRUETRUE
_push_join_union_view2FALSEFALSETRUE
_optimizer_skip_scan_enabledFALSETRUETRUE
_parallel_broadcast_enabledFALSETRUETRUE
_right_outer_hash_enableFALSEFALSETRUE
skip_unusable_indexesFALSEFALSETRUE
_optimizer_dim_subq_join_selFALSEFALSETRUE
_query_rewrite_setopgrw_enableFALSEFALSETRUE
_optimizer_join_order_control003
_bloom_filter_enabledFALSEFALSETRUE
_gby_hash_aggregation_enabledFALSEFALSETRUE
_sql_model_unfold_forloopsCOMPILE_TIMECOMPILE_TIMERUN_TIME
_optimizer_transitivity_retainFALSEFALSETRUE
_px_pwg_enabledFALSEFALSETRUE
_optimizer_or_expansionBREADTHBREADTHDEPTH
_selfjoin_mv_duplicatesFALSEFALSETRUE
_dimension_skip_nullFALSEFALSETRUE

在10g中不能将Optimizer_features_enable设成10.2.0, 而9i中则可以不带第四个版本号.

August 12, 2007

USE_CONCAT对X$表有时并不工作

    上一次发现访问X$KSLEI时, 用这个Hint很有效, 后来在更多的机器上测试, 发现有的数据库上这个Hint并不工作, 如下所示:

SQL> SELECT /*+ USE_CONCAT */ * FROM X$KSLEI WHERE INDX IN (1,2);

----------------------------------------------------
| Id  | Operation        | Name    | Rows  | Bytes |
----------------------------------------------------
|   0 | SELECT STATEMENT |         |    20 |  1680 |
|*  1 |  FIXED TABLE FULL| X$KSLEI |    20 |  1680 |
----------------------------------------------------

    最后只好化简为繁, 改成用UNION ALL来实现, 这下Oracle没得选择了.

SQL> SELECT * FROM X$KSLEI WHERE INDX = 1 UNION ALL
  2  SELECT * FROM X$KSLEI WHERE INDX = 2
  3  /

----------------------------------------------------
| Id  | Operation                | Name            |
----------------------------------------------------
|   0 | SELECT STATEMENT         |                 |
|   1 |  UNION-ALL               |                 |
|*  2 |   FIXED TABLE FIXED INDEX| X$KSLEI (ind:2) |
|*  3 |   FIXED TABLE FIXED INDEX| X$KSLEI (ind:2) |
----------------------------------------------------

    很多人动不动就想用Direct SGA Access的方法来写数据库监控程序, 其实好好调一下SQL, 可以不用那么复杂.

August 21, 2007

如何获得X$表上的特殊索引信息?

    充分利用X$表上的特殊索引, 可以加快对性能视图的访问速度, 从而编译高效的性能监控程序. Oracle提供了一个视图可以用来查询在X$表的那些列上有这样的索引存在, 如下所示:

SQL> DESC V$INDEXED_FIXED_COLUMN
Name                 Null?    Type
-------------------- -------- -------------
TABLE_NAME                    VARCHAR2(30)
INDEX_NUMBER                  NUMBER
COLUMN_NAME                   VARCHAR2(30)
COLUMN_POSITION               NUMBER

    有时我感觉查询V$SYSSTAT中的记录都有些慢, 看看它上面有没有索引进技术, 先用AUTOTRACE看一下这个视图的X$表是那一个.

SQL> SELECT * FROM V$SYSSTAT;

-------------------------------------------------------
| Id  | Operation        | Name       | Rows  | Bytes |
-------------------------------------------------------
|   0 | SELECT STATEMENT |            |     1 |    99 |
|*  1 |  FIXED TABLE FULL| X$KSUSGSTA |     1 |    99 |
-------------------------------------------------------

    在9i中这个基表是有一个索引存在的, 对应于STATISTIC#这一列, 不过在10g中没有了, 不知道为什么取消了?

SQL> SELECT * FROM V$INDEXED_FIXED_COLUMN WHERE TABLE_NAME='X$KSUSGSTA';

no rows selected

    否则我又想要化简为烦, 来进行UNION ALL了.

August 22, 2007

ORA-01102: 不能加载数据库到EXCLUSIVE模式

    在本地建Standby时会遇到下面这个错误. 有几个库是从同一个源库拷贝出来, 今天在为他们在同一台机器上建Standby也遇到了这个问题, 这几个库拷出来后就没有改更过DB_NAME, 因此他们都是相同的, 只是实例名不同而已.

SQL> alter database mount standby database;
alter database mount standby database
*
ERROR at line 1:
ORA-01102: cannot mount database in EXCLUSIVE mode

    其实这个问题和一个文件有关, Oracle数据库在运行着时会锁定生成或锁定一个文件. 发现在数据库运行着时, 用fuser可以看到有Oracle的进程在打开这个文件, 而在Windows中则不能删除这个文件. 如数据库PROD.

C:\oracle\product\10.2.0\database\hc_PROD.dat
/app/oracle/product/10.2.0/dbs/lkPROD

    这个文件默认是从DB_NAME来生成的, 但是如果设了LOCK_NAME_SPACE值, 如改成PRODSTBY, 则这个文件名就变成了从LOCK NAME SPACE的值来生成. 如:

C:\oracle\product\10.2.0\database\hc_PRODSTBY.dat
/app/oracle/product/10.2.0/dbs/lkPRODSTBY

    另外一个猜测想, 如果我们用一个Perl角本或其他程序锁定这个文件名, 也可以模拟出这个错误的, 还没有去验证这一点.

September 4, 2007

Oracle 11g新特性 -- DG压缩传送日志

    用DataGuard做远距离的容灾时, 日志的传送也会成关键的问题. 面对这个问题, 首先会想到将Archive Log先缩压一下, 再进行传送, 或者用rsync(现在用得越来越广了)加上压缩选项来处理, 可以说Oracle的这个功能来得太晚了, 应当在9i时就加上.

    通过LOG_ARCHIVE_DEST_n中的一个参数可以控制是否启用压缩功能, 默认值是禁用的. 如下所示:

LOG_ARCHIVE_DEST_n='SERVICE=... COMPRESSION={ENABLE|DISABLE}'

    Oracle自身带的这个功能可以大大简化DBA的编程工作. 需要注意的是, 压缩数据是很耗CPU的一件事情, 需要考虑源端的CPU的使用情况, 尤其是你用LGWR传送日志时, 更要慎重考虑. 你可以在本地建一个中转节结点, 然后利用这个压缩功能将日志传送到远距离的DataGuard节点.

    DBA又可以多花点时间喝茶看报了!

上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 下一页

当前分类: Oracle

Creative Commons License
本站版权: 共用创作 CC
署名-非商业性-相同方式分享
本站基于MT-3.36免费版
(©)版权所有, 2004 - 2008, www.AnySQL.net, 保留所有权利.
MSN: loufangxin(a)msn.com, Mail: anysql(at)126.com/support(at)iamdba.com, Skype ID:anysql