真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么看oracle的進度 如何看oracle執(zhí)行計劃

ORACLE ASM 創(chuàng)建表空間 進度情況查詢

估計你這個出問題了。

創(chuàng)新互聯(lián)2013年至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元輝縣做網(wǎng)站,已為上家服務(wù),為輝縣各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792

數(shù)據(jù)文件:

select bytes,name from v$datafile

order by name

--使用語法表空間檢查情況:

SELECT UPPER(F.TABLESPACE_NAME) "表空間名",

D.TOT_GROOTTE_MB "表空間大小(M)",

D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空間(M)",

TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,

2),

'990.99') "使用比",

F.TOTAL_BYTES "空閑空間(M)",

F.MAX_BYTES "最大塊(M)"

FROM (SELECT TABLESPACE_NAME,

ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,

ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES

FROM SYS.DBA_FREE_SPACE

GROUP BY TABLESPACE_NAME) F,

(SELECT DD.TABLESPACE_NAME,

ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB

FROM SYS.DBA_DATA_FILES DD

GROUP BY DD.TABLESPACE_NAME) D

WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME

ORDER BY 4 DESC

如何監(jiān)控Oracle數(shù)據(jù)庫中長時間運行的進程

監(jiān)控Oracle 數(shù)據(jù)庫中長時間運行進程的兩種方式,通過這些方 法,我們可以監(jiān)控單條語句的 長時間操作,監(jiān)控存儲過程的運行進度,甚至自己'生成'進度信息. 關(guān)鍵詞:監(jiān)控進度V$SESSION_LONGOPS 當Oracle 存儲過程運行時間較長時,我們希望客 戶端能了解到它在后臺執(zhí)行的狀況或者進度信息(類 似WINDOWS 安裝軟件時的進度條信息),這樣可以知 道運行在后臺的應(yīng)用進程是否終止或者休眠,更近一 步要求,最好能知道進行到哪一步驟,還有多少時間才 能完成. 簡單到一條SQL 語句的情況,如果執(zhí)行時間較長, 我們?nèi)绾蔚玫剿倪\行狀況?是否后臺還在運行?雖 然可以查看SQL 的執(zhí)行計劃了解它的執(zhí)行步驟,但如 何知道它運行到哪一個步驟了呢?如何才能估計出它 的合理的較為精確的執(zhí)行時間呢? Oracle 數(shù)據(jù)庫前端發(fā)出執(zhí)行命令后,進程在后臺 執(zhí)行,普通開發(fā)人員一般無法了解到后臺在做什么,一 般采用的方法是用DBMSOUTPUT.PUT_LINE 來打印出 來,但DBMS—OUTPUT.PUT—LINE 打印的信息受緩沖區(qū) 大小限制,如果信息較多就容易溢出,而且如果存儲過 程執(zhí)行時間較長,只有在其執(zhí)行完后,這些信息才會打 印出來,這就增加了調(diào)試周期,影響了調(diào)試效果.有的 開發(fā)人員在存儲過程中通過寫日志表的形式來記錄進 度,但需要COMMIT 后其他進程才能看到這些日志信 息,而在某些控制結(jié)構(gòu)中(如游標CURSOR 循環(huán))COM— MIT,則很容易引起ORA 一01555 錯誤,造成程序出錯. 下面介紹兩種監(jiān)控方法. 如何監(jiān)控單條長語句從ORACLE8 開始,出現(xiàn)一個新的動態(tài)視圖:V $SESSION_LONGOPS,從這個視圖可以獲知一些操作 (如全表掃描,并行查詢,RMAN,排序等)的執(zhí)行進度, 我們先來了解一下V$SESSION—LONGOPS 視圖的一些 重要字段: 列說明 sID 會話標識 5ERIAL#會話序列號 OPfE 操作的簡短描述 TARG 盯操作的對象,如xx TAR~_DESC目標描述 SOFAR 目前已執(zhí)行單位數(shù)目 ToTAIWORK 總單位數(shù)目 UNlTS 單位 START_TIME 開始執(zhí)行時間 LAST_ UPDATE_TIME 統(tǒng)計數(shù)據(jù)最后更新時間 TIME_ REMAINING 估計剩余時間c ELAPSED_SECONDS 已執(zhí)行時間(秒) MEsSAGE 統(tǒng)計數(shù)據(jù)匯總信息 USERA^^E 用戶名 ~L_ADDRES5 語句的地址,,用于和V$sql_text 等關(guān)聯(lián) 語句的hash 地址,用于和V$sql_texlSQLHASH VALUE等關(guān)聯(lián) 這個動態(tài)視圖顯示各個運行時間超過6 程.這些進程包含許多備份和恢復(fù)功能,統(tǒng)計數(shù)據(jù)收集,查詢等. 執(zhí)行以下語句就可以得到數(shù)據(jù)庫中各個長時間操 作的進程信息: select'Icfromv$sesslon_ longopswheretime_ re- malnlng0 我們也可以用圖形化工具查看,如TOAD,OEM中 均可查看長操作進程進度信息. Oracle 自帶的管理工具OracleEnterpriseManager (OEM)提供了圖形化查看長操作的功能,如: 計算機系統(tǒng)應(yīng)用2007 Quest公司的數(shù)據(jù)庫管理工具TOAD 也可以看到 長操作信息,如: 表的統(tǒng)計信息. 長時問運行的SQL 語句可以用V$SESSION—LON? 為了能監(jiān)控到查詢進程執(zhí)行的進度,必需使用 CBO 優(yōu)化器并且: 設(shè)置TlMED—STATISTICS或者SQL—TRACE 用ANALYZE語句或者DBMS—STAT 包收集相關(guān) 108 實踐經(jīng)驗P 帕cficalExpen GOPS來監(jiān)控.實際上,長時間運行的存儲過程也可以 監(jiān)控.那是否任何操作都可以通過這個視圖來監(jiān)控進 度呢?很遺憾,V$SESSION—LONGOPS 只會報告它認為 耗時長的操作.對于NEsTEDLOOP/UNIQUEINDEX READS/INDEXRANGEScANS 等執(zhí)行速度很快的操作, 2007 期計算機系統(tǒng)應(yīng)用由于它們執(zhí)行一般不超過6 秒,因此將不會出現(xiàn)在V $SESSION—LONGOPS 如何監(jiān)控自定義存儲過程單條長語句可以用上面的方法監(jiān)控,Oracle 動生成V$SE.SSION— LONGOPS 記錄.那么存儲過程中 有許多小操作,如何監(jiān)控進度呢?其實,我們也可以手 工生成V$SESSION—LONGOPS 記錄,方法是調(diào)用DBMS APPLICATION—INFO 包來生成自定義進度信息. 從Oracle7.2 開始,提供了DBMS—APPLICATION— INFo 包,通過調(diào)用這個包,應(yīng)用可以將自己的名字和 動作填寫到V$SESSION 和V$SQLAREA 的MODULE ACTION列中.V$SESSION 列出每個會話的用戶名,操 作系統(tǒng)機器名,終端名,程序名等. 應(yīng)用可以在執(zhí)行模塊時設(shè)置模塊名和動作名,模 塊名一般是甩戶自定義的.而動作名一般描述模塊中 的當前執(zhí)行的事務(wù)的名字. DBMSAPPLICATION_INFO 包包含以下過程 SET_ MODULE 設(shè)置當前運行程序的模塊名 SET__AEl'ION 設(shè)置當前模塊的當前動作名 SESSION—LON-在V$SESSIONLONGOPS視圖中 GoPS 插入一行進度信息 SETMODULE過程設(shè)置模塊名和動作名: createorreplaceproceduredel—cust(v_cust—Id varchar2) begindbms—— application—— info.set— module(module—— name="delcust". actlon_name="deletetablecust)i deletefromcustwherecustld=v_ cusLId; dbms_appllcatlon— Info.seLmodule(,); end;以上設(shè)置的模塊名和動作名可以通過查詢V $sqlarea 獲取. 如:selectsql—text,module,actionfromv $sqlareawheremodule="del_cust: sql_textmoduleadion Deletefr0mcustdel_ custdeletetableoust 1rowselected. SET_SESSION—LONGOPS 過程用于在V$session— longops 中插入一行,開發(fā)人員可以調(diào)用此過程設(shè)置長 時間操作的狀態(tài)信息,這樣,任何其他其他會話都可以 看到這個進度信息.如下例所示: declare nohlntnumberdefaultdbmsapplicatlon_info.set_ session— Iongops_ nohint; IdndexnumberdefaultInohlnt: slnonumber;begin forlIn1..8888888888 loop update....; dbms_ appllcaflon— Info.setsesslon_ longops (rlndex=l_rlndex, slno=I_slno. op_name="updateahugetable. target=126, target_desc='.msgdescription context=0.sOfar=j. totalwork=8888888888. units=loops endloop;end; 然后,從另一個會話來執(zhí)行以下語句selectfromv$sesslon_ longopswheretlmere? malnlng0; 也可以用圖形化工具TOAD 或OEM來查看. 因此,采用本文說明的方法,Oracle 開發(fā)人員可以 比較方便的監(jiān)控長操作進程的進度信息,也可以自己 設(shè)置監(jiān)控信息,來了解后臺存儲過程的運行效率.甚 至,可以在存儲過程或SQL 語句提交執(zhí)行后馬上觀察 其執(zhí)行進度,如果比較緩慢,則可以中斷其執(zhí)行,進行 調(diào)優(yōu),從而縮短調(diào)試周期,提高開發(fā)效率.

