ORACLE學習筆記 效能優化2

2021-09-22 07:02:37 字數 2472 閱讀 9995

5.怎麼樣根據os程序快速獲得db程序資訊與正在執行的語句

有些時候,我們在os上操作,象top之後我們得到的os程序,怎麼快速根據os資訊獲得db資訊呢?

我們可以編寫如下指令碼:

$more whoit.sh

#!/bin/sh

sqlplus /nolog 100,cascade=> true);

dbms_stats.gather_table_stats(user,tablename,degree => 4,cascade => true);

這是對命令與工具包的一些總結

<1>、對於分割槽表,建議使用dbms_stats,而不是使用analyze語句。 

a) 可以並行進行,對多個使用者,多個table 

b) 可以得到整個分割槽表的資料和單個分割槽的資料。 

c) 可以在不同級別上compute statistics:單個分割槽,子分割槽,全表,所有分割槽 

d) 可以倒出統計資訊 

e) 可以使用者自動收集統計資訊 

<2>、dbms_stats的缺點 

a) 不能validate structure 

b) 不能收集chained rows, 不能收集cluster table的資訊,這兩個仍舊需要使用analyze語句。 

c) dbms_stats 預設不對索引進行analyze,因為預設cascade是false,需要手工指定為true 

<3>、對於oracle 9裡面的external table,analyze不能使用,只能使用dbms_stats來收集資訊。

6.怎麼樣快速重整索引

通過rebuild語句,可以快速重整或移動索引到別的表空間

rebuild有重建整個索引數的功能,可以在不刪除原始索引的情況下改變索引的儲存引數

語法為alter index index_name rebuild tablespace ts_name

storage(......);

如果要快速重建整個使用者下的索引,可以用如下指令碼,當然,需要根據你自己的情況做相應修改

sql> set heading off

sql> set feedback off

sql> spool d:\index.sql

sql> select 'alter index ' || index_name || ' rebuild '

||'tablespace indexes storage(initial 256k next 256k pctincrease 0);'

from all_indexes

where ( tablespace_name != 'indexes'

or next_extent != ( 256 * 1024 )

)and owner = user

sql>spool off

另外乙個合併索引的語句是

alter index index_name coalesce

這個語句僅僅是合併索引中同一級的leaf block,消耗不大,對於有些索引中存在大量空間浪費的情況下,有一些作用。

7.如何使用hint提示

在select/delete/update後寫/*+ hint */

如 select /*+ index(table_name index_name) */ col1...

注意/*和+之間不能有空格,如用hint指定使用某個索引

select /*+ index(cbotab) */ col1 from cbotab;

select /*+ index(cbotab cbotab1) */ col1 from cbotab;

select /*+ index(a cbotab1) */ col1 from cbotab a;

其中table_name是必須要寫的,且如果在查詢中使用了表的別名,在hint也要用表的別名來代替表名;

index_name可以不必寫,oracle會根據統計值選乙個索引;

如果索引名或表名寫錯了,那這個hint就會被忽略;

8.怎麼樣快速複製表或者是插入資料

快速複製表可以指定nologging選項

如:create table t1 nologging 

as select * from t2;

注意:如果在9i環境中並設定了force logging,則以上操作是無效的,並不會加快,當然,可以通過如下語句設定為no force logging。

alter database no force logging;

是否開啟了force logging,可以用如下語句檢視

sql> select force_logging from v$database;

分類: 

oralcerac

ORACLE學習筆記 效能優化1

1.查詢正在執行語句的執行計畫 也就是實際語句執行計畫 select from v sql plan where hash value select sql hash value from v session where sid 1111 其中id和parent id表示了執行數的結構,數值最大的為...

ORACLE學習筆記 效能優化4

13.怎麼樣能固定我的執行計畫 可以使用outline來固定sql語句的執行計畫,用如下語句可以建立乙個outline create oe replace outline outln name on select col1,col2 from table where 如果要刪除outline,可以採...

ORACLE學習筆記 效能優化5

18.怎麼清理臨時段 可以使用如下辦法 1 使用如下語句檢視一下認誰在用臨時段 select username,sid,serial sql address,machine,program,tablespace,segtype,contents from v session se,v sort us...