碎片检查
select tablespace_name,sqrt(max(blocks)/sum(blocks))*
(100/sqrt(sqrt(count(blocks)))) fsfi
from dba_free_space
group by tablespace_name order by 2;
fsfi值越小,碎片越大 自由空间碎片索引
检查reverse_key index
select o.object_name
from dba_objects o
where wner='DB_ACCT'
AND O.OBJECT_ID IN
(SELECT I.OBJ# FROM SYS.IND$ I
WHERE BITAND(I.PROPERTY,4)=4)
查具体后台进程号
select spid from v$session a ,v$process b where a.PADDR=b.ADDR and sid=''
查看死锁表
SELECT SID, DECODE(BLOCK, 0, 'NO', 'YES' ) BLOCKER,
DECODE(REQUEST, 0, 'NO','YES' ) WAITER
FROM V$LOCK
WHERE REQUEST > 0 OR BLOCK > 0
ORDER BY block DESC;
查看剩余表空间
select a.tablespace_name,free/total*100 pct_free,free/1024/1024 "free(M)" from
(select sum(bytes) free ,tablespace_name from dba_free_space group by tablespace_name) a,
(select sum(bytes) total ,tablespace_name from dba_data_files group by tablespace_name) b
where a.tablespace_name=b.tablespace_name
order by pct_free;
查看创建索引的进度
select sid,message from v$session_longops where sid ='' order by start_time
查看缴费到帐
SELECT AREA_ID,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(count(1)) as cnt FROM ACCT_PAY_INTERFACE
WHERE PAY_DATE>=sysdate-1 and FLAG='0' group by AREA_Id
查看最消耗资源的sql
SELECT * FROM (SELECT PARSING_USER_ID EXECUTIONS,SORTS,COMMAND_TYPE,
DISK_READS, sql_text FROM v$sqlarea ORDER BY disk_reads DESC ) WHERE ROWNUM<10
查看占用系统资源的进程号spid
SELECT a.username,a.machine,a.program,a.sid,a.serial#,a.status,c.piece,c.sql_text
FROM v$session a,v$process b,v$sqltext c WHERE b.spid='' AND b.addr=a.paddr AND a.sql_address=c.address(+)
ORDER BY c.piece
查看占用系统io较大的session
SELECT se.sid,se.serial#,pr.SPID,se.username,se.status,se.terminal,se.program,
se.MODULE,se.sql_address,st.event,st.p1text,si.physical_reads,si.block_changes
FROM v$session se, v$session_wait st,v$sess_io si,v$process pr WHERE st.sid=se.sid AND st.sid=si.sid
AND se.PADDR=pr.ADDR AND se.sid>6 AND st.wait_time=0 AND st.event NOT LIKE '%SQL%' ORDER BY physical_reads DESC
对检索出的结果的几点说明:
1、我是按每个正在等待的session已经发生的物理读排的序,因为它与实际的IO相关。
2、你可以看一下这些等待的进程都在忙什么,语句是否合理?
Select sql_address from v$session where sid=;
Select * from v$sqltext where address=;
执行以上两个语句便可以得到这个session的语句。
你也以用alter system kill session 'sid,serial#';把这个session杀掉。
#p#副标题#e#
3、应观注一下event这列,这是我们调优的关键一列,下面对常出现的event做以简要的说明:
a、buffer busy waits,free buffer waits这两个参数所标识是dbwr是否够用的问题,与IO很大相关的,当v$session_wait中的free buffer wait的条目很小或没有的时侯,说明你的系统的dbwr进程决对够用,不用调整;free buffer wait的条目很多,你的系统感觉起来一定很慢,这时说明你的dbwr已经不够用了,它产生的wio已经成为你的数据库性能的瓶颈,这时的解决办法如下:
a.1增加写进程,同时要调整db_block_lru_latches参数
示例:修改或添加如下两个参数
db_writer_processes=4
db_block_lru_latches=8
a、2开异步IO,IBM这方面简单得多,hp则麻烦一些,可以与Hp工程师联系。
b、db file sequential read,指的是顺序读,即全表扫描,这也是我们应该尽量减少的部分,解决方法就是使用索引、sql调优,同时可以增大db_file_multiblock_read_count这个参数。
c、db file scattered read,这个参数指的是通过索引来读取,同样可以通过增加db_file_multiblock_read_count这个参数来提高性能。
d、latch free,与栓相关的了,需要专门调节。
e、其他参数可以不特别观注
外部联接"+"的用法
---- 外部联接"+"按其在"="的左边或右边分左联接和右联接.
若不带"+"运算符的表中的一个行不直接匹配于带"+"预算符的表中的任何行,
则前者的行与后者中的一个空行相匹配并被返回.若二者均不带’+’
则二者中无法匹配的均被返回.利用外部联接"+"
可以替代效率十分低下的 not in 运算,大大提高运行速度.例如,下面这条命令执行起来很慢
select a.empno from emp a where a.empno not in
(select empno from emp1 where job=’SALE’);
---- 倘若利用外部联接,改写命令如下:
select a.empno from emp a ,emp1 b
where a.empno=b.empno(+)
and b.empno is null
and b.job=’SALE’;
---- 可以发现,运行速度明显提高
如何更改UNDO tablespace
create undo tablespace undotbs2 datafile 'D:\oracle\product\10.2.0\oradata\qa\undotbs2.dbf' size 40M;
alter system set undo_tablespace=undotbs2 scope=both;
create pfile from spfile;
alter tablespace undotbs1 offline;
drop tablespace undotbs1 including contents;
----将表改成
ALTER TABLE t_monitor_real_minute NOLOGGING;
Oracle RAC的参数文件和单实例参数文件不同,所以修改参数文件时需要注意。
首先设置归档路径:
SQL> alter system set log_archive_dest='/opt/oracle/archive' scope=spfile sid='*';
System altered.
SQL> select sid,name,value from v$spparameter where name='log_archive_dest';
SID NAME VALUE
---------- -------------------- ------------------------------
* log_archive_dest /opt/oracle/archive
然后关闭两个实例,启动实例,更改数据库为归档模式:
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 1258291200 bytes
Fixed Size 1978336 bytes
Variable Size 352325664 bytes
Database Buffers 889192448 bytes
Redo Buffers 14794752 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
SQL> alter database open;
Database altered.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /opt/oracle/archive
Oldest online log sequence 83
Next log sequence to archive 84
Current log sequence 84
接下来启动另外一个节点,完成归档模式的变更过程。
本文出自 "dbpath" 博客,请务必保留此出处https://dbpath.blog.51cto.com/405409/83603
关键词标签:Oracle常用脚本
相关阅读
热门文章 Oracle中使用alter table来增加,删除,修改列oracle中使用SQL语句修改字段类型-oracle修使用低权限Oracle数据库账户得到管理员权限Oracle对user的访问控制
人气排行 ORACLE SQL 判断字符串是否为数字的语句Oracle中使用alter table来增加,删除,修改列的语法ORACLE和SQL语法区别归纳(1)oracle grant 授权语句如何加速Oracle大批量数据处理Oracle删除表的几种方法ORACLE修改IP地址后如何能够使用Oracle 10g创建表空间和用户并指定权限
查看所有0条评论>>