??xml version="1.0" encoding="utf-8" standalone="yes"?>
2Q?开启ƈ行,提高速度
3: 如果可以的话加NOLOGING 不写入日?br />4Q如果数据有规律的话Q分Ҏ(gu)执行
1.使用marge快速插?
MERGE /*+ append */
INTO A d
USING (select * B where ...) f
ON (d.account_no = f.account_no)
WHEN MATCHED THEN
update set acc_date = f.acc_date,...
WHEN NOT MATCHED THEN
insert values ( f.account_no,f.acc_date..)
/
commit;
2.向表中插入两条记?/p>
SQL> INSERT ALL
2 INTO toms values(1)
3 into toms values(2)
4 select * from dual;
已创?行?/p>
SQL> commit;
3.在插入时不记录日志记录的快速方?br />INSERT的时候可通过APPEND选项不生归档日志?/p>
alter table aa nologging
alter table aa logging
insert /*+append*/ into ...nologing
select * from ...
insert /*+ append, parallel */ into ods_list_t nologging
select * from ods_list;
但这样不?整个表可以插?但要某一个字D则不能加入nologging
insert /*+ append, parallel */ into ods_list_t(a,b) nologging
select a,b from ods_list;
但可以这?
insert /*+ append, parallel */ into ods_list_t nologging(a,b)
select a,b from ods_list;
create table ods_list_t nologging as select * from ods_list;
insert /*+ append, parallel */ into ods_list_t nologging
select * from ods_list;
insert /*+ Append parallel(tablename,number) */ into ods_list_t nologging
select * from ods_list;
tablename: 表名
number: q行?/p>
4?br />使用扚w拯Ҏ(gu)
set arraysize 20
set copycommit 5000
copy from username/password@oracle_name append table_name1
using select * from table_name2;
--------------------------------------------------
一、非归档模式下:
没有优化?nbsp; Q?281372 redo sizeQ?br />1、单一的用nologging参数Q对redo的生没有什么媄响?nbsp; Q?214836 redo sizeQ?br />2、单一的用append提示Qredo的减很显著 Q?3872 redo sizeQ?br />3、nologging+appendQ更显著 Q?108 redo sizeQ?/p>
---------------------------------------------------------------------------------
oracle append有什么作用?
h一下,oracle中append是做什么用的?br /> insert /*+append*/ into table1 select * from table2
在用了append选项以后Qinsert数据会直接加到表的最后面Q而不会在表的I闲块中插入数据?br />使用append会增加数据插入的速度?br />/*+APPEND*/的作用是在表的高水位上分配空?不再使用表的extent中的IZI间
append 属于direct insert,归档模式下append+table nologging会大量减日?非归档模式append会大量减日?append方式插入只会产生很少的undo
不去L freelist 中的free block , 直接在table HWM 上面加入数据?/p>
1. 采用高速的存储讑֤,提高d能力Q如QEMC 和NetAppQ?/p>
2. 假如tab1表中的没有数据的?nbsp;
DROP TABLE TAB1;
CREATE TABLE TAB1 AS SELECT * FROM TAB2;
然后在创建烦?/p>
3. 用Hint 提示减少操作旉
INSERT /*+Append*/ INTO tab1
SELECT * FROM tab2;
4. 采用不写日志及用Hint提示减少数据操作的时间?/p>
Ҏ(gu)是先修改表ؓ不写日志Q?nbsp;
sql> alter table table_name NOLOGGING;
插入数据Q?/p>
INSERT /*+Append*/ INTO tab1
SELECT * FROM tab2;
插入完数据后Q再修改表写日志Q?nbsp;
sql> alter table table_name LOGGING;
q里的区别就在于如果插入数据的同时又写日志,其是大数据量的insert操作Q需要耗费较长的时间?/p>
5. 用EXP/IMP 处理大量数据
(1)l当前的两个表分别改?nbsp;
alter table tab1 rename to tab11;
alter table tab2 rename to tab1;
(2)导出改名前的tab2
exp user/pwd@... file=... log=... tables=(tab1)
(3)把名字改回来
alter table tab1 rename to tab2;
alter table tab11 rename to tab1;
(4)导入数据
imp user/pwd@... file=... log=... fromuser=user touser=user tables=(tab1)
2009-7-7 20:11:39 oracle.sysman.emcp.EMConfig perform 严重: 启动 Database Control 时出? 有关详细资料, 请参?oracle\product\10.2.0\db_1\cfgtoollogs\dbca\orcl\emConfig.log 中的日志文g? 2009-7-7 20:11:39 oracle.sysman.emcp.EMConfig perform 配置: Stack Trace: oracle.sysman.emcp.exception.EMConfigException: 启动 Database Control 时出? at oracle.sysman.emcp.EMDBPostConfig.performConfiguration(EMDBPostConfig.java:569) at oracle.sysman.emcp.EMDBPostConfig.invoke(EMDBPostConfig.java:181) at oracle.sysman.emcp.EMDBPostConfig.invoke(EMDBPostConfig.java:150) at oracle.sysman.emcp.EMConfig.perform(EMConfig.java:155) at oracle.sysman.assistants.util.em.EMConfiguration.run(EMConfiguration.java:430) at java.lang.Thread.run(Thread.java:534)
出现错误的java stack call是EMDBPostConfig说明em db repository 已经完成配置在尝试启动EMQ但此时出现了问题?/p>
实际造成该问题的有多U可能性,q里列D最常见的几U?
1. 杀毒Y件或者防火墙造成的,q里在安装windows期间d关闭杀毒类软g和W(xu)indows自带的防火墙
2. EM使用的端口已l被其他软g所占用Q徏议用netstat命o诊断Q或另择|络端口
3. WindowsL名以”U”字母开?/p>
针对W三U可能性,可以在MOS上找到Note <Problem: Startup: Db Control 10.2.0.1 Fails To Start when the hostname begins with the letter “u”>:
Problem: Startup: Db Control 10.2.0.1 Fails To Start when the hostname begins with the letter "u" Applies to: Enterprise Manager for RDBMS - Version: 10.2.0.1 and later [Release: 10.2 and later ] Symptoms The dbconsole 10.2.0.1 is created with emca.The repository creation completes successfully and the dbconsole is created and configured without any error. The last phase of emca is to start the dbconsole. The standalone agent is started successfully but the dbconsole fails to start. The file $ORACLE_HOME/cfgtoollogs/emca/sid/emca*.log shows: =================================================== 05/11/2005 23:07:49 oracle.sysman.emcp.util.PlatformInterface serviceCommand CONFIG: Waiting for service 'OracleDBConsoleAMITAL' to fully start 05/11/2005 23:07:59 oracle.sysman.emcp.EMConfig perform SEVERE: Error starting Database Control Refer to the log file at d:\oracle\product\10.2.0\db_1\cfgtoollogs\emca\amital\emca_2005-11-05_10-55-42-PM.log for more details. 05/11/2005 23:07:59 oracle.sysman.emcp.EMConfig perform CONFIG: Stack Trace: oracle.sysman.emcp.exception.EMConfigException: Error starting Database Control at oracle.sysman.emcp.EMDBPostConfig.performConfiguration(EMDBPostConfig.java:569) at oracle.sysman.emcp.EMDBPostConfig.invoke(EMDBPostConfig.java:181) Cause This issue can be reproduced on all windows platforms which name begins with the letter u. This issue has been logged in the following bug: Bug:4714774 DBCONSOLE DOES NOT WORK HAVING A HOSTNAME STARTING WITH "U" This bug will be fixed in the patchset 10.2.0.2 Solution Download and apply the RDBMS patchset 10.2.0.2 once/if available or To enable the dbconsole to start successfully, follow the steps listed below: 1. Save the file $ORACLE_HOME\host_SID\sysman\config\emd.properties to emd.properties.orig 2. Update the file $ORACLE_HOME\host_SID\sysman\config\emd.properties, replacing \ with / in the following line: For example change: omsRecvDir=d:\oracle\product\10.2.0\db_1\ukp001_db0\sysman\recv to omsRecvDir=d:/oracle/product/10.2.0/db_1/ukp001_db0l/sysman/recv 3. Stop and restart the DB Control Hdr: 4714774 10.2.0.1 EMCP 10.2.0.1 PRODID-1370 PORTID-912 Abstract: DBCONSOLE DOES NOT WORK HAVING A HOSTNAME STARTING WITH "U" Problem Description ------------------- this seems to be releated to bug 3610052. Having a hostname like u1234, install rdbms10.2. start dbconsole will take 4-5 min. Even if the service is shown as started, dbconsole java processes stops and restarts. Environment Information ----------------------- Test Case Step-by-Step Instructions ----------------------------------- 1. rename the hostanme to uXYZ.... 2. install 10.2 rdbms into its own oraclehome 3. strt listener, create a database using dbca. 4. access the dbconsole page shows: "page cannot be displayed" Check the dbconsole java process in taksmanager , you will easily see, that it is coninously restarting. dbconsole service is shown as "started". Test Case Location ------------------ not needed easy to reproduce Diagnostic Analysis ------------------- run the java command from file emd.nohup file, this will show something like: java...Exception... Malformed \uxxxx encoding. and a java stack trace. I assume that this problem will always happen, having a "\u" in the path for the dbconsole Performance ----------- NLS Information --------------- Patches ------- Log Files Location ------------------ Reproducibility --------------- everytime, only on windows platforms: w2k w2003, windowsXP URL --- not needed Did you test with the latest version? ------------------------------------- yes Available Workarounds --------------------- Change the hostname from uXYZ to UXYZ, do set ORACLE_SID= emca -config dbcontrol db -reposrecreate Related Bugs ------------ 3610052 Hdr: 6313490 10.2.0.1.0 CONSOLE 10.2.0.1.0 PRODID-1370 PORTID-215 4714774 Abstract: 10.2.0.1DBCONSOLE IN A DB CREATED FROM IAS INSTALL FAILS TO START Problem Description ------------------- The dbconsole 10.2.0.1.0 creating is failing while starting the dbconsole dbconsole in a db created from iAS install. as per the logs:- SEVERE: Error starting Database Control Refer to the log file at D:\oracle\product\10.2.0\db_1\cfgtoollogs\emca\mmds\emca_2007-06-19_09-47-70-A M.log for more details. Jun 19, 2007 9:58:17 AM oracle.sysman.emcp.EMConfig perform CONFIG: Stack Trace: oracle.sysman.emcp.exception.EMConfigException: Error starting Database Control at oracle.sysman.emcp.EMDBPostConfig.performConfiguration(EMDBPostConfig.java:569 ) at oracle.sysman.emcp.EMDBPostConfig.invoke Environment Information ----------------------- dbconsole in a db created from iAS install. db console 10.2.0.1.0 on Microsoft Windows Server 2003 The 10g application server version is 10.1.2.0.2. to include January 2007 database and application server CPUs. Applied the database CPU patch and after that reconfigured the Dbconsole . Now it doesn't get configured .Db console generating core dump Test Case Step-by-Step Instructions ----------------------------------- Test Case Location ------------------ Diagnostic Analysis ------------------- Stopped the application server service and then started the dbcosnole .But still getting the error D:\oracle\product\10.2.0\db_1\BIN>emctl status dbconsole Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0 Oracle Enterprise Manager 10g is not running. ------------------------------------------------------------------ Logs are generated in directory Asked him to move the file from Oracle_Home>/_/emctl.pid file to another location . Now the dbconsole is started:- >emctl start dbconsole Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0 Starting Oracle Enterprise Manager 10g Database Control ...The OracleDBConsoleMM DS service is starting...................The OracleDBConsoleMMDS service was started successfully. D:\oracle\product\10.2.0\db_1\BIN>emctl upload Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0 EMD upload error: uploadXMLFiles skipped :: OMS version not checked yet.. Asked him to Edit the file ORACLE_HOME>\oc4j\j2ee\home\applications\dms\WEB-INF\web.xml Still the dbconsole is not getting started .
可能是因为Windows上主机名?#8221;U”字母开头后D相关路径发生了{义?/p>
可以通过在cmd中输入hostname来确认Windows上的L名?/p>
l出?U解x案:
1.升?0.2.0.2以上版本Q目前推荐的?0.2.0.5 Patch set; 版本10.2.0.1?0.2.0.3上的bug太多?.
2.修改$ORACLE_HOME\host_SID\sysman\config\emd.properties中的内容Q将omsRecvDir变更Ҏ(gu)使用斜杠而非反斜杠的路径形式Qƈ重启EM.
冷备份:
1、在A机器上用shutdown immediat;命o数据库停掉?br />2、最关键的一?copy文g)。将数据文g、重做日志文件、控制文件等、密码文件全部copy出来Q根据个人的相关l验q些文g基本上在oradata下,所以把oradata全部copy卛_Q还有数据文件、密码文件一般是在db_1下的database下,所以要把database文g夹全部copy?br />3、将A机器上的注册文g全部导出。在window的命令行输入regeditq入windows的注册文件界面,点击文g展开菜单点击导出卛_导出注册文g?br />Q冷备䆾完成Q接下来恢复)
恢复Q?br />1、在B机器上最好装与A机器相同的数据库l构Q包括sid、口令、所装的路径{(本例只将A和B数据库结构一P若不一样只需要改变控制文仉的\径即可)
2、将B机器上的oracle10g同样用shutdown immediat;停掉同时服务全部停掉Q避免覆盖的时候出错)
3、将备䆾的oradata全部覆盖B机器上的oradataQ同时也备份database全部覆盖B机器上的db_1下的
database文g夏V将导出的注册文件导入到B机器上(具体怎么导给导出是一L(fng)Q?br />4、启动oracle10g的服务,在dos下用sqlplus "/as sysdba" q入导oracle同时用startup重新启动oracle数据库,当出现加载数据库实例完成ok了?/p>
完工
注:冷备份常用于数据库的全库q且数据较庞大时的移植、备份等。一般用imp和exp或是DPimp和DPexp命oq行备䆾和恢复(DPimp和DPexp命o是oracle10g出现的新用法Q其实和imp和exp用法基本一P到google一搜很多)?/p>
服务器掉?sh),重启后看oracle服务都启动了Q但是连接时报错?br />错误~码: ora-01033: oracle initialization or shutdown in progress
故障特征: 使用命o行sqlplus或PL/SQL Developer均无法打开数据库。但是可以?/p>
sys用户以sysdba的n份登录系l?br />
sql> shutdown immediate;
sql> startup mount;
sql> alter database open;
提示
ORA-01172: U程 1 的恢复停止在?69660 (在文?5 ?
ORA-01151: 如果需? 请用介质恢复以恢复块和q原备䆾
//查看状?br />select status from v$instance;//完成介质恢复
recover database
alter database open;
囄说明如下:
今天提交h后,提示ORA-01652: 无法通过 128 (在表I间 TEMP ? 扩展 temp Dc最后通过ALTER DATABASE TEMPFILE '/*/*/db/apps_st/data/tempx01.dbf' RESIZE 7168M;扩展临时表空间来解决。在|上找了些资料,重新学习下(f)时表I间的知识点Q记录在此以免以后忘记?/p>
临时表空间相关知识点ȝQ{载)
临时表空间的作用Q?/p>
临时表空间主要用途是在数据库q行排序q算[如创建烦引、order by及group by、distinct、union/intersect/minus/、sort-merge及join、analyze命o]、管理烦引[如创建烦引、IMPq行数据导入]、访问视囄操作时提供(f)时的q算I间Q当q算完成之后pȝ会自动清理?/p>
当(f)时表I间不Ӟ表现速度异常的慢Qƈ且(f)时表I间q速增长到最大空_扩展的极限)Qƈ且一般不会自动清理了?/p>
如果临时表空间没有设|ؓ自动扩展Q则临时表空间不够时事务执行会报ora-01652无法扩展临时D늚错误Q当然解x法也很简?1、设|(f)时数据文件自动扩展,或?、增大(f)时表I间?/p>
临时表空间的相关操作Q?/p>
查询默认临时表空_
SQL> select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';
PROPERTY_NAME
------------------------------
PROPERTY_VALUE
--------------------------------------------------------------------------------
DESCRIPTION
--------------------------------------------------------------------------------
DEFAULT_TEMP_TABLESPACE
TEMP
Name of default temporary tablespace
查询临时表空间状?
SQL> select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;
TABLESPACE_NAME
——————————
FILE_NAME
——————————————————————————–
FILE_SIZE AUT
———- —
TEMP
/u01/app/oracle/oradata/orcl/temp01.dbf
100 YES
扩展临时表空_
Ҏ(gu)一、增大(f)时文件大:
SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ resize100m;
Database altered.
Ҏ(gu)二、将临时数据文g设ؓ自动扩展Q?/p>
SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ autoextend on next 5m maxsize unlimited;
二、配|?br />oracle推荐OLTP(on-line Transaction Processing)pȝoracle占系ld存的80%,然后再分?0%lSGA,20%lPGA。也是
SGA=system_total_memory*80%*80%
PGA=system_total_memory*80%*20%
三、操?br />用SYS用户以SYSDBAw䆾dpȝ
alter system set sga_max_size=2000m scope=spfile;
alter system set sga_target=2000m scope=spfile;
alter system set pga_aggregate_target=500m scope=spfile;
然后重新启动数据?br />最后查看一下是否生?br />show parameter sga_max_size;
show parameter sga_target;
show parameter pga_aggregate_target;
Oracle 10g之前Ҏ(gu)据库做性能?/span>statspack工具?/span> 关于statspack的说明,参考我?/span>BlogQ?/span>
statspack安装使用 ?/span> report 分析
http://blog.csdn.net/tianlesoftware/archive/2009/10/16/4682329.aspx
Oracle Database 10g 提供了一个新的工P(AWR:Automatic Workload Repository)?/span>Oracle 用户用这个取?/span> Statspack?/span>AWR 实质上是一?/span> Oracle 的内|工P它采集与性能相关的统计数据,q从那些l计数据中导出性能量度Q以跟踪潜在的问题?/span>
?/span> Statspack 不同Q快照由一个称?/span> MMON 的新的后台进E及其从q程自动地每时采集一ơ?/span>Z节省I间Q?span style="color: red">采集的数据在 7 天后自动清除?/span>快照频率和保留时间都可以q户修攏V它产生两种cd的输出:文本格式Q类g Statspack 报表的文本格式但来自?/span> AWR 信息库)和默认的 HTML 格式Q拥有到部分和子部分的所有超链接Q,从而提供了非常用户友好的报表?/span>
AWR 使用几个表来存储采集的统计数据,所有的表都存储在新的名UCؓ SYSAUX 的特定表I间中的 SYS 模式下,q且?/span> WRM$_* ?/span> WRH$_* 的格式命名?/span>前一U类型存储元数据信息Q如查的数据库和采集的快照)Q后一U类型保存实际采集的l计数据?/span>H 代表“历史数据 (historical)”?/span> M 代表“元数?/span> (metadata)”?/span>
在这些表上构Z几种带前~ DBA_HIST_ 的视图,q些视图可以用来~写(zhn)自q性能诊断工具。视囄名称直接与表相关Q例如,视图 DBA_HIST_SYSMETRIC_SUMMARY 是在WRH$_SYSMETRIC_SUMMARY 表上构徏的?/span>
注意一点:
statistics_level 默认?/span>typicalQ在10g中表监控是激zȝQ强烈徏议在10g中此参数的值是typical。如?/span>STATISTICS_LEVEL讄?/span>basicQ不仅不能监控表Q而且禁掉如下一?/span>10g的新功能Q?/span>
ASH(Active Session History)
ASSM(Automatic Shared Memory Management)
AWR(Automatic Workload Repository)
ADDM(Automatic Database Diagnostic Monitor)
?/span>. AWR使用
SQL>@?/rdbms/admin/awrrpt.sql
Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
Would you like an HTML report, or a plain text report?
Enter 'html' for an HTML report, or 'text' for plain text
Defaults to 'html'
输入 report_type 的?/span>:
Type Specified: html
Specify the number of days of snapshots to choose from
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Entering the number of days (n) will result in the most recent
(n) days of snapshots being listed. Pressing <return> without
specifying a number lists all completed snapshots.
输入 num_days 的?/span>: 1
Listing the last day's Completed Snapshots
Snap
Instance DB Name Snap Id Snap Started Level
------------ ------------ --------- ------------------ -----
orcl10g ORCL10G 142 03 7?/span> 2009 08:11 1
143 03 7?/span> 2009 09:00 1
144 03 7?/span> 2009 10:00 1
145 03 7?/span> 2009 11:00 1
146 03 7?/span> 2009 12:01 1
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
输入 begin_snap 的?/span>: 142
Begin Snapshot Id specified: 142
输入 end_snap 的?/span>: 146
End Snapshot Id specified: 146
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is awrrpt_1_142_146.html. To use this name,
press <return> to continue, otherwise enter an alternative.
输入 report_name 的?/span>: D:/awrrpt_1_142_146.html
Report written to D:/awrrpt_1_142_146.html
?/span>. AWR 操作
3.1. 查看当前?/span>AWR保存{略
SQL> col SNAP_INTERVAL format a20
SQL> col RETENTION format a20
SQL> select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- -------------------- -------------------- ----------
262089084 +00000 01:00:00.0 +00007 00:00:00.0 DEFAULT
以上l果表示,每小时生一?/span>SNAPSHOTQ保?/span>7天?/span>
3.2. 调整AWR配置
AWR配置都是通过dbms_workload_repository包进行配|?/span>
3.2.1 调整AWR产生snapshot的频率和保留{略Q?/span>如将攉间隔旉改ؓ30 分钟一ơ。ƈ且保?/span>5天时_单位都是分钟Q:
SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60);
3.2.2 关闭AWRQ把interval设ؓ0则关闭自动捕捉快?/span>
SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>0);
3.2.3 手工创徏一个快?/span>
SQL> exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
3.2.4 查看快照
SQL> select * from sys.wrh$_active_session_history
3.2.5 手工删除指定范围的快?/span>
SQL> exec DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id => 973, high_snap_id => 999, dbid => 262089084);
3.2.6 创徏baselineQ保存这些数据用于将来分析和比较
SQL> exec dbms_workload_repository.create_baseline(start_snap_id => 1003, end_snap_id => 1013, 'apply_interest_1');
3.2.7 删除baseline
SQL> exec DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => 'apply_interest_1', cascade => FALSE);
3.2.8 ?/span>AWR数据导出q迁Ud其它数据库以便于以后分析
SQL> exec DBMS_SWRF_INTERNAL.AWR_EXTRACT(dmpfile => 'awr_data.dmp', mpdir => 'DIR_BDUMP', bid => 1003, eid => 1013);
3.2.9 q移AWR数据文g到其他数据库
SQL> exec DBMS_SWRF_INTERNAL.AWR_LOAD(SCHNAME => 'AWR_TEST', dmpfile => 'awr_data.dmp', dmpdir => 'DIR_BDUMP');
?/span>AWR数据转移?/span>SYS模式中:
SQL> exec DBMS_SWRF_INTERNAL.MOVE_TO_AWR (SCHNAME => 'TEST');
?/span>. AWR 报告分析
q部分内容,可以参?/span>statspackQ这2个内定w差不多?/span>
statspack安装使用 ?/span> report 分析
http://blog.csdn.net/tianlesoftware/archive/2009/10/16/4682329.aspx
4.1 SQL ordered by Elapsed Time
记录了执行d旉?/span>TOP SQL(h意是监控范围内该SQL的执行时间dQ而不是单?/span>SQL执行旉 Elapsed Time = CPU Time + Wait Time)?/span>
Elapsed Time(S): SQL语句执行用L长,此排序就是按照这个字D进行的。注意该旉不是单个SQL跑的旉Q而是监控范围?/span>SQL执行ơ数的d旉。单位时间ؓU?/span>Elapsed Time = CPU Time + Wait Time
CPU Time(s): ?/span>SQL语句执行?/span>CPU占用旉L长,此时间会于{于Elapsed Time旉。单位时间ؓU?/span>
Executions: SQL语句在监控范围内的执行次数总计?/span>
Elap per Exec(s): 执行一?/span>SQL的^均时间。单位时间ؓU?/span>
% Total DB Time: ?/span>SQL?/span>Elapsed Time旉占数据库L间的癑ֈ比?/span>
SQL ID: SQL语句?/span>ID~号Q点M后就能导航到下边?/span>SQL详细列表中,点击IE的返回可以回到当?/span>SQL ID的地斏V?/span>
SQL Module: 昄?/span>SQL是用什么方式连接到数据库执行的Q如果是?/span>SQL*Plus或?/span>PL/SQL链接上来的那基本上都是有人在调试E序。一般用前台应用链接q来执行?/span>sql该位|ؓI?/span>
SQL Text: 单的sql提示Q详l的需要点?/span>SQL ID?/span>
4.2 SQL ordered by CPU Time:
记录了执行占CPU旉d旉最长的TOP SQL(h意是监控范围内该SQL的执行占CPU旉dQ而不是单?/span>SQL执行旉)?/span>
4.3 SQL ordered by Gets:
记录了执行占?/span>buffer gets(逻辑IO)?/span>TOP SQL(h意是监控范围内该SQL的执行占GetsdQ而不是单?/span>SQL执行所占的Gets)?/span>
4.4 SQL ordered by Reads:
记录了执行占ȝ盘物理读(物理IO)?/span>TOP SQL(h意是监控范围内该SQL的执行占盘物理LdQ而不是单?/span>SQL执行所占的盘物理?/span>)?/span>
4.5 SQL ordered by Executions:
记录了按?/span>SQL的执行次数排序的TOP SQL。该排序可以看出监控范围内的SQL执行ơ数?/span>
4.6 SQL ordered by Parse Calls:
记录?/span>SQL的Y解析ơ数?/span>TOP SQL。说到Y解析(soft prase)和硬解析(hard prase)Q就不能不说一?/span>Oracle?/span>sql的处理过E?/span>
4.7 SQL ordered by Sharable Memory:
记录?/span>SQL占用library cache的大的TOP SQL?/span>Sharable Mem (b)Q占?/span>library cache的大,单位?/span>byte?/span>
4.8 SQL ordered by Version Count:
记录?/span>SQL的打开子游标的TOP SQL?/span>
4.9 SQL ordered by Cluster Wait Time:
记录了集的{待旉?/span>TOP SQL
1. 数据库中的事g和等?/p>
SELECT event, total_waits, total_timeouts,time_waited, average_wait
FROM v$system_event
2. 查询会话中的事g和等待时?/p>
select sid, event, total_waits,average_wait
from v$session_event where sid=10;
3. 查询{待q程
SELECT sid, seq#, event, wait_time, state
FROM v$session_wait;
4. 监控全局区的性能
select * from v$sgastat;
5. 查询命中?/p>
select gethitratio
from v$librarycache
where namespace = 'SQL AREA';
6. 当前 sql 语句
select sql_text, users_executing,
executions, loads
from v$sqlarea;
7. 查询高速缓存中的命中率
select sum(pins) "Executions", sum(reloads) "Cache Misses",
sum(reloads)/sum(pins)
from v$librarycache;
8. 查询全局字典中的有效装蝲ơ数
select namespace,pins,reloads,invalidations
from v$librarycache;
9. 回滚D늚争用情况
select name, waits, gets, waits/gets "Ratio"
from v$rollstat a, v$rollname b
where a.usn = b.usn;
10. 监控表空间的 I/O 比例
select df.tablespace_name name,df.file_name "file",f.phyrds pyr,
f.phyblkrd pbr,f.phywrts pyw, f.phyblkwrt pbw
from v$filestat f, dba_data_files df
where f.file# = df.file_id
order by df.tablespace_name;
11. 监控文gpȝ?I/O 比例
select substr(a.file#,1,2) "#", substr(a.name,1,30) "Name",
a.status, a.bytes, b.phyrds, b.phywrts
from v$datafile a, v$filestat b
where a.file# = b.file#;
12. 在某个用户下找所有的索引
select user_indexes.table_name, user_indexes.index_name,uniqueness, column_name
from user_ind_columns, user_indexes
where user_ind_columns.index_name = user_indexes.index_name
and user_ind_columns.table_name = user_indexes.table_name
order by user_indexes.table_type, user_indexes.table_name,
user_indexes.index_name, column_position;
13. 监控 SGA 中字典缓冲区的命中率
select parameter, gets,Getmisses , getmisses/(gets+getmisses)*100 "miss ratio",
(1-(sum(getmisses)/ (sum(gets)+sum(getmisses))))*100 "Hit ratio"
from v$rowcache
where gets+getmisses <>0
group by parameter, gets, getmisses;
14. 监控 SGA 中共享缓存区的命中率Q应该小?1%
select sum(pins) "Total Pins", sum(reloads) "Total Reloads",
sum(reloads)/sum(pins) *100 libcache
from v$librarycache;
select sum(pinhits-reloads)/sum(pins) "hit radio",sum(reloads)/sum(pins) "reload percent"
from v$librarycache;
15. 昄所有数据库对象的类别和大小
select count(name) num_instances ,type ,sum(source_size) source_size ,
sum(parsed_size) parsed_size ,sum(code_size) code_size ,sum(error_size) error_size,
sum(source_size) +sum(parsed_size) +sum(code_size) +sum(error_size) size_required
from dba_object_size
group by type order by 2;
16. 监控 SGA 中重做日志缓存区的命中率Q应该小?1%
select name, gets, misses, immediate_gets, immediate_misses,
Decode(gets,0,0,misses/gets*100) ratio1,
Decode(immediate_gets+immediate_misses,0,0,
immediate_misses/(immediate_gets+immediate_misses)*100) ratio2
FROM v$latch WHERE name IN ('redo allocation', 'redo copy');
17. 监控内存和硬盘的排序比率Q最好它小?.10 Q增?sort_area_size
SELECT name, value FROM v$sysstat WHERE name IN ('sorts (memory)', 'sorts (disk)');
18. 监控字典~冲?/p>
select (sum(pins - reloads)) / sum(pins) "lib cache" from v$librarycache;
select (sum(gets - getmisses - usage - fixed)) / sum(gets) "row cache" from v$rowcache;
select sum(pins) "executions", sum(reloads) "cache misses while executing" from v$librarycache;
后者除以前?, 此比率小?1%, 接近 0% 为好
select sum(gets) "dictionary gets",sum(getmisses) "dictionary cache get misses"
from v$rowcache
19. ?ORACLE 字符?
select * from sys.props$ where name='NLS_CHARACTERSET';
20. 监控 MTS
select busy/(busy+idle) "shared servers busy" from v$dispatcher;
此值大?0.5 Ӟ参数需加大
select sum(wait)/sum(totalq) "dispatcher waits" from v$queue where type='dispatcher';
select count(*) from v$dispatcher;
select servers_highwater from v$mts;
servers_highwater 接近 mts_max_servers Ӟ参数需加大
21. 片E度
select tablespace_name,count(tablespace_name) from dba_free_space group by tablespace_name
having count(tablespace_name)>10;
alter tablespace name coalesce;
alter table name deallocate unused;
create or replace view ts_blocks_v as
select tablespace_name,block_id,bytes,blocks,'free space' segment_name from dba_free_space
union all
select tablespace_name,block_id,bytes,blocks,segment_name from dba_extents;
select * from ts_blocks_v;
select tablespace_name,sum(bytes),max(bytes),count(block_id) from dba_free_space
group by tablespace_name;
查看片E度高的?/p>
SELECT segment_name table_name , COUNT(*) extents
FROM dba_segments WHERE owner NOT IN ('SYS', 'SYSTEM') GROUP BY segment_name
HAVING COUNT(*) = (SELECT MAX( COUNT(*) ) FROM dba_segments GROUP BY segment_name);
22. 表、烦引的存储情况?/p>
select segment_name,sum(bytes),count(*) ext_quan from dba_extents where
tablespace_name='&tablespace_name' and segment_type='TABLE' group by tablespace_name,segment_name;
select segment_name,count(*) from dba_extents where segment_type='INDEX' and owner='&owner'
group by segment_name;
23 、找使用 CPU 多的用户 session
12 ?cpu used by this session
select a.sid,spid,status,substr(a.program,1,40) prog,a.terminal,oSUSEr,value/60/100 value
from v$session a,v$process b,v$sesstat c
where c.statistic#=12 and c.sid=a.sid and a.paddr=b.addr order by value desc;
HASH_VALUEQSQL语句的Hash倹{?br />ADDRESSQSQL语句在SGA中的地址?br />q两列被用于鉴别SQL语句Q有Ӟ两条不同的语句可能hash值相同。这时候,必须q同ADDRESS一同用来认SQL语句?br />PARSING_USER_IDQؓ语句解析W一条CURSOR的用?br />VERSION_COUNTQ语句cursor的数?br />KEPT_VERSIONSQ?br />SHARABLE_MEMORYQcursor使用的共享内存L
PERSISTENT_MEMORYQcursor使用的常d存L
RUNTIME_MEMORYQcursor使用的运行时内存L?br />SQL_TEXTQSQL语句的文本(最大只能保存该语句的前1000个字W)?br />MODULE,ACTIONQ用了DBMS_APPLICATION_INFO时session解析W一条cursor时的信息
V$SQLAREA中的其它常用?/p>
SORTS: 语句的排序数
CPU_TIME: 语句被解析和执行的CPU旉
ELAPSED_TIME: 语句被解析和执行的共用时?br />PARSE_CALLS: 语句的解析调?软、硬)ơ数
EXECUTIONS: 语句的执行次?br />INVALIDATIONS: 语句的cursor失效ơ数
LOADS: 语句载入(载出)数量
ROWS_PROCESSED: 语句q回的列L
V$SQLAREA中的q接?br />Column View Joined Column(s)
HASH_VALUE, ADDRESS V$SESSION SQL_HASH_VALUE, SQL_ADDRESS
HASH_VALUE, ADDRESS V$SQLTEXT, V$SQL, V$OPEN_CURSOR HASH_VALUE, ADDRESS
SQL_TEXT V$DB_OBJECT_CACHE NAME
CZQ?br />1.查看消耗资源最多的SQLQ?br />SELECT hash_value, executions, buffer_gets, disk_reads, parse_calls
FROM V$SQLAREA
WHERE buffer_gets > 10000000 OR disk_reads > 1000000
ORDER BY buffer_gets + 100 * disk_reads DESC;
2.查看某条SQL语句的资源消耗:
SELECT hash_value, buffer_gets, disk_reads, executions, parse_calls
FROM V$SQLAREA
WHERE hash_Value = 228801498 AND address = hextoraw('CBD8E4B0');
?span style="text-decoration: underline">数据?/strong>理中,盘I间不是DBA都会遇到的问题,问题比较常见?/p>
--1查看表空间已l用的癑ֈ?/strong> “Sum MB”表示表空间所有的数据文gd在操作系l占用磁盘空间的大小 --2比如?中查看到MLOG_NORM_SPACE表空间已使用癑ֈ比达?0%以上Q可以查看该表空间d有几个数 据文Ӟ每个数据文g是否自动扩展Q可以自动扩展的最大倹{?/p>
--- 查看 xxx 表空间是否ؓ自动扩展 --3比如MLOG_NORM_SPACE表空?/strong>目前的大ؓ19GBQ但最大每个数据文件只能ؓ20GBQ数据文件快要写满,可以增加表空间的数据文g --6如果删除表空间数据文Ӟ如下Q?/p>
select a.tablespace_name,a.bytes/1024/1024 "Sum MB",(a.bytes-b.bytes)/1024/1024 "used MB",b.bytes/1024/1024 "free MB",round(((a.bytes-b.bytes)/a.bytes)*100,2) "percent_used"
from
(select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a,
(select tablespace_name,sum(bytes) bytes,max(bytes) largest from dba_free_space group by tablespace_name) b
where a.tablespace_name=b.tablespace_name
order by ((a.bytes-b.bytes)/a.bytes) desc
比如Qtest表空间有2个数据文Ӟdatafile1?00MBQdatafile2?00MBQ那么test表空间的“Sum MB”是700MB
“userd MB”表示表空间已l用了多少
“free MB”表示表空间剩余多?br />“percent_user”表示已经使用的百分比 select file_name,tablespace_name,bytes/1024/1024 "bytes MB",maxbytes/1024/1024 "maxbytes MB" from dba_data_files
where tablespace_name='MLOG_NORM_SPACE';
select file_id,file_name,tablespace_name,autoextensible,increment_by from dba_data_files order by file_id desc;
用操作系lUNIX、Linux中的df -g命o(查看下可以用的盘I间大小)
获取创徏表空间的语句Q?/p>
select dbms_metadata.get_ddl('TABLESPACE','MLOG_NORM_SPACE') from dual;
--4认盘I间_Q增加一个数据文?/strong> alter tablespace MLOG_NORM_SPACE
add datafile '/oracle/oms/oradata/mlog/Mlog_Norm_data001.dbf'
size 10M autoextend on maxsize 20G
--5验证已经增加的数据文?/strong> select file_name,file_id,tablespace_name from dba_data_files
where tablespace_name='MLOG_NORM_SPACE'
alter tablespace MLOG_NORM_SPACE
drop datafile '/oracle/oms/oradata/mlog/Mlog_Norm_data001.dbf'
转自http://space.itpub.net/12778571/viewspace-582695
]]>