查询优化器的参数设置
optimizer_mode first_rows_n, all_rows设置,设置成all_rows走全表扫描,根据实际情况设置此设置一般在hint里,例如 select /*ALL_ROWS*/ * from scott.emp;db_file_multiblock_read_count 多块读取,一次读多少块,移动生产库一般设置为16。optimizer_index_cost_adj 用于通过索引扫描改变...
收集统计信息语句详解
收集统计信息exec DBMS_STATS.GATHER_TABLE_STATS(ownname=>'DBACCADM',tabname=>'CS_CUSTPREOPEN_INFO_CHG',estimate_percent=>10,method_opt=>'for all columns size 1',no_invalidate=>false,cascade=>true,degree => 10);estimate_percent 指明是否采样收集统计信息,100等于NULL,表示不使用采样,移动...
使用oradebug dump processstate 来诊断enq: TX - row lock contention
朋友的应用程序在年度结转时调用存储过程时hang住了.经过调试存储过程发现执行到下面的语句时被hang住.UPDATE t_config_info SET last_do_time = systimestamp WHERE config_id = config_record.config_id; IF SQL%ROWCOUNT = 0 THEN ...
dbms_xplan之display_cursor函数的使用
<span style="color:#555555;font-family:'microsoft yahei';font-size:15px;line-height:35px;white-space:normal;background-color:#FFFFFF;"> DBMS_XPLAN包中display_cursor函数不同于display函数,display_cursor用于显示SQL语句的真实的执行计划,在大多数情况下,显示真实</span><br s...
获取SQL执行计划的方式:
获取SQL执行计划的方式:<br /> EXPLAIN PLAN <br /> 估算 <br /> 忽略绑定变量<br /> 非执行<br />SQL_TRACE <br />真实计划,需要用TKPROF工具解析<br />可以获得绑定变量值<br />EVENT 10053<br />真实计划<br />研究执行计划产生的原因<br />AUTOTRACE <br />内部...
ORACLE查看SQL的执行次数/频率
ORACLE查看SQL的执行次数/频率 在ORACLE数据库应用调优中,一个SQL的执行次数/频率也是常常需要关注的,因为某个SQL执行太频繁,要么是由于应用设计有缺陷,需要在业务逻辑上做出优化处理,要么是业务特殊性所导致。如果执行频繁的SQL,往往容易遭遇一些并发性的问题。那么如何查看ORACLE数据库某个...
ASH 的学习
最近需要监控数据库中的sql 资源消耗相关信息。第一反应就是查看awr报告,但是awr报告的监控时间最短为10分钟,而我们的监控是准实时的,5分钟需要监控一次,于是就想到了查看ash相关信息。简单介绍一下ash1. 10g之前用户的连接将产生会话,当前会话记录保存在v$session中;处于等待...
【DATAGUARD 学习】学习DATAGUARD 过程中遇到的问题
错误1:ORA-16057: DGID from server not in Data Guard configuration原因:主库没有设置参数log_archive_config解决方法*.log_archive_config='dg_config=(orcl,testdg)'alter system set log_archive_config='dg_co...
Oracle闪回查询恢复delete删除数据
Flashback query(闪回查询)原理 Oracle根据undo信息,利用undo数据,类似一致性读取方法,可以把表置于一个删除前的时间点(或SCN),从而将数据找回。Flashback query(闪回查询)前提:SQL> show parameter undo;NAME ...
实战不停机搭建ORACLE DataGuard
一、基础信息操作系统:Red Hat Enterprise Linux Server release 6.3 (Santiago)数据库:11.2.0.3 配置信息:说明主机名IP地址db_namesidDB_UNIQUE_NAMEService_name主库dg1192.168.47.131orclorclorcldg1orcldg1备库dg2192.168.47.132orclorclorcldg2orcldg2 二、准备工作1、在主库和备库的host文件...
ORA-00845: MEMORY_TARGET not supported on this system
今天晚上新装一台Oracle 11g的数据库,打算将SGA设大一点,知道 11g 中有一个新特新 MEMORY_TARGET,于是尝一下鲜,谁知报了个 ORA-00845,报错比较容易迷惑人,不借助Google真得想半天:12...
监控Data Guard实时同步
监控 real-time apply 实时同步的dataguard 是否正常同步:select to_char(SYSDATE,'yyyymmdd hh24:mi:ss') CTIME,NAME,VALUE,DATUM_TIME from V$DATAGUARD_STATS WHERE NAME LIKE '%lag';其中如果apply lag对应的value大于0,那么就需要注意检查是否同步正常。如果相差时间非常多,value值...
手工生成AWR报告方法记录
AWR(Automatic Workload Repository)报告是我们进行日常数据库性能评定、问题SQL发现的重要手段。熟练掌握AWR报告,是做好开发、运维DBA工作的重要基本功。 AWR报告的原理是基于Oracle数据库的定时...
move表操作流程
今天收到开发人员说数据库报错, ORA-01502: index 'LRWLPOS.SYS_C0020279' or partition of such index is in unusable state 查看为索引为不可用状态,删除数据删除不了,怀疑为昨天move表导致。重建失效索引后,将业务重跑OK,今天查看了一...
DG出问题,重搭DG
备库出了问题重搭DG,试了RMAN恢复几次都不行,后面关闭主机,直接把数据文件copy过去,主机生成好standby控制文件,copy到备库,备库open,然后执行alter database recover managed standby database using current logfile disconnect from session;即可,试验了一下dg正常,但是select max(sequence#) from v$archived_...
数据库无法update
今天查询数据库速度很快,更改一条数据,半天没反应,反复尝试几次发现只是无法做update操作,顿时在想是不是表被锁住了,于是查询一下如何查询表是否被锁,以及如何解锁--锁表查询SQLSELECT object_name, machine, s.sid, s.serial# FROM gv$locked_object l, dba_objects o, gv$session s WHERE l.object_id...
ORA-03113问题解决
今天关闭服务器的时候出现莫名原因导致数据库无法shutdown,只好利用强制命令shutdown abort;但oracle数据库无法打开了,总是报“ORA-03113: 通信通道的文件结尾”错误,分析可能由于数据库立即关闭,导致文件状态可能不一致,因为正常关闭数据库会同步校验各文件,使得重新启动的时候文件时间点一致并且不用进行崩溃恢...
rownum伪列的应用
前几天写了一个sql给运维做预警使用,结果运维人员说预警的不是很准确,检查了一下sql,发现其中有一处地方使用了伪列,但是伪列的顺序和查询的顺序不一致导致的,在查询该表之前,先给该表做一个order by 排序,再使用rownum就OK了,eg:select rownum from (select * from table order by x),此时的rownum就OK了。...
rman备份学习
rman备份老是没备份成功,查看log日志发现控制文件中的归档日志已经删除(RMAN-06059错误),添加一下change archivelog all crosscheck; 即可OK。rman target / msglog=/home/oracle/rmanbackup/rmanbackup.log <<EOFrun{allocate channel c1 device type disk;allocate channel c2 device type disk;backup as compre...
imp和exp的导入导出
exp 用户名/密码 file=路径/文件名 owner=所有者用户 imp 用户名/密码 log=日志名称 file=路径/文件名 fromuser=用户名称 touser=用户名称 tables=表名create user xxx identified by xxx default tablespace xxx;grant select,update,insert to xxx; or grant dba to xxx;...