時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)
碎片檢查
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;
查看創(chuàng)建索引的進度
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
查看占用系統(tǒng)資源的進程號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
查看占用系統(tǒng)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
對檢索出的結(jié)果的幾點說明:
1、我是按每個正在等待的session已經(jīng)發(fā)生的物理讀排的序,因為它與實際的IO相關(guān)。
2、你可以看一下這些等待的進程都在忙什么,語句是否合理?
Select sql_address from v$session where sid=;
Select * from v$sqltext where address=;
執(zhí)行以上兩個語句便可以得到這個session的語句。
你也以用alter system kill session 'sid,serial#';把這個session殺掉。
#p#副標(biāo)題#e#
3、應(yīng)觀注一下event這列,這是我們調(diào)優(yōu)的關(guān)鍵一列,下面對常出現(xiàn)的event做以簡要的說明:
a、buffer busy waits,free buffer waits這兩個參數(shù)所標(biāo)識是dbwr是否夠用的問題,與IO很大相關(guān)的,當(dāng)v$session_wait中的free buffer wait的條目很小或沒有的時侯,說明你的系統(tǒng)的dbwr進程決對夠用,不用調(diào)整;free buffer wait的條目很多,你的系統(tǒng)感覺起來一定很慢,這時說明你的dbwr已經(jīng)不夠用了,它產(chǎn)生的wio已經(jīng)成為你的數(shù)據(jù)庫性能的瓶頸,這時的解決辦法如下:
a.1增加寫進程,同時要調(diào)整db_block_lru_latches參數(shù)
示例:修改或添加如下兩個參數(shù)
db_writer_processes=4
db_block_lru_latches=8
a、2開異步IO,IBM這方面簡單得多,hp則麻煩一些,可以與Hp工程師聯(lián)系。
b、db file sequential read,指的是順序讀,即全表掃描,這也是我們應(yīng)該盡量減少的部分,解決方法就是使用索引、sql調(diào)優(yōu),同時可以增大db_file_multiblock_read_count這個參數(shù)。
c、db file scattered read,這個參數(shù)指的是通過索引來讀取,同樣可以通過增加db_file_multiblock_read_count這個參數(shù)來提高性能。
d、latch free,與栓相關(guān)的了,需要專門調(diào)節(jié)。
e、其他參數(shù)可以不特別觀注
外部聯(lián)接"+"的用法
---- 外部聯(lián)接"+"按其在"="的左邊或右邊分左聯(lián)接和右聯(lián)接.
若不帶"+"運算符的表中的一個行不直接匹配于帶"+"預(yù)算符的表中的任何行,
則前者的行與后者中的一個空行相匹配并被返回.若二者均不帶’+’
則二者中無法匹配的均被返回.利用外部聯(lián)接"+"
可以替代效率十分低下的 not in 運算,大大提高運行速度.例如,下面這條命令執(zhí)行起來很慢
select a.empno from emp a where a.empno not in
(select empno from emp1 where job=’SALE’);
---- 倘若利用外部聯(lián)接,改寫命令如下:
select a.empno from emp a ,emp1 b
where a.empno=b.empno(+)
and b.empno is null
and b.job=’SALE’;
---- 可以發(fā)現(xiàn),運行速度明顯提高
如何更改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的參數(shù)文件和單實例參數(shù)文件不同,所以修改參數(shù)文件時需要注意。
首先設(shè)置歸檔路徑:
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
然后關(guān)閉兩個實例,啟動實例,更改數(shù)據(jù)庫為歸檔模式:
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
接下來啟動另外一個節(jié)點,完成歸檔模式的變更過程。
本文出自 "dbpath" 博客,請務(wù)必保留此出處http://dbpath.blog.51cto.com/405409/83603
關(guān)鍵詞標(biāo)簽:Oracle常用腳本
相關(guān)閱讀
熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數(shù)據(jù)庫實例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索
人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數(shù)字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權(quán)語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法