数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

性能调优:ORACLE性能初步调整


发布日期:2024年06月25日
 
性能调优:ORACLE性能初步调整

在User Schema 上 用人工指定方式指定 Tmp 的tablespace 换句话说要人工定义一个tmp 的tablespace 给user schema——为colmv这个user单独开一个临时表空间 个人认为调整之后效果不会有很明显的变化临时表空间的作用是当sql语句中出现order by group by(也就是需要排序的时候)如果排序的数据比较少就会在内存中排序排序的数据量很大时oracle会把排序的任务放在临时表空间中完成 内存中排序(逻辑排序)比在磁盘上排序(物理排序)理论上快倍!所以临时表空间很大并不是一件好事情说明sql中存在大量排序的动作sql语句需要优化! 所以深圳那里需要看一下临时表空间的大小!

当然johanna的意见也会有一定的作用临时表空间独立出来之后就不会和syssystem等一系列oracle 内部使用临时表空间的操作产生资源竞争!

请检查SQL 使用到的where 条件是否均有定index 除此以外 检查使用到的where 条件最好以index 之顺序来写——这部分比较复杂也是性能最关键的地方几乎所有的oracle专家都认为%以上的性能调整都和sql语句优化有关需要check所有的sql语句where后面的条件是否有用到index的必要 工程量比较浩大!需要一个个小心谨慎的check!

把index 做一次 dbms_stats dbmsstats 是oracle内部的api 可以对indextable进行分析收集统计信息这样oracle优化器就会有一个最佳的选择使性能达到最佳方法如下

SQL>select tttable_namettnum_rowsttblocksttempty_blocksttavg_row_len from dba_tables tt

where ttowner=COLMTEST;

SQL>select tttindex_nametttnum_rowstttdistinct_keystttavg_leaf_blocks_per_keytttclustering_factor

from dba_indexes ttt where tttowner=COLMTEST;

执行上述两条命令之后会发现除了table_name和index_name其余列的统计信息都是不完全的

SQL>execute dbms_statsgather_schema_stats(ownname =>COLMTESTcascade=>true)

执行完dbms_stats再调用上述两句语句会发现所有的列基本上都已经被填充!

PS执行统计比较慢相当于所有tableindex都扫描一遍的时间COLMTEST改一下另外对单个表执行统计分析的语句如下

EXECUTE dbms_statsgather_table_stats (ownname=>citic tabname=>col_cust_idestimate_percent=>cascade=>true)

做过以上处理之后 再看情形 再依情况放参数

——参数暂时不用调整!

建议做一个STATSPACK通过Statspack我们可以很容易的确定Oracle数据库的瓶颈所在记录数据库性能状态迅速了解数据库运行状况

方法如下

安装Statspack安装Statspack拥有SYSDBA(connect / as sysdba)权限的用户登陆需要在本地安装或者通过telnet登陆到服务器——客户端登录不可以

必要条件先创建名称为perfstat的表空间至少M

在那台oracle数据库上用colmv登录SQL*PLUS 然后输入SQL> connect sys/sys@(你们那里的sid) as sysdbaSQL> alter system set timed_statistics = trueSystem altered——使用statspack收集统计信息时建议将该值设置为 TRUE否则收集的统计信息大约只能起到%的作用

SQL> @C\oracle\ora\rdbms\admin\spcreatesql输入 perfstat_password 的值 perfstat输入default_tablespace的值 perfstat输入temporary_tablespace 的值 temp

NOTESPCPKG complete Please check spcpkglis for any errors——需要出现上述语句才算成功否则请查看lis文件并执行进行重建SQL> @C\oracle\ora\rdbms\admin\spdropsql SQL> @C\oracle\ora\rdbms\admin\spcreatesql

查看文件夹会产生三个文件C\oracle\ora\bin spcpkglis spctablis spcusrlis

——从下面开始都可以在客户端SQL_PLUS进行操作手动执行STATSPACK收集统计信息SQL> show user USER为PERFSTAT SQL> execute statspacksnap ——快照

然后需要经过个小时(跑批需要包含在里面)再执行SQL> execute statspacksnap ——快照

最后生成STATSPACK调整报告

SQL> @C:\oracle\ora\rdbms\admin\spreportsql;

Current Instance

~~~~~~~~~~~~~~~~

DB Id DB Name Inst Num Instance

COLM colm

Instances in this Statspack schema

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DB Id Inst Num DB Name Instance Host

COLM colm STEVENHUANG

Using for database Id

Using for instance number

Completed Snapshots

Snap Snap

Instance DB Name Id Snap Started Level Comment

colm COLM :

:

Specify the Begin and End Snapshot Ids

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

输入 begin_snap 的值:

输入 end_snap 的值:

End Snapshot Id specified:

Specify the Report Name

~~~~~~~~~~~~~~~~~~~~~~~

The default report file name is sp__ To use this name

press <return> to continue otherwise enter an alternative

输入 report_name 的值: reporttxt

End of Report

查看产生的report文档C\oracle\ora\bin\reporttxt

Trackback x?PostId=

上一篇:超大型ORACLE数据库应用系统的设计

下一篇:OracleDatabase11gR2日志收集工具