㈠ 性能调优:ORACLE性能初步调整
在User Schema 上 用人工指定方式指定 Tmp 的tablespace 换句话说要人工定义一个tmp 的tablespace 给user schema ——为colm v这个user单独开一个临时表空间 个人认为调整之后效果不会有很明显的变化临时表空间的作用是当sql语句中出现order by group by(也就是需要排序的时候) 如果排序的数据比较少 就会在内存中排序 排序的数据量很大时 oracle会把排序的任务放在临时表空间中完成 内存中排序(逻辑排序)比在磁盘上排序(物理排序)理论上快 倍!所以临时表空间很大并不是一件好事情 说明sql中存在大量排序的动作 sql语句需要优化! 所以深圳那里需要看一下临时表空间的大小!
当然johanna的意见也会有一定的作用 临时表空间独立出来之后 就不会和sys system等一系列oracle 内部使用临时表空间的操作产生资源竞争!
请检查SQL 使用到的where 条件是否均有定index 除此以外 检查使用到的where 条件最好以index 之顺序来写——这部分比较复杂 也是性能最关键的地方 几乎所有的oracle专家都认为 %以上的性能调整都和sql语句优化有关 需要check所有的sql语句where后面的条件是否有用到index的必要 工程量比较浩大!需要一个个小心谨慎的check!
把index 做一次 dbms_stats dbms stats 是oracle内部的api 可以对index table进行分析 收集统计信息 这样oracle优化器就会有一个最佳的选择 使性能达到最佳方法如下
SQL>select tt table_name tt num_rows tt blocks tt empty_blocks tt avg_row_len from dba_tables tt where tt owner= COLMTEST ; SQL > select ttt index_name ttt num_rows ttt distinct_keys ttt avg_leaf_blocks_per_key ttt clustering_factor from dba_indexes ttt where ttt owner= COLMTEST ;执行上述两条命令之后会发现除了table_name和index_name 其余列的统计信息都是不完全的
SQL>execute dbms_stats gather_schema_stats(ownname => COLMTEST cascade=>true)
执行完dbms_stats 再调用上述两句语句 会发现所有的列基本上都已经被填充!
PS 执行统计比较慢 相当于所有table index都扫描一遍的时间 COLMTEST 改一下另外 对单个表执行统计分析的语句如下
EXECUTE dbms_stats gather_table_stats (ownname=> citic tabname=> col_cust_id estimate_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 sysdba SQL> alter system set timed_statistics = true System altered——使用statspack收集统计信息时建议将该值设置为 TRUE 否则收集的统计信息大约只能起到 %的作用
SQL> @C oracleora dbmsadminspcreate sql 输入 perfstat_password 的值 perfstat输入default_tablespace的值 perfstat输入temporary_tablespace 的值 temp
NOTE SPCPKG plete Please check spcpkg lis for any errors ——需要出现上述语句才算成功 否则请查看 lis文件并执行 进行重建SQL> @C oracleora dbmsadminspdrop sql SQL> @C oracleora dbmsadminspcreate sql
查看文件夹会产生三个文件C oracleora in spcpkg lis spctab lis spcusr lis
——从下面开始都可以在客户端SQL_PLUS进行操作 手动执行STATSPACK收集统计信息SQL> show user USER为 PERFSTAT SQL> execute statspack snap ——快照
然后需要经过 个小时(跑批需要包含在里面) 再执行SQL> execute statspack snap ——快照
最后生成STATSPACK调整报告
SQL> @C:oracleora dbmsadminspreport sql;
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 的值: report txt End of Report查看产生的report 文档C oracleora in eport txt
lishixin/Article/program/Oracle/201311/17298
㈡ oracle check约束定义
oracle的check约束可以实现对字段的内容输入进行控制。
举例如下:
createtabletest
(idintprimarykey,
namevarchar2(20),
sexvarchar2(2)check(sexin('男','女')));
如上边语句,代表性别(sex)列只允许为男或女,如果输入其他内容则会报错。
如图:
㈢ 如何关闭Oracle11g数据库的审计功能
在oracle11g中,数据库的审计功能是默认开启的(这和oracle10g的不一样,10g默认是关闭的),x0dx0aoracle11gR2的官方文档上写的是错的,当上说default是none,而且是审计到DB级别的,这样就会x0dx0a往aud$表里记录统计信息。x0dx0a x0dx0a1.如果审计不是必须的,可以关掉审计功能;x0dx0ax0dx0aSQL> show parameter audit_trail;x0dx0ax0dx0aNAME TYPE VALUEx0dx0a------------------------------------ ----------- ------------------------------x0dx0aaudit_trail string DBx0dx0ax0dx0aSQL> alter system set audit_trail=none scope=spfile;x0dx0aSQL> shut immediate;x0dx0aSQL>startupx0dx0a2.删除已有的审计信息x0dx0a可以直接truncate表aud$,x0dx0atruncate table SYS.AUD$;x0dx0ax0dx0a3.或者将aud$表移到另外一个表空间下,以减少system表空间的压力和被撑爆的风险。x0dx0a x0dx0a附:11g中有关audit_trail参数的设置说明:x0dx0aAUDIT_TRAILx0dx0aProperty Descriptionx0dx0aParameter type Stringx0dx0aSyntaxAUDIT_TRAIL = { none | os | db [, extended] | xml [, extended] }x0dx0aDefault valuenonex0dx0aModifiable Nox0dx0aBasic Nox0dx0aAUDIT_TRAIL enables or disables database auditing.x0dx0aValues:x0dx0anonex0dx0aDisables standard auditing. This value is the default if the AUDIT_TRAIL parameter was not set x0dx0ain the initialization parameter file or if you created the database using a method other than x0dx0aDatabase Configuration Assistant. If you created the database using Database Configuration x0dx0aAssistant, then the default is db.x0dx0aosx0dx0aDirects all audit records to an operating system file. Oracle recommends that you use the os x0dx0asetting, particularly if you are using an ultra-secure database configuration.x0dx0adbx0dx0aDirects audit records to the database audit trail (the SYS.AUD$ table), except for records x0dx0athat are always written to the operating system audit trail. Use this setting for a general x0dx0adatabase for manageability.x0dx0aIf the database was started in read-only mode with AUDIT_TRAIL set to db, then Oracle Database x0dx0ainternally sets AUDIT_TRAIL to os. Check the alert log for details.x0dx0adb, extendedx0dx0aPerforms all actions of AUDIT_TRAIL=db, and also populates the SQL bind and SQL text CLOB-type x0dx0acolumns of the SYS.AUD$ table, when available. These two columns are populated only when this x0dx0aparameter is specified.x0dx0aIf the database was started in read-only mode with AUDIT_TRAIL set to db, extended, then Oracle x0dx0aDatabase internally sets AUDIT_TRAIL to os. Check the alert log for details.x0dx0axmlx0dx0aWrites to the operating system audit record file in XML format. Records all elements of the x0dx0aAuditRecord node except Sql_Text and Sql_Bind to the operating system XML audit file.x0dx0axml, extendedx0dx0aPerforms all actions of AUDIT_TRAIL=xml, and populates the SQL bind and SQL text CLOB-type columnsx0dx0a of the SYS.AUD$ table, wherever possible. These columns are populated only when this parameter x0dx0ais specified.x0dx0aYou can use the SQL AUDIT statement to set auditing options regardless of the setting of this x0dx0aparameter.
㈣ ORACLE里的CHECK约束。。
oracle中的check约束是为了让表中某字段值能输入固定的值。
如:
1、创建带有check约束的表。
createtabletest
(idint,
namevarchar2(10),
sexvarchar2(10)check(sexin('男','女')));
以上语句说明输入的sex只能为男或女。
2、插入测试数据:
insertintotestvalues(1,'badkano','男');
insertintotestvalues(2,'冷小月9','女');
以上两个语句都能输入成功。
如果输入:
insertintotestvalues(3,'dongdng','不男不女');
则会报错: