熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

關於Oracle一些常用腳本的匯總(2)

2013-11-13 15:54:46  來源: Oracle 

  碎片檢查

  select tablespace_namesqrt(max(blocks)/sum(blocks))*

  (/sqrt(sqrt(count(blocks)))) fsfi

  from dba_free_space

  group by tablespace_name order by ;

  fsfi值越小碎片越大 自由空間碎片索引

  檢查reverse_key index

  select oobject_name

  from dba_objects o

  where wner=DB_ACCT

  AND OOBJECT_ID IN

  (SELECT IOBJ# FROM SYSIND$ I

  WHERE BITAND(IPROPERTY)=)

  查具體後台進程號

  select spid from v$session a v$process b where aPADDR=bADDR and sid=

  查看死鎖表

  SELECT SID DECODE(BLOCK NO YES ) BLOCKER

  DECODE(REQUEST NOYES ) WAITER

  FROM V$LOCK

  WHERE REQUEST > OR BLOCK >

  ORDER BY block DESC;

  查看剩余表空間

  select atablespace_namefree/total* pct_freefree// 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 atablespace_name=btablespace_name

  order by pct_free;

  查看創建索引的進度

  select sidmessage from  v$session_longops where sid = order by  start_time

  查看繳費到帳

  SELECT AREA_IDto_char(sysdateyyyymmdd hh:mi:ss)to_char(count()) as cnt FROM ACCT_PAY_INTERFACE

  WHERE PAY_DATE>=sysdate and FLAG= group by AREA_Id

  查看最消耗資源的sql

  SELECT * FROM  (SELECT PARSING_USER_ID EXECUTIONSSORTSCOMMAND_TYPE

  DISK_READS sql_text FROM v$sqlarea ORDER BY disk_reads DESC ) WHERE ROWNUM<

  查看占用系統資源的進程號spid

  SELECT ausernameamachineaprogramasidaserial#astatuscpiececsql_text

  FROM v$session av$process bv$sqltext c WHERE bspid= AND baddr=apaddr AND asql_address=caddress(+)

  ORDER BY cpiece

  查看占用系統io較大的session

  SELECT sesidseserial#prSPIDseusernamesestatusseterminalseprogram

  seMODULEsesql_addresssteventstptextsiphysical_readssiblock_changes

  FROM v$session se v$session_wait stv$sess_io siv$process pr WHERE stsid=sesid  AND stsid=sisid

  AND sePADDR=prADDR AND sesid> AND stwait_time= AND stevent NOT LIKE %SQL% ORDER BY physical_reads DESC

  對檢索出的結果的幾點說明

  我是按每個正在等待的session已經發生的物理讀排的序因為它與實際的IO相關

  你可以看一下這些等待的進程都在忙什麼語句是否合理?

  Select sql_address from v$session where sid=;

  Select * from v$sqltext where address=;

  執行以上兩個語句便可以得到這個session的語句

  你也以用alter system kill session sidserial#;把這個session殺掉

  應觀注一下event這列這是我們調優的關鍵一列下面對常出現的event做以簡要的說明

  abuffer busy waitsfree buffer waits這兩個參數所標識是dbwr是否夠用的問題與IO很大相關的當v$session_wait中的free buffer wait的條目很小或沒有的時侯說明你的系統的dbwr進程決對夠用不用調整free buffer wait的條目很多你的系統感覺起來一定很慢這時說明你的dbwr已經不夠用了它產生的wio已經成為你的數據庫性能的瓶頸這時的解決辦法如下

  a增加寫進程同時要調整db_block_lru_latches參數

  示例修改或添加如下兩個參數

  db_writer_processes=

  db_block_lru_latches=

  a開異步IOIBM這方面簡單得多hp則麻煩一些可以與Hp工程師聯系

  bdb file sequential read指的是順序讀即全表掃描這也是我們應該盡量減少的部分解決方法就是使用索引sql調優同時可以增大db_file_multiblock_read_count這個參數

  cdb file scattered read這個參數指的是通過索引來讀取同樣可以通過增加db_file_multiblock_read_count這個參數來提高性能

  dlatch free與栓相關的了需要專門調節

  e其他參數可以不特別觀注

  外部聯接+的用法

   外部聯接+按其在=的左邊或右邊分左聯接和右聯接

  若不帶+運算符的表中的一個行不直接匹配於帶+預算符的表中的任何行

  則前者的行與後者中的一個空行相匹配並被返回若二者均不帶+

  則二者中無法匹配的均被返回利用外部聯接+

  可以替代效率十分低下的 not in 運算大大提高運行速度例如下面這條命令執行起來很慢

  select aempno from emp a where aempno not in

  (select empno from emp where job=SALE);

   倘若利用外部聯接改寫命令如下:

  select aempno from emp a emp b

  where aempno=bempno(+)

  and bempno is null

  and bjob=SALE;

   可以發現運行速度明顯提高

  如何更改UNDO tablespace

  create undo tablespace undotbs datafile D:\oracle\product\\oradata\qa\undotbsdbf size M;

  alter system set undo_tablespace=undotbs scope=both;

  create pfile from spfile;

  alter tablespace undotbs offline;

  drop tablespace undotbs 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 sidnamevalue 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 bytes

  Fixed Size                  bytes

  Variable Size             bytes

  Database Buffers          bytes

  Redo Buffers               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    

  Next log sequence to archive  

  Current log sequence          

  接下來啟動另外一個節點完成歸檔模式的變更過程


From:http://tw.wingwit.com/Article/program/Oracle/201311/17504.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.