易截截图软件、单文件、免安装、纯绿色、仅160KB

Oracle 10g Statistic数据统计


Oracle 10g statistic数据统计,Oracle会根据这些统计信息来决定是走RBO(Rule-BasedOptimization),还是走CBO(Cost-BasedOptimization),会去选择哪种执行计划更划算,影响是否走相关的索引等.如果是CBO的话,它依靠准确的(或者说比较准确的)统计信息来产生优化的执行路径,如果没有做过统计,CBO也就没有做cost评估的依据,所以虽然是CBO,但是实际上还是用RBO了,而且如果不常做统计的话,由于CBO是以统计为依据的,所以这时CBO的依据信息有问题,CBO也会不准。 所以 DBA 需要确保定期收集统计信息,创建另一个执行核对清单。
举个例子:
一次测试,一个sql语句执行要20分钟,有时候还出不了结果,发现查看执行计划,发现居然走了全表扫描(表中大约300w条记录),为啥不用索引呢,查看索引状态,一切正常。分析了相关的表,然后重新执行3分钟搞定!
世事无绝对,analyze表会增加CBO执行的性能?不一定的。
我就碰到一个语句分析后要执行30多分钟,删除分析后,只要30秒。
很多情况下不一定的,最好是自己从执行计划判断。
analyze table tablename compute statistics for all indexes;
analyze table tablename delete statistics
顺便补充一点,表只有分析了之后,num_rows才会有值。
select * from user_all_tables a where a.num_rows <10;
analyze table tablename compute statistics;
SELECT 'ANALYZE  TABLE  ' || TABLE_NAME || '  COMPUTE  STATISTICS;'
  from (SELECT DISTINCT TABLE_NAME from ALL_COL_COMMENTS);
SQL语句的执行计划走不走索引除了与Statistic有关系,还有pfile的一个参数有关:optimizer_index_cost_adj. 该参数影响优化器选择索引还是全表扫描的倾向,建议将其设为40.
在 10g 中,通过设置初始化参数 STATISTIC_LEVEL 为 TYPICAL 或 ALL,就可以自动收集统计信息(默认值为 TYPICAL,因此可以随即启用自动收集统计信息的功能)。Oracle 数据库 10g 具有一个预定义的调度程序作业,名称为 GATHER_STATS_JOB,它由 STATISTIC_LEVEL 参数的适当数值所激活。
SQL> show parameter statistics_
NAME                                 TYPE        VALUE
---


相关文档:

mysql 与Oracle 函数对比

Oracle函数和mysql函数比较
1.       Oracle中的to_number()转换成数字;
Oracle> Select to_number(‘123’) from dual;  -----         123;
           &nbs ......

mysql,sqlserver,oracle三种数据库的大对象存取

mysql 大对象存取:
  类型一般应该用mediumblod,
  blob只能存2的16次方个byte,
  mediumblod是24次方,
  一般来说够用了.longblob是32次方有些大.
  MYSQL默认配置只能存1M大小的文件,要修改配置,WIN版本的在mysql.ini文件中
  修改max_allowed_packet,net_buffer_length等几个参数,或直接SET GLOBAL va ......

SQLServer和Oracle常用函数对比


数学函数
在oracle 中distinct关键字可以显示相同记录只显示一条
  1.绝对值
  S:select abs(-1) value
  O:select abs(-1) value from dual
  2.取整(大)
  S:select ceiling(-1.001) value
  O:select ceil(-1.001) value from dual
  3.取整(小)
  S:select floor(-1.001) value ......

sqlserver:openrowset / oracle:table/view@dblink名

只是sqlserver 提供的远程数据访问函数;  在本地sqlserver 中取外部数据源数据时候可用;
对连接本地 oracle 操作远程 oracle 不能使用; 测试: pl/sql 中使用:
select * from openrowset(................); 无效!!!!!!!!!!!!!!
在oracle 中需要访问远程数据,需要建立一连接远程oracle 的 dblink ;
再用如下方 ......

oracle 表空间操作

oracle表空间操作详解
  1
  2
  3作者:   来源:    更新日期:2006-01-04 
  5
  6 
  7建立表空间
  8
  9CREATE TABLESPACE data01
 10DATAFILE '/ora ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号