ORACLE 怎么查看索引重建進度情況

索引上次重建日期可以從 user_objects 數(shù)據(jù)字典視圖中得到,不需要 dba 權(quán)限。例如您的索引是 your_index, 你想查改所用最近被重建的時間:

select OBJECT_NAME, timestamp, LAST_DDL_TIME from usr_objects where OBJECT_NAME='YOUR_INDEX' and object_type='INDEX';

其中 last_ddl_time 就是該索引最近一次被重建的時間

Oracle如何查看執(zhí)行計劃

一、通過PL/SQL Dev工具

1、直接File-New-Explain Plan Window,在窗口中執(zhí)行sql可以查看計劃結(jié)果。其中,Cost表示cpu的消耗,單位為n%,Cardinality表示執(zhí)行的行數(shù),等價Rows。

2、先執(zhí)行 EXPLAIN PLAN FOR select * from tableA where paraA=1,再 select * from table(DBMS_XPLAN.DISPLAY)便可以看到oracle的執(zhí)行計劃了,看到的結(jié)果和1中的一樣,所以使用工具的時候推薦使用1方法。

注意:PL/SQL Dev工具的Command window中不支持set autotrance on的命令。還有使用工具方法查看計劃看到的信息不全,有些時候我們需要sqlplus的支持。

二、通過sqlplus

1.最簡單的辦法

Sql set autotrace on

Sql select * from dual;

執(zhí)行完語句后,會顯示explain plan 與 統(tǒng)計信息。

這個語句的優(yōu)點就是它的缺點,這樣在用該方法查看執(zhí)行時間較長的sql語句時,需要等待該語句執(zhí)行成功后,才返回執(zhí)行計劃,使優(yōu)化的周期大大增長。如果不想執(zhí)行語句而只是想得到執(zhí)行計劃可以采用:

Sql set autotrace traceonly

這樣,就只會列出執(zhí)行計劃,而不會真正的執(zhí)行語句,大大減少了優(yōu)化時間。雖然也列出了統(tǒng)計信息,但是因為沒有執(zhí)行語句,所以該統(tǒng)計信息沒有用處,如果執(zhí)行該語句時遇到錯誤,解決方法為:

(1)在要分析的用戶下:

Sqlplus @ ?

dbmsadminutlxplan.sql

(2) 用sys用戶登陸

Sqlplus @ ?sqlplusadminplustrce.sql

Sqlplus grant plustrace to user_name;

- - user_name是上面所說的分析用戶

2.用explain plan命令

(1) sqlplus explain plan for select * from testdb.myuser

(2) sqlplus select * from table(dbms_xplan.display);

上面這2種方法只能為在本會話中正在運行的語句產(chǎn)生執(zhí)行計劃,即我們需要已經(jīng)知道了哪條語句運行的效率很差,我們是有目的只對這條SQL語句去優(yōu)化。其實,在很多情況下,我們只會聽一個客戶抱怨說現(xiàn)在系統(tǒng)運行很慢,而我們不知道是哪個SQL引起的。此時有許多現(xiàn)成的語句可以找出耗費資源比較多的語句,如:

SELECT ADDRESS, substr(SQL_TEXT,1,20) Text, buffer_gets, executions,

buffer_gets/executions AVG FROM v$sqlarea

WHERE executions0 AND buffer_gets 100000 ORDER BY 5;

ADDRESS TEXT BUFFER_GETS EXECUTIONS AVG

-------- ---------------------------------------- ----------- ---------- ------------------------------------------------------------

66D83D64 select t.name, (sel 421531 60104 7.01336017

66D9E8AC select t.schema, t.n 1141739 2732 417.913250

66B82BCC select s.synonym_nam 441261 6 73543.5

從而對找出的語句進行進一步優(yōu)化。當然我們還可以為一個正在運行的會話中運行的所有SQL語句生成執(zhí)行計劃,這需要對該會話進行跟蹤,產(chǎn)生trace文件,然后對該文件用tkprof程序格式化一下,這種得到執(zhí)行計劃的方式很有用,因為它包含其它額外信息,如SQL語句執(zhí)行的每個階段(如Parse、Execute、Fetch)分別耗費的各個資源情況(如CPU、DISK、elapsed等)。

3、啟用SQL_TRACE跟蹤所有后臺進程活動:

全局參數(shù)設(shè)置: .OracleHome/admin/SID/pfile中指定: SQL_TRACE = true (10g)

當前session中設(shè)置:

SQL alter session set SQL_TRACE=true;

SQL select * from dual;

SQL alter session set SQL_TRACE=false;

對其他用戶進行跟蹤設(shè)置:

SQL select sid,serial#,username from v$session where username='XXX';

SID SERIAL# USERNAME

------ ---------- ------------------

127 31923 A

128 54521 B

開啟跟蹤:SQL exec dbms_system.set_SQL_TRACE_in_session(127,31923,true);

關(guān)閉跟蹤:SQL exec dbms_system.set_SQL_TRACE_in_session(127,31923,false);

然后使用oracle自帶的tkprof命令行工具格式化跟蹤文件。

4、使用10046事件進行查詢:

10046事件級別:

Lv1 - 啟用標準的SQL_TRACE功能,等價于SQL_TRACE

Lv4 - Level 1 + 綁定值(bind values)

Lv8 - Level 1 + 等待事件跟蹤

Lv12 - Level 1 + Level 4 + Level 8

全局設(shè)定:

OracleHome/admin/SID/pfile中指定: EVENT="10046 trace name context forever,level 12"

當前session設(shè)定:

開啟:SQL alter session set events '10046 trace name context forever, level 8';

關(guān)閉:SQL alter session set events '10046 trace name context off';

對其他用戶進行設(shè)置:

SQL select sid,serial#,username from v$session where username='XXX';

SID SERIAL# USERNAME

------ ---------- ------------------

127 31923 A

SQL exec dbms_system.set_ev(127,31923,10046,8,'A');

5、使用tkprof格式化跟蹤文件: (根據(jù)下面SQL語句得到的文件都不存在該目錄下,郁悶啊,懵懂啊...)

一般,一次跟蹤可以分為以下幾步:

1、界定需要跟蹤的目標范圍,并使用適當?shù)拿顔⒂盟韪櫋?/p>

2、經(jīng)過一段時間后,停止跟蹤。此時應(yīng)該產(chǎn)生了一個跟蹤結(jié)果文件。

3、找到跟蹤文件,并對其進行格式化,然后閱讀或分析。

--使用一下SQL找到當前session的跟蹤文件:

SELECT d.value|| '/' ||lower(rtrim(i.instance, chr( 0 )))|| '_ora_' ||p.spid|| '.trc' trace_file_name

from

( select p.spid from v$mystat m,v$session s, v$process p

where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p,

( select t.instance from v$thread t,v$parameter v

where v.name = 'thread' and (v.value = 0 or t.thread# = to_number(v.value))) i,

( select value from v$parameter where name = 'user_dump_dest' ) d;

-- 其它用戶的 session

SELECT d.value|| '/' ||lower(rtrim(i.instance, chr( 0 )))|| '_ora_' ||p.spid|| '.trc' trace_file_name

from

( select p.spid from v$session s, v$process p

where s.sid= '27' and s. SERIAL#= '30' and p.addr = s.paddr) p,

( select t.instance from v$thread t,v$parameter v

where v.name = 'thread' and (v.value = 0 or t.thread# = to_number(v.value))) i,

( select value from v$parameter where name = 'user_dump_dest' ) d;

--查找后使用tkprof命令,將TRACE文件格式為到D盤的explain_format.txt文件中

SQL $tkprof d:/oracle/admin/FZLGFM/udump/fzlgfm_ora_3468.trc d:/explain_format.txt

文件內(nèi)容大致如下(看不太懂....懵懂啊.....天啊....神啊.....過幾時就懂了/////////////)

TKPROF: Release 9.2.0.1.0 - Production on 星期二 4月 20 13:59:20 2010

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

Trace file: d:/oracle/admin/FZLGFM/udump/fzlgfm_ora_3468.trc

Sort options: default

********************************************************************************

count = number of times OCI procedure was executed

cpu = cpu time in seconds executing

elapsed = elapsed time in seconds executing

disk = number of physical reads of buffers from disk

query = number of buffers gotten for consistent read

current = number of buffers gotten in current mode (usually for update)

rows = number of rows processed by the fetch or execute call

********************************************************************************

alter session set events '10046 trace name context forever, level 8'

call count cpu elapsed disk query current rows

------- ------ -------- ---------- ---------- ---------- ---------- ----------

Parse 0 0.00 0.00 0 0 0 0

Execute 1 0.00 0.00 0 0 0 0

Fetch 0 0.00 0.00 0 0 0 0

------- ------ -------- ---------- ---------- ---------- ---------- ----------

total 1 0.00 0.00 0 0 0 0

Misses in library cache during parse: 0

Misses in library cache during execute: 1

Optimizer goal: CHOOSE

Parsing user id: SYS


文章名稱:怎么看oracle的進度 如何看oracle執(zhí)行計劃
文章路徑:http://weahome.cn/article/hpjegj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部