巧用shell生成数据库检查脚本
在生产环境中需要部署大量的数据变更。对于新增的表,需要注意权限和同义词等。但是手动去检查这些变更是否生效就很麻烦。而且也不易维护,比如写好了一个脚本,可能在过一段时间,有一些紧急变更,需要把这些变更加进来,可能就忘了更新检查脚本。考虑到检查的性能,不想查询数据,只需要保证能够正常访问表即可。所以写...
奇怪的登录问题及解决
最近新建了好几个测试库,有一个库在过了一段时间之后,出现了很奇怪的问题,有时候能够登录,有时候又登不上。通过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...
使用awk来解析dump文件
dump文件是平时工作中经常碰见的,有时候得到一个dump,但是没有提供一些更多的信息,导入的时候就很可能会有问题。如果某个用户默认表空间是user,但是dump中的表所属的表空间是datas01,则导入的时候会自动转换表空间。但是如果表中存在lob字段且dump的表空间和目标环境的表空间不一致,就有在导入dump的时候,经典的0095...
使用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...
goldengate学习-安装篇
goldengate算是数据同步的利器,可以在不同的库,平台间进行数据的同步,当然还是有一些bug的,不过还是优点大过缺点。 算是尝尝鲜,从官网下载了一个版本12的,可以支持11g,12c。安装的过程我开始以为会很繁琐。结果安装的过程很简单,不过配置和管理要费一些功夫的。后续再说。 下载安装包可以从官网上得到,大概300多...
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日志,发...
泰国之旅随感
今天无意中看到自己之前和同事分享的泰国之行的感想,在此和大家继续分享。泰国之旅已经是2012年末的事情了。离现在有些日子了,不过重在分享旅程的感悟,如果有对于旅程的攻略,可以发私信给我。旅程的大体时间安排如下:从北京到曼谷,然后从曼谷到普吉岛。然后从普吉岛飞回曼谷,从曼谷再飞回北京。-->In bangkok ...
物化视图全量刷新与insert的redo生成量测试
之前的一篇博客中提到,物化视图的全量刷新也是一种高可用性的体现,但是性能如何呢,下面来简单的测试一下。 首先需要创建一个函数,这个函数会计算当前session下的一些指标信息。比如redo的生成量。 CREATE OR REPLACE FUNCTION "GET_STAT_VAL" (p_name in varchar2) return number as l_va...
关于SCN的总结测试
scn是数据库对自身变化的一个标记。通过一个序列号能够反映出数据库在那个时间点正在进行的操作,scn没有选用时间来作为基准单位,可能也是因为时间的不确定性,比如当前时间为2014年3月14号晚上八点整,如果修改了系统时间,改为晚上七点钟,name重启数据库以后,那个时间段的操作就都乱套了。这个scn在一般的库上都看似比...
利用shell脚本生成动态sql
在一些分布式环境中,可能涉及到的数据库有很多,相关的数据库用户也不少,有些看似简单的变更可能需要在不同的库,不同的用户间要进行复杂的操作。现在我们有3套环境,一套是测试环境test,一套是准生产环境xprd,一套是生产环境prod,比如在prod上有5个库一共20个用户,某一个变更可能在这20个用户里面要进行一些的操作...
生产系统中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, ...
通过shell脚本生成数据统计信息的报表
对于统计信息的收集,不同的环境中使用的策略也会有很大的不同,有的按照一定的时间频率来收集,有的比较稳定的系统根据数据的增长频率来收集,用户比较稳定的系统,甚至都不再收集统计信息。以下是使用shell生成的统计信息报表效果,可以在备份库中进行这些信息的收集,可以看到哪些表的查询耗费的时间较多,当前数据条数...
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 ...
关于update语句的性能测试
今天对表的update进行了性能测试,收获不小。在linux 64位的环境中测试,数据量是按照40万左右的标准进行的测试。SQL> select count(*)from test; COUNT(*)---------- 411426数据库在archive log 模式下。没有考虑索引(没有添加索引),没有考虑执行计划优化的影响,为了保证每次执行的环境基本...
物化视图刷新的问题及分析
最近现场需要搭建一套全新的环境,对于数据字典的管理采用了物化视图,因为数据量不大,采用了全量刷新的方式。因为有好几套环境,有几套环境是通过db link和主节点的表创建的物化视图,这几个节点间的网络情况不好,刷新一个稍微大一些的表或者带有lob字段的表时,速度会很慢,因为有好几套环境,一套一套的等待刷新完得花...
物化视图全量刷新的简单测试
关于物化视图的刷新,如果数据的变化比较大采用了全量刷新的时候,会将现有表里的数据都清空然后放入新的数据,整个过程有点类似delete,insert的感觉,但是刷新后表的高水位线还是会保持不变,效果类似于truncate,insert.对于堆表来说,在重要的一些表上做truncate简直就是灾难,如果一个表访问频繁,做了truncate之后,在...
分析函数牛刀小试
今天有个同事问我一个问题,想通过一条sql语句完成一个稍显复杂的查询。结构如下面所示。需要算出tax apply 的值,但是需要汇总charge_amount列和tax_amount列的值 CDL CRDCharge AmountTax AmountTax apply...
session跟踪失效的问题和原因
最近碰到一个奇怪的问题,在生产和其他比较正式的环境中进行sql trace都没问题,但就是测试环境的数据库不知道怎么的, 设置sql_trace,开启诊断事件,dbms_system,dbms_monitor都试了,就是没有trace日志,我都怀疑是不是有些配置给禁用了。查看基本的参数设置,没有发现什么问题。SQL> show parameter statisNAM...
关于oracle中session跟踪的总结
数据库中的session在操作中可能会有各种各样的问题,比如一条sql语句执行失败,某一个应用在一些特定的场景下就会有一些性能问题等等,有时候在代码层去做一些debug来说肯定是不实际的,而且也不一定能够迅速的排查问题,对于session的监控显得尤为重要。可以灵活的开启和关闭,在数据库层面,session层面,甚至特定的应用...
关于trigger过滤最大值的问题
今天碰到一个问题,开发有一个比较紧的需要,想问问我数据库这边能不能帮上忙。如果开发那边来做,需要改代码,如果数据库这边能临时支持,代码就可以多做些测试,然后再打补丁了。需求的情况大体是这样:有一个表的字段是number(11,4),意味着数据保持4为精度,总共长度支持11位,最大值位9999999.9999如果超过了那个最大...