从设计模式的设计原则感悟生活
设计模式中的很多思想还是很有意思的,刚毕业的时候接触设计模式感觉有点高深,坐而论道,感觉还是有些虚,平时做的小练习还能自己捣鼓一番,自己使用一下设计模式,然后大刀阔斧的改动代码,随心所欲,写完以后还能热乎劲上来高兴几天,时间长了就忘了很多的东西,只是感觉设计模式就是抽象,自己感觉也抽象。如果死磕着问...
数据库环境中的shell脚本应用
维护多个数据库,又没有EM,在各个数据库之间来回切换很是麻烦,今天参照一些资料写了如下的shell脚本。主要来讲dba的账户密码,ORACLE_SID都以环境变量的形式注入,然后在当前session中可以灵活的切...
用shell帮助解决ORA问题
今天碰到一个设计的严重问题,由于使用了外部文件来和sqlplus交互sql大体结构如下select xxxxx from xxxxx where table_name in ( "解析外部文件“)在测试环境中没有什么问题,当某个用户表比较多的时候,就...
sed+awk模拟简单sql查询
经常需要用sqlplus去查询一些数据字典类型的数据,这些数据量不大,而且需要环境之间都是一样的,所以就想使用离线查询的方式,把那些数据以平面文件的形式存放,然后通过系统级的操作来输出。以下使用 sed 和aw...
通过shell脚本监控oracle session
最近数据库碰到了连接紧张的问题,想通过一个脚本对数据库的session情况一目了然。以下是自己写的脚本。实现的效果如下。对session的总体情况,那些program主要在占用,每个用户所拥有的session(active,inactive,killed,sniped...)都能够一目了然。STATUS CNT-------- ----------...
shell动态脚本和pl/sql动态脚本的比较
实现的目标如下,对于同时含有table1--5的db schema才需要执行指定的脚本,脚本内容都是些dml操作。目前的情况只能够得到db schema的列表,对于里面是否还有5个表,还没有细粒度的管理。脚本需要从db schema的列表中筛选出符合的 db schema,然后执行脚本内容。
通过shell脚本生成数据统计信息的报表
对于统计信息的收集,不同的环境中使用的策略也会有很大的不同,有的按照一定的时间频率来收集,有的比较稳定的系统根据数据的增长频率来收集,用户比较稳定的系统,甚至都不再收集统计信息。以下是使用shell生成的统计信息报表效果,可以在备份库中进行这些信息的收集,可以看到哪些表的查询耗费的时间较多,当前数据条数...
利用shell脚本生成动态sql
在一些分布式环境中,可能涉及到的数据库有很多,相关的数据库用户也不少,有些看似简单的变更可能需要在不同的库,不同的用户间要进行复杂的操作。现在我们有3套环境,一套是测试环境test,一套是准生产环境xprd,一套是生产环境prod,比如在prod上有5个库一共20个用户,某一个变更可能在这20个用户里面要进行一些的操作...
巧用shell生成数据库检查脚本
在生产环境中需要部署大量的数据变更。对于新增的表,需要注意权限和同义词等。但是手动去检查这些变更是否生效就很麻烦。而且也不易维护,比如写好了一个脚本,可能在过一段时间,有一些紧急变更,需要把这些变更加进来,可能就忘了更新检查脚本。考虑到检查的性能,不想查询数据,只需要保证能够正常访问表即可。所以写...
使用shell脚本查看数据库负载情况
平时在查看数据库的问题时,会有种迷茫的感觉,如果没有任何人反馈问题,基本上没有主动查找问题的方向,awr,ash都是在得知问题发生的时间段或者一些时间戳来从历史记录中查找相关的信息,个人整理了如下的脚本,能够显示当天的时间段内数据库的负载信息,能够很好掌握数据库的忙闲情况。 来看一个简单的例子,比如我要查...
通过shell脚本监控日志切换频率
在数据库遇到性能问题的时候,可能从io,cpu等角度能够下手找到性能瓶颈,日志的切换也是影响性能的一个因素,如果日志切换台频繁,等待时间就会在日志相关的事件上,从数据库的角度来说,肯定是io的瓶颈。可以通过如下的shell脚本来得到一个简单的报告。脚本如下:sqlplus -s $DB_CONN_STR@$SH_DB_SID<<EOFset line...
巧用shell脚本分析数据库用户
在数据库维护中,可能对于一个陌生的schema,需要了解它的一些情况,可以使用如下的脚本来很快得到一个报告,里面包含了详尽的信息。用户占用的空间,权限,角色和基本配置信息。NAME=`echo $1|cut -d. -f1`if [ -z "$NAME" ] then echo -e "User must be provided: \c"; read NAMEfisqlplus -s $DB_C...
巧用shell脚本生成快捷脚本
在升级的过程中,可能需要准备一些额外的脚本,比如说做数据迁移的时候为了考虑性能,需要做如下的额外工作:1.将部分表置为nologging2.将部分index置为nologging3.将部分foreign key constraint置为disable4.将部分trigger 置为disable在完成数据升级后,再置为logging,enable状态。但是在准备脚本的过程中,总是为...
使用shell进行日志分析
最近做数据批量加载的时候,是通过pl/sql嵌在shell脚本里执行的。脚本运行后生成的日志类似如下的格式Get Dump file for APP_TMP.TESTRESS_NAME_LINK...Elapsed: 00:00:00.64.DB details is accessible from source schema ....DB details is accessible from target schema ....Directory ext_datapump_dir...
使用动态变量进行动态数据比较
现在有一个需求,输入一串数,输入的数个数还不固定,需要得到最小的那个数和对应的下标如果说传入的数的个数固定,直接用for循环来得到最值 其实也不难。使用编程语言java,c等都可以实现。使用动态变量可以很方便的初始化多个变量,对传入的数进行统计和比较。动态变量的初始化有如下几种形式:param_no=$##初...
使用shell脚本生成只读权限的sql脚本
目前做数据迁移,有8套不同的环境,为了保护环境,每个环境中的表,视图等开发都不能修改,只能通过连接用户去查询。每个环境中可能含有表,索引,序列,存储过程,函数等,所以一个一个写是不现实的,写了下面的动态脚本来自动生成相应的权限,然后创建对应的同义词。脚本会生成两个sql脚本,一个是owner用户赋予权限使...
通过shell脚本定位性能sql和生成报告
oracle的sql monitor是一个很有用的工具集。但是通过sql命令和反复去调用dbms_tune来传入参数等等操作感觉挺费事的。可以通过如下的脚本来定位sql monitor中的性能sql,发现一些潜在的性能问题。这个脚本可以定位正在sql monitor监控范围内的sql语句。MONITOR_OWNER=`sqlplus -silent $DB_CONN_STR@$SH_DB_SID <<ENDse...
linux过滤空文件的命令总结
在linux中有经常做文件的操作,今天有个同事在生产环境统计数据,发现有很多日志文件都是空的,文件太多了,他想查看一下有哪些文件不是空文件。而且还不想使用脚本,就想用一个命令来搞定,确实够懒的一个人。简单模拟了下。我只想查看e.lst 因为它的大小不是空的。DUM1102 /oravl01/oracle> ll *.lst-rw-r--r-- &nb...
使用sed做特殊的行列转换
append data from MIG_TEST.MO1_MEMO_EXT_2 to MIG_TEST.MO1_MEMO1936470 rows created.Elapsed: 00:01:01.53Commit complete.Elapsed: 00:00:00.03append data from MIG_TEST.MO1_MEMO_EXT_3 to MIG_TEST.MO1_MEMO873897 rows created.Elapsed: 00:00:22.67Commit complete.Elapsed: 00:00:00.02append data f...
使用shell脚本巧妙统计文件
在数据迁移的过程中,会产生大量的dump文件,需要对dump的文件情况进行一个简单清晰的管理,比如目录下的文件特别多,而且某些表比较大,对应的dump文件比较多,就想得到一个很简洁的报告,能够统计出来每个表有多少个dump文件。 比如有1000个dump文件,都是基于 表TEST1,TEST2,TEST3,TEST4的。那么就想得到一个简单的统计...