我的项目现场实践表明,linux的默认内存管理方式是存在问题的,不够智能,多片小的内存页管理带来CPU的高负荷,忙时SYS占用竟然达到了20%甚至30%以上,要知道这个管理开销完全是操作系统层面的,与应用无关,手动改为大内存页管理后,减少了忙时20%以上的CPU开销。这点如果足够智能,完全不需人工介入。也就是说,如果实时观察系统负荷时,发现SYS%这个CPU占用过高,一个可能的原因就是内存管理机制带来的问题,需要手动配置调整大内存页。 实际上,这一点会彻底影响oracle数据库的性能,为此oracle官方也有相应的…

2017年11月30日 1条评论 9640点热度 0人点赞 liking 阅读全文

当数据库出现严重的性能问题或挂起hang住的时候,这时候我们需要去找出问题的根源,需要查明相关进程在等什么,谁是资源持有者,即谁阻塞了别人?此时收集systemstate dump非常有用,专业的oracle支持也是需要收集这个信息来分析问题。 但往往此时,数据库服务端sqlplus连接可能会很慢,甚至无法连接,从10g开始,oracle提供了一个参数-prelim,可以在sqlplus无法连接的情况下,连接数据库。 There are two ways to connect to sqlplus using a …

2017年11月28日 0条评论 912点热度 0人点赞 liking 阅读全文

一个重要的生产系统近期出现负载严重不均衡的情况,在业务忙时,一个节点CPU负载99%,而同时另一个节点CPU却很空闲。

2017年11月2日 1条评论 10780点热度 0人点赞 liking 阅读全文

■■■Flashback Table ■■语法 ALTER TABLE table_name ENABLE ROW MOVEMENT; FLASHBACK TABLE table_name TO TIMESTAMP TO_TIMESTAMP('2010-06-30 22:43:07', 'yyyy-mm-dd hh24:mi:ss'); FLASKBACK TABLE table_name TO TIMESTAMP (SYSTIMESTAMP – INTERVAL '11' MINUTE); FLASHBACK T…

2017年8月26日 0条评论 809点热度 0人点赞 liking 阅读全文

脚本设计思路: 通过各种检查命令,将指令的执行结果与设置的告警上限对比后,将超限的指标放入一个日志文件中,然后读取该文件并调用短信接口通过短信将文件中内容发给相应的电话号码 一、检查数据库实例open状态,表空间使用率,以及会话数、process数的oracle监控脚本 #!/bin/sh #—————————————————————- #【功能】 数据库检查脚本 #【参数】 #【被调用】 crontab #【调用】 #【位置】 ${HOME}chk_sys/chk_tdb.sh #【修改】Modify by wa…

2017年6月18日 0条评论 917点热度 0人点赞 liking 阅读全文

■■ Oracle AWR简介 AWR全称Automatic Workload Repository,自动负载信息库,是Oracle 10g版本后推出的一种性能收集和分析工具,提供了一个时间段内整个系统的报表数据。通过AWR报告,可以分析指定的时间段内数据库系统的性能。 ■■ 自制AWR报告生成工具 数据库自带的报告生成工具有一些依赖条件,使用比较繁琐,而且报告名字不易于区分、分发。 所以本人基于系统自带的awrrpti.sql脚本,写了这个简单、易用的AWR报告生成工具,现发布于此,也同时发布在GitHub。注:…

2017年5月11日 0条评论 735点热度 0人点赞 liking 阅读全文

晚间迁移数据库后,第二天下午来调优,发现CPU占用达到惊人的99%,如下: 分析15:00-16:00期间AWR报告,发现SQL硬解析严重,如下: 每秒硬解析达到69.9次,library hit%太低86%,如下: 此时的共享池达到了13G,如下: 可见有66次自动增大调整共享池的操作,由大量的SQL解析占用内存造成。 显然,这是因为应用没有合理使用绑定变量导致。 鉴于几年累积的大量应用难以短时间优化、修改SQL语句,因此决定修改数据库默认参数cursor_sharing,由EXACT修改为FORCE: alte…

2017年3月3日 0条评论 490点热度 0人点赞 liking 阅读全文

本次数据库迁移步骤 ◆停止所有的外部业务 ◆停止数据库监听 ◆使用expdp导出所有的数据【可选】 ◆停止数据库 ◆测试是否可正常启动【可选】 ◆停止数据库后,拷贝文件系统 为了保证文件系统的属性不被改变,一种方法是做tar拷贝再解压,一种方法是root用户cp -pr,采用后者。 ◆hnmetar用户操作 pwd /cswgdata/hnmetar tar cvf oracle.tar admin flash_recovery_area product cp oracle.tar /cswgdata1/hnmet…

2016年8月23日 0条评论 8261点热度 0人点赞 liking 阅读全文

Part III. scn(系统改变号)信息与恢复 control中有三种SCN分别为,system SCN、datafile SCN、last SCN,数据文件头中有一种SCN start SCN system scn从视图v$database中获得,对应checkpoint_change#字段,datafile scn、last scn分别对应视图v$datafile中的checkpoint_change#,last_change#,而 start scn则从v$datafile_header中checkpoi…

2016年8月21日 0条评论 9454点热度 0人点赞 liking 阅读全文

Oracle中的SCN(system change number)和我们的北京时间的意义是相同的,SCN是Oracle中的时间号。 为什么Oracle不用时间来界定呢? 我在北京时间8:00的时候执行一条DML语句,然后修改机器上的时间为7:00,再执行一条DML语句。如果用机器上的时间区分的话,那Oracle根本区分不出来这两条DML语句的执行顺序——而这一点对于Oracle是很重要的。所以它采用自己产生的SCN来区分所有操作的先后顺序。 SCN设计的值很大,所以不用担心达到最大值后怎么办。 可以查看系统当前的S…

2016年8月21日 0条评论 9841点热度 0人点赞 liking 阅读全文
189101112