通过top命令抓取cpu高消耗的sql
top命令在linux环境维护中很实用,虽然功能缺失不够sar那么全面。今天和大家分享一个通过top命令来抓取性能sql的案例。通过top命令抓取了如下的信息。pid是3585的进程对应的sql 之前已经确定是性能问题导致的了,所以先放过,可以看看pid是8879的这个进程,出现的不是很“稳定”。可能通过ash,awr不一定能够及时的抓...
关于oracle里的process总结
感觉需要对process做一个简单的总结。准备了如下的测试场景。session在服务端请求先用sqlplus / as sysdba在服务端登录。SQL> show userUSER is "SYS"得到当前的session为5860.SQL> select sid from v$mystat where rownum<2; SID---------- 5860得到对应的Proces...
数据库shutdown之后无法启动的问题
最近在已有数据库服务器上又新建了4个数据库实例,目前一共有9个数据库实例。环境搭好以后做检查的时候。根据反馈,有个job报如下的错误。Failed to create connection for url=jdbc:oracle:thin:@xxxxx and dbUser=xxxxxxNested Exception/Error: java.sql.SQLRecoverableException: IO Error: Got minus one fr...
关于drop user的cascade选项解惑
在数据库中,有时候需要删除用户,大多数时候都需要使用cascade选项,有些时候却不需要,想知道在这个简单的命令之后数据库倒底在干什么,这时候给一些指定的操作加上trace就跟把那层纱布揭开一样,可以很清楚看到数据库倒底在干些什么。10046,sql_trace等都是一些不错的选择。首先来复现一下这个问题。‘创建一个新用...
关于trigger过滤最大值的问题
今天碰到一个问题,开发有一个比较紧的需要,想问问我数据库这边能不能帮上忙。如果开发那边来做,需要改代码,如果数据库这边能临时支持,代码就可以多做些测试,然后再打补丁了。需求的情况大体是这样:有一个表的字段是number(11,4),意味着数据保持4为精度,总共长度支持11位,最大值位9999999.9999如果超过了那个最大...
关于oracle中session跟踪的总结
数据库中的session在操作中可能会有各种各样的问题,比如一条sql语句执行失败,某一个应用在一些特定的场景下就会有一些性能问题等等,有时候在代码层去做一些debug来说肯定是不实际的,而且也不一定能够迅速的排查问题,对于session的监控显得尤为重要。可以灵活的开启和关闭,在数据库层面,session层面,甚至特定的应用...
session跟踪失效的问题和原因
最近碰到一个奇怪的问题,在生产和其他比较正式的环境中进行sql trace都没问题,但就是测试环境的数据库不知道怎么的, 设置sql_trace,开启诊断事件,dbms_system,dbms_monitor都试了,就是没有trace日志,我都怀疑是不是有些配置给禁用了。查看基本的参数设置,没有发现什么问题。SQL> show parameter statisNAM...
分析函数牛刀小试
今天有个同事问我一个问题,想通过一条sql语句完成一个稍显复杂的查询。结构如下面所示。需要算出tax apply 的值,但是需要汇总charge_amount列和tax_amount列的值 CDL CRDCharge AmountTax AmountTax apply...
物化视图全量刷新的简单测试
关于物化视图的刷新,如果数据的变化比较大采用了全量刷新的时候,会将现有表里的数据都清空然后放入新的数据,整个过程有点类似delete,insert的感觉,但是刷新后表的高水位线还是会保持不变,效果类似于truncate,insert.对于堆表来说,在重要的一些表上做truncate简直就是灾难,如果一个表访问频繁,做了truncate之后,在...
物化视图刷新的问题及分析
最近现场需要搭建一套全新的环境,对于数据字典的管理采用了物化视图,因为数据量不大,采用了全量刷新的方式。因为有好几套环境,有几套环境是通过db link和主节点的表创建的物化视图,这几个节点间的网络情况不好,刷新一个稍微大一些的表或者带有lob字段的表时,速度会很慢,因为有好几套环境,一套一套的等待刷新完得花...
关于update语句的性能测试
今天对表的update进行了性能测试,收获不小。在linux 64位的环境中测试,数据量是按照40万左右的标准进行的测试。SQL> select count(*)from test; COUNT(*)---------- 411426数据库在archive log 模式下。没有考虑索引(没有添加索引),没有考虑执行计划优化的影响,为了保证每次执行的环境基本...
not null constraint和check constriant的问题及分析
oracle的constraint有6类,如下。但是基于列的constraint主要有 type 为C,P,R,U 接触比较多的。今天来和大家讨论check constraint和not null constraint,它们的constraint type都为C,但是实际应用中还是有很大的差别。Type Code Type Description ...
生产系统中EXP-00000的问题及解决
早上刚来的时候,客户的dba就急忙找到我说生产系统exp出问题了。exp的时候报了错误,让我帮着看一下。> exp xxxxx file=tui.dmp log=xxx.log Message 206 notfound; No message file for product=RDBMS, facility=EXP: Release 11.2.0.2.0 -Production on Thu May 8 09:36:55 2014 Copyright (c) 1982,2009, ...
关于SCN的总结测试
scn是数据库对自身变化的一个标记。通过一个序列号能够反映出数据库在那个时间点正在进行的操作,scn没有选用时间来作为基准单位,可能也是因为时间的不确定性,比如当前时间为2014年3月14号晚上八点整,如果修改了系统时间,改为晚上七点钟,name重启数据库以后,那个时间段的操作就都乱套了。这个scn在一般的库上都看似比...
物化视图全量刷新与insert的redo生成量测试
之前的一篇博客中提到,物化视图的全量刷新也是一种高可用性的体现,但是性能如何呢,下面来简单的测试一下。 首先需要创建一个函数,这个函数会计算当前session下的一些指标信息。比如redo的生成量。 CREATE OR REPLACE FUNCTION "GET_STAT_VAL" (p_name in varchar2) return number as l_va...
rac节点无法启动ORA-29702的问题及分析
今天在虚拟机上启动rac,发现有一个节点怎么都起不了。另外一个节点没问题。 SQL> startup nomount ORA-29702: error occurred in Cluster Group Service operation 尝试使用crs_stat查看crs的组件状态,也报错了。 -bash-4.1$ crs_stat -t CRS-0184: Cannot communicate with the CRS daemon. 查看alert日志,发...
goldengate学习-安装篇
goldengate算是数据同步的利器,可以在不同的库,平台间进行数据的同步,当然还是有一些bug的,不过还是优点大过缺点。 算是尝尝鲜,从官网下载了一个版本12的,可以支持11g,12c。安装的过程我开始以为会很繁琐。结果安装的过程很简单,不过配置和管理要费一些功夫的。后续再说。 下载安装包可以从官网上得到,大概300多...
使用hint来调优sql语句
生产发现有一个sql语句运行耗时达5000多秒。抓出来sql_id一看,sql倒不是一个很长的语句。结构也很简单。如下。select company_code, sap_company_id from data_company_code where company_code not in (SELECT dist inct l9_company_code F...
使用awk来解析dump文件
dump文件是平时工作中经常碰见的,有时候得到一个dump,但是没有提供一些更多的信息,导入的时候就很可能会有问题。如果某个用户默认表空间是user,但是dump中的表所属的表空间是datas01,则导入的时候会自动转换表空间。但是如果表中存在lob字段且dump的表空间和目标环境的表空间不一致,就有在导入dump的时候,经典的0095...
奇怪的登录问题及解决
最近新建了好几个测试库,有一个库在过了一段时间之后,出现了很奇怪的问题,有时候能够登录,有时候又登不上。通过sqlplus登录,报错如下:>sqlplus n1/n1@testhost1SQL*Plus: Release 11.2.0.2.0 Production on Wed May 14 15:04:35 2014Copyright (c) 1982, 2010, Oracle. All rights reserved.ERROR:ORA-1...