這種思路不好,實(shí)現(xiàn)不了。
創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括永城網(wǎng)站建設(shè)、永城網(wǎng)站制作、永城網(wǎng)頁制作以及永城網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,永城網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到永城省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
需要換一種想法。
例如:
1.C#寫一個實(shí)時監(jiān)控程序,Oracle寫包和觸發(fā)器。
2.監(jiān)控程序的作用是實(shí)時的調(diào)用包,然后返回相關(guān)數(shù)據(jù)。
3.觸發(fā)器的作用是,當(dāng)某個表有數(shù)據(jù)插入或者刪除,或者某個字段被修改了會直接觸發(fā)。將想要寫的數(shù)據(jù),寫進(jìn)指定表或視圖。
整體思路是:
當(dāng)某個表有變動,觸發(fā)器就觸發(fā)并寫入數(shù)據(jù)到指定表或視圖。
一段時間后,C#監(jiān)控程序調(diào)用Oracle的包,包從指定表或視圖獲取數(shù)據(jù),然后將數(shù)據(jù)返回到監(jiān)控端,監(jiān)控端再觸發(fā)特定的C#代碼。
在數(shù)據(jù)庫管理與維護(hù)中,我們總會遇到一個問題:我們創(chuàng)建的索引是否會被某些SQL語句使用呢?換個通俗表達(dá)方式:我創(chuàng)建的索引是否是未使用的索引(unused Indexes),是否有價值呢?如果創(chuàng)建的某個索引是Unused Indexes,尤其是沒有合理規(guī)劃索引的系統(tǒng)或那些管理控制不規(guī)范的系統(tǒng)。有可能建立了N個索引,其實(shí)有些索引都是沒有任何SQL會使用,那么此時這些多余的索引其實(shí)會帶來兩個問題:1:浪費(fèi)存儲空間,尤其是大表的索引,浪費(fèi)的存儲空間尤其可觀; 2:加重DML操作(UPDATE、INSERT、DELETE)的開銷。
ORACLE其實(shí)提供了監(jiān)控索引使用情況的功能。ALTER INDEX index_name MONITORING USAGE; 我們下面來測試驗(yàn)證一下吧。
創(chuàng)建一個表TEST作為實(shí)驗(yàn)測試驗(yàn)證的樣例
CREATE TABLE TEST
(
ID NUMBER(10),
NAME VARCHAR2(32)
);
CREATE INDEX IDX_TEST_ID ON TEST(ID);
INSERT INTO TEST
SELECT 1001, 'Kerry' FROM DUAL UNION ALL
SELECT 1002, 'Ken' FROM DUAL UNION ALL
SELECT 1003, 'Jimmy' FROM DUAL UNION ALL
SELECT 1004, 'Jack' FROM DUAL;
COMMIT;
execute dbms_stats.gather_table_stats(ownname = 'ETL', tabname ='TEST', estimate_percent =DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt = 'FOR ALL COLUMNS SIZE AUTO');啟用對索引IDX_TEST_ID的監(jiān)控
ALTER INDEX IDX_TEST_ID MONITORING USAGE;此時觀察V$OBJECT_USAGE表數(shù)據(jù)的變化,如下所示,MONITORIN字段值變?yōu)閅ES,表示索引IDX_TEST_ID已經(jīng)被置于監(jiān)控狀態(tài)。USED字段為NO表示暫時沒有SQL使用該索引SQL COL INDEX_NAME FOR A20
SQL COL TABLE_NAME FOR A10
SQL COL MONITORING FOR A10
SQL COL USED FOR A10
SQL COL START_MONITORING FOR A20
SQL COL END_MONITORING FOR A20
SQL SELECT * FROM V$OBJECT_USAGE;
INDEX_NAME TABLE_NAME MONITORING USED START_MONITORING END_MONITORING------------ ---------- ---------- ---- -------------------- ----------------IDX_TEST_ID TEST YES NO 11/28/2015 14:57:41此時我們執(zhí)行下面SQL,因?yàn)榇藭r使用全表掃描,那么索引IDX_TEST_ID依然沒有被使用,此時可以查看V$OBJECT_USAGE進(jìn)行驗(yàn)證。
SQL SET AUTOTRACE ON;
SQL SELECT * FROM TEST WHERE ID =1001;
ID NAME
---------- --------------------------------1001 Kerry
Execution Plan
--------------------------------------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost |----------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | 9 | 2 || 1 | TABLE ACCESS FULL| TEST | 1 | 9 | 2 |----------------------------------------------------------Note
-----
- 'PLAN_TABLE' is old version
Statistics
----------------------------------------------------------1 recursive calls
0 db block gets
4 consistent gets
0 physical reads
0 redo size
578 bytes sent via SQL*Net to client
492 bytes received via SQL*Net from client2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
clip_image001
如下所示,此時索引IDX_TEST_ID依然沒有被使用。
clip_image002
我們使用索引提示強(qiáng)制下面SQL使用索引IDX_TEST_IDSELECT /*+ INDEX(TEST IDX_TEST_ID) */* FROM TEST WHERE ID =1001;此時你就會發(fā)現(xiàn)USED的值變?yōu)榱薡ES了。
clip_image003
ALTER INDEX IDX_TEST_ID NOMONITORING USAGE;執(zhí)行上面命令后,在V$OBJECT_USAGE表中,就會更新表TEST記錄的END_MONITORING、MONITORING的值。
clip_image004
如果你又啟用監(jiān)控索引使用情況,那么系統(tǒng)會更新START_MONITORING、END_MONITORING字段的值(END_MONITORING的值更新為NULL)。如果刪除表TEST,此時你會發(fā)現(xiàn)V$OBJECT_USAGE對象中關(guān)于表TEST的記錄也不見了。
注意:SELECT * FROM V$OBJECT_USAGE; 只能查看當(dāng)前用戶下被監(jiān)控的索引信息。即使sys、system用戶也不能查看其它用戶的信息。
在測試過程中有個小疑問,就是在準(zhǔn)備測試環(huán)境時,如果不對表收集統(tǒng)計信息的話,那么即使SQL走全表掃描,你依然發(fā)現(xiàn)V$OBJECT_USAGE中索引被標(biāo)記使用了。如下所示DROP TABLE TEST PURGE;
CREATE TABLE TEST
(
ID NUMBER(10),
NAME VARCHAR2(32)
);
CREATE INDEX IDX_TEST_ID ON TEST(ID);
INSERT INTO TEST
SELECT 1001, 'Kerry' FROM DUAL UNION ALL
SELECT 1002, 'Ken' FROM DUAL UNION ALL
SELECT 1003, 'Jimmy' FROM DUAL UNION ALL
SELECT 1004, 'Jack' FROM DUAL;
COMMIT;
ALTER INDEX IDX_TEST_ID MONITORING USAGE;SQL SET AUTOTRACE ON;
SQL SELECT * FROM TEST WHERE ID =1001;
ID NAME
---------- --------------------------------1001 Kerry
Execution Plan
--------------------------------------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost |----------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | 31 | 2 || 1 | TABLE ACCESS FULL| TEST | 1 | 31 | 2 |----------------------------------------------------------Note
-----
- 'PLAN_TABLE' is old version
Statistics
----------------------------------------------------------7 recursive calls
0 db block gets
10 consistent gets
0 physical reads
0 redo size
578 bytes sent via SQL*Net to client
492 bytes received via SQL*Net from client2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
SQL SELECT * FROM V$OBJECT_USAGE;
INDEX_NAME TABLE_NAME MONITORING USED START_MONITORING END_MONITORING------------ ---------- ---------- ------ ----------- -------------------IDX_TEST_ID TEST YES YES 11/28/2015 15:11:46那么為什么呢? 猜測是在解析生成執(zhí)行計劃時,用到了索引的一些信息,導(dǎo)致V$OBJECT_USAGE表中的字段USED被標(biāo)記為YES。
如果我們想在系統(tǒng)中監(jiān)控所有的索引,那么我們可以通過下面腳本實(shí)現(xiàn)監(jiān)控數(shù)據(jù)庫所有的索引。注意我們要排除一些系統(tǒng)表的索引、以及LOB indexes。原因有下面兩個:
1:LOB indexes不能修改,否則會報ORA-22864錯誤(ORA-22864: cannot ALTER or DROP LOB indexes)。
2:ORA-00701: object necessary for warmstarting database cannot be alteredORA-00701: object necessary for warmstarting database cannot be altered00701. 00000 - "object necessary for warmstarting database cannot be altered"*Cause: Attempt to alter or drop a database object (table, cluster, orindex) which are needed for warmstarting the database.
*Action: None.
SET PAGES 999;
SET HEADING OFF;
SPOOL run_monitor.sql
SELECT
'ALTER INDEX '||OWNER||'.'||INDEX_NAME||' MONITORING USAGE;'
FROM
DBA_INDEXES
WHERE
INDEX_TYPE != 'LOB' AND OWNER NOT IN ('SYS', 'SYSMAN', 'SYSTEM', 'MDSYS', 'WMSYS', 'TSMSYS', 'DBSNMP', 'OUTLN');
SPOOL OFF;
@run_monitor.sql
此時使用下面腳本就能查出那些索引是未使用索引,當(dāng)然監(jiān)控索引時長非常重要,太短的話有可能導(dǎo)致查詢出來的數(shù)據(jù)有問題,一般建議監(jiān)控一周后即可,OLAP系統(tǒng)則需要適當(dāng)延長監(jiān)控的時間。
SELECT I.TABLE_OWNER,
T.TABLE_NAME,
I.INDEX_NAME,
U.USED,
U.START_MONITORING,
U.END_MONITORING
FROM USER_TABLES T
INNER JOIN USER_INDEXES I
ON T.TABLE_NAME = I.TABLE_NAME
INNER JOIN V$OBJECT_USAGE U
ON U.TABLE_NAME = I.TABLE_NAME
AND I.INDEX_NAME = U.INDEX_NAME
WHERE I.TABLE_OWNER=SYS_CONTEXT('USERENV','CURRENT_USER')另外,博客Oracle - Find unused Indexes中介紹了一個查找沒有使用索引的SQL語句。如下所示statspack_unused_indexes.sqlcol owner heading "Index Owner" format a30col index_name heading "Index Name" format a30set linesize 95 trimspool on pagesize 80
select *
from
(select
owner,
index_name
from
dba_indexes di
where
di.index_type != 'LOB'
and
owner not in ('SYS', 'SYSMAN', 'SYSTEM', 'MDSYS', 'WMSYS', 'TSMSYS', 'DBSNMP', 'OUTLN')minus
select
index_owner owner,
index_name
from
dba_constraints dc
where
index_owner not in ('SYS', 'SYSMAN', 'SYSTEM', 'MDSYS', 'WMSYS', 'TSMSYS', 'DBSNMP', 'OUTLN')minus
select
p.object_owner owner,
p.object_name index_name
from
stats$snapshot sn,
stats$sql_plan p,
stats$sql_summary st,
stats$sql_plan_usage spu
where
st.sql_id = spu.sql_id
and
spu.plan_hash_value = p.plan_hash_value
and
st.hash_value = p.plan_hash_value
and
sn.snap_id = st.snap_id
and
sn.dbid = st.dbid
and
sn.instance_number = st.instance_number
and
sn.snap_id = spu.snap_id
and
sn.dbid = spu.snap_id
and
sn.instance_number = spu.instance_number
and
sn.snap_id between begin_snap and end_snapand
p.object_type = 'INDEX'
)
where owner not in ('SYS', 'SYSMAN', 'SYSTEM', 'MDSYS', 'WMSYS', 'TSMSYS', 'DBSNMP', 'OUTLN')order by 1, 2
/
這里是另一個腳本用來跟蹤未使用的索引并展示給所有索引的調(diào)用計數(shù)。最重要的是,這個腳本顯示了多列索引引用的列(這個腳本執(zhí)行時間較長,資源開銷較大。)col c1 heading 'Begin|Interval|time' format a20col c2 heading 'Search Columns' format 999col c3 heading 'Invocation|Count' format 99,999,999break on c1 skip 2
accept idxname char prompt 'Enter Index Name: '
ttitle 'Invocation Counts for index|idxname'
select
to_char(sn.begin_interval_time,'yy-mm-dd hh24') c1,p.search_columns c2,count(*) c3from
dba_hist_snapshot sn,
dba_hist_sql_plan p,
dba_hist_sqlstat st
where
st.sql_id = p.sql_id
and
sn.snap_id = st.snap_id
and
p.object_name = 'idxname'
group by
begin_interval_time,search_columns;
監(jiān)控Oracle 數(shù)據(jù)庫中長時間運(yùn)行進(jìn)程的兩種方式,通過這些方 法,我們可以監(jiān)控單條語句的 長時間操作,監(jiān)控存儲過程的運(yùn)行進(jìn)度,甚至自己'生成'進(jìn)度信息. 關(guān)鍵詞:監(jiān)控進(jìn)度V$SESSION_LONGOPS 當(dāng)Oracle 存儲過程運(yùn)行時間較長時,我們希望客 戶端能了解到它在后臺執(zhí)行的狀況或者進(jìn)度信息(類 似WINDOWS 安裝軟件時的進(jìn)度條信息),這樣可以知 道運(yùn)行在后臺的應(yīng)用進(jìn)程是否終止或者休眠,更近一 步要求,最好能知道進(jìn)行到哪一步驟,還有多少時間才 能完成. 簡單到一條SQL 語句的情況,如果執(zhí)行時間較長, 我們?nèi)绾蔚玫剿倪\(yùn)行狀況?是否后臺還在運(yùn)行?雖 然可以查看SQL 的執(zhí)行計劃了解它的執(zhí)行步驟,但如 何知道它運(yùn)行到哪一個步驟了呢?如何才能估計出它 的合理的較為精確的執(zhí)行時間呢? Oracle 數(shù)據(jù)庫前端發(fā)出執(zhí)行命令后,進(jìn)程在后臺 執(zhí)行,普通開發(fā)人員一般無法了解到后臺在做什么,一 般采用的方法是用DBMSOUTPUT.PUT_LINE 來打印出 來,但DBMS—OUTPUT.PUT—LINE 打印的信息受緩沖區(qū) 大小限制,如果信息較多就容易溢出,而且如果存儲過 程執(zhí)行時間較長,只有在其執(zhí)行完后,這些信息才會打 印出來,這就增加了調(diào)試周期,影響了調(diào)試效果.有的 開發(fā)人員在存儲過程中通過寫日志表的形式來記錄進(jìn) 度,但需要COMMIT 后其他進(jìn)程才能看到這些日志信 息,而在某些控制結(jié)構(gòu)中(如游標(biāo)CURSOR 循環(huán))COM— MIT,則很容易引起ORA 一01555 錯誤,造成程序出錯. 下面介紹兩種監(jiān)控方法. 如何監(jiān)控單條長語句從ORACLE8 開始,出現(xiàn)一個新的動態(tài)視圖:V $SESSION_LONGOPS,從這個視圖可以獲知一些操作 (如全表掃描,并行查詢,RMAN,排序等)的執(zhí)行進(jìn)度, 我們先來了解一下V$SESSION—LONGOPS 視圖的一些 重要字段: 列說明 sID 會話標(biāo)識 5ERIAL#會話序列號 OPfE 操作的簡短描述 TARG 盯操作的對象,如xx TAR~_DESC目標(biāo)描述 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)視圖顯示各個運(yùn)行時間超過6 程.這些進(jìn)程包含許多備份和恢復(fù)功能,統(tǒng)計數(shù)據(jù)收集,查詢等. 執(zhí)行以下語句就可以得到數(shù)據(jù)庫中各個長時間操 作的進(jìn)程信息: select'Icfromv$sesslon_ longopswheretime_ re- malnlng0 我們也可以用圖形化工具查看,如TOAD,OEM中 均可查看長操作進(jìn)程進(jìn)度信息. Oracle 自帶的管理工具OracleEnterpriseManager (OEM)提供了圖形化查看長操作的功能,如: 計算機(jī)系統(tǒng)應(yīng)用2007 Quest公司的數(shù)據(jù)庫管理工具TOAD 也可以看到 長操作信息,如: 表的統(tǒng)計信息. 長時問運(yùn)行的SQL 語句可以用V$SESSION—LON? 為了能監(jiān)控到查詢進(jìn)程執(zhí)行的進(jìn)度,必需使用 CBO 優(yōu)化器并且: 設(shè)置TlMED—STATISTICS或者SQL—TRACE 用ANALYZE語句或者DBMS—STAT 包收集相關(guān) 108 實(shí)踐經(jīng)驗(yàn)P 帕cficalExpen GOPS來監(jiān)控.實(shí)際上,長時間運(yùn)行的存儲過程也可以 監(jiān)控.那是否任何操作都可以通過這個視圖來監(jiān)控進(jìn) 度呢?很遺憾,V$SESSION—LONGOPS 只會報告它認(rèn)為 耗時長的操作.對于NEsTEDLOOP/UNIQUEINDEX READS/INDEXRANGEScANS 等執(zhí)行速度很快的操作, 2007 期計算機(jī)系統(tǒng)應(yīng)用由于它們執(zhí)行一般不超過6 秒,因此將不會出現(xiàn)在V $SESSION—LONGOPS 如何監(jiān)控自定義存儲過程單條長語句可以用上面的方法監(jiān)控,Oracle 動生成V$SE.SSION— LONGOPS 記錄.那么存儲過程中 有許多小操作,如何監(jiān)控進(jìn)度呢?其實(shí),我們也可以手 工生成V$SESSION—LONGOPS 記錄,方法是調(diào)用DBMS APPLICATION—INFO 包來生成自定義進(jìn)度信息. 從Oracle7.2 開始,提供了DBMS—APPLICATION— INFo 包,通過調(diào)用這個包,應(yīng)用可以將自己的名字和 動作填寫到V$SESSION 和V$SQLAREA 的MODULE ACTION列中.V$SESSION 列出每個會話的用戶名,操 作系統(tǒng)機(jī)器名,終端名,程序名等. 應(yīng)用可以在執(zhí)行模塊時設(shè)置模塊名和動作名,模 塊名一般是甩戶自定義的.而動作名一般描述模塊中 的當(dāng)前執(zhí)行的事務(wù)的名字. DBMSAPPLICATION_INFO 包包含以下過程 SET_ MODULE 設(shè)置當(dāng)前運(yùn)行程序的模塊名 SET__AEl'ION 設(shè)置當(dāng)前模塊的當(dāng)前動作名 SESSION—LON-在V$SESSIONLONGOPS視圖中 GoPS 插入一行進(jìn)度信息 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)信息,這樣,任何其他其他會話都可以 看到這個進(jìn)度信息.如下例所示: 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)控長操作進(jìn)程的進(jìn)度信息,也可以自己 設(shè)置監(jiān)控信息,來了解后臺存儲過程的運(yùn)行效率.甚 至,可以在存儲過程或SQL 語句提交執(zhí)行后馬上觀察 其執(zhí)行進(jìn)度,如果比較緩慢,則可以中斷其執(zhí)行,進(jìn)行 調(diào)優(yōu),從而縮短調(diào)試周期,提高開發(fā)效率.
監(jiān)控數(shù)據(jù)備份恢復(fù)完成進(jìn)度(EXPDP/IMPDP/RMAN)
一、查看EXPDP/IMPDP的進(jìn)度
1 兩個視圖
當(dāng)你當(dāng)如導(dǎo)出的時候,如果數(shù)據(jù)量比較大,中途有些人會著急,不免想看看進(jìn)度如何,利用兩個視圖就可以看:
DBA_DATAPUBMP_JOBS和DBA_DATAPUMP_SESSIONS視圖?
col?owner_name?for?a10?
col?job_name?for?a20?
col?operation?for?a10?
col?job_mode?for?a10?
col?state?for?a20?
col?degree?for?a10?
col??ATTACHED_SESSIONS?for?a30?
col?DATAPUMP_SESSIONS?for?a30?
set?linesize?200
格式化只是為了好看,也可以不用,直接用PL/SQL DEVELOPER圖形工具。
可以使用DBA_DATAPUBMP_JOBS和DBA_DATAPUMP_SESSIONS視圖來顯示數(shù)據(jù)泵取作業(yè)的信息。
select?*?from?DBA_DATAPUBMP_JOBS;?
select?*?from?DBA_DATAPUMP_SESSIONS;???
select?sid,serial#?from?v$session?s,dba_datapump_sessions?d?where?s.saddr=d.saddr;
補(bǔ)充一下,前面的sql命令行格式化有點(diǎn)問題,number型的字段應(yīng)該用9999xxx(多個9) 而不是axx,否則會出現(xiàn)一串串的#。
2 attach參數(shù)
1)查看任務(wù)進(jìn)度
當(dāng)你使用crontab后臺任務(wù)運(yùn)行導(dǎo)入導(dǎo)出任務(wù)的時候,想查看任務(wù)進(jìn)度,該參數(shù)很有用,可以讓你再次連接到已經(jīng)斷開的會話中,再次接管導(dǎo)出或?qū)氲娜蝿?wù),當(dāng)然你得先用前面2個視圖查到j(luò)obname。
2)中途想停止crontab后臺任務(wù)
此時,該參數(shù)非常好用。因?yàn)槟悴贿@樣做,就得殺進(jìn)程,而那么多進(jìn)程,通常都會出錯,如此暴利的殺進(jìn)程方式,強(qiáng)烈滴不推薦。
舉例:
假如之前后臺任務(wù)的腳本中,有類似命令:
expdp?system/xxx???DIRECTORY=DATA_PUMP_DIR2??parallel=32??DUMPFILE=xxxx-%U.dmp?
ATTACH參數(shù)解釋:將你的數(shù)據(jù)泵取客戶機(jī)會話加入到一個運(yùn)行的作業(yè)中,并使你進(jìn)行交互方式。此參數(shù)只能與用戶名/密碼組合一起使用。
此時你可以使用如下命令重新連接任務(wù),并達(dá)到提前終止任務(wù)的目的:
expdp?system/xxx???attach=lurou.exp
連接進(jìn)去之后再執(zhí)行help命令可以查到停止任務(wù)的命令,這里就不列出來了
3?longops視圖
另也可以通過v$session_longops視圖來監(jiān)控長期運(yùn)行的會話。
4.通過語句查看impdp進(jìn)度SELECT???a.tablespace_name,??????????
ROUND?(a.total_size)?"total_size(MB)",??????????
ROUND?(a.total_size)?-?ROUND?(b.free_size,?3)?"used_size(MB)",??????????
ROUND?(b.free_size,?3)?"free_size(MB)",??????????
ROUND?(b.free_size?/?total_size?*?100,?2)?||?'%'?free_rate???
FROM???
(??
SELECT???
tablespace_name,?SUM?(bytes)?/?1024?/?1024?total_size???????????????
FROM???dba_data_files???????????
GROUP?BY???
tablespace_name)?a,??????????
(??
SELECT???
tablespace_name,?SUM?(bytes)?/?1024?/?1024?free_size???????????????
FROM???dba_free_space???????????
GROUP?BY???
tablespace_name)?b??
WHERE???
a.tablespace_name?=?b.tablespace_name(+);
二、查看RMAN備份進(jìn)度
另外,查看rman的備份進(jìn)度,可以用如下語句,記錄備忘。
SELECT?SID,OPNAME,?SERIAL#,?CONTEXT,?SOFAR,?TOTALWORK,?ROUND(SOFAR/TOTALWORK*100,2)?"%_COMPLETE"
FROM?V$SESSION_LONGOPS?WHERE?OPNAME?LIKE?'RMAN%'AND?OPNAME?NOT?LIKE?'%aggregate%'AND?TOTALWORK?!=?0?AND?SOFAR??TOTALWORK?
order?by?"%_COMPLETE"?desc