首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    执行计划 - Oracle谓词越界与绑定变量窥探

    结果排查发现客户在导入数据后并未重新收集统计信息,SQL使用绑定变量,窥探的变量刚好是越界,导致SQL第一次硬解析生成的执行计划走错。再加上10G的库导致接下来的执行计划直接沿用内存中的执行计划。...,字段上有直方图信息,在10g里面也会由于绑定变量窥探从而使SQL大部分变量的执行计划走错。...这里将内存中的执行计划置为失效,这里方法有很多种,暂不做一一介绍: ? 从上面可以看出rows和bytes值都有差异,如果数据差异大,cost也会变化。...,可以修改隐含参数"_optim_peek_user_binds"为FALSE禁用变量窥探(可能会引起性能问题),不过11g中引入自适应游标共享后这个问题得到了改善,在10g中直方图和变量窥探是相互矛盾的...下面执行where条件为name的SQL: ? 再只执行一次查询,执行两次收集统计信息就会收集直方图信息 ?

    1.9K30

    细致入微:如何使用数据泵导出表的部分列数据

    以下为正文 无论是老版本exp还是数据泵expdp,Oracle都提供了QUERY的功能,这使得查询表中部分记录的功能可以实现,但是QUERY只能过滤行,而不能过滤列,Oracle数据泵会读取表中全部列的...在12c中,Oracle为数据泵提供了VIEW功能,使得导出的时候可以根据视图的定义来导出表中的数据: SQL>select banner from v$version; BANNER-------...**************************************************************************C##U1.SYS_EXPORT_TABLE_01的转储文件集为...通过将外部表导出的 external_table.dp 文件拷贝到目标环境对应的目录下,根据上面的定义重建外部表,注意目标环境创建过程由于已经拷贝了导出的数据,因此语法截至到 location 语句就结束了...OL$NODESSYSTEM HELP SYSTEM 所以对于11g和10g

    1.4K30

    【DB笔试面试676】在Oracle中,一个RAC双节点的实例环境...给EMP表加锁:请尝试解决这个故障。

    答:在V$LOCK中,当TYPE列的值为TM锁时,则ID1列的值为DBA_OBJECTS.OBJECT_ID,ID2列的值为0;当TYPE列的值为TX锁时,则ID1列的值为视图V$TRANSACTION...当SESSION是ACTIVE的时候,ALTER SYSTEM KILL SESSION只是将SESSION的状态标识为KILLED,SERVER变为PSEUDO状态,但可能并不会立即释放SESSION...另外,由于变为KILLED状态的会话的PADDR列都变成了另外一个值,因此,通过平常的连接方式就没有办法关联到后台进程,在Oracle 11g下提供了CREATOR_ADDR列,该列可以关联到后台进程,...对于Oracle 10g可以通过特殊的SQL找到后台的进程号。...Oracle 10g可以使用如下的脚本: SELECT INST_ID, SPID, PROGRAM,'KILL -9 '|| SPID KILL9 FROM GV$PROCESS A WHERE

    1.7K10

    ORA-00932: inconsistent datatypes: expected - got CLOB

    查看了这些对象主要表现在之前写法不严格的SQL语法导致了这些package无法成功编译,诸如select查询列中不能使用混淆的列名称等。...---------------------------------------- Oracle Database 10g Release 10.2.0.3.0 - 64bit Production SQL...dba_tab_columns where data_type like '%LOB%' and owner='GOEX_ADMIN'; no rows selected --在错误提示地方,如30行处发现了为...select 查询列使用了wm_concat函数,尝试注视该列,Pckage编译成功,看来是这个函数是罪魁祸首 --关于这个函数在10.2.0.3的表现为返回为VARCHAR2数据类型,如下: SQL...select 查询列使用了to_char函数来进行转换(wm_concat(col_name)) b、或者修改union 为union all --下面给一个示例供大家参考(10.2.0.5环境),仅仅是执行

    2.7K30

    一次SQL_ID和HASH_VALUE转换尝试引发的误区

    ,从10g及以后版本,一般用SQL_ID表明一条SQL。...这样看,HASH_VALUE和SQL_ID都可以表明一条SQL,但由于10g以后,HASH_VALUE的算法有了不同,因此10g的V$SQL中还多了一个OLD_HASH_VALUE字段,为的就是向下兼容...译文: 将SQL_ID解释为一个13个字节的base-32编码数值,然后取其中的低4个字节(base-256的4个字节),作为HASH_VALUE。 SQL_ID是库缓存对象名的另一种HASH值。...从10g开始,算法变更为: 1) Oracle使用MD5对库缓存对象名进行哈希,产生一个128位的哈希值。...“ 再重新叙述上面的转换过程,就是Oracle计算SQL文本的MD5哈希值,取后64位作为SQL_ID,这里使用base-32编码进行转换,其中base-32转码的可见字符是0123456789abcdfghjkmnpqrstuvwxyz

    91110

    比 ORACLE 快 N 倍是不是吹牛?

    如果这些数据总共有 100 列,统计一列时只要读 1% 的数据量,可能也就只有 10G,这样有 10 块硬盘就能在数秒内扫描一遍了,这点配置对于现代服务器集群而言是个小菜,再大 10 倍也不是问题。...Oracle 采用行式存储时,基本上要把这 100 列都要读一遍,而采用列式存储的 AP 数据库,只要读 2 列就可以,这个读取量就会差了几十倍。...除了列存比行存外,还可能发生的是集群比单机,内存比外存等,就是比 Oracle 多用了数倍资源后跑出更快速度。总之,都是胜之不武。...事实上,Oracle 的优化器很强,如果不占列存和资源的便宜,很多专业 AP 数据库还不见得能跑得过 Oracle,特别基于 Hadoop 的的技术。...SPL 论坛上有个国家天文台的例子,数据只有 11 个 50 万行的表,总共不到 10G,但某分布式数据库动用了 100 个 CPU 算了 3.8 小时。

    10901

    循序渐进Oracle - 全面认识Oracle ASH

    从Oracle 10g开始,Oracle引入了ASH新特性,也就是活动Session历史信息记录(Active Session History,ASH)。...这一算法在Oracle 10g的不同版本中,可能不同。 根据这个算法,这里采样系统分配的ASH Buffers为6MB: ? 另外一个生产系统中,这一内存分配为8MB: ?...根据这些参数,可以知道等待发生在哪些对象或资源上,对于不同的等待事件,P1/P2/P3列信息被完整地记录在案,在Oracle 10g之前,我们是无法在事后获得这部分信息的: ?...这在Oracle 10g之前都需要DBA去跟踪、捕获,现在Oracle帮助我们完成了这一切。...接下来列出了数据库未使用绑定变量的SQL示例(Top SQLUsing Literals),看来Oracle将绑定变量的重要性进一步提高了: ?

    1.6K50

    122Architecture 全面解读 - 第一篇 全局解析+ADG+IM模块

    Oracle自发布12.1之后,就一直声称要全面转云,在之后的三四年里,一直杳无音信,大家都在猜测,Oracle又在憋什么大招,果然,2017阳春三月,大招来了!...根据白求恩对中国的Oracle用户使用Oracle数据库现状分析,在10g以前的版本中,有部分用户在使用裸设备作为数据库存储方式,11g以后已经很少见,12c已结没有人使用裸设备了。...在12.2的IM中,支持三种格式的数据存储:关系型数据,虚拟列和JSON格式。并且可以将JSON对象的虚拟列直接存放在IM的虚拟列,使得针对JSON对象的操作非常方便。...1、扫描Vehicles表,并将满足条件的行解压并发送到hash 连接 2、使用vehicles中获取的做连接的列创建hash列表 3、扫描sales表,过滤出符合条件的行 4、解压过滤得到的行,并发送至...使用join group后的连接访问方式如下: 1、扫描vehicles表,将符合条件的以压缩的方式发送至hash 连接 2、对上步中压缩的结果中的不同值创建数组 3、扫描sales表 4、将匹配的行以压缩的方式发至

    1.4K90

    如何保持Oracle数据库SQL性能的稳定性

    比如分区表orders按地区area进行了分区,P1分区只有几千行,而P2分区有200万行数据。...对于Oracle 10g来说,默认的策略能够满足大部分需求,但是默认的收集策略会过多地收集列上的直方图。...由于绑定变量与直方图固有的矛盾,为保持性能稳定,对使用绑定变量的列,不收集列上的直方图;对的确需要收集直方图的列,在SQL中该列上的条件就不要用绑定变量。...SQL Profile是Oracle 10g之后的新功能,此处不再介绍,请参考相应的文档。...除此之外,可以调整一些参数避免潜在的问题,比如将"_btree_bitmap_plans"参数设置为FALSE(这个参数请参考互联网上的文章或Oracle文档)。

    1.6K70
    领券