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...