Oracle 系统性能变慢常规处理诊断及定位处理方法
Oracle故障和性能诊断流程V0.1_20120116
1编写目的介绍在现场出现Oracle故障和性能问题时的诊断流程,让项目支撑人员在解决Oracle问题时有据可依。
2适用场景当现场出现以下问题时,可依照本文档进行处理:1)Oracle异常关闭、重启、Hang住等故障。
2)PM相关程序出现性能急剧下降的情况。
3)PM相关程序出现Hang住等故障。
3分析流程3.1信息收集及初步诊断本节介绍以下知识点:1)出现问题时,需要收集什么样的信息?2)这些信息的作用是什么?3)如何进行收集?4)如何对这些信息进行分析,从而得到初步诊断结论?初步诊断结论是指引起问题的原因,但不是根因。
例如,初步诊断结论是内存问题、IO问题、等待事件的问题、执行计划的问题、统计信息的问题。
3.1.1PM运行情况(黄)反映PM运行情况的数据主要包括运行日志以及存储运行数据的表(例如COUNTERLOADMESSAGE、SUM_SUMMARYTASKQUEUE表等)。
从以上内容中,可以分析出PM 在运行过程中是否有错误发生,以及是否存在性能问题。
以下内容均以C03版本为准,C02和V4.5可能有变化,需结合实际情况作相应调整。
1)如何收集:a)运行日志:加载环境变量后,使用cd $PM4H_LOG进入日志目录2)如何分析:a)运行日志:i.可以使用cat <logfilename>| grep ERROR的方式,搜索指定日志中是否存在错误信息。
<logfilename>可以是具体的日志文件名,也可以是使用了通配符的表达式。
例如搜索所有的汇总日志中是否存在错误,可使用如下命令:cat Summarize* | grep ERRORii.如果某个日志文件中存在ERROR信息,可以使用vi命令编辑该文件,依次输入/ERROR和回车,搜索ERROR信息,查看详细的错误信息。
(/是vi编辑器中的搜索命令)iii.对于性能分析,可以分为两种情况,一种是程序出现Hang住的情况,表现为日志长时间无内容输出;另一种是程序没有Hang住,但在单位周期内无法处理完一周期的性能数据。
oracle常见故障处理手册
oracle常见故障处理手册一、数据库启动与关闭故障1.数据库启动失败原因:可能是由于Oracle数据库配置不正确、系统环境变量设置不正确、初始化参数设置不正确等原因导致。
解决方法:检查数据库日志文件,查看错误信息,根据错误信息进行相应的修复。
2.数据库关闭失败原因:可能是由于数据库事务未完成、数据库锁未释放等原因导致。
解决方法:检查数据库日志文件,查看错误信息,根据错误信息进行相应的修复。
二、连接故障1.连接不成功原因:可能是由于网络连接问题、数据库用户名或密码错误、数据库实例名错误等原因导致。
解决方法:检查网络连接是否正常,检查数据库用户名和密码是否正确,检查数据库实例名是否正确。
2.连接断开原因:可能是由于网络不稳定、数据库服务器异常等原因导致。
解决方法:检查网络连接是否正常,检查数据库服务器是否正常。
三、数据恢复故障1.数据丢失原因:可能是由于数据库损坏、磁盘故障等原因导致。
解决方法:根据数据丢失的原因,选择相应的恢复方法,如使用备份恢复数据或使用日志文件恢复数据。
2.数据不一致原因:可能是由于数据修改不一致、数据复制不一致等原因导致。
解决方法:检查数据修改和复制的日志文件,找到不一致的数据并修复。
四、性能优化故障1.性能下降原因:可能是由于CPU占用过高、内存占用过高、磁盘IO过大等原因导致。
解决方法:优化数据库配置参数,如增加内存、优化磁盘IO等。
2.查询速度慢原因:可能是由于查询语句不优化、表没有建立索引等原因导致。
解决方法:优化查询语句,为表建立索引等。
五、存储管理故障1.存储空间不足原因:可能是由于磁盘空间不足、表空间不足等原因导致。
解决方法:清理磁盘空间,增加磁盘空间,调整表空间大小等。
2.数据文件丢失或损坏原因:可能是由于磁盘故障、人为误删除或修改等原因导致。
解决方法:使用备份恢复数据文件或修复损坏的数据文件。
六、网络连接故障1.网络连接中断原因:可能是由于网络设备故障、网络连接线故障等原因导致。
ORACLE 数据库故障解决方案
ORACLE 数据库故障解决方案一、引言在使用ORACLE数据库的过程中,难免会遇到各种故障,这些故障可能导致数据库无法正常运行,影响业务的连续性和数据的完整性。
因此,本文将介绍一些常见的ORACLE数据库故障,并提供相应的解决方案,以帮助管理员和开发人员快速恢复数据库运行。
二、故障类型及解决方案1. 数据库无法启动故障现象:尝试启动数据库时,遇到错误提示,无法成功启动。
解决方案:1) 检查数据库实例是否正常关闭,如果没有正常关闭,使用SHUTDOWN命令关闭数据库实例。
2) 检查数据库参数文件是否正确配置,确保参数文件路径正确,参数设置正确。
3) 检查数据库控制文件是否损坏,如果损坏,可以尝试恢复备份的控制文件。
4) 检查数据库日志文件是否损坏,如果损坏,可以尝试恢复备份的日志文件。
5) 检查数据库文件是否损坏,如果损坏,可以尝试恢复备份的数据文件。
2. 数据库性能下降故障现象:数据库查询响应时间延长,业务处理变慢。
解决方案:1) 分析数据库性能指标,如CPU利用率、内存利用率、磁盘IO等,找出性能瓶颈。
2) 优化SQL语句,如添加索引、重写查询语句等,提高查询效率。
3) 调整数据库参数,如增加SGA大小、调整PGA大小等,优化内存使用。
4) 分析数据库锁等待情况,解决锁冲突问题,提高并发处理能力。
5) 定期收集数据库统计信息,重新生成优化器统计信息,提高查询计划的准确性。
3. 数据库备份恢复故障现象:数据库数据丢失或损坏,需要进行数据恢复。
解决方案:1) 检查数据库备份情况,如果有可用的备份,可以尝试进行恢复操作。
2) 使用RMAN工具进行数据库备份和恢复操作,可以选择完全恢复或部分恢复。
3) 如果没有备份,可以尝试使用闪回技术进行数据恢复,还原到历史状态。
4) 如果数据文件损坏,可以尝试使用数据文件的备份进行恢复,或者使用RMAN进行数据文件的恢复。
5) 恢复完成后,进行数据一致性检查,确保数据库的完整性。
基于Oracle数据库系统性能调整与优化研究
01 引言
03 调整策略
目录
02 准备工作 04 优化方法
05 实验验证
07 参考内容
目录
06 总结与展望
基于Oracle数据库系统性能调整 与优化的研究
引言
随着企业数据量的快速增长,Oracle数据库系统在企业中的应用越来越广泛。 然而,在系统运行过程中,难免会出现性能下降的情况。因此,对Oracle数 据库系统进行性能调整与优化具有重要意义。它不仅可以提高系统响应速度, 还可以提高数据查询效率,为企业减少成本,增强竞争力。
引言
ORACLE数据库是一种广泛使用的关系型数据库管理系统,它提供了强大的数 据存储、查询和管理功能。随着企业数据量的不断增加,数据库的性能问题变 得越来越突出。性能优化成为了提高ORACLE数据库应用效率和降低企业运营 成本的关键环节。
问题陈述
在实际情况中,ORACLE数据库性能问题主要表现在以下几个方面:
总结
本次演示介绍了如何调整与优化ORACLE数据库性能,包括性能评估、调整策 略和具体优化方法。通过合理的性能调整与优化,可以提高ORACLE数据库的 响应速度和稳定性,以满足不断增长的业务需求。性能调整与优化是一个持续 的过程,需要根据实际情况不断调整和优化。随着技术的不断发展,未来将会 有更多可用的技术方向来进一步提高ORACLE数据库的性能。
准备工作
在进行ORACLE数据库性能调整与优化前,需要做好以下准备工作:
1、准备工具:需要准备ORACLE数据库管理工具(如SQL*Plus、SQL Developer等)、监控工具(如V$ Views、AWR等)以及性能测试工具(如 LoadRunner、Jmeter等)。
ORACLE 数据库故障解决方案
ORACLE 数据库故障解决方案故障解决方案是指在出现故障时,为了恢复系统正常运行,采取的一系列措施和方法。
针对ORACLE数据库故障,我们可以提供以下解决方案:1. 故障现象描述:描述故障的具体现象,如数据库无法启动、访问速度变慢等。
2. 故障排查:2.1 检查日志文件:查看ORACLE数据库的日志文件,如alert日志、trace文件,以了解故障的具体信息和错误提示。
2.2 检查数据库状态:使用SQL*Plus或其他管理工具连接到数据库,执行`SELECT STATUS FROM V$INSTANCE;`命令,检查数据库的状态是否正常。
2.3 检查系统资源:查看服务器的CPU、内存、磁盘等资源使用情况,确认是否存在资源瓶颈导致数据库故障。
2.4 检查网络连接:检查数据库服务器与客户端之间的网络连接是否正常,确认是否存在网络故障导致数据库无法访问。
3. 故障解决:3.1 数据库无法启动:3.1.1 检查数据库参数文件是否正确配置。
3.1.2 检查数据库控制文件是否损坏,如损坏则恢复备份的控制文件。
3.1.3 检查数据库日志文件是否损坏,如损坏则恢复备份的日志文件。
3.1.4 检查数据库是否处于ARCHIVELOG模式,如果是,则尝试进行日志应用恢复。
3.2 数据库访问速度变慢:3.2.1 检查数据库的索引是否正常,如有需要,重新构建索引。
3.2.2 检查数据库的统计信息是否准确,如有需要,重新收集统计信息。
3.2.3 检查数据库的SQL语句性能,如有需要,进行SQL调优。
3.2.4 检查数据库的表空间是否过度使用,如有需要,进行表空间的优化和扩容。
4. 故障预防:4.1 定期备份数据库:按照业务需求和数据变更频率,制定合理的数据库备份策略,并定期执行数据库备份操作。
4.2 监控数据库性能:使用数据库性能监控工具,实时监测数据库的性能指标,如CPU、内存、磁盘、网络等,及时发现潜在的故障风险。
4.3 定期维护数据库:定期执行数据库的维护操作,如索引重建、统计信息收集、日志清理等,保持数据库的良好状态。
ORACLE 数据库故障解决方案
ORACLE 数据库故障解决方案一、引言ORACLE 数据库是一款广泛应用于企业级应用系统的关系数据库管理系统。
然而,在数据库运行过程中,可能会出现各种故障,如数据损坏、性能下降、连接问题等。
本文将提供一些常见的 ORACLE 数据库故障解决方案,以帮助管理员快速解决问题并恢复数据库的正常运行。
二、故障解决方案1. 数据损坏数据库数据损坏可能导致数据丢失或无法访问。
以下是一些常见的数据损坏问题及解决方案:- 数据块损坏:使用RMAN 工具进行数据块检查,并使用备份数据进行恢复。
- 表空间损坏:使用RMAN 工具进行表空间检查,并使用备份数据进行恢复。
- 表或索引损坏:使用 DBMS_REPAIR 工具进行修复,或从备份中恢复受损的对象。
2. 性能下降数据库性能下降可能导致用户体验差和系统响应延迟。
以下是一些常见的性能下降问题及解决方案:- 确保数据库服务器具有足够的硬件资源,如 CPU、内存和磁盘空间。
- 优化 SQL 查询语句,使用索引、避免全表扫描等。
- 定期收集和分析数据库性能指标,如等待事件、锁定和死锁等,以找出性能瓶颈并采取相应措施。
3. 连接问题连接问题可能导致用户无法连接到数据库或连接超时。
以下是一些常见的连接问题及解决方案:- 检查数据库监听器是否运行,并确保监听器配置正确。
- 检查网络连接是否正常,如网络配置、防火墙设置等。
- 检查数据库实例是否正常启动,并检查数据库服务是否处于运行状态。
4. 容灾和备份恢复容灾和备份恢复是数据库管理的重要方面,以确保数据的可靠性和可恢复性。
以下是一些常见的容灾和备份恢复问题及解决方案:- 使用 Oracle Data Guard 实现数据库的冗余和自动故障转移。
- 定期进行数据库备份,并测试备份的可恢复性。
- 在灾难发生时,使用备份进行数据库恢复,并确保恢复过程的可靠性和完整性。
5. 安全性问题数据库安全性问题可能导致数据泄露、未授权访问等风险。
Oracle性能问题一般排查方法
Oracle性能问题⼀般排查⽅法Oracle性能问题⼀般排查⽅法翔之天空2019-01-2215:08:464306收藏13分类专栏: Oracle 优化处理 Oracle trouble shooting ⽂章标签: oracle性能问题排查版权Oracle 优化处理同时被2个专栏收录9篇⽂章0 订阅订阅专栏Oracle trouble shooting8篇⽂章0 订阅订阅专栏⼀、主机1、cpucpu⾼⼀般为逻辑读⾼,不排除有些异常的逻辑读sql⼯具描述uptime 平均负载vmstat 包括系统范围的cpu平均负载mpstat 查看所有cpu核信息top监控每个进程cpu⽤量sar -u 查看cpu信息pidstat 每个进程cpu⽤量分解perf cpu剖析和跟踪,性能计数分析2、I/OI/O⾼⼀般为物理(磁盘)读⾼,可能有全表扫等⼯具描述iostat 磁盘详细统计信息iotop 按进程查看磁盘IO的使⽤情况pidstat 按进程查看磁盘IO的使⽤情况perf 动态跟踪⼯具3、内存内存⾼ sga(buffer cache、share pool等) ,pga分配内存问题等⼯具描述free 缓存容量统计信息vmstat 虚拟内存统计信息top监视每个进程的内存使⽤情况pidstat 显⽰活动进程的内存使⽤统计pmap 查看进程的内存映像信息sar -r 查看内存dtrace 动态跟踪valgrind 分析程序性能及程序中的内存泄露错误⼆、数据库1、等待事件(当前)1)查看当前等待事件及数量,如果是库问题优化参数或调整业务逻辑等,如果是sql问题继续col event for a58select inst_id,event,count(*) from gv$session_waitwhere wait_class not like'Idle'group by inst_id, event order by3desc;--查询当前执⾏sqlSELECT b.inst_id,b.sid oracleID,ername 登录Oracle⽤户名,b.serial#,spid 操作系统ID,paddr,sql_text 正在执⾏的SQL,sql_fulltext,b.machine 计算机名,b.EVENT,'alter system kill session '''||b.sid||','||b.serial#||''';'FROM gv$process a, gv$session b, gv$sql cWHERE a.addr = b.paddrAND b.sql_hash_value = c.hash_valueand a.inst_id=1and b.inst_id=1and c.inst_id=1and b.status='ACTIVE'2)带⼊等待事件,查到当前等待事件最多的sqlSELECT b.inst_id,b.sid oracleID,ername 登录Oracle⽤户名,b.serial#,spid 操作系统ID,paddr,sql_text 正在执⾏的SQL,sql_fulltext,b.machine 计算机名,b.EVENT,c.SQL_ID,c.CHILD_NUMBERFROM gv$process a, gv$session b, gv$sql cWHERE a.addr = b.paddrAND b.sql_hash_value = c.hash_valueand event like'%gc current request%'and a.inst_id=1and b.inst_id=1and c.inst_id=13)根据具体情况优化此sql(1)统计信息是否最新并且准确--查看表统计时间select*from dba_tables;--收集table信息并⾏8SQL>execute dbms_stats.gather_table_stats(ownname=>'&owner',tabname=>'&table_name',cascade=>true,DEGREE=>8,no_invalidate=>false,granularity=>'ALL',method_opt=>'for all columns size 1',estimate_percent =>dbms_stats.auto_samp --分析收集schema信息execute dbms_stats.gather_schema_stats(ownname=>'&owner',no_invalidate=>false,granularity=>'ALL',method_opt=>'for all columns size 1',degree=>10,cascade=>TRUE,estimate_percent=>dbms_stats.auto_sample_size);(2)⽆索引查看sql中的表是否有索引,并确认是否可以⽤到索引选择性是否好(3)隐式转换,查看历史sql的执⾏计划来判断是否隐式转换执⾏计划select sql_id,child_number,LAST_ACTIVE_TIME from v$sql where sql_id='&sql_id';alter session set statistics_level=ALL;col plan_table_output format A160set linesize 300\rcol plan_table_output format A160\rselect*from table(dbms_xplan.DISPLAY_CURSOR('&sql_id', &child_number, 'ALL LAST'));(4)硬解析等情况select to_char(FORCE_MATCHING_SIGNATURE) as FORCE_MATCHING_SIGNATURE,count(1) as countsfrom v$sqlwhere FORCE_MATCHING_SIGNATURE >0and FORCE_MATCHING_SIGNATURE <> EXACT_MATCHING_SIGNATUREgroup by FORCE_MATCHING_SIGNATUREhaving count(1) >50order by2desc;select substr(sql_text,0,50),count(1)FROM v$sqlareagroup by substr(sql_text,0,50)order by2desc;(5)其他情况等2、等待事件(历史)提取awr或者ash观察,或者直接⽤dba_hist_*视图查看如下:--查看dba_hist_snapshot视图查看snap_id和时间的对应关系select*from dba_hist_snapshot;--创建快照exec dbms_workload_repository.create_snapshot();--查看等待事件的sql_id排⾏col event for a50select*from (select event,sql_id,count(1) from dba_hist_active_sess_history twhere snap_id between&snap_id_start and&snap_id_endand event is not nulland sql_id is not nullgroup by event,sql_idorder by count(1) desc)where rownum<20;----历史等待事件及sqlwith tmp as(select t.instance_number,t.event,t.sql_id,count(1) cntfrom dba_hist_active_sess_history twhere t.snap_id between7104and7105and t.event like'%ITL%'and t.sql_id is not nullgroup by instance_number,event,t.sql_id)select t1.*,t2.sql_textfrom tmp t1,dba_hist_sqltext t2where t1.sql_id = t2.sql_idorder by cnt desc--查看sql绑定变量set linesize 400col NAME for a10col value_string for a70select distinct instance_number,sql_id,name,datatype_string,last_captured,value_stringfrom dba_hist_sqlbind twhere sql_id ='&slq_id'and t.SNAP_ID between&snap_id_start and&snap_id_endand instance_number =&inst_idorder by LAST_CAPTURED;-----快照时间的sql执⾏时间及逻辑读物理读的统计SELECT T.SQL_ID,T.EXECUTIONS_DELTA EXEC_CNT, --快照时间内执⾏总次数ROUND(ELAPSED_TIME_DELTA /1000000, 2) EXEC_TIME, --快照时间内执⾏总时间秒ROUND(ELAPSED_TIME_DELTA /DECODE(T.EXECUTIONS_DELTA, 0, 1, T.EXECUTIONS_DELTA) /1000000,2) EXEC_PER, --快照时间内执⾏平均时间秒PARSING_SCHEMA_NAME SCHEMA,ROUND(DISK_READS_DELTA ,2) DISK_READS, ----快照时间内磁盘读 io⾼ROUND(BUFFER_GETS_DELTA , 2) BUFFER_GETS, ----快照时间内逻辑读 cpu⾼T1.SQL_TEXT,to_char(substr(T1.SQL_TEXT,0,80))FROM DBA_HIST_SQLSTAT TJOIN DBA_HIST_SQLTEXT T1ON T.SQL_ID = T1.SQL_IDWHERE T.SNAP_ID =6825--快照时间AND T.PARSING_SCHEMA_NAME NOT IN ('SYS', 'SYSTEM')AND T.INSTANCE_NUMBER =1--节点AND T.EXECUTIONS_DELTA >=0--快照时间内 sql执⾏总次数————————————————版权声明:本⽂为CSDN博主「翔之天空」的原创⽂章,遵循CC 4.0BY-SA版权协议,转载请附上原⽂出处链接及本声明。
oracle连接数过多导致系统非常慢分析总结
Tue Jan 19 10:52:49 2010
skgpspawn failed:category = 27142, depinfo = 11, p = fork, loc = skgpspawn5
skgpspawn failed:category = 27142, depinfo = 11, p = fork, loc = skgpspawn3
skgpspawn failed:category = 27142, depinfo = 11, p = fork, loc = skgpspawn3
skgpspawn failed:category = 27142, depinfo = 11, p = fork, loc = skgpspawn3
19-JAN-2010 10:32:38 * (CONNECT_DATA=(SID=ora9jsy)(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.2.1)(PORT=1076)) * establish * ora9jsy * 0
19-JAN-2010 10:32:39 * (CONNECT_DATA=(SID=ora9jsy)(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.2.1)(PORT=1077)) * establish * ora9jsy * 0
TNS-12500: TNS:listener failed to start a dedicated server process
TNS-12540: TNS:internal limit restriction exceeded
oracle运行变慢如何办
Tablespace 的IO reads/writes也没有异常, 但是wait明显增加.
初步确定是IO问题.
第四步, 察看OS的信息
1. top 命令(输出为实验室数据,仅作格式参考)
load averages: 0.05, 0.10, 0.09 10:18:32
在buffer busy waits等待事件中
P1 = file#
P2 = block#
P3 = id ( 此id对应为等待的原因)
按照p1,p2,p3 group是为了明确buffer busy waits的等待集中在哪些对象上。
Metalink对buffer busy waits等待事件的描述有如下一段话:
输出结果显示最多的等待事件是buffer busy waits。
进一步分析,找出等待的原因
Select count(*), p1, p2, p3 from v$session_wait where event = ‘buffer busy waits’ group by p1,p2,p3;
“If P3 shows that the "buffer busy wait" is waiting for a block read to complete then the blocking session is likely to be waiting on an IO wait (eg: "db file sequential read" or "db file scattered read" for the same file# and block#.”
调整Oracle应用系统性能的原则和方法
Oracle 数据库广泛应用在社会的各个领域,特别是在Client/Server模式的应用,但是应用开发者往往碰到整个系统的性能随着数据量的增大显著下降的问题,为了解决这个问题,从以下几个方面:数据库服务器、网络I/O、应用程序等对整个系统加以调整,充分发挥Oracle的效能,提高整个系统的性能。
1、调整数据库服务器的性能Oracle数据库服务器是整个系统的核心,它的性能高低直接影响整个系统的性能,为了调整Oracle数据库服务器的性能,主要从以下几个方面考虑:1.1、调整操作系统以适合Oracle数据库服务器运行Oracle数据库服务器很大程度上依赖于运行服务器的操作系统,如果操作系统不能提供最好性能,那么无论如何调整,Oracle数据库服务器也无法发挥其应有的性能。
1.1.1、为Oracle数据库服务器规划系统资源据已有计算机可用资源, 规划分配给Oracle服务器资源原则是:尽可能使Oracle服务器使用资源最大化,特别在Client/Server中尽量让服务器上所有资源都来运行Oracle服务。
1.1.2、调整计算机系统中的内存配置多数操作系统都用虚存来模拟计算机上更大的内存,它实际上是硬盘上的一定的磁盘空间。
当实际的内存空间不能满足应用软件的要求时,操作系统就将用这部分的磁盘空间对内存中的信息进行页面替换,这将引起大量的磁盘I/O操作,使整个服务器的性能下降。
为了避免过多地使用虚存,应加大计算机的内存。
1.1.3、为Oracle数据库服务器设置操作系统进程优先级不要在操作系统中调整Oracle进程的优先级,因为在Oracle数据库系统中,所有的后台和前台数据库服务器进程执行的是同等重要的工作,需要同等的优先级。
所以在安装时,让所有的数据库服务器进程都使用缺省的优先级运行。
1.2、调整内存分配Oracle数据库服务器保留3个基本的内存高速缓存,分别对应3种不同类型的数据:库高速缓存,字典高速缓存和缓冲区高速缓存。
ORACLE 数据库故障解决方案
ORACLE 数据库故障解决方案一、背景介绍ORACLE数据库是一种关系型数据库管理系统,广泛应用于企业级应用系统中。
然而,由于各种原因,数据库可能会浮现故障,导致数据丢失、访问延迟或者系统崩溃等问题。
为了保证数据库的稳定运行,我们需要制定一套完善的故障解决方案。
二、故障排查1. 监控系统建立一个完善的监控系统,可以实时监测数据库的运行状态、性能指标等。
通过监控系统,我们可以及时发现异常情况,并采取相应的措施。
2. 日志分析定期分析数据库的错误日志、事件日志和警告日志,找出潜在的问题和异常情况。
根据日志的内容,可以确定故障的原因,并采取相应的解决方案。
3. 性能分析使用性能分析工具,对数据库进行性能分析。
通过分析数据库的性能指标,可以找出性能瓶颈,并进行优化。
三、常见故障及解决方案1. 数据丢失故障现象:数据库中的部份数据丢失,导致数据不完整或者不一致。
解决方案:定期备份数据库,并建立容灾机制,以防止数据丢失。
如果发生数据丢失,可以通过备份恢复数据。
2. 数据库访问延迟故障现象:数据库访问速度变慢,导致系统响应缓慢。
解决方案:优化数据库的查询语句和索引,以提高查询性能。
可以使用数据库性能分析工具,找出性能瓶颈,并进行相应的优化。
3. 数据库崩溃故障现象:数据库无法启动或者频繁崩溃。
解决方案:首先,检查数据库的错误日志,找出导致崩溃的原因。
根据错误日志,采取相应的措施,如修复数据库文件、重建索引等。
如果问题无法解决,可以考虑重新安装数据库。
4. 数据库空间不足故障现象:数据库空间不足,无法存储新的数据。
解决方案:定期监控数据库的空间使用情况,及时扩容数据库的存储空间。
可以通过删除不必要的数据、优化数据存储方式等方式来释放空间。
5. 数据库连接问题故障现象:无法连接到数据库,无法进行数据库操作。
解决方案:首先,检查网络连接是否正常,确保数据库服务器能够正常访问。
如果网络连接正常,可以检查数据库的监听程序是否正常运行。
ORACLE 数据库故障解决方案
ORACLE 数据库故障解决方案一、背景介绍ORACLE数据库是一种常用的关系型数据库管理系统,广泛应用于企业级应用中。
然而,在使用ORACLE数据库的过程中,可能会遇到各种故障,例如数据库无法启动、数据丢失、性能下降等问题。
本文将介绍一些常见的ORACLE数据库故障,并提供相应的解决方案。
二、常见故障及解决方案1. 数据库无法启动故障现象:当尝试启动ORACLE数据库时,可能会遇到无法启动的情况。
解决方案:- 检查数据库实例是否已经启动。
可以使用命令`ps -ef | grep pmon`来检查数据库实例进程是否存在。
- 检查数据库监听器是否已经启动。
可以使用命令`lsnrctl status`来检查监听器状态。
- 检查数据库日志文件,查找错误信息。
可以通过查看数据库的alert日志文件来获取更多信息。
2. 数据库数据丢失故障现象:数据库中的部份或者全部数据丢失。
解决方案:- 恢复备份数据。
如果有定期备份数据库的策略,可以使用备份数据进行恢复。
- 使用闪回技术。
ORACLE数据库提供了闪回技术,可以将数据库恢复到某个时间点的状态。
- 使用数据恢复工具。
如果以上方法无法解决问题,可以考虑使用第三方的数据恢复工具。
3. 数据库性能下降故障现象:数据库的响应时间变慢,性能下降。
解决方案:- 分析数据库性能指标。
可以使用ORACLE提供的性能监控工具,如AWR报告、ASH报告等,来分析数据库的性能指标,找出性能瓶颈所在。
- 优化SQL语句。
通过分析慢查询日志,找出执行时间较长的SQL语句,并进行优化,如添加索引、重写SQL语句等。
- 调整数据库参数。
根据数据库的负载情况,适当调整数据库的参数配置,如SGA大小、PGA大小等。
4. 数据库实例崩溃故障现象:数据库实例蓦地崩溃,无法正常工作。
解决方案:- 检查数据库错误日志。
可以通过查看数据库的alert日志文件来获取崩溃的原因。
- 恢复数据库实例。
可以使用ORACLE提供的恢复工具,如RECOVER命令、RMAN工具等,来恢复数据库实例。
ORACLE 数据库故障解决方案
ORACLE 数据库故障解决方案故障名称:ORACLE 数据库故障解决方案一、背景介绍ORACLE 数据库是一种常用的关系型数据库管理系统,用于存储和管理大量的数据。
然而,在数据库的运行过程中,可能会出现各种故障,例如性能下降、连接中断、数据损坏等问题。
为了保证数据库的稳定运行,需要及时解决这些故障。
二、故障解决方案1. 性能下降故障解决方案- 分析数据库性能指标:通过监控工具或命令,获取数据库的性能指标,如CPU 使用率、内存利用率、磁盘 I/O 等,以便确定性能下降的原因。
- 优化 SQL 查询语句:通过分析慢查询日志或执行计划,找出执行时间较长的 SQL 查询语句,并进行优化,如添加索引、重写查询语句等。
- 调整数据库参数:根据数据库的实际情况,适当调整相关参数,如缓冲区大小、并发连接数等,以提升数据库性能。
2. 连接中断故障解决方案- 检查网络连接:确认数据库服务器和客户端之间的网络连接是否正常,如网络是否畅通、防火墙是否阻塞等。
- 检查监听器配置:检查数据库监听器的配置文件,确保监听器正常运行,并监听正确的端口。
- 检查数据库状态:通过查询数据库的状态,确认数据库是否正常运行,如数据库实例是否启动、监听器是否注册等。
3. 数据损坏故障解决方案- 检查数据库文件:通过检查数据库的数据文件、日志文件等,确定是否存在损坏或丢失的文件。
- 使用备份恢复数据:如果有备份文件,可以使用数据库备份恢复工具进行数据恢复。
注意,恢复操作应在数据库关闭状态下进行。
- 使用数据恢复工具:如果没有备份文件,可以使用数据恢复工具,如Oracle Data Recovery Advisor,进行数据的修复和恢复。
4. 其他常见故障解决方案- 内存溢出故障解决方案:通过增加内存大小或调整数据库参数,解决内存溢出问题。
- 死锁故障解决方案:通过查询数据库锁表,找出死锁的原因,并进行解锁操作。
- 日志文件满故障解决方案:通过增加日志文件大小或定期清理日志文件,解决日志文件满的问题。
Oracle数据库性能优化与案例分析
千里之行,始于足下。
Oracle数据库性能优化与案例分析Oracle数据库性能优化是指通过调整数据库的配置参数、优化SQL语句、增加索引等措施,以提升数据库的响应速度、减少资源消耗和提高系统的稳定性的过程。
下面是一个案例分析,介绍了一个实际的Oracle数据库性能优化案例。
案例分析:某公司使用Oracle数据库存储了大量的销售数据,随着数据量的增加,数据库的性能逐渐下降。
经过检查,发现以下问题:1. 缺少必要的索引:在数据库中存在大量的查询操作,但是缺少必要的索引导致查询效率低下。
解决方法:根据查询需求,为经常用到的列添加合适的索引,可以通过分析查询语句的执行计划来确定需要哪些索引。
同时,也要注意避免过多的索引导致性能下降。
2. SQL语句性能低下:存在一些复杂的SQL语句,执行时间较长。
解决方法:对于复杂的SQL语句,可以通过优化查询语句和重构查询逻辑来提升性能。
可以考虑使用JOIN操作替代子查询,避免使用全表扫描等。
3. 数据库参数设置不合理:数据库的一些配置参数没有进行调整,导致性能下降。
第1页/共2页锲而不舍,金石可镂。
解决方法:根据数据库的性能需求,适当调整一些关键的配置参数,如SGA和PGA的大小、缓冲区大小等。
4. 数据库统计信息过期:数据库的统计信息没有及时更新,导致查询优化器的估算不准确。
解决方法:定期收集和更新统计信息,可以使用Oracle提供的统计信息收集工具或者手动收集统计信息。
通过以上优化措施,可以显著提升Oracle数据库的性能,提高系统的响应速度和稳定性。
但需要注意,在进行性能优化时需要综合考虑多个因素,不能片面追求性能提升而导致其他问题的出现。
另外,性能优化也是一个持续的过程,需要定期检查和优化。
ORACLE数据库变得非常慢解决方案一例
ORACLE数据库变得非常慢解决方案一例数据库变得非常慢[/b][/b]接到客户报告最近数据库速度慢了好多,同样的应用慢了4,5倍.我做了个statspack,没发现什么问题,主要信息:Cache Sizes (end)~~~~~~~~~~~~~~~~~Buffer Cache: 3,104M Std Block Size:8KShared Pool Size: 400M Log Buffer:3,072KLoad Profile~~~~~~~~~~~~ Per Second Per Transaction--------------- ---------------Redo size: 394,918.91 68,578.62Logical reads: 40,718.26 7,070.82Block changes: 3,516.66 610.68Physical reads: 1,673.37 290.59Physical writes: 63.58 11.04User calls: 122.83 21.33Parses: 22.04 3.83Hard parses: 2.23 0.39Sorts: 10.36 1.80Logons: 0.38 0.07Executes: 54.35 9.44Transactions: 5.76% Blocks changed per Read: 8.64 Recursive Call %: 46.61Rollback per transaction %: 0.00 Rows per Sort: 1601.81Instance Efficiency Percentages (Target 100%)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Buffer Nowait %: 99.99 Redo NoWait %: 100.00Buffer Hit %: 95.91 In-memory Sort %: 99.99Library Hit %: 98.08 Soft Parse %: 89.90Execute to Parse %: 59.45 Latch Hit %: 99.88Parse CPU to Parse Elapsd %: % Non-Parse CPU:Shared Pool Statistics Begin EndMemory Usage %: 86.59 86.84% SQL with executions>1: 88.19 88.59% Memory for SQL w/exec>1: 94.34 94.96Top 5 Timed Events~~~~~~~~~~~~~~~~~~ % TotalEvent Waits Time (s) Ela Time-------------------------------------------- ------------ ----------- -------- db file scattered read 585,373 5,110 36.24latch free 38,146 3,331 23.63db file sequential read 328,881 2,096 14.87PX Deq: Txn Recovery Start 645 1,124 7.97db file parallel write 3,840 754 5.35****************************AIX系统:***********************************#iostat 5 5tty: tin tout avg-cpu: % user % sys % idle % iowait0.0 2.5 16.4 2.8 69.7 11.1Disks: % tm_act Kbps tps Kb_read Kb_wrtnhdisk0 20.9 141.9 33.0 1176852937 1037907344hdisk1 20.4 136.6 31.3 1136554209 996356546hdisk2 12.6 140.3 56.6 702195893 1487895240hdisk3 10.6 249.1 39.5 1887071251 2001871356cd0 0.0 0.0 0.0 0 0tty: tin tout avg-cpu: % user % sys % idle % iowait0.0 339.4 22.1 6.6 19.0 52.4Disks: % tm_act Kbps tps Kb_read Kb_wrtnhdisk0 95.6 615.2 152.0 2112 964hdisk1 96.0 612.0 150.8 2156 904hdisk2 83.0 2470.4 226.4 11524 828hdisk3 7.0 60.0 12.6 300 0cd0 0.0 0.0 0.0 0 0tty: tin tout avg-cpu: % user % sys % idle % iowait0.0 460.4 31.3 7.7 13.1 47.9Disks: % tm_act Kbps tps Kb_read Kb_wrtnhdisk0 95.4 648.0 158.4 1844 1396hdisk1 98.4 679.2 163.4 1896 1500hdisk2 89.6 2595.2 260.2 12088 888hdisk3 5.8 44.8 10.2 212 12cd0 0.0 0.0 0.0 0 0tty: tin tout avg-cpu: % user % sys % idle % iowait0.0 364.5 21.9 7.4 14.9 55.9Disks: % tm_act Kbps tps Kb_read Kb_wrtnhdisk0 96.6 750.9 177.9 1152 2604hdisk1 95.2 773.3 177.7 1176 2692hdisk2 70.2 2002.5 205.1 9740 276hdisk3 5.0 132.8 8.4 152 512cd0 0.0 0.0 0.0 0 0************FZYC1/#sar 5 5AIX FZYC1 3 4 000177DF4C00 06/06/0610:15:40 %usr %sys %wio %idle10:15:45 15 2 63 1910:15:50 19 3 56 2210:15:55 22 5 54 2010:16:00 20 10 51 2010:16:05 25 9 51 15Average 20 6 55 19******************FZYC1/#ps -ef |pgUID PID PPID C STIME TTY TIME CMDroot 1 0 0 Dec 07 - 29:33 /etc/initroot 4158 1 0 Dec 07 - 0:00 /usr/lib/methods/ssa_daemon -lssa0root 4446 11096 0 Dec 07 - 182:03 /usr/dt/bin/dtsessionroot 5014 1 0 Dec 07 - 1577:46 /usr/sbin/syncd 10root 5958 10322 0 Dec 07 - 24:57 /usr/lpp/X11/bin/X -x abx -x dbe -x GLX -D /usr/lib/X11//rgb -T -force :0 -auth /var/dt/A:0-aWkfiaroot 10322 1 0 Dec 07 - 0:01 /usr/dt/bin/dtlogin -daemonroot 10610 1 0 Dec 07 - 0:00 /usr/lib/errdemonroot 10926 4446 0 Dec 07 - 0:00 /usr/dt/bin/dttermroot 11096 10322 0 Dec 07 - 0:00 dtlogin -daemonroot 11364 17626 0 Dec 07 pts/0 0:00 /bin/kshroot 11620 1 0 Dec 07 - 0:00 imqsmdem imqsrv.ini /etc/IMNSearch/dbcshelp/...我发现iowait太高了,怀疑是这个系统同步进程root 5014 1 0 Dec 07 - 1577:46 /usr/sbin/syncd 10照成的,aix系统不怎么熟,会不会是这个照成数据库变慢呢? 要不要喀嚓掉它?我怀疑不是数据库的问题,因为应用没什么变化,定期维护也有做.问题情况简要叙述:客户报告数据库越来越慢,业务快无法进行了,近期并没有上什么新的应用和大的改变. 收集信息:statspack 发现top5等待首位为db scatter readaix topas 和iostat 发现iowait 严重,超过50% busy保持90%分析:查询top sql,v$sesstat+v$statname发现awms 应用进程db session logical reads等磁盘读写严重awms应用为实时查询(很频繁),查询sql的执行路径为,主要sql为对一些基表进行全表扫描.基表数据量不大(5-8w)左右,理论上查询io并不应该太髙.进一步查发现,该表dml较多,照成表不断扩大,碎片增多,对该表的full scan代价越来越大.仅仅凭112m的大小并不会照成太严重的io,但是该表被用于实查询,并且由于是full scan,在查询完成后会被至到LRU列表的least used 端.因此照成频繁的读写.内存不够用,引起了过多的swap.(这里为推测的原因,并不能肯定是正确的)解决:把表重建(truncate掉重插数据,或者move表然后重建索引),这些基表不大,并且频繁使用,由于这些特性,所以将其keep到buffer中--alter table table_namestorage (buffer_pool keep)观察了些时间,数据性能恢复了./archiver/tid-248860.html小记:不明原因的解决了ORACLE慢的问题近来发现ORACLE服务器超级慢,而且慢并不是由应用程序性能导致的,就连运行proc 预编译程序都很慢,可见问题还是出在ORACLE服务器本身。
Oracle数据库性能优化分析
Oracle数据库性能优化分析Oracle数据库性能优化是数据库管理中不可缺少的一部分。
要想让Oracle数据库运行得更快、更稳定,就需要进行性能优化。
这篇文章将从诊断问题、优化SQL查询、调整数据库参数等方面,介绍Oracle数据库性能优化的主要方法。
一、诊断问题在进行Oracle数据库性能优化之前,需要诊断问题,找出可能影响数据库性能的因素。
可以采用Oracle自带的一些工具,比如AWR(Automatic Workspace Repository)报告、ASH (Active Session History)数据等,来分析数据库的性能瓶颈。
AWR报告可以提供大量的信息,包括系统负载、等待事件、SQL执行统计等,这些信息可以帮助我们找出哪些SQL语句执行缓慢、哪些等待事件占用了过多的系统资源。
ASH数据则在AWR报告的基础上,提供了更为详细的会话信息。
我们可以通过对ASH数据的分析,了解每个会话的活动情况、等待事件及其统计信息等。
二、优化SQL查询优化SQL查询是Oracle数据库性能优化的重要步骤。
通过改写SQL查询、优化索引、统计信息等,来改善数据库的查询效率。
1. 改写SQL查询Oracle支持许多不同的SQL查询语句,而不同的查询语句的效率也是不同的。
比如,使用程序中嵌套的查询语句,可能会导致性能下降。
在这种情况下,可以使用联接查询来代替嵌套查询。
例如:SELECT *FROM departmentWHERE dept_id IN (SELECT dept_idFROM employeeWHERE emp_name = 'John');可以使用联接查询来代替上述嵌套查询:SELECT *FROM department, employeeWHERE department.dept_id = employee.dept_idAND employee.emp_name = 'John';2. 优化索引建立适当的索引是提高Oracle数据库性能的有效方法之一。
OracleSQL执行缓慢的原因以及解决方案
OracleSQL执行缓慢的原因以及解决方案第一篇:Oracle SQL执行缓慢的原因以及解决方案Oracle SQL执行缓慢的原因以及解决方案Oracle SQL执行缓慢的原因的分析,如果Oracle数据库中的某张表的相关数据已是2亿多时,同时此表也创建了相关的4个独立的相关索引。
由于业务方面的需要,每天需分两次向此表中插入300万条记录。
由于数据量大,每次插入耗时3个小时以上,严重影响效率。
因此,修改了系统的算法,将此表中只存储当天新增记录。
将此表truncate后,第二天执行对此表的update操作时,非常耗时。
表中有2亿多条数据的时候,此Oracle sql语句耗时59秒;表中有300万条数据的时候,此Oracle sql语句耗时几个小时。
咨询DBA后,得出结论,需重建索引。
重建后,6秒完成此操作。
但第三天问题依然出现。
DBA正在查找原因。
难道每次truncate表,都需要重建索引?对于这个问题,DBA也没有给出合理的解释,推测主要原因是Oracle复杂的查询优化算法。
最终,DBA给出的解决方案:1.truncate table....2.drop index.....3.insert data.....4.create index...5.analyze table table_name compute statistics;重新生成统计数据调整后,整个操作耗时非常少。
第二篇:淘汰落后产能进程缓慢原因浅析淘汰落后产能进程缓慢原因浅析谈到钢材市场的淘汰落后产能,说“谈虎色变”一点也不夸张,从去年以来,各级政府便严控新增产能,其力度之大,时间之久无人不知无人不晓,然而仍有个别地方还在新开工建设钢铁项目,令人担忧。
其实,笔者认为现阶段淘汰落后产能任重而道远,而淘汰的过程也可谓为穿荆度棘,不忍直视。
据了解,现阶段中国钢铁产能超过10亿吨,但市场需求不到8亿吨,由此可以看出钢铁产能过剩的严重程度,实为惊叹。
ORACLE数据库变得非常慢解决方案一例
ORACLE数据库变得非常慢解决方案一例最近在为一个项目做数据库优化,发现ORACLE数据库运行得特别慢,简直让人头大。
今天就来给大家分享一下我是如何一步步解决这个问题的,希望对你们有所帮助。
事情是这样的,那天老板突然过来,一脸焦虑地说:“小王,你看看这个数据库,查询速度怎么这么慢?客户都投诉了!”我二话不说,立刻开始分析原因。
我打开了数据库的监控工具,发现CPU和内存的使用率都很高,看来是数据库的压力确实很大。
然后,我开始查看慢查询日志,发现了很多执行时间很长的SQL语句。
这时,我意识到,问题的根源可能就在这些SQL语句上。
一、分析SQL语句1.对执行时间长的SQL语句进行优化。
我检查了这些SQL语句的写法,发现很多地方可以优化。
比如,有些地方使用了子查询,我尝试将其改为连接查询,以提高查询效率。
2.检查索引。
我发现有些表上没有合适的索引,导致查询速度变慢。
于是,我添加了合适的索引,以提高查询速度。
3.调整SQL语句的顺序。
有些SQL语句的执行顺序不当,导致查询速度变慢。
我调整了这些语句的顺序,使其更加合理。
二、调整数据库参数1.增加缓存。
我发现数据库的缓存设置比较低,导致查询时需要频繁读取磁盘。
我适当增加了缓存大小,以提高查询速度。
2.调整线程数。
我发现数据库的线程数设置较低,无法充分利用CPU资源。
我将线程数调整为合适的值,以提高数据库的处理能力。
3.优化数据库配置。
我对数据库的配置文件进行了调整,比如调整了日志文件的存储路径和大小,以及调整了数据库的备份策略等。
三、检查硬件资源1.检查CPU。
我查看了CPU的使用情况,发现CPU负载较高。
我建议公司采购更强大的CPU,以提高数据库的处理能力。
2.检查内存。
我发现内存的使用率也很高,于是建议公司增加内存容量。
3.检查磁盘。
我检查了磁盘的读写速度,发现磁盘的I/O性能较低。
我建议公司更换更快的磁盘,以提高数据库的读写速度。
四、定期维护1.定期清理数据库。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PROMO_ID NOT NULL NUMBER
QUANTITY_SOLD NOT NULL NUMBER(10,2)
AMOUNT_SOLD NOT NULL NUMBER(10,2)
SQL> select
2 tenth tenth,
PROD_ID NOT NULL NUMBER
CUST_ID NOT NULL NUMBER
TIME_ID NOT NULL DATE
--分区表
select a.owner ,segment_name,a.partition_name , a.bytes , a.blocks ,b.blocks ,
a.blocks / b.blocks from dba_segments a , dba_tab_partitions b
3 min(PROD_ID) low_val,
4 max(PROD_ID) high_val,
5 max(PROD_ID) - min(PROD_ID) width,
2、
a、查询操作系统进程、DB SID和SQL语句,锁等待的语句
select * from v$sql where address in
(select sql_address
from v$session a
where paddr In
( select addr from v$process where spid
15 ;
TENTH LOW_VAL HIGH_VAL WIDTH HEIGHT
---------- ---------- ---------- ---------- ----------
,'14693','9807','29105' ) )
select spid from v$process where addr in (select paddr from v$session t where
t.SID='21')
b、统计值的查询、分析和组状图
select * from dba_tables;
7 117 124 7 14285.71
8 124 130 6 16666.67
9 130 138 8 12500
a、主机方面: 确定占用率较高的进程,分析对应的客户端进程的行为(什么机器、什么业务),在
服务器对端分析对应的ORACLE进程的行为(
包括SQL语句、HASH值、调用次数、执行计划、统计值等)
b、数据库方面:查询对应主机进程占用的系统资源,在SQL语句的行为同上;
c、全表扫描,查看执行的语句和对应的业务,并验证相关执行计划是否合适,统计值是否合适;
in ( 8642776)
)
)
select * from v$process where addr in (select paddr from v$session where sid in (select
session_id from v$locked_object where object_id in (
10selected.
为了验证结果是否与直方图统计信息一致,对该表进行统计信息收集,并收集直方图信息。
---快速更新统计值
SQL>alter session set db_file_multiblock_read_count=128;
--对表
SQL> exec dbms_stats.gather_table_stats('UCR_CRM1','TF_B_TRADE_BATDEAL', degree =>
6,estimate_percent => 20) ;
--对一个分区
SQL>exec dbms_stats.gather_table_stats(ownname => 'ownname',tabname => 'tabname',partname
对于结果 偏离1较多的>> 1或者 <<1 ,结合实际空间,可以进行快速的统计值更新。
【此结果可以作为更新统计值的条件】
对于oracle 10G还需要考虑组状图 可以使用下列语句直接收集
详细参考柱状图的统计方式。
大致的语句可以如下:
在看Cost-Based Oracle Fundamentals一书时, 使用了如下的sql来模拟直方图的收集:
4 34 40 6 16666.67
5 40 48 8 12500
6 48 117 69 1449.28
select * from v$process where addr in (select paddr from v$session where sid in (select
session_id from v$locked_object) )
select * from v$session where paddr in (select addr from v$process where spid in ('14714'
【如果执行计划有问题,此结果可以作为更新统计值的条件】
3、查询系统的等待事情和锁对象等;
三、具体可能的语句或工具
1、操作系统 使用NMON 、LSOF、glance、top、sar等;
在HP主机上使用 glance 、lsof
在AIX主机上使用nmon [ nmon-> u -> o ] \lsof
系统性能变慢常规处理诊断及定位处理方法
一、可能的系统现象:
1、业务变慢,尤其是工单相关的业务较慢;
2、主机系统资源率较高,数据库中的ACTIVE较多,有全表扫描;
3、数据库锁、BUFFER等待等
二、处理步骤和方法:
1、对于业务方面,有业务人员进行查询,包括程序升级,批量操作等。
2、对于系统方面可以从下面几个方面考虑;
SQL> desc sales;
Name Null? Type
----------------------------------------- -------- ----------------------------
9 PROD_ID,
10 ntile(10) over (order by PROD_ID) tenth
11 from SALES
where a.owner = b.table_owner and a.segment_name =b.table_name and
b.partition_name=a.partition_name and b.sample_size > 1 and b.blocks > 0 and
a.partition_name is not null
1 13 24 11 9090.91
2 24 30 6 16666.67
3 30 34 4 25000
6 round(100000 / (max(PROD_ID) - min(PROD_ID)),2) height
7 from (
8 select
12 )
13 group by tenth
14 order by tenth
select a.owner,a.table_name ,num_rows,blocks,last_analyzed from dba_tables a where
a.sample_size > 1
对比上面的抽样值和实际值 进行比较
--非分区表
select a.owner ,segment_name, a.bytes size11, a.blocks ,b.blocks , a.blocks /
select object_id from v$locked_object where oracle_username = 'SDQD')))
select * from dba_objects where object_id in(select object_id from v$locked_object)
b.blocks from dba_segments a , dba_tables b
where a.owner = b.owner and a.segment_name =b.table_name and b.sample_size > 1 and
b.blocks > 0 and a.partition_name is null