RMAN备份进度查询
SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK,ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE"FROM V$SESSION_LONGOPSWHERE OPNAME LIKE 'RMAN%'AND OPNAME NOT LIKE '%aggregate%'AND TOTALWORK != 0AND SOFAR <> T...
rman 备份事例
shell脚本:#backup_full.shrman target / cmdfile=/oracle/backup_full.rmanrman脚本全库及数据库归档日至进行全备份:run{allocate channel d1 device type disk;backup database format '/oradata/backup/FULL_%T_%d_%U';backup archivelog all delete inputformat '/oradata/backup/ful...
删除重复记录最高效的方法
因为使用了ROWIDDELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID) FROM EMP X WHERE X.EMP_NO = E.EMP_NO);
安装PSU 基于Linux x86_64的11g RAC 11.2.0.4.0 PSU到11.2.0.4.4
说明:数据库 11.2.0.4 是数据库 11.2 的最终补丁集,Oracle 2014年10月14日发布了11.2.0.4.4的Patch包,Oracle推荐的Patches见【Oracle Recommended Patches -- Oracle Database (文档 ID 756671.1)】的下面部分:11.2.0.4 Current Recommended PatchesPatch Set Updates...
故障排除:Shared Pool优化和Library Cache Latch冲突优化 (文档 ID 1523934.1)
文档内容 用途 提出问题,得到帮助并分享您的心得 排错步骤 什么是shared pool? 专用术语...
library cache: mutex等待事件分析方法及案例
mutex是11g中采用的轻量级锁,替代latch(更轻量,更细粒度)。其中mutex X表示eXclusive模式,如果是mutex s则是共享模式。引起library cache mutex冲突的原因很多。[@more@]一、 Library cache: mutex等待事件产生常见原因:l os资源不足(cpu、内存)l sga设置不合理,shared_pool不足,或动态调整导致hard parsel hot object contentionl hard parsel sql high version count 由于子游标太多,扫描时会形成锁l library cache object失效导致重编译l bug二、 诊断方法1. 首先检查os资源如cpu内存是否存在不足2. 其次,检查是否存在Hot obje
Sql优化(二十二) 自动调优工具:sql tuning advisor和sql profile介绍
Sql优化是有一定难度的工作,需要dba具有扎实的知识和较丰富的经验。在oracle10g以后,引入了一些自动调优技术,包括sql tuning advisor、sql access advisor、ADDM等,不需要了解JOIN的类型、次序,也不需了解优化器,新手也能用这些工具进行一些优化工作。随着自动管理、自动监控技术的发展,今后dba这一职业是否会消失呢?[@more@]本篇介绍如何用sql tuning advisor来创建sql profile对sql进行调优。(一) Sql tuning advisorSql tuning advisor可以在enterprise manager图形界面中调用,也可通过过程包调用。使用方法见后面的例子。以下
Sql优化(二十) 绑定变量用法、适用场合
在Sql优化(六)中,我们讨论过使用绑定变量的重要性:如果不使用绑定变量而使用常量,会导致大量硬解析。由于硬解析的种种危害,tom认为不使用绑定变量往往是影响oracle性能和扩展性的最大问题一、 错误写法和正确...
Sql优化(十九) 调优工具(2)sql_trace
(一) Sql_trace概述上篇介绍的set autotrace是对单句sql逐句进行调优。本节介绍应用跟踪工具。如果运行一段ORACLE程序,想要知道执行了哪些sql,其中哪些sql耗时多,是否走索引等信息,可以用sql_trace来跟踪session...
Sql优化(十八) 调优工具(1)set autotrace和excute plan table
我们介绍一些常用的sql调优工具。sql调优工具有很多,大同小异,有些图形工具很好用。但Dba了解基本工具也很重要,一方面便于理解基本原理,另一方面你总不好意思让客户先安装enterprise manager之类的工具先吧。也...
Sql优化(十七) 常用开发语言中的数组设置
上篇介绍了sqlplus的arraysize和plsql中bulk collect技术对性能的影响,在PLSQL、oci、java、proc等专业开发语言中都有设置数组访问的方法,本篇仅简单介绍,具体请看oracle应用开发文档。一.PLSQL中的bulk binding...
Sql优化(十六) 使用数组技术提升性能
客户端Arraysize的设置实际上可以理解为设置数组的大小来保存sql调用的返回值。设置适当的arraysize有几个好处:1. 减少读data block的次数,也就是consistent gets的次数。假设一个block有n行,如果每次取一行,则...
Sql优化(十四)分布式环境中的优化(2)选择合适的驱动节点(driving site hint)
在分布式环境中,sql访问多个数据库中的表,优化器需要选择一个运算节点,将其他节点的数据传送到运算节点再执行sql。由于本地数据库无法知道远程数据库表的统计信息,因此会采用假设,例如假设远程表的记录数为100...
Sql优化(十三)分布式环境中的优化(1)合理设计数据流
在分布式环境中经常需要通过dblink在系统之间访问数据。通过dblink,编程人员可以访问在一个sql语句中访问多个数据库中的表,就好像在一个数据库中一样。那么分布式环境中编写sql需要注意什么呢?Dblink的访问对数据...
Sql优化(十二)避免数据重复扫描(2) 使用with as子句提高性能
上篇介绍了几种避免对数据重复扫描的sql写法,本篇介绍利用复杂子查询with as来提高sql性能。先看个例子:WITH dept_costs AS (SELECT d.department_name, SUM(e.salary) AS dept_total FROM employees e JOIN depar...
Sql优化(十一) 避免对数据的重复扫描(1)
对数据的读取操作是非常消耗资源的,如何减少对数据的扫描,是提升sql效率的一个重要方面,例如物化视图技术。本篇介绍几种sql写法,分别是CASE expression/DML with returning clause /multitable insert。[@more@]一、 用CASE EXPRESSION将多句查询组合在一起SELECT COUNT (*)FROM employeesWHERE salary < 2000;SELECT COUNT (*)FROM employeesWHERE salary BETWEEN 2000 AND 4000;SELECT COUNT (*)FROM employeesWHERE salary>4000;改写成SELECT COUNT (CASE WHEN salary < 2000 THEN 1 ELSE null END) count1, COUNT (CASE WHE
Sql优化(十) 程序的可扩展性—sequence上的竞争
提高程序可扩展性一定要减少各类资源冲突 某批处理进程中有一个步骤,单进程运行10分钟,10个进程时运行超过3小时,即使使用parallel参数也无法提高速读,是cpu资源不足吗?语句如下: [@more@]create table test_table asselect to_number(substr(bpid,1, 11)) ACCOUNT_NO,bill_ref_no,statement_date,seq_bid_row.nextval BILL_INVOICE_ROW,prd_inst_id SUBSCR_NO,main_devno USER_ID,…from BILL_TABLE; (千万记录级别)通过监控发现系统资源并没有非常紧张,而是产生大量row cache lock的等待事件,进一步发现这个等待事件和se
Sql优化(九) 程序的可扩展性-- 短连接的危害,以及数据库连接(connection)管理
在官方文档《oracle performance tuning guide》中提到Connecting to the database is an expensive operation that is highly unscalable。数据库的连接操作是昂贵的,且难以扩展(支持大量并发)。感觉上一个数据库登录操作是瞬间的事,它有多昂贵呢?简单说,监听器收到远程连接请求后,转给server process;对于每个session数据库都会生成一个server process,要为session分配内存,要进行鉴权、审计…[@more@]另外在一个session中,可以采用一些方法重用游标,例如PLSQL程序,所有static sql都是被cache的,重复调用时不会进行soft par
Sql优化(八):程序的可扩展性----direct insert的副作用
本篇继续介绍不合理设计导致程序可扩展性差的例子。 数据库运行出账程序时,出现enq: TM - contention等待事件,主要原因是多个进程在insert bill_invoice_*时,使用了insert /*+ append*/这一方式,本来想通过append即direct insert方式提升速度,结果产生表级锁。这样开帐进程相互等待,实际上是变成串行的操作了,反而影响了速度。更严重的是,如果是生产系统,还会导致账单表上所有修改操作都无法进行,影响其他重要业务,这个后果就很严重了。[@more@]Direct insert这一用法有其速度快的优点,但也有其缺点,必须注意适用场合
Sql优化(七):程序的可扩展性----insert进程产生的争用
应用设计不合理导致的session之间的互锁(enqueue)是影响程序可扩展性最常见的原因。此外,一些共享资源的争用,也会导致性能下降。本篇介绍两个由并发insert操作导致的等待事件(wait event),以及如何通过优化物理设计来进行改善。普通Insert操作本身产生的是行锁,因此进程相互之间不会锁住(enqueue),但当很多进程insert同一张表时,会有资源上冲突。以下是两个例子:[@more@]1. Buffer busy wait批量进程insert test_table表,当进程多时(超过100个)速度明显下降。在awr报告中看到(等待事件占了93%,cpu占0.95%。也就是说全都在等了,