IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁數(shù)據(jù)庫Oracle → 關(guān)于Oracle一些常用腳本的匯總(2)

關(guān)于Oracle一些常用腳本的匯總(2)

時間: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)閱讀

文章評論
發(fā)表評論

熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數(shù)據(jù)庫實例的控制文件 誤刪Oracle數(shù)據(jù)庫實例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索 為UNIX服務(wù)器設(shè)置Oracle全文檢索

相關(guān)下載

    人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數(shù)字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權(quán)語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法