<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>半瓶 &#187; Oracle</title>
	<atom:link href="http://www.banping.com/category/oracle/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.banping.com</link>
	<description>一瓶子不满  半瓶子晃荡</description>
	<lastBuildDate>Fri, 27 Jan 2012 05:43:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>建立合适的索引优化查询</title>
		<link>http://www.banping.com/2010/07/28/index_optimize/</link>
		<comments>http://www.banping.com/2010/07/28/index_optimize/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 14:10:36 +0000</pubDate>
		<dc:creator>banping</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.banping.com/?p=701</guid>
		<description><![CDATA[<p>对大数据量查询时，合理使用索引能极大的提高查询效率，以下几则案例是前一段时间优化系统时做的，简单记录一下。</p> <p>案例一，优化前的查询执行计划：</p> <p>SQL&#62; set autotrace traceonly<br /> SQL&#62; set timing on<br /> SQL&#62; set linesize 200<br /> SQL&#62;<br /> SQL&#62; select count(*) from busilink<br /> 2  where (wpcode='074' or wpcode='078'  or  wpcode='099' ) and wcode ='0795'<br /> 3  or (wcode in (select  rwcode  from ratifyauth where wcodeto = '0795') and (wpcode='074'  or wpcode='078'   or wpcode='099' [...]]]></description>
			<content:encoded><![CDATA[<p>对大数据量查询时，合理使用索引能极大的提高查询效率，以下几则案例是前一段时间优化系统时做的，简单记录一下。</p>
<p>案例一，优化前的查询执行计划：</p>
<blockquote><p>SQL&gt; set autotrace traceonly<br />
SQL&gt; set timing on<br />
SQL&gt; set linesize 200<br />
SQL&gt;<br />
SQL&gt; select count(*) from busilink<br />
2  where (wpcode='074' or wpcode='078'  or  wpcode='099' ) and wcode ='0795'<br />
3  or (wcode in (select  rwcode  from ratifyauth where wcodeto = '0795') and (wpcode='074'  or wpcode='078'   or wpcode='099' ) )<br />
4  /</p>
<p>Elapsed: 00:00:00.05</p>
<p>Execution Plan<br />
----------------------------------------------------------<br />
Plan hash value: 4220767725</p>
<p>------------------------------------------------------------------------------------------------<br />
| Id  | Operation              | Name                  | Rows  | Bytes | Cost (%CPU)| Time     |<br />
------------------------------------------------------------------------------------------------<br />
|   0 | SELECT STATEMENT       |                       |     1 |     9 |   131   (3)| 00:00:02 |<br />
|   1 |  SORT AGGREGATE        |                       |     1 |     9 |            |          |<br />
|*  2 |   FILTER               |                       |       |       |            |          |<br />
|*  3 |    INDEX FAST FULL SCAN| BUSILINK_PRIMARYKEY   |  1824 | 16416 |   131   (3)| 00:00:02 |<br />
|*  4 |    INDEX RANGE SCAN    | RATIFYAUTH_PRIMARYKEY |     1 |    11 |     2   (0)| 00:00:01 |<br />
------------------------------------------------------------------------------------------------</p>
<p>Predicate Information (identified by operation id):<br />
---------------------------------------------------</p>
<p>2 - filter("WCODE"='0795' OR  EXISTS (SELECT 0 FROM "RATIFYAUTH" "RATIFYAUTH" WHERE<br />
"WCODETO"='0795' AND "RWCODE"=:B1))<br />
3 - filter("WPCODE"='074' OR "WPCODE"='078' OR "WPCODE"='099')<br />
4 - access("RWCODE"=:B1 AND "WCODETO"='0795')</p>
<p>Statistics<br />
----------------------------------------------------------<br />
1  recursive calls<br />
0  db block gets<br />
818  consistent gets<br />
0  physical reads<br />
0  redo size<br />
514  bytes sent via SQL*Net to client<br />
469  bytes received via SQL*Net from client<br />
2  SQL*Net roundtrips to/from client<br />
0  sorts (memory)<br />
0  sorts (disk)<br />
1  rows processed</p></blockquote>
<p>经分析后在wpcode,wcode两列上建立复合索引：</p>
<blockquote><p>SQL&gt; create index idx_busilink_wpcode_wcode on busilink(wpcode,wcode) tablespace erp_index;</p>
<p>Index created.</p>
<p>Elapsed: 00:00:00.36<br />
SQL&gt;<br />
SQL&gt; select count(*) from busilink<br />
2  where (wpcode='074' or wpcode='078'  or  wpcode='099' ) and wcode ='0795'<br />
3  or (wcode in (select  rwcode  from ratifyauth where wcodeto = '0795') and (wpcode='074'  or wpcode='078'   or wpcode='099' ) )<br />
4  /</p>
<p>Elapsed: 00:00:00.00</p>
<p>Execution Plan<br />
----------------------------------------------------------<br />
Plan hash value: 2874463383</p>
<p>-------------------------------------------------------------------------------------------------<br />
| Id  | Operation           | Name                      | Rows  | Bytes | Cost (%CPU)| Time     |<br />
-------------------------------------------------------------------------------------------------<br />
|   0 | SELECT STATEMENT    |                           |     1 |     9 |     7   (0)| 00:00:01 |<br />
|   1 |  SORT AGGREGATE     |                           |     1 |     9 |            |          |<br />
|*  2 |   FILTER            |                           |       |       |            |          |<br />
|   3 |    INLIST ITERATOR  |                           |       |       |            |          |<br />
|*  4 |     INDEX RANGE SCAN| IDX_BUSILINK_WPCODE_WCODE |  1824 | 16416 |     7   (0)| 00:00:01 |<br />
|*  5 |    INDEX RANGE SCAN | RATIFYAUTH_PRIMARYKEY     |     1 |    11 |     2   (0)| 00:00:01 |<br />
-------------------------------------------------------------------------------------------------</p>
<p>Predicate Information (identified by operation id):<br />
---------------------------------------------------</p>
<p>2 - filter("WCODE"='0795' OR  EXISTS (SELECT 0 FROM "RATIFYAUTH" "RATIFYAUTH" WHERE<br />
"WCODETO"='0795' AND "RWCODE"=:B1))<br />
4 - access("WPCODE"='074' OR "WPCODE"='078' OR "WPCODE"='099')<br />
5 - access("RWCODE"=:B1 AND "WCODETO"='0795')</p>
<p>Statistics<br />
----------------------------------------------------------<br />
1  recursive calls<br />
0  db block gets<br />
244  consistent gets<br />
7  physical reads<br />
0  redo size<br />
514  bytes sent via SQL*Net to client<br />
469  bytes received via SQL*Net from client<br />
2  SQL*Net roundtrips to/from client<br />
0  sorts (memory)<br />
0  sorts (disk)<br />
1  rows processed</p></blockquote>
<p>逻辑读有大幅度的减少，效果明显。</p>
<p>案例二，单列索引，建立索引前走全表扫描：</p>
<blockquote><p>SQL&gt; select count(*)<br />
2  from<br />
3   ccode where groupccode='9010000000'<br />
4  /</p>
<p>Elapsed: 00:00:00.09</p>
<p>Execution Plan<br />
----------------------------------------------------------<br />
Plan hash value: 2879317460</p>
<p>----------------------------------------------------------------------------<br />
| Id  | Operation          | Name  | Rows  | Bytes | Cost (%CPU)| Time     |<br />
----------------------------------------------------------------------------<br />
|   0 | SELECT STATEMENT   |       |     1 |    11 |   901   (2)| 00:00:11 |<br />
|   1 |  SORT AGGREGATE    |       |     1 |    11 |            |          |<br />
|*  2 |   TABLE ACCESS FULL| CCODE |     1 |    11 |   901   (2)| 00:00:11 |<br />
----------------------------------------------------------------------------</p>
<p>Predicate Information (identified by operation id):<br />
---------------------------------------------------</p>
<p>2 - filter("GROUPCCODE"='9010000000')</p>
<p>Statistics<br />
----------------------------------------------------------<br />
1  recursive calls<br />
0  db block gets<br />
4036  consistent gets<br />
0  physical reads<br />
0  redo size<br />
515  bytes sent via SQL*Net to client<br />
469  bytes received via SQL*Net from client<br />
2  SQL*Net roundtrips to/from client<br />
0  sorts (memory)<br />
0  sorts (disk)<br />
1  rows processed</p></blockquote>
<p>根据查询条件建立索引：</p>
<blockquote><p>SQL&gt; create index idx_ccode_groupccode on ccode(groupccode) tablespace erp_index;</p>
<p>Index created.</p>
<p>Elapsed: 00:00:00.45<br />
SQL&gt;<br />
SQL&gt; alter session set events = 'immediate trace name flush_cache';</p>
<p>Session altered.</p>
<p>Elapsed: 00:00:01.40<br />
SQL&gt; select count(*) from ccode where groupccode='9010000000';</p>
<p>Elapsed: 00:00:00.01</p>
<p>Execution Plan<br />
----------------------------------------------------------<br />
Plan hash value: 2074245817</p>
<p>------------------------------------------------------------------------------------------<br />
| Id  | Operation         | Name                 | Rows  | Bytes | Cost (%CPU)| Time     |<br />
------------------------------------------------------------------------------------------<br />
|   0 | SELECT STATEMENT  |                      |     1 |    11 |     1   (0)| 00:00:01 |<br />
|   1 |  SORT AGGREGATE   |                      |     1 |    11 |            |          |<br />
|*  2 |   INDEX RANGE SCAN| IDX_CCODE_GROUPCCODE |     1 |    11 |     1   (0)| 00:00:01 |<br />
------------------------------------------------------------------------------------------</p>
<p>Predicate Information (identified by operation id):<br />
---------------------------------------------------</p>
<p>2 - access("GROUPCCODE"='9010000000')</p>
<p>Statistics<br />
----------------------------------------------------------<br />
1  recursive calls<br />
0  db block gets<br />
2  consistent gets<br />
2  physical reads<br />
0  redo size<br />
515  bytes sent via SQL*Net to client<br />
469  bytes received via SQL*Net from client<br />
2  SQL*Net roundtrips to/from client<br />
0  sorts (memory)<br />
0  sorts (disk)<br />
1  rows processed</p></blockquote>
<p>案例三，在不同列上建立复合索引的效果比对：</p>
<p>优化之前：</p>
<blockquote><p>SQL&gt; alter session set events = 'immediate trace name flush_cache';</p>
<p>Session altered.</p>
<p>Elapsed: 00:00:00.15<br />
SQL&gt;<br />
SQL&gt; SELECT IHCODE, HCODE, ETRDCODE, HSTATUS, SUBSTR(BCODE, 1, 5) AS BCODE1, BCODE,<br />
2     RMB, CCODE, GCODELIST, QTYLIST, QTYUNITLIST, BUSIMODE1, BUSIMODE2,<br />
3    INOUTMODE, ECODE, VPREPARE, EDITION, predate,'*', BCODE, HSTATUS, HTYPE,<br />
4    BUSIMODE1, INOUTMODE, ECODE,CONTRACTTBL.predate<br />
5  FROM<br />
6   CONTRACTTBL WHERE  SBCODE &lt;&gt; '200994' AND  (IHCODE LIKE '________________'<br />
7    OR  IHCODE LIKE '________________xx')    AND (BCODE LIKE '01%' OR BCODE<br />
8    LIKE '02%' OR BCODE LIKE '03%' OR BCODE LIKE '04%' OR BCODE LIKE '05%' OR<br />
9    BCODE LIKE '06%' OR BCODE LIKE '07%' OR BCODE LIKE '08%' OR BCODE LIKE<br />
10    '09%' OR BCODE LIKE '10%' OR BCODE LIKE '11%' OR BCODE LIKE '90%' OR BCODE<br />
11    LIKE '91%' OR BCODE LIKE '01%' OR BCODE LIKE '02%' OR BCODE LIKE '03%' OR<br />
12    BCODE LIKE '04%' OR BCODE LIKE '05%' OR BCODE LIKE '06%' OR BCODE LIKE<br />
13    '07%' OR BCODE LIKE '08%' OR BCODE LIKE '09%' OR BCODE LIKE '10%' OR BCODE<br />
14    LIKE '11%' OR BCODE LIKE '90%' OR BCODE LIKE '91%' OR BCODE LIKE '02%' OR<br />
15    BCODE LIKE '03%' OR BCODE LIKE '05%' OR BCODE LIKE '07%' OR BCODE =<br />
16    '01100040049') AND HTYPE ='190301' AND INOUTMODE ='01' AND PREDATE&gt;=<br />
17    TO_DATE('2009-01-01', 'yyyy-mm-dd') ORDER BY IHCODE DESC<br />
18  /</p>
<p>15815 rows selected.</p>
<p>Elapsed: 00:00:37.96</p>
<p>Execution Plan<br />
----------------------------------------------------------<br />
Plan hash value: 693144140</p>
<p>------------------------------------------------------------------------------------------------------------------<br />
| Id  | Operation                         | Name                         | Rows  | Bytes | Cost (%CPU)| Time     |<br />
------------------------------------------------------------------------------------------------------------------<br />
|   0 | SELECT STATEMENT                  |                              |     2 |   280 |  3640   (1)| 00:00:44 |<br />
|   1 |  SORT ORDER BY                    |                              |     2 |   280 |  3640   (1)| 00:00:44 |<br />
|*  2 |   TABLE ACCESS BY INDEX ROWID     | CONTRACTTBL                  |     2 |   280 |  3639   (1)| 00:00:44 |<br />
|   3 |    BITMAP CONVERSION TO ROWIDS    |                              |       |       |            |          |<br />
|   4 |     BITMAP OR                     |                              |       |       |            |          |<br />
|   5 |      BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|   6 |       SORT ORDER BY               |                              |       |       |            |          |<br />
|*  7 |        INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |     5   (0)| 00:00:01 |<br />
|   8 |      BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|   9 |       SORT ORDER BY               |                              |       |       |            |          |<br />
|* 10 |        INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |     5   (0)| 00:00:01 |<br />
|  11 |      BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  12 |       SORT ORDER BY               |                              |       |       |            |          |<br />
|* 13 |        INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |     5   (0)| 00:00:01 |<br />
|  14 |      BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  15 |       SORT ORDER BY               |                              |       |       |            |          |<br />
|* 16 |        INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |     5   (0)| 00:00:01 |<br />
|  17 |      BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  18 |       SORT ORDER BY               |                              |       |       |            |          |<br />
|* 19 |        INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |     5   (0)| 00:00:01 |<br />
|  20 |      BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  21 |       SORT ORDER BY               |                              |       |       |            |          |<br />
|* 22 |        INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |     5   (0)| 00:00:01 |<br />
|  23 |      BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  24 |       SORT ORDER BY               |                              |       |       |            |          |<br />
|* 25 |        INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |     5   (0)| 00:00:01 |<br />
|  26 |      BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  27 |       SORT ORDER BY               |                              |       |       |            |          |<br />
|* 28 |        INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |     5   (0)| 00:00:01 |<br />
|  29 |      BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  30 |       SORT ORDER BY               |                              |       |       |            |          |<br />
|* 31 |        INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |     5   (0)| 00:00:01 |<br />
|  32 |      BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  33 |       SORT ORDER BY               |                              |       |       |            |          |<br />
|* 34 |        INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |     5   (0)| 00:00:01 |<br />
|  35 |      BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  36 |       SORT ORDER BY               |                              |       |       |            |          |<br />
|* 37 |        INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |     5   (0)| 00:00:01 |<br />
|  38 |      BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  39 |       SORT ORDER BY               |                              |       |       |            |          |<br />
|* 40 |        INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |     5   (0)| 00:00:01 |<br />
|  41 |      BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  42 |       SORT ORDER BY               |                              |       |       |            |          |<br />
|* 43 |        INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |     5   (0)| 00:00:01 |<br />
|  44 |      BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  45 |       SORT ORDER BY               |                              |       |       |            |          |<br />
|* 46 |        INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |     5   (0)| 00:00:01 |<br />
------------------------------------------------------------------------------------------------------------------</p>
<p>Predicate Information (identified by operation id):<br />
---------------------------------------------------</p>
<p>2 - filter("HTYPE"='190301' AND "PREDATE"&gt;=TO_DATE('2009-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND<br />
"INOUTMODE"='01' AND "SBCODE"&lt;&gt;'200994' AND ("IHCODE" LIKE '________________' OR "IHCODE" LIKE<br />
'________________xx'))<br />
7 - access("BCODE"='01100040049')<br />
filter("BCODE"='01100040049')<br />
10 - access("BCODE" LIKE '03%')<br />
filter("BCODE" LIKE '03%' AND "BCODE" LIKE '03%')<br />
13 - access("BCODE" LIKE '06%')<br />
filter("BCODE" LIKE '06%' AND "BCODE" LIKE '06%')<br />
16 - access("BCODE" LIKE '09%')<br />
filter("BCODE" LIKE '09%' AND "BCODE" LIKE '09%')<br />
19 - access("BCODE" LIKE '02%')<br />
filter("BCODE" LIKE '02%' AND "BCODE" LIKE '02%')<br />
22 - access("BCODE" LIKE '10%')<br />
filter("BCODE" LIKE '10%' AND "BCODE" LIKE '10%')<br />
25 - access("BCODE" LIKE '08%')<br />
filter("BCODE" LIKE '08%' AND "BCODE" LIKE '08%')<br />
28 - access("BCODE" LIKE '05%')<br />
filter("BCODE" LIKE '05%' AND "BCODE" LIKE '05%')<br />
31 - access("BCODE" LIKE '11%')<br />
filter("BCODE" LIKE '11%' AND "BCODE" LIKE '11%')<br />
34 - access("BCODE" LIKE '07%')<br />
filter("BCODE" LIKE '07%' AND "BCODE" LIKE '07%')<br />
37 - access("BCODE" LIKE '04%')<br />
filter("BCODE" LIKE '04%' AND "BCODE" LIKE '04%')<br />
40 - access("BCODE" LIKE '01%')<br />
filter("BCODE" LIKE '01%' AND "BCODE" LIKE '01%')<br />
43 - access("BCODE" LIKE '90%')<br />
filter("BCODE" LIKE '90%' AND "BCODE" LIKE '90%')<br />
46 - access("BCODE" LIKE '91%')<br />
filter("BCODE" LIKE '91%' AND "BCODE" LIKE '91%')</p>
<p>Statistics<br />
----------------------------------------------------------<br />
1  recursive calls<br />
0  db block gets<br />
92614  consistent gets<br />
92574  physical reads<br />
0  redo size<br />
2269387  bytes sent via SQL*Net to client<br />
12063  bytes received via SQL*Net from client<br />
1056  SQL*Net roundtrips to/from client<br />
15  sorts (memory)<br />
0  sorts (disk)<br />
15815  rows processed</p></blockquote>
<p>建立一个单列索引：</p>
<blockquote><p>SQL&gt; create index idx_contracttbl_predate on CONTRACTTBL(PREDATE) tablespace erp_index;</p>
<p>Index created.</p>
<p>Elapsed: 00:00:13.51<br />
SQL&gt; alter session set events = 'immediate trace name flush_cache';</p>
<p>Session altered.</p>
<p>Elapsed: 00:00:00.14<br />
SQL&gt; SELECT IHCODE, HCODE, ETRDCODE, HSTATUS, SUBSTR(BCODE, 1, 5) AS BCODE1, BCODE,<br />
2     RMB, CCODE, GCODELIST, QTYLIST, QTYUNITLIST, BUSIMODE1, BUSIMODE2,<br />
3    INOUTMODE, ECODE, VPREPARE, EDITION, predate,'*', BCODE, HSTATUS, HTYPE,<br />
4    BUSIMODE1, INOUTMODE, ECODE,CONTRACTTBL.predate<br />
5  FROM<br />
6   CONTRACTTBL WHERE  SBCODE &lt;&gt; '200994' AND  (IHCODE LIKE '________________'<br />
7    OR  IHCODE LIKE '________________xx')    AND (BCODE LIKE '01%' OR BCODE<br />
8    LIKE '02%' OR BCODE LIKE '03%' OR BCODE LIKE '04%' OR BCODE LIKE '05%' OR<br />
9    BCODE LIKE '06%' OR BCODE LIKE '07%' OR BCODE LIKE '08%' OR BCODE LIKE<br />
10    '09%' OR BCODE LIKE '10%' OR BCODE LIKE '11%' OR BCODE LIKE '90%' OR BCODE<br />
11    LIKE '91%' OR BCODE LIKE '01%' OR BCODE LIKE '02%' OR BCODE LIKE '03%' OR<br />
12    BCODE LIKE '04%' OR BCODE LIKE '05%' OR BCODE LIKE '06%' OR BCODE LIKE<br />
13    '07%' OR BCODE LIKE '08%' OR BCODE LIKE '09%' OR BCODE LIKE '10%' OR BCODE<br />
14    LIKE '11%' OR BCODE LIKE '90%' OR BCODE LIKE '91%' OR BCODE LIKE '02%' OR<br />
15    BCODE LIKE '03%' OR BCODE LIKE '05%' OR BCODE LIKE '07%' OR BCODE =<br />
16    '01100040049') AND HTYPE ='190301' AND INOUTMODE ='01' AND PREDATE&gt;=<br />
17    TO_DATE('2009-01-01', 'yyyy-mm-dd') ORDER BY IHCODE DESC<br />
18  /</p>
<p>15815 rows selected.</p>
<p>Elapsed: 00:00:14.21</p>
<p>Execution Plan<br />
----------------------------------------------------------<br />
Plan hash value: 567454617</p>
<p>---------------------------------------------------------------------------------------------------------------------------<br />
| Id  | Operation                          | Name                         | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |<br />
---------------------------------------------------------------------------------------------------------------------------<br />
|   0 | SELECT STATEMENT                   |                              |     2 |   280 |       |  2277   (2)| 00:00:28 |<br />
|   1 |  SORT ORDER BY                     |                              |     2 |   280 |       |  2277   (2)| 00:00:28 |<br />
|*  2 |   TABLE ACCESS BY INDEX ROWID      | CONTRACTTBL                  |     2 |   280 |       |  2276   (2)| 00:00:28 |<br />
|   3 |    BITMAP CONVERSION TO ROWIDS     |                              |       |       |       |            |          |<br />
|   4 |     BITMAP AND                     |                              |       |       |       |            |          |<br />
|   5 |      BITMAP OR                     |                              |       |       |       |            |          |<br />
|   6 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |       |            |          |<br />
|   7 |        SORT ORDER BY               |                              |       |       |       |            |          |<br />
|*  8 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |       |     5   (0)| 00:00:01 |<br />
|   9 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |       |            |          |<br />
|  10 |        SORT ORDER BY               |                              |       |       |       |            |          |<br />
|* 11 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |       |     5   (0)| 00:00:01 |<br />
|  12 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |       |            |          |<br />
|  13 |        SORT ORDER BY               |                              |       |       |       |            |          |<br />
|* 14 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |       |     5   (0)| 00:00:01 |<br />
|  15 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |       |            |          |<br />
|  16 |        SORT ORDER BY               |                              |       |       |       |            |          |<br />
|* 17 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |       |     5   (0)| 00:00:01 |<br />
|  18 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |       |            |          |<br />
|  19 |        SORT ORDER BY               |                              |       |       |       |            |          |<br />
|* 20 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |       |     5   (0)| 00:00:01 |<br />
|  21 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |       |            |          |<br />
|  22 |        SORT ORDER BY               |                              |       |       |       |            |          |<br />
|* 23 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |       |     5   (0)| 00:00:01 |<br />
|  24 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |       |            |          |<br />
|  25 |        SORT ORDER BY               |                              |       |       |       |            |          |<br />
|* 26 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |       |     5   (0)| 00:00:01 |<br />
|  27 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |       |            |          |<br />
|  28 |        SORT ORDER BY               |                              |       |       |       |            |          |<br />
|* 29 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |       |     5   (0)| 00:00:01 |<br />
|  30 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |       |            |          |<br />
|  31 |        SORT ORDER BY               |                              |       |       |       |            |          |<br />
|* 32 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |       |     5   (0)| 00:00:01 |<br />
|  33 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |       |            |          |<br />
|  34 |        SORT ORDER BY               |                              |       |       |       |            |          |<br />
|* 35 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |       |     5   (0)| 00:00:01 |<br />
|  36 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |       |            |          |<br />
|  37 |        SORT ORDER BY               |                              |       |       |       |            |          |<br />
|* 38 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |       |     5   (0)| 00:00:01 |<br />
|  39 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |       |            |          |<br />
|  40 |        SORT ORDER BY               |                              |       |       |       |            |          |<br />
|* 41 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |       |     5   (0)| 00:00:01 |<br />
|  42 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |       |            |          |<br />
|  43 |        SORT ORDER BY               |                              |       |       |       |            |          |<br />
|* 44 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |       |     5   (0)| 00:00:01 |<br />
|  45 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |       |            |          |<br />
|  46 |        SORT ORDER BY               |                              |       |       |       |            |          |<br />
|* 47 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |       |       |       |     5   (0)| 00:00:01 |<br />
|  48 |      BITMAP CONVERSION FROM ROWIDS |                              |       |       |       |            |          |<br />
|  49 |       SORT ORDER BY                |                              |       |       |  5240K|            |          |<br />
|* 50 |        INDEX RANGE SCAN            | IDX_CONTRACTTBL_PREDATE      |       |       |       |   448   (1)| 00:00:06 |<br />
---------------------------------------------------------------------------------------------------------------------------</p>
<p>Predicate Information (identified by operation id):<br />
---------------------------------------------------</p>
<p>2 - filter("HTYPE"='190301' AND "INOUTMODE"='01' AND "SBCODE"&lt;&gt;'200994' AND ("IHCODE" LIKE '________________'<br />
OR "IHCODE" LIKE '________________xx'))<br />
8 - access("BCODE"='01100040049')<br />
filter("BCODE"='01100040049')<br />
11 - access("BCODE" LIKE '03%')<br />
filter("BCODE" LIKE '03%' AND "BCODE" LIKE '03%')<br />
14 - access("BCODE" LIKE '06%')<br />
filter("BCODE" LIKE '06%' AND "BCODE" LIKE '06%')<br />
17 - access("BCODE" LIKE '09%')<br />
filter("BCODE" LIKE '09%' AND "BCODE" LIKE '09%')<br />
20 - access("BCODE" LIKE '02%')<br />
filter("BCODE" LIKE '02%' AND "BCODE" LIKE '02%')<br />
23 - access("BCODE" LIKE '10%')<br />
filter("BCODE" LIKE '10%' AND "BCODE" LIKE '10%')<br />
26 - access("BCODE" LIKE '08%')<br />
filter("BCODE" LIKE '08%' AND "BCODE" LIKE '08%')<br />
29 - access("BCODE" LIKE '05%')<br />
filter("BCODE" LIKE '05%' AND "BCODE" LIKE '05%')<br />
32 - access("BCODE" LIKE '11%')<br />
filter("BCODE" LIKE '11%' AND "BCODE" LIKE '11%')<br />
35 - access("BCODE" LIKE '07%')<br />
filter("BCODE" LIKE '07%' AND "BCODE" LIKE '07%')<br />
38 - access("BCODE" LIKE '04%')<br />
filter("BCODE" LIKE '04%' AND "BCODE" LIKE '04%')<br />
41 - access("BCODE" LIKE '01%')<br />
filter("BCODE" LIKE '01%' AND "BCODE" LIKE '01%')<br />
44 - access("BCODE" LIKE '90%')<br />
filter("BCODE" LIKE '90%' AND "BCODE" LIKE '90%')<br />
47 - access("BCODE" LIKE '91%')<br />
filter("BCODE" LIKE '91%' AND "BCODE" LIKE '91%')<br />
50 - access("PREDATE"&gt;=TO_DATE('2009-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss'))<br />
filter("PREDATE"&gt;=TO_DATE('2009-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss'))</p>
<p>Statistics<br />
----------------------------------------------------------<br />
1  recursive calls<br />
0  db block gets<br />
25260  consistent gets<br />
25225  physical reads<br />
0  redo size<br />
2269387  bytes sent via SQL*Net to client<br />
12063  bytes received via SQL*Net from client<br />
1056  SQL*Net roundtrips to/from client<br />
16  sorts (memory)<br />
0  sorts (disk)<br />
15815  rows processed</p></blockquote>
<p>建立复合索引：</p>
<blockquote><p>SQL&gt; drop index idx_contracttbl_predate<br />
2  /</p>
<p>Index dropped.</p>
<p>Elapsed: 00:00:00.83<br />
SQL&gt;<br />
SQL&gt; create index idx_contracttbl_htype_inout_predate on CONTRACTTBL(HTYPE, INOUTMODE,PREDATE) tablespace erp_index;<br />
create index idx_contracttbl_htype_inout_predate on CONTRACTTBL(HTYPE, INOUTMODE,PREDATE) tablespace erp_index<br />
*<br />
ERROR at line 1:<br />
ORA-00972: identifier is too long</p>
<p>Elapsed: 00:00:00.00<br />
SQL&gt; create index idx_contract_htiopre on CONTRACTTBL(HTYPE, INOUTMODE,PREDATE) tablespace erp_index;</p>
<p>Index created.</p>
<p>Elapsed: 00:00:13.32<br />
SQL&gt; alter session set events = 'immediate trace name flush_cache';</p>
<p>Session altered.</p>
<p>Elapsed: 00:00:38.90<br />
SQL&gt;<br />
SQL&gt; SELECT IHCODE, HCODE, ETRDCODE, HSTATUS, SUBSTR(BCODE, 1, 5) AS BCODE1, BCODE,<br />
2     RMB, CCODE, GCODELIST, QTYLIST, QTYUNITLIST, BUSIMODE1, BUSIMODE2,<br />
3    INOUTMODE, ECODE, VPREPARE, EDITION, predate,'*', BCODE, HSTATUS, HTYPE,<br />
4    BUSIMODE1, INOUTMODE, ECODE,CONTRACTTBL.predate<br />
5  FROM<br />
6   CONTRACTTBL WHERE  SBCODE &lt;&gt; '200994' AND  (IHCODE LIKE '________________'<br />
7    OR  IHCODE LIKE '________________xx')    AND (BCODE LIKE '01%' OR BCODE<br />
8    LIKE '02%' OR BCODE LIKE '03%' OR BCODE LIKE '04%' OR BCODE LIKE '05%' OR<br />
9    BCODE LIKE '06%' OR BCODE LIKE '07%' OR BCODE LIKE '08%' OR BCODE LIKE<br />
10    '09%' OR BCODE LIKE '10%' OR BCODE LIKE '11%' OR BCODE LIKE '90%' OR BCODE<br />
11    LIKE '91%' OR BCODE LIKE '01%' OR BCODE LIKE '02%' OR BCODE LIKE '03%' OR<br />
12    BCODE LIKE '04%' OR BCODE LIKE '05%' OR BCODE LIKE '06%' OR BCODE LIKE<br />
13    '07%' OR BCODE LIKE '08%' OR BCODE LIKE '09%' OR BCODE LIKE '10%' OR BCODE<br />
14    LIKE '11%' OR BCODE LIKE '90%' OR BCODE LIKE '91%' OR BCODE LIKE '02%' OR<br />
15    BCODE LIKE '03%' OR BCODE LIKE '05%' OR BCODE LIKE '07%' OR BCODE =<br />
16    '01100040049') AND HTYPE ='190301' AND INOUTMODE ='01' AND PREDATE&gt;=<br />
17    TO_DATE('2009-01-01', 'yyyy-mm-dd') ORDER BY IHCODE DESC<br />
18  /</p>
<p>15815 rows selected.</p>
<p>Elapsed: 00:00:05.90</p>
<p>Execution Plan<br />
----------------------------------------------------------<br />
Plan hash value: 2443244798</p>
<p>-------------------------------------------------------------------------------------------------------------------<br />
| Id  | Operation                          | Name                         | Rows  | Bytes | Cost (%CPU)| Time     |<br />
-------------------------------------------------------------------------------------------------------------------<br />
|   0 | SELECT STATEMENT                   |                              |     2 |   280 |   117  (15)| 00:00:02 |<br />
|   1 |  SORT ORDER BY                     |                              |     2 |   280 |   117  (15)| 00:00:02 |<br />
|*  2 |   TABLE ACCESS BY INDEX ROWID      | CONTRACTTBL                  |     2 |   280 |   116  (14)| 00:00:02 |<br />
|   3 |    BITMAP CONVERSION TO ROWIDS     |                              |       |       |            |          |<br />
|   4 |     BITMAP AND                     |                              |       |       |            |          |<br />
|   5 |      BITMAP CONVERSION FROM ROWIDS |                              |       |       |            |          |<br />
|   6 |       SORT ORDER BY                |                              |       |       |            |          |<br />
|*  7 |        INDEX RANGE SCAN            | IDX_CONTRACT_HTIOPRE         |  3294 |       |    16   (0)| 00:00:01 |<br />
|   8 |      BITMAP OR                     |                              |       |       |            |          |<br />
|   9 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  10 |        SORT ORDER BY               |                              |       |       |            |          |<br />
|* 11 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |  3294 |       |     5   (0)| 00:00:01 |<br />
|  12 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  13 |        SORT ORDER BY               |                              |       |       |            |          |<br />
|* 14 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |  3294 |       |     5   (0)| 00:00:01 |<br />
|  15 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  16 |        SORT ORDER BY               |                              |       |       |            |          |<br />
|* 17 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |  3294 |       |     5   (0)| 00:00:01 |<br />
|  18 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  19 |        SORT ORDER BY               |                              |       |       |            |          |<br />
|* 20 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |  3294 |       |     5   (0)| 00:00:01 |<br />
|  21 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  22 |        SORT ORDER BY               |                              |       |       |            |          |<br />
|* 23 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |  3294 |       |     5   (0)| 00:00:01 |<br />
|  24 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  25 |        SORT ORDER BY               |                              |       |       |            |          |<br />
|* 26 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |  3294 |       |     5   (0)| 00:00:01 |<br />
|  27 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  28 |        SORT ORDER BY               |                              |       |       |            |          |<br />
|* 29 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |  3294 |       |     5   (0)| 00:00:01 |<br />
|  30 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  31 |        SORT ORDER BY               |                              |       |       |            |          |<br />
|* 32 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |  3294 |       |     5   (0)| 00:00:01 |<br />
|  33 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  34 |        SORT ORDER BY               |                              |       |       |            |          |<br />
|* 35 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |  3294 |       |     5   (0)| 00:00:01 |<br />
|  36 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  37 |        SORT ORDER BY               |                              |       |       |            |          |<br />
|* 38 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |  3294 |       |     5   (0)| 00:00:01 |<br />
|  39 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  40 |        SORT ORDER BY               |                              |       |       |            |          |<br />
|* 41 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |  3294 |       |     5   (0)| 00:00:01 |<br />
|  42 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  43 |        SORT ORDER BY               |                              |       |       |            |          |<br />
|* 44 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |  3294 |       |     5   (0)| 00:00:01 |<br />
|  45 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  46 |        SORT ORDER BY               |                              |       |       |            |          |<br />
|* 47 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |  3294 |       |     5   (0)| 00:00:01 |<br />
|  48 |       BITMAP CONVERSION FROM ROWIDS|                              |       |       |            |          |<br />
|  49 |        SORT ORDER BY               |                              |       |       |            |          |<br />
|* 50 |         INDEX RANGE SCAN           | CONTRACTTBL_BCODE_RATIFYDATE |  3294 |       |     5   (0)| 00:00:01 |<br />
-------------------------------------------------------------------------------------------------------------------</p>
<p>Predicate Information (identified by operation id):<br />
---------------------------------------------------</p>
<p>2 - filter("SBCODE"&lt;&gt;'200994' AND ("IHCODE" LIKE '________________' OR "IHCODE" LIKE<br />
'________________xx'))<br />
7 - access("HTYPE"='190301' AND "INOUTMODE"='01' AND "PREDATE"&gt;=TO_DATE('2009-01-01 00:00:00',<br />
'yyyy-mm-dd hh24:mi:ss'))<br />
filter("PREDATE"&gt;=TO_DATE('2009-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND "INOUTMODE"='01' AND<br />
"HTYPE"='190301')<br />
11 - access("BCODE"='01100040049')<br />
filter("BCODE"='01100040049')<br />
14 - access("BCODE" LIKE '03%')<br />
filter("BCODE" LIKE '03%' AND "BCODE" LIKE '03%')<br />
17 - access("BCODE" LIKE '06%')<br />
filter("BCODE" LIKE '06%' AND "BCODE" LIKE '06%')<br />
20 - access("BCODE" LIKE '09%')<br />
filter("BCODE" LIKE '09%' AND "BCODE" LIKE '09%')<br />
23 - access("BCODE" LIKE '02%')<br />
filter("BCODE" LIKE '02%' AND "BCODE" LIKE '02%')<br />
26 - access("BCODE" LIKE '10%')<br />
filter("BCODE" LIKE '10%' AND "BCODE" LIKE '10%')<br />
29 - access("BCODE" LIKE '08%')<br />
filter("BCODE" LIKE '08%' AND "BCODE" LIKE '08%')<br />
32 - access("BCODE" LIKE '05%')<br />
filter("BCODE" LIKE '05%' AND "BCODE" LIKE '05%')<br />
35 - access("BCODE" LIKE '11%')<br />
filter("BCODE" LIKE '11%' AND "BCODE" LIKE '11%')<br />
38 - access("BCODE" LIKE '07%')<br />
filter("BCODE" LIKE '07%' AND "BCODE" LIKE '07%')<br />
41 - access("BCODE" LIKE '04%')<br />
filter("BCODE" LIKE '04%' AND "BCODE" LIKE '04%')<br />
44 - access("BCODE" LIKE '01%')<br />
filter("BCODE" LIKE '01%' AND "BCODE" LIKE '01%')<br />
47 - access("BCODE" LIKE '90%')<br />
filter("BCODE" LIKE '90%' AND "BCODE" LIKE '90%')<br />
50 - access("BCODE" LIKE '91%')<br />
filter("BCODE" LIKE '91%' AND "BCODE" LIKE '91%')</p>
<p>Statistics<br />
----------------------------------------------------------<br />
1  recursive calls<br />
0  db block gets<br />
15474  consistent gets<br />
15439  physical reads<br />
0  redo size<br />
2269387  bytes sent via SQL*Net to client<br />
12063  bytes received via SQL*Net from client<br />
1056  SQL*Net roundtrips to/from client<br />
16  sorts (memory)<br />
0  sorts (disk)<br />
15815  rows processed</p></blockquote>
<p>除了改写明显有问题的SQL语句，针对索引的优化是提高查询性能的最快最简单的办法。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.banping.com/2010/07/28/index_optimize/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>不可挽回的数据损失——警惕可怕的应用程序错误</title>
		<link>http://www.banping.com/2010/06/17/app_error/</link>
		<comments>http://www.banping.com/2010/06/17/app_error/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 07:58:41 +0000</pubDate>
		<dc:creator>banping</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.banping.com/?p=699</guid>
		<description><![CDATA[<p>最近接触到的一个系统，出现了莫名其妙的数据丢失，怀疑是应用程序的问题，可是如何定位出问题的程序位置很难，最后根据大概的数据丢失时间，结合Logminer工具找出了有问题的程序，下面记录定位程序错误的过程：</p> <p>一、根据大概的时间定位需要哪些归档文件</p> <p>ERPDB1@/orabak&#62;rman target /</p> <p>Recovery Manager: Release 10.2.0.3.0 - Production on Tue Apr 6 09:26:15 2010</p> <p>Copyright (c) 1982, 2005, Oracle.  All rights reserved.</p> <p>connected to target database: CNDERPDB (DBID=2400249746)</p> <p>RMAN&#62; list backup of archivelog time between "to_date('2010-04-01 22:00:00','yyyy-mm-dd hh24:mi:ss')" and "to_date('2010-04-02 23:00','yyyy-mm-dd hh24:mi:ss')";</p> <p>using target database control file instead of recovery catalog</p> <p>List [...]]]></description>
			<content:encoded><![CDATA[<p>最近接触到的一个系统，出现了莫名其妙的数据丢失，怀疑是应用程序的问题，可是如何定位出问题的程序位置很难，最后根据大概的数据丢失时间，结合Logminer工具找出了有问题的程序，下面记录定位程序错误的过程：</p>
<p>一、根据大概的时间定位需要哪些归档文件</p>
<blockquote><p>ERPDB1@/orabak&gt;rman target /</p>
<p>Recovery Manager: Release 10.2.0.3.0 - Production on Tue Apr 6 09:26:15 2010</p>
<p>Copyright (c) 1982, 2005, Oracle.  All rights reserved.</p>
<p>connected to target database: CNDERPDB (DBID=2400249746)</p>
<p>RMAN&gt; list backup of archivelog time between "to_date('2010-04-01 22:00:00','yyyy-mm-dd hh24:mi:ss')" and "to_date('2010-04-02 23:00','yyyy-mm-dd hh24:mi:ss')";</p>
<p>using target database control file instead of recovery catalog</p>
<p>List of Backup Sets<br />
===================</p>
<p>BS Key  Size       Device Type Elapsed Time Completion Time<br />
------- ---------- ----------- ------------ ---------------<br />
18012   75.15M     DISK        00:00:22     02-APR-10<br />
BP Key: 21234   Status: AVAILABLE  Compressed: YES  Tag: TAG20100402T130015<br />
Piece Name: /orabak/arch/CNDERPDB_arch_20100402_715265583_18079_1</p>
<p>List of Archived Logs in backup set 18012<br />
Thrd Seq     Low SCN    Low Time  Next SCN   Next Time<br />
---- ------- ---------- --------- ---------- ---------<br />
1    130816  12413552772 01-APR-10 12413640444 01-APR-10<br />
1    130817  12413640444 01-APR-10 12413642594 01-APR-10<br />
1    130818  12413642594 01-APR-10 12413649352 01-APR-10<br />
1    130819  12413649352 01-APR-10 12413650311 01-APR-10<br />
1    130820  12413650311 01-APR-10 12413651164 01-APR-10<br />
1    130821  12413651164 01-APR-10 12413651934 01-APR-10<br />
1    130822  12413651934 01-APR-10 12413658859 01-APR-10<br />
1    130823  12413658859 01-APR-10 12413662103 01-APR-10<br />
1    130824  12413662103 01-APR-10 12413665559 01-APR-10<br />
1    130825  12413665559 01-APR-10 12413668607 01-APR-10<br />
1    130826  12413668607 01-APR-10 12413671510 01-APR-10<br />
1    130827  12413671510 01-APR-10 12413674568 01-APR-10<br />
1    130828  12413674568 01-APR-10 12413679025 02-APR-10<br />
1    130829  12413679025 02-APR-10 12413681948 02-APR-10<br />
1    130830  12413681948 02-APR-10 12413682794 02-APR-10<br />
1    130831  12413682794 02-APR-10 12413683591 02-APR-10<br />
1    130832  12413683591 02-APR-10 12413699490 02-APR-10<br />
1    130833  12413699490 02-APR-10 12413700261 02-APR-10<br />
1    130834  12413700261 02-APR-10 12413703183 02-APR-10<br />
1    130835  12413703183 02-APR-10 12413704994 02-APR-10<br />
1    130836  12413704994 02-APR-10 12413706561 02-APR-10<br />
1    130837  12413706561 02-APR-10 12413708150 02-APR-10<br />
1    130838  12413708150 02-APR-10 12413719850 02-APR-10<br />
1    130839  12413719850 02-APR-10 12413739975 02-APR-10<br />
1    130840  12413739975 02-APR-10 12413765112 02-APR-10<br />
1    130841  12413765112 02-APR-10 12413792162 02-APR-10<br />
1    130842  12413792162 02-APR-10 12413822087 02-APR-10<br />
1    130843  12413822087 02-APR-10 12413876089 02-APR-10<br />
1    130844  12413876089 02-APR-10 12413958554 02-APR-10<br />
1    130845  12413958554 02-APR-10 12414035599 02-APR-10<br />
1    130846  12414035599 02-APR-10 12414123518 02-APR-10<br />
1    130847  12414123518 02-APR-10 12414165097 02-APR-10<br />
1    130848  12414165097 02-APR-10 12414200120 02-APR-10<br />
1    130849  12414200120 02-APR-10 12414234183 02-APR-10<br />
1    130850  12414234183 02-APR-10 12414266300 02-APR-10<br />
1    130851  12414266300 02-APR-10 12414367031 02-APR-10<br />
1    130852  12414367031 02-APR-10 12414450980 02-APR-10</p>
<p>BS Key  Size       Device Type Elapsed Time Completion Time<br />
------- ---------- ----------- ------------ ---------------<br />
18013   28.81M     DISK        00:00:08     02-APR-10<br />
BP Key: 21235   Status: AVAILABLE  Compressed: YES  Tag: TAG20100402T130015<br />
Piece Name: /orabak/arch/CNDERPDB_arch_20100402_715265609_18081_1</p>
<p>List of Archived Logs in backup set 18013<br />
Thrd Seq     Low SCN    Low Time  Next SCN   Next Time<br />
---- ------- ---------- --------- ---------- ---------<br />
1    130853  12414450980 02-APR-10 12414552623 02-APR-10<br />
1    130854  12414552623 02-APR-10 12414605521 02-APR-10<br />
1    130855  12414605521 02-APR-10 12414688546 02-APR-10<br />
1    130856  12414688546 02-APR-10 12414768204 02-APR-10<br />
1    130857  12414768204 02-APR-10 12414850576 02-APR-10<br />
1    130858  12414850576 02-APR-10 12415578138 02-APR-10<br />
1    130859  12415578138 02-APR-10 12416563016 02-APR-10<br />
1    130860  12416563016 02-APR-10 12417650008 02-APR-10<br />
1    130861  12417650008 02-APR-10 12418713043 02-APR-10<br />
1    130862  12418713043 02-APR-10 12419850520 02-APR-10<br />
1    130863  12419850520 02-APR-10 12420094921 02-APR-10<br />
1    130864  12420094921 02-APR-10 12420151035 02-APR-10<br />
1    130865  12420151035 02-APR-10 12420215791 02-APR-10<br />
1    130866  12420215791 02-APR-10 12420240304 02-APR-10<br />
1    130867  12420240304 02-APR-10 12420251373 02-APR-10<br />
1    130868  12420251373 02-APR-10 12420258130 02-APR-10<br />
1    130869  12420258130 02-APR-10 12420263794 02-APR-10<br />
1    130870  12420263794 02-APR-10 12420268456 02-APR-10<br />
1    130871  12420268456 02-APR-10 12420270403 02-APR-10<br />
1    130872  12420270403 02-APR-10 12420271525 02-APR-10<br />
1    130873  12420271525 02-APR-10 12420272893 02-APR-10<br />
1    130874  12420272893 02-APR-10 12420274107 02-APR-10<br />
1    130875  12420274107 02-APR-10 12420275039 02-APR-10<br />
1    130876  12420275039 02-APR-10 12420275961 02-APR-10<br />
1    130877  12420275961 02-APR-10 12420283221 02-APR-10<br />
1    130878  12420283221 02-APR-10 12420289525 02-APR-10<br />
1    130879  12420289525 02-APR-10 12420308743 02-APR-10<br />
1    130880  12420308743 02-APR-10 12420353689 02-APR-10<br />
1    130881  12420353689 02-APR-10 12420422037 02-APR-10<br />
1    130882  12420422037 02-APR-10 12420538802 02-APR-10<br />
1    130883  12420538802 02-APR-10 12420674578 02-APR-10</p>
<p>BS Key  Size       Device Type Elapsed Time Completion Time<br />
------- ---------- ----------- ------------ ---------------<br />
18014   1.35G      DISK        00:05:34     02-APR-10<br />
BP Key: 21236   Status: AVAILABLE  Compressed: YES  Tag: TAG20100402T130015<br />
Piece Name: /orabak/arch/CNDERPDB_arch_20100402_715266018_18080_1</p>
<p>List of Archived Logs in backup set 18014<br />
Thrd Seq     Low SCN    Low Time  Next SCN   Next Time<br />
---- ------- ---------- --------- ---------- ---------<br />
2    139146  12413544512 01-APR-10 12413551394 01-APR-10<br />
2    139147  12413551394 01-APR-10 12413640367 01-APR-10<br />
2    139148  12413640367 01-APR-10 12413642584 01-APR-10<br />
2    139149  12413642584 01-APR-10 12413649329 01-APR-10<br />
2    139150  12413649329 01-APR-10 12413650295 01-APR-10<br />
2    139151  12413650295 01-APR-10 12413651154 01-APR-10<br />
2    139152  12413651154 01-APR-10 12413651918 01-APR-10<br />
2    139153  12413651918 01-APR-10 12413658803 01-APR-10<br />
2    139154  12413658803 01-APR-10 12413662056 01-APR-10<br />
2    139155  12413662056 01-APR-10 12413665502 01-APR-10<br />
2    139156  12413665502 01-APR-10 12413668540 01-APR-10<br />
2    139157  12413668540 01-APR-10 12413671451 01-APR-10<br />
2    139158  12413671451 01-APR-10 12413674508 01-APR-10<br />
2    139159  12413674508 01-APR-10 12413678971 02-APR-10<br />
2    139160  12413678971 02-APR-10 12413681936 02-APR-10<br />
2    139161  12413681936 02-APR-10 12413682783 02-APR-10<br />
2    139162  12413682783 02-APR-10 12413683580 02-APR-10<br />
2    139163  12413683580 02-APR-10 12413699494 02-APR-10<br />
2    139164  12413699494 02-APR-10 12413700259 02-APR-10<br />
2    139165  12413700259 02-APR-10 12413703174 02-APR-10<br />
2    139166  12413703174 02-APR-10 12413704987 02-APR-10<br />
2    139167  12413704987 02-APR-10 12413706566 02-APR-10<br />
2    139168  12413706566 02-APR-10 12413708145 02-APR-10<br />
2    139169  12413708145 02-APR-10 12413719931 02-APR-10<br />
2    139170  12413719931 02-APR-10 12413739973 02-APR-10<br />
2    139171  12413739973 02-APR-10 12413765108 02-APR-10<br />
2    139172  12413765108 02-APR-10 12413792160 02-APR-10<br />
2    139173  12413792160 02-APR-10 12413822085 02-APR-10<br />
2    139174  12413822085 02-APR-10 12413839475 02-APR-10<br />
2    139175  12413839475 02-APR-10 12413916931 02-APR-10<br />
2    139176  12413916931 02-APR-10 12413996350 02-APR-10<br />
2    139177  12413996350 02-APR-10 12414058643 02-APR-10<br />
2    139178  12414058643 02-APR-10 12414132707 02-APR-10<br />
2    139179  12414132707 02-APR-10 12414171482 02-APR-10<br />
2    139180  12414171482 02-APR-10 12414204122 02-APR-10<br />
2    139181  12414204122 02-APR-10 12414237819 02-APR-10<br />
2    139182  12414237819 02-APR-10 12414268323 02-APR-10<br />
2    139183  12414268323 02-APR-10 12414338270 02-APR-10</p>
<p>BS Key  Size       Device Type Elapsed Time Completion Time<br />
------- ---------- ----------- ------------ ---------------<br />
18015   1.08G      DISK        00:04:48     02-APR-10<br />
BP Key: 21237   Status: AVAILABLE  Compressed: YES  Tag: TAG20100402T130015<br />
Piece Name: /orabak/arch/CNDERPDB_arch_20100402_715266355_18082_1</p>
<p>List of Archived Logs in backup set 18015<br />
Thrd Seq     Low SCN    Low Time  Next SCN   Next Time<br />
---- ------- ---------- --------- ---------- ---------<br />
2    139193  12415576435 02-APR-10 12415918972 02-APR-10<br />
2    139194  12415918972 02-APR-10 12416263996 02-APR-10<br />
2    139195  12416263996 02-APR-10 12416562635 02-APR-10<br />
2    139196  12416562635 02-APR-10 12416910144 02-APR-10<br />
2    139197  12416910144 02-APR-10 12417269808 02-APR-10<br />
2    139198  12417269808 02-APR-10 12417649399 02-APR-10<br />
2    139199  12417649399 02-APR-10 12417949379 02-APR-10<br />
2    139200  12417949379 02-APR-10 12418319357 02-APR-10</p>
<p>BS Key  Size       Device Type Elapsed Time Completion Time<br />
------- ---------- ----------- ------------ ---------------<br />
18016   1.18G      DISK        00:05:01     02-APR-10<br />
BP Key: 21238   Status: AVAILABLE  Compressed: YES  Tag: TAG20100402T130015<br />
Piece Name: /orabak/arch/CNDERPDB_arch_20100402_715266651_18083_1</p>
<p>List of Archived Logs in backup set 18016<br />
Thrd Seq     Low SCN    Low Time  Next SCN   Next Time<br />
---- ------- ---------- --------- ---------- ---------<br />
2    139184  12414338270 02-APR-10 12414423130 02-APR-10<br />
2    139185  12414423130 02-APR-10 12414500563 02-APR-10<br />
2    139186  12414500563 02-APR-10 12414570455 02-APR-10<br />
2    139187  12414570455 02-APR-10 12414642681 02-APR-10<br />
2    139188  12414642681 02-APR-10 12414698647 02-APR-10<br />
2    139189  12414698647 02-APR-10 12414771473 02-APR-10<br />
2    139190  12414771473 02-APR-10 12414850611 02-APR-10<br />
2    139191  12414850611 02-APR-10 12415217365 02-APR-10<br />
2    139192  12415217365 02-APR-10 12415576435 02-APR-10</p>
<p>BS Key  Size       Device Type Elapsed Time Completion Time<br />
------- ---------- ----------- ------------ ---------------<br />
18017   888.53M    DISK        00:03:52     02-APR-10<br />
BP Key: 21239   Status: AVAILABLE  Compressed: YES  Tag: TAG20100402T130015<br />
Piece Name: /orabak/arch/CNDERPDB_arch_20100402_715266957_18084_1</p>
<p>List of Archived Logs in backup set 18017<br />
Thrd Seq     Low SCN    Low Time  Next SCN   Next Time<br />
---- ------- ---------- --------- ---------- ---------<br />
2    139201  12418319357 02-APR-10 12418704868 02-APR-10<br />
2    139202  12418704868 02-APR-10 12419088247 02-APR-10<br />
2    139203  12419088247 02-APR-10 12419463210 02-APR-10<br />
2    139204  12419463210 02-APR-10 12419844874 02-APR-10<br />
2    139205  12419844874 02-APR-10 12420094882 02-APR-10<br />
2    139206  12420094882 02-APR-10 12420150868 02-APR-10<br />
2    139207  12420150868 02-APR-10 12420214323 02-APR-10<br />
2    139208  12420214323 02-APR-10 12420238252 02-APR-10<br />
2    139209  12420238252 02-APR-10 12420250587 02-APR-10<br />
2    139210  12420250587 02-APR-10 12420257180 02-APR-10<br />
2    139211  12420257180 02-APR-10 12420263066 02-APR-10<br />
2    139212  12420263066 02-APR-10 12420268384 02-APR-10<br />
2    139213  12420268384 02-APR-10 12420270333 02-APR-10<br />
2    139214  12420270333 02-APR-10 12420271382 02-APR-10<br />
2    139215  12420271382 02-APR-10 12420272765 02-APR-10<br />
2    139216  12420272765 02-APR-10 12420273996 02-APR-10<br />
2    139217  12420273996 02-APR-10 12420274953 02-APR-10<br />
2    139218  12420274953 02-APR-10 12420275837 02-APR-10<br />
2    139219  12420275837 02-APR-10 12420283017 02-APR-10<br />
2    139220  12420283017 02-APR-10 12420289397 02-APR-10<br />
2    139221  12420289397 02-APR-10 12420308029 02-APR-10<br />
2    139222  12420308029 02-APR-10 12420352897 02-APR-10<br />
2    139223  12420352897 02-APR-10 12420409200 02-APR-10<br />
2    139224  12420409200 02-APR-10 12420536370 02-APR-10<br />
2    139225  12420536370 02-APR-10 12420673365 02-APR-10</p>
<p>BS Key  Size       Device Type Elapsed Time Completion Time<br />
------- ---------- ----------- ------------ ---------------<br />
18019   368.43M    DISK        00:01:33     02-APR-10<br />
BP Key: 21241   Status: AVAILABLE  Compressed: YES  Tag: TAG20100402T213015<br />
Piece Name: /orabak/arch/CNDERPDB_arch_20100402_715296617_18087_1</p>
<p>List of Archived Logs in backup set 18019<br />
Thrd Seq     Low SCN    Low Time  Next SCN   Next Time<br />
---- ------- ---------- --------- ---------- ---------<br />
2    139226  12420673365 02-APR-10 12420743967 02-APR-10<br />
2    139227  12420743967 02-APR-10 12420869457 02-APR-10<br />
2    139228  12420869457 02-APR-10 12421033197 02-APR-10<br />
2    139229  12421033197 02-APR-10 12421227660 02-APR-10<br />
2    139230  12421227660 02-APR-10 12421333583 02-APR-10<br />
2    139231  12421333583 02-APR-10 12421496532 02-APR-10<br />
2    139232  12421496532 02-APR-10 12421613786 02-APR-10<br />
2    139233  12421613786 02-APR-10 12421745380 02-APR-10<br />
2    139234  12421745380 02-APR-10 12421894114 02-APR-10<br />
2    139235  12421894114 02-APR-10 12421998582 02-APR-10<br />
2    139236  12421998582 02-APR-10 12422163198 02-APR-10<br />
2    139237  12422163198 02-APR-10 12422276738 02-APR-10<br />
2    139238  12422276738 02-APR-10 12422408879 02-APR-10<br />
2    139239  12422408879 02-APR-10 12422531754 02-APR-10<br />
2    139240  12422531754 02-APR-10 12422630287 02-APR-10<br />
2    139241  12422630287 02-APR-10 12422733683 02-APR-10<br />
2    139242  12422733683 02-APR-10 12422830935 02-APR-10<br />
2    139243  12422830935 02-APR-10 12422841318 02-APR-10<br />
2    139244  12422841318 02-APR-10 12422845794 02-APR-10<br />
2    139245  12422845794 02-APR-10 12422848359 02-APR-10<br />
2    139246  12422848359 02-APR-10 12422852191 02-APR-10<br />
2    139247  12422852191 02-APR-10 12422855696 02-APR-10<br />
2    139248  12422855696 02-APR-10 12422860249 02-APR-10<br />
2    139249  12422860249 02-APR-10 12422861531 02-APR-10<br />
2    139250  12422861531 02-APR-10 12422868202 02-APR-10<br />
2    139251  12422868202 02-APR-10 12422875058 02-APR-10<br />
2    139252  12422875058 02-APR-10 12422892330 02-APR-10<br />
2    139253  12422892330 02-APR-10 12422906852 02-APR-10<br />
2    139254  12422906852 02-APR-10 12422922052 02-APR-10<br />
2    139255  12422922052 02-APR-10 12423017940 02-APR-10<br />
2    139256  12423017940 02-APR-10 12423167539 02-APR-10<br />
2    139257  12423167539 02-APR-10 12423419386 02-APR-10<br />
2    139258  12423419386 02-APR-10 12423572891 02-APR-10<br />
2    139259  12423572891 02-APR-10 12423679063 02-APR-10<br />
2    139260  12423679063 02-APR-10 12423804204 02-APR-10<br />
2    139261  12423804204 02-APR-10 12423965935 02-APR-10<br />
2    139262  12423965935 02-APR-10 12424067553 02-APR-10<br />
2    139263  12424067553 02-APR-10 12424181177 02-APR-10<br />
2    139264  12424181177 02-APR-10 12424276388 02-APR-10<br />
2    139265  12424276388 02-APR-10 12424460831 02-APR-10<br />
2    139266  12424460831 02-APR-10 12424607422 02-APR-10<br />
2    139267  12424607422 02-APR-10 12424743466 02-APR-10<br />
2    139268  12424743466 02-APR-10 12424914672 02-APR-10<br />
2    139269  12424914672 02-APR-10 12425085812 02-APR-10<br />
2    139270  12425085812 02-APR-10 12425218972 02-APR-10<br />
2    139271  12425218972 02-APR-10 12425344844 02-APR-10<br />
2    139272  12425344844 02-APR-10 12425480047 02-APR-10<br />
2    139273  12425480047 02-APR-10 12425643050 02-APR-10<br />
2    139274  12425643050 02-APR-10 12425758729 02-APR-10<br />
2    139275  12425758729 02-APR-10 12425909760 02-APR-10<br />
2    139276  12425909760 02-APR-10 12426102834 02-APR-10<br />
2    139277  12426102834 02-APR-10 12426236664 02-APR-10</p>
<p>BS Key  Size       Device Type Elapsed Time Completion Time<br />
------- ---------- ----------- ------------ ---------------<br />
18020   421.06M    DISK        00:01:44     02-APR-10<br />
BP Key: 21242   Status: AVAILABLE  Compressed: YES  Tag: TAG20100402T213015<br />
Piece Name: /orabak/arch/CNDERPDB_arch_20100402_715296183_18086_1</p>
<p>List of Archived Logs in backup set 18020<br />
Thrd Seq     Low SCN    Low Time  Next SCN   Next Time<br />
---- ------- ---------- --------- ---------- ---------<br />
1    130884  12420674578 02-APR-10 12420751514 02-APR-10<br />
1    130885  12420751514 02-APR-10 12420869668 02-APR-10<br />
1    130886  12420869668 02-APR-10 12421033097 02-APR-10<br />
1    130887  12421033097 02-APR-10 12421227343 02-APR-10<br />
1    130888  12421227343 02-APR-10 12421332908 02-APR-10<br />
1    130889  12421332908 02-APR-10 12421485220 02-APR-10<br />
1    130890  12421485220 02-APR-10 12421612693 02-APR-10<br />
1    130891  12421612693 02-APR-10 12421729960 02-APR-10<br />
1    130892  12421729960 02-APR-10 12421883068 02-APR-10<br />
1    130893  12421883068 02-APR-10 12421996639 02-APR-10<br />
1    130894  12421996639 02-APR-10 12422142061 02-APR-10<br />
1    130895  12422142061 02-APR-10 12422259990 02-APR-10<br />
1    130896  12422259990 02-APR-10 12422380732 02-APR-10<br />
1    130897  12422380732 02-APR-10 12422512955 02-APR-10<br />
1    130898  12422512955 02-APR-10 12422622031 02-APR-10<br />
1    130899  12422622031 02-APR-10 12422731142 02-APR-10<br />
1    130900  12422731142 02-APR-10 12422829112 02-APR-10<br />
1    130901  12422829112 02-APR-10 12422840605 02-APR-10<br />
1    130902  12422840605 02-APR-10 12422845469 02-APR-10<br />
1    130903  12422845469 02-APR-10 12422847714 02-APR-10<br />
1    130904  12422847714 02-APR-10 12422851559 02-APR-10<br />
1    130905  12422851559 02-APR-10 12422854834 02-APR-10<br />
1    130906  12422854834 02-APR-10 12422859713 02-APR-10<br />
1    130907  12422859713 02-APR-10 12422861547 02-APR-10<br />
1    130908  12422861547 02-APR-10 12422868247 02-APR-10<br />
1    130909  12422868247 02-APR-10 12422875082 02-APR-10<br />
1    130910  12422875082 02-APR-10 12422892562 02-APR-10<br />
1    130911  12422892562 02-APR-10 12422906910 02-APR-10<br />
1    130912  12422906910 02-APR-10 12422922078 02-APR-10<br />
1    130913  12422922078 02-APR-10 12423017956 02-APR-10<br />
1    130914  12423017956 02-APR-10 12423167377 02-APR-10<br />
1    130915  12423167377 02-APR-10 12423419566 02-APR-10<br />
1    130916  12423419566 02-APR-10 12423572829 02-APR-10<br />
1    130917  12423572829 02-APR-10 12423677866 02-APR-10<br />
1    130918  12423677866 02-APR-10 12423798772 02-APR-10<br />
1    130919  12423798772 02-APR-10 12423964636 02-APR-10<br />
1    130920  12423964636 02-APR-10 12424056421 02-APR-10<br />
1    130921  12424056421 02-APR-10 12424169818 02-APR-10<br />
1    130922  12424169818 02-APR-10 12424259646 02-APR-10<br />
1    130923  12424259646 02-APR-10 12424456980 02-APR-10<br />
1    130924  12424456980 02-APR-10 12424577229 02-APR-10<br />
1    130925  12424577229 02-APR-10 12424729139 02-APR-10<br />
1    130926  12424729139 02-APR-10 12424892515 02-APR-10<br />
1    130927  12424892515 02-APR-10 12425058920 02-APR-10<br />
1    130928  12425058920 02-APR-10 12425183453 02-APR-10<br />
1    130929  12425183453 02-APR-10 12425302024 02-APR-10</p>
<p>BS Key  Size       Device Type Elapsed Time Completion Time<br />
------- ---------- ----------- ------------ ---------------<br />
18021   104.97M    DISK        00:00:25     02-APR-10<br />
BP Key: 21243   Status: AVAILABLE  Compressed: YES  Tag: TAG20100402T213015<br />
Piece Name: /orabak/arch/CNDERPDB_arch_20100402_715296294_18088_1</p>
<p>List of Archived Logs in backup set 18021<br />
Thrd Seq     Low SCN    Low Time  Next SCN   Next Time<br />
---- ------- ---------- --------- ---------- ---------<br />
1    130930  12425302024 02-APR-10 12425464067 02-APR-10<br />
1    130931  12425464067 02-APR-10 12425612482 02-APR-10<br />
1    130932  12425612482 02-APR-10 12425741312 02-APR-10<br />
1    130933  12425741312 02-APR-10 12425903002 02-APR-10<br />
1    130934  12425903002 02-APR-10 12426033120 02-APR-10<br />
1    130935  12426033120 02-APR-10 12426231614 02-APR-10<br />
1    130936  12426231614 02-APR-10 12426258334 02-APR-10</p>
<p>BS Key  Size       Device Type Elapsed Time Completion Time<br />
------- ---------- ----------- ------------ ---------------<br />
18034   66.82M     DISK        00:00:20     03-APR-10<br />
BP Key: 21292   Status: AVAILABLE  Compressed: YES  Tag: TAG20100403T130014<br />
Piece Name: /orabak/arch/CNDERPDB_arch_20100403_715351984_18101_1</p>
<p>List of Archived Logs in backup set 18034<br />
Thrd Seq     Low SCN    Low Time  Next SCN   Next Time<br />
---- ------- ---------- --------- ---------- ---------<br />
1    130937  12426258334 02-APR-10 12426281568 02-APR-10<br />
1    130938  12426281568 02-APR-10 12426378051 02-APR-10<br />
1    130939  12426378051 02-APR-10 12426497713 02-APR-10<br />
1    130940  12426497713 02-APR-10 12426508246 02-APR-10<br />
1    130941  12426508246 02-APR-10 12426518759 02-APR-10<br />
1    130942  12426518759 02-APR-10 12426561156 02-APR-10<br />
1    130943  12426561156 02-APR-10 12426575448 02-APR-10<br />
1    130944  12426575448 02-APR-10 12426581961 02-APR-10<br />
1    130945  12426581961 02-APR-10 12426604391 02-APR-10<br />
1    130946  12426604391 02-APR-10 12426607860 02-APR-10<br />
1    130947  12426607860 02-APR-10 12426611851 02-APR-10<br />
1    130948  12426611851 02-APR-10 12426614176 02-APR-10<br />
1    130949  12426614176 02-APR-10 12426625355 02-APR-10<br />
1    130950  12426625355 02-APR-10 12426629997 02-APR-10<br />
1    130951  12426629997 02-APR-10 12426632292 02-APR-10<br />
1    130952  12426632292 02-APR-10 12426638597 02-APR-10<br />
1    130953  12426638597 02-APR-10 12426645006 02-APR-10<br />
1    130954  12426645006 02-APR-10 12426646673 02-APR-10<br />
1    130955  12426646673 02-APR-10 12426648522 02-APR-10<br />
1    130956  12426648522 02-APR-10 12426652032 02-APR-10<br />
1    130957  12426652032 02-APR-10 12426667628 02-APR-10<br />
1    130958  12426667628 02-APR-10 12426669877 02-APR-10<br />
1    130959  12426669877 02-APR-10 12426670663 02-APR-10<br />
1    130960  12426670663 02-APR-10 12426671857 02-APR-10<br />
1    130961  12426671857 02-APR-10 12426673180 02-APR-10<br />
1    130962  12426673180 02-APR-10 12426674259 02-APR-10<br />
1    130963  12426674259 02-APR-10 12426719108 02-APR-10<br />
1    130964  12426719108 02-APR-10 12426751352 02-APR-10<br />
1    130965  12426751352 02-APR-10 12426752399 02-APR-10<br />
1    130966  12426752399 02-APR-10 12426753211 02-APR-10<br />
1    130967  12426753211 02-APR-10 12426754028 02-APR-10<br />
1    130968  12426754028 02-APR-10 12426754879 02-APR-10<br />
1    130969  12426754879 02-APR-10 12426761703 02-APR-10</p>
<p>BS Key  Size       Device Type Elapsed Time Completion Time<br />
------- ---------- ----------- ------------ ---------------<br />
18038   1.32G      DISK        00:05:25     03-APR-10<br />
BP Key: 21296   Status: AVAILABLE  Compressed: YES  Tag: TAG20100403T130014<br />
Piece Name: /orabak/arch/CNDERPDB_arch_20100403_715353019_18105_1</p>
<p>List of Archived Logs in backup set 18038<br />
Thrd Seq     Low SCN    Low Time  Next SCN   Next Time<br />
---- ------- ---------- --------- ---------- ---------<br />
2    139278  12426236664 02-APR-10 12426270726 02-APR-10<br />
2    139279  12426270726 02-APR-10 12426285750 02-APR-10<br />
2    139280  12426285750 02-APR-10 12426409113 02-APR-10<br />
2    139281  12426409113 02-APR-10 12426501941 02-APR-10<br />
2    139282  12426501941 02-APR-10 12426510767 02-APR-10<br />
2    139283  12426510767 02-APR-10 12426521032 02-APR-10<br />
2    139284  12426521032 02-APR-10 12426563858 02-APR-10<br />
2    139285  12426563858 02-APR-10 12426576699 02-APR-10<br />
2    139286  12426576699 02-APR-10 12426584470 02-APR-10<br />
2    139287  12426584470 02-APR-10 12426605256 02-APR-10<br />
2    139288  12426605256 02-APR-10 12426608982 02-APR-10<br />
2    139289  12426608982 02-APR-10 12426612473 02-APR-10<br />
2    139290  12426612473 02-APR-10 12426624363 02-APR-10<br />
2    139291  12426624363 02-APR-10 12426625804 02-APR-10<br />
2    139292  12426625804 02-APR-10 12426630539 02-APR-10<br />
2    139293  12426630539 02-APR-10 12426632904 02-APR-10<br />
2    139294  12426632904 02-APR-10 12426639011 02-APR-10<br />
2    139295  12426639011 02-APR-10 12426645620 02-APR-10<br />
2    139296  12426645620 02-APR-10 12426647268 02-APR-10<br />
2    139297  12426647268 02-APR-10 12426649060 02-APR-10<br />
2    139298  12426649060 02-APR-10 12426653216 02-APR-10<br />
2    139299  12426653216 02-APR-10 12426668724 02-APR-10<br />
2    139300  12426668724 02-APR-10 12426670578 02-APR-10<br />
2    139301  12426670578 02-APR-10 12426670660 02-APR-10<br />
2    139302  12426670660 02-APR-10 12426671859 02-APR-10<br />
2    139303  12426671859 02-APR-10 12426673157 02-APR-10<br />
2    139304  12426673157 02-APR-10 12426674262 02-APR-10<br />
2    139305  12426674262 02-APR-10 12426719104 02-APR-10<br />
2    139306  12426719104 02-APR-10 12426751344 02-APR-10<br />
2    139307  12426751344 02-APR-10 12426752392 02-APR-10<br />
2    139308  12426752392 02-APR-10 12426753203 02-APR-10<br />
2    139309  12426753203 02-APR-10 12426754019 02-APR-10<br />
2    139310  12426754019 02-APR-10 12426754870 02-APR-10<br />
2    139311  12426754870 02-APR-10 12426761660 02-APR-10</p>
<p>RMAN&gt;</p>
<p>RMAN&gt; exit</p>
<p>Recovery Manager complete.</p></blockquote>
<p>二、拷贝需要的rman备份片文件回来，放到默认的rman备份路径</p>
<blockquote><p>ERPDB1@/orabak/arch&gt;ls -l<br />
total 14338968<br />
-rw-r-----   1 oracle   oinstall   78802432 Apr 06 09:35 CNDERPDB_arch_20100402_715265583_18079_1<br />
-rw-r-----   1 oracle   oinstall   30210560 Apr 06 09:36 CNDERPDB_arch_20100402_715265609_18081_1<br />
-rw-r-----   1 oracle   oinstall 1447344128 Apr 06 09:52 CNDERPDB_arch_20100402_715266018_18080_1<br />
-rw-r-----   1 oracle   oinstall 1154966528 Apr 06 09:51 CNDERPDB_arch_20100402_715266355_18082_1<br />
-rw-r-----   1 oracle   oinstall 1264911360 Apr 06 09:51 CNDERPDB_arch_20100402_715266651_18083_1<br />
-rw-r-----   1 oracle   oinstall  931689984 Apr 06 09:50 CNDERPDB_arch_20100402_715266957_18084_1<br />
-rw-r-----   1 oracle   oinstall  441509888 Apr 06 09:41 CNDERPDB_arch_20100402_715296183_18086_1<br />
-rw-r-----   1 oracle   oinstall  110066176 Apr 06 09:42 CNDERPDB_arch_20100402_715296294_18088_1<br />
-rw-r-----   1 oracle   oinstall  386329600 Apr 06 09:53 CNDERPDB_arch_20100402_715296617_18087_1<br />
-rw-r-----   1 oracle   oinstall   70063104 Apr 06 09:36 CNDERPDB_arch_20100403_715351984_18101_1<br />
-rw-r-----   1 oracle   oinstall 1420035584 Apr 06 09:55 CNDERPDB_arch_20100403_715353019_18105_1</p></blockquote>
<p>三、从Rman备份片中解析出归档日志文件</p>
<blockquote><p>ERPDB1@/orabak/arch&gt;rman target /</p>
<p>Recovery Manager: Release 10.2.0.3.0 - Production on Tue Apr 6 10:01:54 2010</p>
<p>Copyright (c) 1982, 2005, Oracle.  All rights reserved.</p>
<p>connected to target database: CNDERPDB (DBID=2400249746)</p>
<p>RMAN&gt; run {<br />
2&gt; set archivelog destination to '/orabak/testarch';<br />
3&gt; SQL 'ALTER SESSION SET NLS_DATE_FORMAT="YYYY-MM-DD:HH24:MI:SS"';<br />
restore archivelog time between '2010-04-01 22:00:00' and '2010-04-02 23:00:00';4&gt;<br />
5&gt; }</p>
<p>executing command: SET ARCHIVELOG DESTINATION<br />
using target database control file instead of recovery catalog</p>
<p>sql statement: ALTER SESSION SET NLS_DATE_FORMAT="YYYY-MM-DD:HH24:MI:SS"</p>
<p>Starting restore at 06-APR-10<br />
allocated channel: ORA_DISK_1<br />
channel ORA_DISK_1: sid=676 instance=cnderpdb1 devtype=DISK</p>
<p>channel ORA_DISK_1: starting archive log restore to user-specified destination<br />
archive log destination=/orabak/testarch<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130816<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130817<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130818<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130819<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130820<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130821<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130822<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130823<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130824<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130825<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130826<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130827<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130828<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130829<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130830<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130831<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130832<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130833<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130834<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130835<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130836<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130837<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130838<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130839<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130840<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130841<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130842<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130843<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130844<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130845<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130846<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130847<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130848<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130849<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130850<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130851<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130852<br />
channel ORA_DISK_1: reading from backup piece /orabak/arch/CNDERPDB_arch_20100402_715265583_18079_1<br />
channel ORA_DISK_1: restored backup piece 1<br />
piece handle=/orabak/arch/CNDERPDB_arch_20100402_715265583_18079_1 tag=TAG20100402T130015<br />
channel ORA_DISK_1: restore complete, elapsed time: 00:00:35<br />
channel ORA_DISK_1: starting archive log restore to user-specified destination<br />
archive log destination=/orabak/testarch<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130853<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130854<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130855<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130856<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130857<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130858<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130859<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130860<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130861<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130862<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130863<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130864<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130865<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130866<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130867<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130868<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130869<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130870<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130871<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130872<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130873<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130874<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130875<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130876<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130877<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130878<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130879<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130880<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130881<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130882<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130883<br />
channel ORA_DISK_1: reading from backup piece /orabak/arch/CNDERPDB_arch_20100402_715265609_18081_1<br />
channel ORA_DISK_1: restored backup piece 1<br />
piece handle=/orabak/arch/CNDERPDB_arch_20100402_715265609_18081_1 tag=TAG20100402T130015<br />
channel ORA_DISK_1: restore complete, elapsed time: 00:00:15<br />
channel ORA_DISK_1: starting archive log restore to user-specified destination<br />
archive log destination=/orabak/testarch<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139146<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139147<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139148<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139149<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139150<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139151<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139152<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139153<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139154<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139155<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139156<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139157<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139158<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139159<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139160<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139161<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139162<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139163<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139164<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139165<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139166<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139167<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139168<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139169<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139170<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139171<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139172<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139173<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139174<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139175<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139176<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139177<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139178<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139179<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139180<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139181<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139182<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139183<br />
channel ORA_DISK_1: reading from backup piece /orabak/arch/CNDERPDB_arch_20100402_715266018_18080_1<br />
channel ORA_DISK_1: restored backup piece 1<br />
piece handle=/orabak/arch/CNDERPDB_arch_20100402_715266018_18080_1 tag=TAG20100402T130015<br />
channel ORA_DISK_1: restore complete, elapsed time: 00:08:55<br />
channel ORA_DISK_1: starting archive log restore to user-specified destination<br />
archive log destination=/orabak/testarch<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139193<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139194<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139195<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139196<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139197<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139198<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139199<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139200<br />
channel ORA_DISK_1: reading from backup piece /orabak/arch/CNDERPDB_arch_20100402_715266355_18082_1<br />
channel ORA_DISK_1: restored backup piece 1<br />
piece handle=/orabak/arch/CNDERPDB_arch_20100402_715266355_18082_1 tag=TAG20100402T130015<br />
channel ORA_DISK_1: restore complete, elapsed time: 00:08:35<br />
channel ORA_DISK_1: starting archive log restore to user-specified destination<br />
archive log destination=/orabak/testarch<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139184<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139185<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139186<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139187<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139188<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139189<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139190<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139191<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139192<br />
channel ORA_DISK_1: reading from backup piece /orabak/arch/CNDERPDB_arch_20100402_715266651_18083_1<br />
channel ORA_DISK_1: restored backup piece 1<br />
piece handle=/orabak/arch/CNDERPDB_arch_20100402_715266651_18083_1 tag=TAG20100402T130015<br />
channel ORA_DISK_1: restore complete, elapsed time: 00:08:35<br />
channel ORA_DISK_1: starting archive log restore to user-specified destination<br />
archive log destination=/orabak/testarch<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139201<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139202<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139203<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139204<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139205<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139206<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139207<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139208<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139209<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139210<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139211<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139212<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139213<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139214<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139215<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139216<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139217<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139218<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139219<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139220<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139221<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139222<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139223<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139224<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139225<br />
channel ORA_DISK_1: reading from backup piece /orabak/arch/CNDERPDB_arch_20100402_715266957_18084_1<br />
channel ORA_DISK_1: restored backup piece 1<br />
piece handle=/orabak/arch/CNDERPDB_arch_20100402_715266957_18084_1 tag=TAG20100402T130015<br />
channel ORA_DISK_1: restore complete, elapsed time: 00:06:40<br />
channel ORA_DISK_1: starting archive log restore to user-specified destination<br />
archive log destination=/orabak/testarch<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130884<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130885<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130886<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130887<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130888<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130889<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130890<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130891<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130892<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130893<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130894<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130895<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130896<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130897<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130898<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130899<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130900<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130901<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130902<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130903<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130904<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130905<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130906<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130907<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130908<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130909<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130910<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130911<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130912<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130913<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130914<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130915<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130916<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130917<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130918<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130919<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130920<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130921<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130922<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130923<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130924<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130925<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130926<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130927<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130928<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130929<br />
channel ORA_DISK_1: reading from backup piece /orabak/arch/CNDERPDB_arch_20100402_715296183_18086_1<br />
channel ORA_DISK_1: restored backup piece 1<br />
piece handle=/orabak/arch/CNDERPDB_arch_20100402_715296183_18086_1 tag=TAG20100402T213015<br />
channel ORA_DISK_1: restore complete, elapsed time: 00:02:45<br />
channel ORA_DISK_1: starting archive log restore to user-specified destination<br />
archive log destination=/orabak/testarch<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130930<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130931<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130932<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130933<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130934<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130935<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130936<br />
channel ORA_DISK_1: reading from backup piece /orabak/arch/CNDERPDB_arch_20100402_715296294_18088_1<br />
channel ORA_DISK_1: restored backup piece 1<br />
piece handle=/orabak/arch/CNDERPDB_arch_20100402_715296294_18088_1 tag=TAG20100402T213015<br />
channel ORA_DISK_1: restore complete, elapsed time: 00:00:46<br />
channel ORA_DISK_1: starting archive log restore to user-specified destination<br />
archive log destination=/orabak/testarch<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139226<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139227<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139228<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139229<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139230<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139231<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139232<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139233<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139234<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139235<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139236<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139237<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139238<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139239<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139240<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139241<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139242<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139243<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139244<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139245<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139246<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139247<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139248<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139249<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139250<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139251<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139252<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139253<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139254<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139255<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139256<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139257<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139258<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139259<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139260<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139261<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139262<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139263<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139264<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139265<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139266<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139267<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139268<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139269<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139270<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139271<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139272<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139273<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139274<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139275<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139276<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139277<br />
channel ORA_DISK_1: reading from backup piece /orabak/arch/CNDERPDB_arch_20100402_715296617_18087_1<br />
channel ORA_DISK_1: restored backup piece 1<br />
piece handle=/orabak/arch/CNDERPDB_arch_20100402_715296617_18087_1 tag=TAG20100402T213015<br />
channel ORA_DISK_1: restore complete, elapsed time: 00:02:16<br />
channel ORA_DISK_1: starting archive log restore to user-specified destination<br />
archive log destination=/orabak/testarch<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130937<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130938<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130939<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130940<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130941<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130942<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130943<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130944<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130945<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130946<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130947<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130948<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130949<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130950<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130951<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130952<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130953<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130954<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130955<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130956<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130957<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130958<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130959<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130960<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130961<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130962<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130963<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130964<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130965<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130966<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130967<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130968<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=1 sequence=130969<br />
channel ORA_DISK_1: reading from backup piece /orabak/arch/CNDERPDB_arch_20100403_715351984_18101_1<br />
channel ORA_DISK_1: restored backup piece 1<br />
piece handle=/orabak/arch/CNDERPDB_arch_20100403_715351984_18101_1 tag=TAG20100403T130014<br />
channel ORA_DISK_1: restore complete, elapsed time: 00:00:38<br />
channel ORA_DISK_1: starting archive log restore to user-specified destination<br />
archive log destination=/orabak/testarch<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139278<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139279<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139280<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139281<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139282<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139283<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139284<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139285<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139286<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139287<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139288<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139289<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139290<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139291<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139292<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139293<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139294<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139295<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139296<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139297<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139298<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139299<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139300<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139301<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139302<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139303<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139304<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139305<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139306<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139307<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139308<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139309<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139310<br />
channel ORA_DISK_1: restoring archive log<br />
archive log thread=2 sequence=139311<br />
channel ORA_DISK_1: reading from backup piece /orabak/arch/CNDERPDB_arch_20100403_715353019_18105_1<br />
channel ORA_DISK_1: restored backup piece 1<br />
piece handle=/orabak/arch/CNDERPDB_arch_20100403_715353019_18105_1 tag=TAG20100403T130014<br />
channel ORA_DISK_1: restore complete, elapsed time: 00:06:56<br />
Finished restore at 06-APR-10</p>
<p>RMAN&gt;</p>
<p>RMAN&gt; exit</p>
<p>Recovery Manager complete.</p></blockquote>
<p>四、把归档日志文件转移到测试环境以便进行日志挖掘</p>
<blockquote><p>p5b2@/orabak/testarch$ rcp p5a1:/orabak/testarch/* /orabak/testarch/<br />
p5b2@/orabak/testarch$ ls -l<br />
total 36555528<br />
-rw-r-----   1 oracle   oinstall   10272768 Apr 06 11:50 1_130816_640266118.dbf<br />
-rw-r-----   1 oracle   oinstall     756224 Apr 06 11:50 1_130817_640266118.dbf<br />
-rw-r-----   1 oracle   oinstall     308736 Apr 06 11:50 1_130818_640266118.dbf<br />
-rw-r-----   1 oracle   oinstall     160256 Apr 06 11:50 1_130819_640266118.dbf<br />
-rw-r-----   1 oracle   oinstall     113664 Apr 06 11:50 1_130820_640266118.dbf<br />
-rw-r-----   1 oracle   oinstall      59904 Apr 06 11:50 1_130821_640266118.dbf<br />
......<br />
-rw-r-----   1 oracle   oinstall   10095104 Apr 06 12:20 2_139311_640266118.dbf</p></blockquote>
<p>五、在测试环境上开始用Logminer工具进行挖掘：</p>
<blockquote><p>p5b2@/orabak/testarch$ sqlplus " / as sysdba"</p>
<p>SQL*Plus: Release 10.2.0.3.0 - Production on Tue Apr 6 14:01:09 2010</p>
<p>Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.</p>
<p>Connected to:<br />
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production</p>
<p>With the Partitioning, OLAP and Data Mining options</p>
<p>SQL&gt; EXECUTE DBMS_LOGMNR_D.SET_TABLESPACE('erp');</p>
<p>PL/SQL procedure successfully completed.</p>
<p>SQL&gt; EXECUTE DBMS_LOGMNR.ADD_LOGFILE(LogFileName=&gt;'/orabak/testarch/1_130816_640266118.dbf',Options=&gt;dbms_logmnr.new);</p>
<p>PL/SQL procedure successfully completed.</p>
<p>SQL&gt; EXECUTE DBMS_LOGMNR.ADD_LOGFILE(LogFileName=&gt;'/orabak/testarch/1_130817_640266118.dbf',Options=&gt;dbms_logmnr.addfile);<br />
......<br />
EXECUTE DBMS_LOGMNR.ADD_LOGFILE(LogFileName=&gt;'/orabak/testarch/1_130821_640266118.dbf',Options=&gt;dbms_logmnr.addfile);</p>
<p>SQL&gt;<br />
PL/SQL procedure successfully completed.</p>
<p>SQL&gt;</p>
<p>PL/SQL procedure successfully completed.<br />
SQL&gt;<br />
SQL&gt; EXEC DBMS_LOGMNR.START_LOGMNR(OPTIONS =&gt; DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);</p>
<p>PL/SQL procedure successfully completed.</p>
<p>SQL&gt; create table erp.log_201004_1 as select * from v$logmnr_contents;</p>
<p>Table created.</p>
<p>SQL&gt; exec dbms_logmnr.end_logmnr;</p>
<p>PL/SQL procedure successfully completed.</p>
<p>SQL&gt;<br />
SQL&gt; exit<br />
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production<br />
With the Partitioning, OLAP and Data Mining options</p></blockquote>
<p>查询结果集，根据表名和DML操作类型定位SQL语句：</p>
<blockquote><p>SQL&gt; select count(*)<br />
2  from v$logmnr_contents where seg_owner='ERP'<br />
3  and seg_name='FA_CARD' and operation='DELETE'<br />
4  /</p>
<p>COUNT(*)<br />
----------<br />
29</p>
<p>SQL&gt; select timestamp,username,session#,sql_redo,operation,session_info<br />
2 from log_201004_1 where seg_owner='ERP'<br />
3 and seg_name='FA_CARD' and operation='DELETE'<br />
4  /</p></blockquote>
<p>根据SQL语句的内容和系统日志，最终确定了具体的案发时间、地点和人物，但是这种数据丢失已经不可挽回了，因为这个数据丢失并不是简单的删除一个表的记录，而是程序代码的问题导致每当用户做一个操作的时侯，就会删除掉一点数据，可能从系统上线的时侯开始，数据就已经不准确了。应用程序的错误导致的数据损失，这是多么可怕的事情。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.banping.com/2010/06/17/app_error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决dba_outstanding_alerts误报表空间使用率的问题</title>
		<link>http://www.banping.com/2010/06/08/tablespace_usage/</link>
		<comments>http://www.banping.com/2010/06/08/tablespace_usage/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 09:43:09 +0000</pubDate>
		<dc:creator>banping</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.banping.com/?p=720</guid>
		<description><![CDATA[<p>前段时间通过dba_outstanding_alerts发现表空间增长超过了85%，然后加了个裸设备做为数据文件，虽然这个数据文件可用，但dba_outstanding_alerts中的警告信息并没有消失：</p> <p>SQL&#62; col reason for a50<br /> SQL&#62; SELECT REASON<br /> 2  , METRIC_VALUE<br /> 3  , TO_CHAR(CREATION_TIME,'DD-MON-YYYY HH24:MI:SS') cdate<br /> 4  FROM SYS.DBA_OUTSTANDING_ALERTS;</p> <p>REASON                                             METRIC_VALUE CDATE<br /> -------------------------------------------------- ------------ -----------------------<br /> Tablespace [ERP_INDEX] is [94 percent] full          94.5023148 26-MAR-2010 19:45:05</p> <p>可见Oracle在这里认为这个表空间已经使用了94%以上，查看一下预警阀值的设定：</p> <p>SQL&#62; col METRICS_NAME for a50</p> <p>SQL&#62; col WARN_VAL for a10<br /> SQL&#62; col [...]]]></description>
			<content:encoded><![CDATA[<p>前段时间通过dba_outstanding_alerts发现表空间增长超过了85%，然后加了个裸设备做为数据文件，虽然这个数据文件可用，但dba_outstanding_alerts中的警告信息并没有消失：</p>
<blockquote><p>SQL&gt; col reason for a50<br />
SQL&gt; SELECT REASON<br />
2  , METRIC_VALUE<br />
3  , TO_CHAR(CREATION_TIME,'DD-MON-YYYY HH24:MI:SS') cdate<br />
4  FROM SYS.DBA_OUTSTANDING_ALERTS;</p>
<p>REASON                                             METRIC_VALUE CDATE<br />
-------------------------------------------------- ------------ -----------------------<br />
Tablespace [ERP_INDEX] is [94 percent] full          94.5023148 26-MAR-2010 19:45:05</p></blockquote>
<p>可见Oracle在这里认为这个表空间已经使用了94%以上，查看一下预警阀值的设定：</p>
<blockquote><p>SQL&gt; col METRICS_NAME for a50</p>
<p>SQL&gt; col WARN_VAL for a10<br />
SQL&gt; col CRIT_VAL for a10<br />
SQL&gt; col OBJ_TYPE for a20<br />
SQL&gt; SELECT METRICS_NAME<br />
2  , WARNING_VALUE WARN_VAL<br />
3  , CRITICAL_VALUE CRIT_VAL<br />
4  , OBJECT_TYPE OBJ_TYPE<br />
5  FROM SYS.DBA_THRESHOLDS<br />
6  WHERE metrics_name LIKE '%Tablespace%';</p>
<p>METRICS_NAME                   WARN_VAL   CRIT_VAL   OBJ_TYPE<br />
------------------------------ ---------- ---------- --------------------<br />
Tablespace Bytes Space Usage   0          0          TABLESPACE<br />
Tablespace Space Usage         85         97         TABLESPACE</p></blockquote>
<p>超过85%就提示，似乎也是顺利成章的，可是实际表空间到底占用了多少呢：</p>
<blockquote><p>SQL&gt; select sum(bytes/1024/1024) from dba_data_files<br />
2  where TABLESPACE_NAME='ERP_INDEX';</p>
<p>SUM(BYTES/1024/1024)<br />
--------------------<br />
31744</p>
<p>SQL&gt; select sum(bytes/1024/1024) from sys.dba_free_space where tablespace_name='ERP_INDEX'<br />
2  /</p>
<p>SUM(BYTES/1024/1024)<br />
--------------------<br />
3936</p>
<p>SQL&gt;<br />
SQL&gt; select (31744-3936)/31744 from dual;</p>
<p>(31744-3936)/31744<br />
------------------<br />
.876008065</p></blockquote>
<p>可见表空间实际的使用率是87%左右，那么为什么dba_outstanding_alerts中会提示是使用了94%呢？从DBA_TABLESPACE_USAGE_METRICS这个oracle 10g新增的未publish的视图来看，使用率也是94%：</p>
<blockquote><p>SQL&gt; SELECT TABLESPACE_NAME TBSP_NAME<br />
2  , USED_SPACE*8/1024<br />
3  , TABLESPACE_SIZE*8/1024 TBSP_SIZE<br />
4  , USED_PERCENT<br />
5  FROM SYS.DBA_TABLESPACE_USAGE_METRICS where TABLESPACE_NAME='ERP_INDEX';</p>
<p>TBSP_NAME                      USED_SPACE*8/1024  TBSP_SIZE USED_PERCENT<br />
------------------------------ ----------------- ---------- ------------<br />
ERP_INDEX                                  30016      31744   94.5564516</p></blockquote>
<p>而这里显示为94%的原因是因为它统计了recyclebin里占用的空间：</p>
<blockquote><p>SQL&gt; connect banping/banping<br />
Connected.<br />
SQL&gt; select sum(space*8/1024) from user_recyclebin where ts_name='ERP_INDEX';</p>
<p>SUM(SPACE*8/1024)<br />
-----------------<br />
2240</p>
<p>SQL&gt; select (31744-3936+2240)/31744 from dual;</p>
<p>(31744-3936+2240)/31744<br />
-----------------------<br />
.946572581</p></blockquote>
<p>可见，实际使用空间加上recyclebin里的这个表空间的对象大小正好是94%左右。那么purge了recyclebin后，是不是就解决了问题呢？</p>
<blockquote><p>SQL&gt; purge recyclebin;</p>
<p>Done</p>
<p>SQL&gt; SELECT TABLESPACE_NAME TBSP_NAME<br />
2  , USED_SPACE*8/1024<br />
3  , TABLESPACE_SIZE*8/1024 TBSP_SIZE<br />
4  , USED_PERCENT<br />
5  FROM SYS.DBA_TABLESPACE_USAGE_METRICS where TABLESPACE_NAME='ERP_INDEX';</p>
<p>TBSP_NAME                      USED_SPACE*8/1024  TBSP_SIZE USED_PERCENT<br />
------------------------------ ----------------- ---------- ------------<br />
ERP_INDEX                                  27776      31744   87.5</p>
<p>SQL&gt; col reason for a50<br />
SQL&gt; SELECT REASON<br />
2  , METRIC_VALUE<br />
3  , sequence_id,reason_id<br />
4  FROM SYS.DBA_OUTSTANDING_ALERTS;</p>
<p>REASON                                             METRIC_VALUE  sequence_id reason_id<br />
-------------------------------------------------- ------------ --------------- ----------<br />
Tablespace [ERP_INDEX] is [94 percent] full          94.5023148  566360 9</p></blockquote>
<p>可见这样操作能够消除DBA_TABLESPACE_USAGE_METRICS视图的错误统计，而dba_outstanding_alerts中的警告却依然如故。尝试看一下dba_outstanding_alerts的基表：</p>
<blockquote><p>CREATE OR REPLACE VIEW SYS.DBA_OUTSTANDING_ALERTS AS<br />
SELECT sequence_id,<br />
reason_id,<br />
owner,<br />
object_name,<br />
subobject_name,<br />
typnam_keltosd AS object_type,<br />
dbms_server_alert.expand_message(userenv('LANGUAGE'),<br />
mid_keltsd,<br />
reason_argument_1,<br />
reason_argument_2,<br />
reason_argument_3,<br />
reason_argument_4,<br />
reason_argument_5) AS reason,<br />
time_suggested,<br />
creation_time,<br />
dbms_server_alert.expand_message(userenv('LANGUAGE'),<br />
amid_keltsd,<br />
action_argument_1,<br />
action_argument_2,<br />
action_argument_3,<br />
action_argument_4,<br />
action_argument_5)<br />
AS suggested_action,<br />
advisor_name,<br />
metric_value,<br />
decode(message_level, 32, 'Notification', 'Warning')<br />
AS message_type,<br />
nam_keltgsd AS message_group,<br />
message_level,<br />
hosting_client_id,<br />
mdid_keltsd AS module_id,<br />
process_id,<br />
host_id,<br />
host_nw_addr,<br />
instance_name,<br />
instance_number,<br />
user_id,<br />
execution_context_id,<br />
error_instance_id<br />
FROM wri$_alert_outstanding, X$KELTSD, X$KELTOSD, X$KELTGSD,<br />
dba_advisor_definitions<br />
WHERE reason_id = rid_keltsd<br />
AND otyp_keltsd = typid_keltosd<br />
AND grp_keltsd = id_keltgsd<br />
AND aid_keltsd = advisor_id(+)</p></blockquote>
<p>信息来自wri$_alert_outstanding表，和X$KELTSD, X$KELTOSD, X$KELTGSD等底层表都有关联，担心直接删掉的话会出问题，于是尝试修改下阀值：</p>
<blockquote><p>SQL&gt; exec DBMS_SERVER_ALERT.SET_THRESHOLD(<br />
metrics_id=&gt;DBMS_SERVER_ALERT.TABLESPACE_PCT_FULL,<br />
warning_operator=&gt;DBMS_SERVER_ALERT.OPERATOR_GE,<br />
warning_value=&gt;95,<br />
critical_operator=&gt;DBMS_SERVER_ALERT.OPERATOR_GE,<br />
critical_value=&gt;97,<br />
observation_period=&gt;1,<br />
consecutive_occurrences=&gt;1,<br />
instance_name=&gt;NULL,<br />
object_type=&gt;DBMS_SERVER_ALERT.OBJECT_TYPE_TABLESPACE,<br />
object_name=&gt;NULL);</p>
<p>PL/SQL procedure successfully completed</p></blockquote>
<p>因为告警信息消除后，会从dba_outstanding_alerts转移到DBA_ALERT_HISTORY视图，查看这两个视图，果然发现了信息已经转移到了DBA_ALERT_HISTORY，而且提示的空间使用率已经变成了正确的87%，看来在这个过程中oracle会去某个地方重新取一次这个信息：</p>
<blockquote><p>select * from dba_alert_history where sequence_id=566360 and reason_id=9</p>
<p>SQL&gt; SELECT REASON<br />
2  , METRIC_VALUE<br />
3  FROM SYS.DBA_ALERT_HISTORY where sequence_id=566360 and reason_id=9;</p>
<p>REASON                                             METRIC_VALUE<br />
-------------------------------------------------- ------------<br />
Tablespace [ERP_INDEX] is [87 percent] full          87.5</p></blockquote>
<p>再把告警阀值更改回原来的85%，发现告警信息又会出现在dba_outstanding_alerts中，不过已经是正确的87%了，而DBA_ALERT_HISTORY中的历史信息还是存在的，至此曲线解决了这个问题。</p>
<blockquote><p>SQL&gt; exec DBMS_SERVER_ALERT.SET_THRESHOLD(<br />
metrics_id=&gt;DBMS_SERVER_ALERT.TABLESPACE_PCT_FULL,<br />
warning_operator=&gt;DBMS_SERVER_ALERT.OPERATOR_GE,<br />
warning_value=&gt;85,<br />
critical_operator=&gt;DBMS_SERVER_ALERT.OPERATOR_GE,<br />
critical_value=&gt;97,<br />
observation_period=&gt;1,<br />
consecutive_occurrences=&gt;1,<br />
instance_name=&gt;NULL,<br />
object_type=&gt;DBMS_SERVER_ALERT.OBJECT_TYPE_TABLESPACE,<br />
object_name=&gt;NULL);</p>
<p>PL/SQL procedure successfully completed</p>
<p>SQL&gt; col reason for a50<br />
SQL&gt; SELECT REASON<br />
2  , METRIC_VALUE<br />
3  , TO_CHAR(CREATION_TIME,'DD-MON-YYYY HH24:MI:SS') cdate<br />
4  FROM SYS.DBA_OUTSTANDING_ALERTS;</p>
<p>REASON                                             METRIC_VALUE CDATE<br />
-------------------------------------------------- ------------ -----------------------<br />
Tablespace [ERP_INDEX] is [87 percent] full          87.5  8-JUN-2010 16:45:05</p></blockquote>
<p>metalink上有个文档列举了一些解决表空间使用率提示的问题，不过都不适用于我这个案例：</p>
<blockquote><p>Troubleshooting a Database Tablespace Used(%) Alert problem [ID 403264.1]</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.banping.com/2010/06/08/tablespace_usage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决一次Listener挂掉的问题</title>
		<link>http://www.banping.com/2010/06/04/listener_restart/</link>
		<comments>http://www.banping.com/2010/06/04/listener_restart/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 03:52:09 +0000</pubDate>
		<dc:creator>banping</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.banping.com/?p=709</guid>
		<description><![CDATA[<p>在一个大型系统开发环境，有人反映无法连接到数据库，经检查判断是listener的问题，找到对应的进程杀掉后重启listener 就解决了。</p> <p>开始怀疑是只是单个session的问题：</p> <p>[oracle@erpdevdb bdump]$ sqlplus banping/banping</p> <p>SQL*Plus: Release 10.2.0.1.0 - Production on Mon May 17 10:23:07 2010</p> <p>Copyright (c) 1982, 2005, Oracle.  All rights reserved.</p> <p>Connected to:<br /> Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production<br /> With the Partitioning, OLAP and Data Mining options</p> <p>SQL&#62;<br /> SQL&#62; select machine from v$session;</p> [...]]]></description>
			<content:encoded><![CDATA[<p>在一个大型系统开发环境，有人反映无法连接到数据库，经检查判断是listener的问题，找到对应的进程杀掉后重启listener 就解决了。</p>
<p>开始怀疑是只是单个session的问题：</p>
<blockquote><p>[oracle@erpdevdb bdump]$ sqlplus banping/banping</p>
<p>SQL*Plus: Release 10.2.0.1.0 - Production on Mon May 17 10:23:07 2010</p>
<p>Copyright (c) 1982, 2005, Oracle.  All rights reserved.</p>
<p>Connected to:<br />
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production<br />
With the Partitioning, OLAP and Data Mining options</p>
<p>SQL&gt;<br />
SQL&gt; select machine from v$session;</p>
<p>MACHINE<br />
----------------------------------------------------------------<br />
servicedesk<br />
localhost.localdomain<br />
x-9ee5775925<br />
erpdevdb<br />
erp-app<br />
WORKGROUP\DEV00<br />
WORKGROUP\ERP_DEV003</p>
<p>WORKGROUP\DEV00<br />
erp-app<br />
servicedesk<br />
servicedesk<br />
localhost.localdomain<br />
erpdevdb</p>
<p>......</p>
<p>39 rows selected.</p>
<p>SQL&gt; select sql_id from v$session where machine='x-9ee5775925';</p>
<p>SQL_ID<br />
-------------<br />
2vwg9dh3v6rkg</p>
<p>SQL&gt; select sql_text from v$sql where sql_id='2vwg9dh3v6rkg';</p>
<p>no rows selected</p>
<p>SQL&gt; select distinct user from v$session;</p>
<p>USER<br />
------------------------------<br />
banping</p></blockquote>
<p>后来意识到是监听的问题，查看监听果然没有反应：</p>
<blockquote><p>[oracle@erpdevdb bdump]$ lsnrctl status</p>
<p>LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 17-MAY-2010 10:31:40</p>
<p>Copyright (c) 1991, 2005, Oracle.  All rights reserved.</p>
<p>Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))</p></blockquote>
<p>查找到listener 的进程并杀死进程：</p>
<blockquote><p>[oracle@erpdevdb admin]$ ps -ef|grep ora</p>
<p>......</p>
<p>oracle   13720 28474  0 May15 ?        00:00:00 /u01/app/oracle/oracle/product/10.2.0/db_1/bin/tnslsnr LISTENER -inherit</p>
<p>[oracle@erpdevdb admin]$ kill -9 13720</p></blockquote>
<p>重新启动监听：</p>
<blockquote><p>[oracle@erpdevdb bdump]$ lsnrctl stat</p>
<p>LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 17-MAY-2010 10:49:37</p>
<p>Copyright (c) 1991, 2005, Oracle.  All rights reserved.</p>
<p>Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))<br />
TNS-12541: TNS:no listener<br />
TNS-12560: TNS:protocol adapter error<br />
TNS-00511: No listener<br />
Linux Error: 111: Connection refused<br />
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=erpdevdb)(PORT=1521)))<br />
TNS-12541: TNS:no listener<br />
TNS-12560: TNS:protocol adapter error<br />
TNS-00511: No listener<br />
Linux Error: 111: Connection refused<br />
[oracle@erpdevdb bdump]$<br />
[oracle@erpdevdb bdump]$ lsnrctl</p>
<p>LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 17-MAY-2010 10:49:44</p>
<p>Copyright (c) 1991, 2005, Oracle.  All rights reserved.</p>
<p>Welcome to LSNRCTL, type "help" for information.</p>
<p>LSNRCTL&gt; stop<br />
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))<br />
TNS-12541: TNS:no listener<br />
TNS-12560: TNS:protocol adapter error<br />
TNS-00511: No listener<br />
Linux Error: 111: Connection refused<br />
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=erpdevdb)(PORT=1521)))<br />
TNS-12541: TNS:no listener<br />
TNS-12560: TNS:protocol adapter error<br />
TNS-00511: No listener<br />
Linux Error: 111: Connection refused<br />
LSNRCTL&gt; start<br />
Starting /u01/app/oracle/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait...</p>
<p>TNSLSNR for Linux: Version 10.2.0.1.0 - Production<br />
System parameter file is /u01/app/oracle/oracle/product/10.2.0/db_1/network/admin/listener.ora<br />
Log messages written to /u01/app/oracle/oracle/product/10.2.0/db_1/network/log/listener.log<br />
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))<br />
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=erpdevdb.banping.com)(PORT=1521)))</p>
<p>Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))<br />
STATUS of the LISTENER<br />
------------------------<br />
Alias                     LISTENER<br />
Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production<br />
Start Date                17-MAY-2010 10:49:52<br />
Uptime                    0 days 0 hr. 0 min. 0 sec<br />
Trace Level               off<br />
Security                  ON: Local OS Authentication<br />
SNMP                      OFF<br />
Listener Parameter File   /u01/app/oracle/oracle/product/10.2.0/db_1/network/admin/listener.ora<br />
Listener Log File         /u01/app/oracle/oracle/product/10.2.0/db_1/network/log/listener.log<br />
Listening Endpoints Summary...<br />
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))<br />
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=erpdevdb.banping.com)(PORT=1521)))<br />
Services Summary...<br />
Service "PLSExtProc" has 1 instance(s).<br />
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...<br />
The command completed successfully<br />
LSNRCTL&gt;<br />
LSNRCTL&gt; exit</p>
<p>[oracle@erpdevdb admin]$ ps -ef|grep tnslsnr<br />
oracle    5021     1  0 10:49 ?        00:00:00 /u01/app/oracle/oracle/product/10.2.0/db_1/bin/tnslsnr LISTENER -inherit</p></blockquote>
<p>查看sqlnet.log记录：</p>
<blockquote><p>Fatal NI connect error 12537, connecting to:<br />
(LOCAL=NO)</p>
<p>VERSION INFORMATION:<br />
TNS for Linux: Version 10.2.0.1.0 - Production<br />
Oracle Bequeath NT Protocol Adapter for Linux: Version 10.2.0.1.0 - Production<br />
TCP/IP NT Protocol Adapter for Linux: Version 10.2.0.1.0 - Production<br />
Time: 17-MAY-2010 10:49:23<br />
Tracing not turned on.<br />
Tns error struct:<br />
ns main err code: 12537<br />
TNS-12537: TNS:connection closed<br />
ns secondary err code: 12560<br />
nt main err code: 0<br />
nt secondary err code: 0<br />
nt OS err code: 0</p></blockquote>
<p>查看listener.log 记录</p>
<blockquote><p>17-MAY-2010 10:49:23 * (CONNECT_DATA=(SERVICE_NAME=+ASM)(INSTANCE_NAME=+ASM)(UR=A)(CID=(PROGRAM=perl@erpdevdb)(HOST=erpdevdb)(USER=oracle))) * (ADDRESS=(PROTOCOL=tcp)(HOST=172.16.0.88)(PORT=45772)) * establish * +ASM * 12518<br />
TNS-12518: TNS:listener could not hand off client connection<br />
TNS-12547: TNS:lost contact<br />
TNS-12560: TNS:protocol adapter error<br />
TNS-00517: Lost contact<br />
Linux Error: 32: Broken pipe<br />
17-MAY-2010 10:49:23 * service_update * erpoptm * 0<br />
17-MAY-2010 10:49:23 * service_update * erpwh * 0<br />
17-MAY-2010 10:49:23 * service_update * devdb * 0<br />
17-MAY-2010 10:49:23 * service_update * erptest * 0<br />
17-MAY-2010 10:49:23 * service_update * papererpdb * 0<br />
17-MAY-2010 10:49:23 * service_update * erpstudydb * 0<br />
17-MAY-2010 10:49:23 * service_update * +ASM * 0<br />
17-MAY-2010 10:49:23 * service_update * erpoptm * 0<br />
17-MAY-2010 10:49:23 * service_update * erpwh * 0<br />
17-MAY-2010 10:49:23 * service_update * devdb * 0<br />
17-MAY-2010 10:49:23 * service_update * papererpdb * 0<br />
17-MAY-2010 10:49:23 * service_update * erpstudydb * 0<br />
17-MAY-2010 10:49:23 * ping * 0<br />
17-MAY-2010 10:49:23 * service_update * erptest * 0<br />
17-MAY-2010 10:49:23 * service_update * +ASM * 0<br />
17-MAY-2010 10:49:23 * ping * 0<br />
17-MAY-2010 10:49:23 * ping * 0<br />
17-MAY-2010 10:49:23 * (CONNECT_DATA=(SID=erptest)(CID=(PROGRAM=perl@erpdevdb)(HOST=erpdevdb)(USER=oracle))) * (ADDRESS=(PROTOCOL=tcp)(HOST=172.16.0.88)(PORT=45907)) * establish * erptest * 0<br />
17-MAY-2010 10:49:23 * (CONNECT_DATA=(SERVICE_NAME=+ASM)(INSTANCE_NAME=+ASM)(UR=A)(CID=(PROGRAM=perl@erpdevdb)(HOST=erpdevdb)(USER=oracle))) * (ADDRESS=(PROTOCOL=tcp)(HOST=172.16.0.88)(PORT=45905)) * establish * +ASM * 0<br />
17-MAY-2010 10:49:23 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))(SERVICE_NAME=erptest)) * (ADDRESS=(PROTOCOL=tcp)(HOST=172.16.0.88)(PORT=45863)) * establish * erptest * 0<br />
17-MAY-2010 10:49:23 * (CONNECT_DATA=(SID=erptest)(CID=(PROGRAM=perl@erpdevdb)(HOST=erpdevdb)(USER=oracle))) * (ADDRESS=(PROTOCOL=tcp)(HOST=172.16.0.88)(PORT=45774)) * establish * erptest * 0<br />
17-MAY-2010 10:49:23 * (CONNECT_DATA=(SERVICE_NAME=+ASM)(INSTANCE_NAME=+ASM)(UR=A)(CID=(PROGRAM=perl@erpdevdb)(HOST=erpdevdb)(USER=oracle))) * (ADDRESS=(PROTOCOL=tcp)(HOST=172.16.0.88)(PORT=46043)) * establish * +ASM * 0<br />
17-MAY-2010 10:49:23 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))(SERVICE_NAME=erptest)) * (ADDRESS=(PROTOCOL=tcp)(HOST=172.16.0.88)(PORT=46005)) * establish * erptest * 0<br />
17-MAY-2010 10:49:23 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))(SERVICE_NAME=erptest)) * (ADDRESS=(PROTOCOL=tcp)(HOST=172.16.0.88)(PORT=46084)) * establish * erptest * 0<br />
17-MAY-2010 10:49:23 * (CONNECT_DATA=(SID=erptest)(CID=(PROGRAM=perl@erpdevdb)(HOST=erpdevdb)(USER=oracle))) * (ADDRESS=(PROTOCOL=tcp)(HOST=172.16.0.88)(PORT=46045)) * establish * erptest * 0<br />
17-MAY-2010 10:49:23 * service_update * +ASM * 0</p>
<p>TNSLSNR for Linux: Version 10.2.0.1.0 - Production on 17-MAY-2010 10:49:52</p>
<p>Copyright (c) 1991, 2005, Oracle.  All rights reserved.</p>
<p>System parameter file is /u01/app/oracle/oracle/product/10.2.0/db_1/network/admin/listener.ora<br />
Log messages written to /u01/app/oracle/oracle/product/10.2.0/db_1/network/log/listener.log<br />
Trace information written to /u01/app/oracle/oracle/product/10.2.0/db_1/network/trace/li</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.banping.com/2010/06/04/listener_restart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL语句的日期格式和nls_date_format参数</title>
		<link>http://www.banping.com/2010/06/03/nls_date_format/</link>
		<comments>http://www.banping.com/2010/06/03/nls_date_format/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 02:13:10 +0000</pubDate>
		<dc:creator>banping</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.banping.com/?p=705</guid>
		<description><![CDATA[<p>前段时间把一个在Linux 平台运行的应用程序部署一套到windows平台上，是java开发的基于oracle10g的程序，部署完成后，发现有个写入操作会报错，而后台跟踪到的SQL是插入日期时侯出现的问题。</p> <p>insert into t ( fromtime ) values ( '2009-4-15' )</p> <p>其中的fromtime是date 类型，而SQL中并没有对字符串做to_date转化。程序不大好修改，只能在环境变量等参数配置上下手。而奇怪的是这样的SQL在原来的Linux 平台上能运行的很好，说明是和环境问题是有关的。</p> <p>首先修改了oracle的nls_date_format参数，原来是空的，改为yyyy-mm-dd hh24:mi:Ss，用sqlplus连到服务器测试SQL能执行，但是java程序还是报错，看来得改客户端的nls_date_format设置，老熊说有些jdbc驱动可以采用设置数据库的nls_data_format方式来解决，因为这种驱动连接上后自动将会话的这个设为跟数据库一样的。修改windows系统的环境变量仍然不行，看来java程序可以不从操作系统来读变量。以下是测试过程：</p> <p>SQL&#62; create table t1 (mydate varchar2(20));</p> <p>Table created.</p> <p>SQL&#62; insert into t1 mydate values (2010-10-10);</p> <p>1 row created.</p> <p>SQL&#62; alter table t1 modify mydate date;</p> <p>Table altered.</p> <p>SQL&#62;<br /> SQL&#62; desc t1;<br /> Name                                      Null?    Type<br /> ----------------------------------------- [...]]]></description>
			<content:encoded><![CDATA[<p>前段时间把一个在Linux 平台运行的应用程序部署一套到windows平台上，是java开发的基于oracle10g的程序，部署完成后，发现有个写入操作会报错，而后台跟踪到的SQL是插入日期时侯出现的问题。</p>
<blockquote><p>insert into t ( fromtime ) values ( '2009-4-15' )</p></blockquote>
<p>其中的fromtime是date 类型，而SQL中并没有对字符串做to_date转化。程序不大好修改，只能在环境变量等参数配置上下手。而奇怪的是这样的SQL在原来的Linux 平台上能运行的很好，说明是和环境问题是有关的。</p>
<p>首先修改了oracle的nls_date_format参数，原来是空的，改为yyyy-mm-dd hh24:mi:Ss，用sqlplus连到服务器测试SQL能执行，但是java程序还是报错，看来得改客户端的nls_date_format设置，老熊说有些jdbc驱动可以采用设置数据库的nls_data_format方式来解决，因为这种驱动连接上后自动将会话的这个设为跟数据库一样的。修改windows系统的环境变量仍然不行，看来java程序可以不从操作系统来读变量。以下是测试过程：</p>
<blockquote><p>SQL&gt; create table t1 (mydate varchar2(20));</p>
<p>Table created.</p>
<p>SQL&gt; insert into t1 mydate values (2010-10-10);</p>
<p>1 row created.</p>
<p>SQL&gt; alter table t1 modify mydate date;</p>
<p>Table altered.</p>
<p>SQL&gt;<br />
SQL&gt; desc t1;<br />
Name                                      Null?    Type<br />
----------------------------------------- -------- ----------------------------<br />
MYDATE                                             DATE</p>
<p>SQL&gt; insert into t1 mydate values ('2010-10-10');<br />
insert into t1 mydate values ('2010-10-10')<br />
*<br />
ERROR at line 1:<br />
ORA-01861: literal does not match format string</p>
<p>SQL&gt; show parameter nls_date</p>
<p>NAME                                 TYPE        VALUE<br />
------------------------------------ ----------- ------------------------------<br />
nls_date_format                      string<br />
nls_date_language                    string</p>
<p>SQL&gt; alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss';<br />
alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss'<br />
*<br />
ERROR at line 1:<br />
ORA-02096: specified initialization parameter is not modifiable with this<br />
option</p>
<p>SQL&gt; alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss' scope=spfile;</p>
<p>System altered.</p>
<p>SQL&gt;<br />
SQL&gt; shutdown immediate<br />
Database closed.<br />
Database dismounted.<br />
ORACLE instance shut down.<br />
SQL&gt; startup<br />
ORACLE instance started.</p>
<p>Total System Global Area 2147483648 bytes<br />
Fixed Size                  2022144 bytes<br />
Variable Size             285213952 bytes<br />
Database Buffers         1845493760 bytes<br />
Redo Buffers               14753792 bytes<br />
Database mounted.<br />
Database opened.<br />
SQL&gt; show parameter nls_date_format</p>
<p>NAME                                 TYPE        VALUE<br />
------------------------------------ ----------- ------------------------------<br />
nls_date_format                      string      yyyy-mm-dd hh24:mi:ss</p>
<p>SQL&gt; insert into t1 mydate values ('2010-10-10');</p>
<p>1 row created.</p>
<p>SQL&gt; commit;</p>
<p>Commit complete.</p></blockquote>
<p>最后尝试在程序使用的oracle用户登录的时侯修改当前session的nls_date_format，通过触发器来实现</p>
<blockquote><p>create or replace trigger tri_logon_nlsformat<br />
after logon<br />
ON DATABASE<br />
when (USER='BANPING')<br />
begin<br />
execute immediate 'alter session set nls_date_format = ''YYYY-MM-DD'' ';<br />
end;</p></blockquote>
<p>这样用户通过应用程序每次连接到数据库的时侯，就修改当前session的nls_date_format，应用程序不再报错，不过这只是一个丑陋的解决办法，根本的还需要从修改程序入手。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.banping.com/2010/06/03/nls_date_format/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>客户端异常退出导致的僵死进程</title>
		<link>http://www.banping.com/2010/05/20/client_abort_exception/</link>
		<comments>http://www.banping.com/2010/05/20/client_abort_exception/#comments</comments>
		<pubDate>Thu, 20 May 2010 09:07:44 +0000</pubDate>
		<dc:creator>banping</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.banping.com/?p=710</guid>
		<description><![CDATA[<p>今天在数据库的v$locked_object视图 里发现一个923号session，用户是SYS，一直持有对 PLAN_TABLE表的锁不释放，PLAN_TABLE是存储SQL执行计划的，很奇怪。</p> <p>select sid,serial#,paddr,username,server,schemaname,osuser,terminal,program from v$session where sid=923</p> <p>SID    SERIAL#    PADDR    USERNAME    SERVER    SCHEMANAME    OSUSER    TERMINAL    PROGRAM<br /> 923    42779    0700000C8F3D9588    SYS    PSEUDO    SYS    oracle    pts/2    sqlplus@p5b1 (TNS V1-V3)</p> <p>查看进程信息：</p> <p>select * from v$process where addr='0700000C8F3D9588'</p> <p>发现spid的值为234178，这个也就是操作系统的进程id：</p> <p>DB2@/ora_arch&#62;ps -ef&#124;grep 234178<br /> oracle 413964 807630   0 15:00:19  pts/1  0:00 grep 234178<br /> oracle 234178 623538   [...]]]></description>
			<content:encoded><![CDATA[<p>今天在数据库的v$locked_object视图 里发现一个923号session，用户是SYS，一直持有对 PLAN_TABLE表的锁不释放，PLAN_TABLE是存储SQL执行计划的，很奇怪。</p>
<blockquote><p>select sid,serial#,paddr,username,server,schemaname,osuser,terminal,program from v$session where sid=923</p>
<p>SID    SERIAL#    PADDR    USERNAME    SERVER    SCHEMANAME    OSUSER    TERMINAL    PROGRAM<br />
923    42779    0700000C8F3D9588    SYS    PSEUDO    SYS    oracle    pts/2    sqlplus@p5b1 (TNS V1-V3)</p></blockquote>
<p>查看进程信息：</p>
<blockquote><p>select * from v$process where addr='0700000C8F3D9588'</p></blockquote>
<p>发现spid的值为234178，这个也就是操作系统的进程id：</p>
<blockquote><p>DB2@/ora_arch&gt;ps -ef|grep 234178<br />
oracle 413964 807630   0 15:00:19  pts/1  0:00 grep 234178<br />
oracle 234178 623538   0   May 04      -  0:39 oraclebanpingdb2 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))</p></blockquote>
<p>通过检查一些操作日志发现5月4号，青年节这天确实有人登录执行过一个SQL：</p>
<blockquote><p>SQL&gt; create or replace procedure show_space(...</p></blockquote>
<p>然后异常退出了，那么可以断定就是这个session一直僵死在这里了。</p>
<p>这时在数据库端杀session：</p>
<blockquote><p>alter system kill session '923,42779'</p></blockquote>
<p>从v$session看oracle只是把这个session标记为killed了，v$process虽然也查不到了，但是os层面的进程还在，杀之：</p>
<blockquote><p>DB2@/ora_arch&gt;kill -9 234178</p></blockquote>
<p>然后再看，这个session已经被清理掉消失了：</p>
<blockquote><p>select * from v$session where status='KILLED'</p></blockquote>
<p>这种进程在oracle实例关闭的时侯会在alert日志里记录：</p>
<blockquote><p>Process OS id : 271052 alive after kill<br />
Errors in file /u01/admin/banpingdb/udump/banpingdb1_ora_865116.trc</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.banping.com/2010/05/20/client_abort_exception/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>模拟一个死锁的状态</title>
		<link>http://www.banping.com/2010/05/11/database_deadlock/</link>
		<comments>http://www.banping.com/2010/05/11/database_deadlock/#comments</comments>
		<pubDate>Tue, 11 May 2010 15:48:21 +0000</pubDate>
		<dc:creator>banping</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.banping.com/?p=696</guid>
		<description><![CDATA[<p>锁是数据库里一个重要的概念，可以自己来模拟一个Oracle中的死锁状态。</p> <p>首先session A登录到系统，更新一条记录：</p> <p>[oracle@devdb ~]$ export ORACLE_SID=optm<br /> [oracle@devdb ~]$ sqlplus " / as sysdba"</p> <p>SQL*Plus: Release 10.2.0.1.0 - Production on Tue May 11 23:14:09 2010</p> <p>Copyright (c) 1982, 2005, Oracle.  All rights reserved.</p> <p>Connected to:<br /> Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production<br /> With the Partitioning, OLAP and Data Mining [...]]]></description>
			<content:encoded><![CDATA[<p>锁是数据库里一个重要的概念，可以自己来模拟一个Oracle中的死锁状态。</p>
<p>首先session A登录到系统，更新一条记录：</p>
<blockquote><p>[oracle@devdb ~]$ export ORACLE_SID=optm<br />
[oracle@devdb ~]$ sqlplus " / as sysdba"</p>
<p>SQL*Plus: Release 10.2.0.1.0 - Production on Tue May 11 23:14:09 2010</p>
<p>Copyright (c) 1982, 2005, Oracle.  All rights reserved.</p>
<p>Connected to:<br />
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production<br />
With the Partitioning, OLAP and Data Mining options</p>
<p>SQL&gt; connect banping/mypassword<br />
Connected.</p>
<p>SQL&gt; create table banpingtest (a varchar2(10),b varchar2(10));</p>
<p>Table created.</p>
<p>SQL&gt; insert into banpingtest(a,b) values ('10','aaa');</p>
<p>1 row created.</p>
<p>SQL&gt; insert into banpingtest(a,b) values ('20','bbb');</p>
<p>1 row created.</p>
<p>SQL&gt; commit;</p>
<p>Commit complete.</p>
<p>SQL&gt; select * from banpingtest;</p>
<p>A          B<br />
---------- ----------<br />
10         aaa<br />
20         bbb</p>
<p>SQL&gt; update banpingtest set b='ccc' where a='10';</p>
<p>1 row updated.</p></blockquote>
<p>这里不提交事务，然后再开一个session B来更新另外一条记录：</p>
<blockquote><p>SQL&gt; update banpingtest set b='ddd' where a='20';</p>
<p>1 row updated.</p></blockquote>
<p>这里同样不提交这个事务，这样这两行分别被持有，其他session无法更新了，然后再用session A去更新B持有的这个记录：</p>
<blockquote><p>SQL&gt; update banpingtest set b='eee' where a='20';</p></blockquote>
<p>这时A的这个操作会处于等待状态，因为B那边没有提交，没有释放这行上的锁。同样，用B去更新A持有的记录，同样会处于等待状态：</p>
<blockquote><p>SQL&gt; update banpingtest set b='fff' where a='10';</p></blockquote>
<p>这时，B等待A提交事务，而A也等待B提交事务，两个session都需要对方的资源，一个死锁就产生了。</p>
<p>Oracle会自动检测死锁，A session很快就会产生报错：</p>
<blockquote><p>update banpingtest set b='eee' where a='20'<br />
*<br />
ERROR at line 1:<br />
ORA-00060: deadlock detected while waiting for resource</p></blockquote>
<p>而这时B session仍然在等待，这时A session如果提交事务，则B session会结束等待，收到成功更新的提示信息。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.banping.com/2010/05/11/database_deadlock/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ORA-12705给我带来的折腾</title>
		<link>http://www.banping.com/2010/04/20/ora_12705/</link>
		<comments>http://www.banping.com/2010/04/20/ora_12705/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 08:50:29 +0000</pubDate>
		<dc:creator>banping</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.banping.com/?p=691</guid>
		<description><![CDATA[<p>从windows 平台迁移一个简单的Java系统到Linux 平台，应用服务器是Tomcat，在Linux 上安装好JDK后，直接把整个Tomcat复制到了Linux 上，然后启动都正常。但是在软件打开登录的时侯一直提示无法连接到数据库，坚持Tomcat的日志记录的信息如下：</p> <p>ORA-00604: error occurred at recursive SQL level 1</p> <p>java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1<br /> ORA-12705: Cannot access NLS data files or invalid environment specified</p> <p>Google 了很多资料，大多说是NLS_LANG设置的问题：</p> <p>ORA-12705: "invalid or unknown NLS parameter value specified"</p> <p>Cause: There are two possible causes:</p> <p>- An attempt was made to [...]]]></description>
			<content:encoded><![CDATA[<p>从windows 平台迁移一个简单的Java系统到Linux 平台，应用服务器是Tomcat，在Linux 上安装好JDK后，直接把整个Tomcat复制到了Linux 上，然后启动都正常。但是在软件打开登录的时侯一直提示无法连接到数据库，坚持Tomcat的日志记录的信息如下：</p>
<blockquote><p>ORA-00604: error occurred at recursive SQL level 1</p>
<p>java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1<br />
ORA-12705: Cannot access NLS data files or invalid environment specified</p></blockquote>
<p>Google 了很多资料，大多说是NLS_LANG设置的问题：</p>
<blockquote><p>ORA-12705: "invalid or unknown NLS parameter value specified"</p>
<p>Cause: There are two possible causes:</p>
<p>- An attempt was made to issue an ALTER SESSION statement with an invalid NLS parameter or value.</p>
<p>- The NLS_LANG environment variable contains an invalid language, territory, or character set.</p>
<p>Action: Check the syntax of the ALTER SESSION command and the NLS parameter, correct the syntax and retry the statement, or specify correct values in the NLS_LANG environment variable.</p></blockquote>
<p>可是我尝试修改这些环境变量都没用，更换JDBC的驱动版本，没用，仍然是报同样的错误，IT系统就是这样，出错的时侯一定有确定的原因，可是有时侯你就是不知道原因在哪里，只能忍受这种折磨。</p>
<p>后来我打算重新安装一个Tomcat版本，可是就在计划把原来的应用程序文件复制到新的Tomcat环境的时侯，发现了在原来的Catalina.sh里的一行配置：</p>
<blockquote><p>JAVA_OPTS="-server -Dfile.encoding=GB18030 -Xms512m -Xmx1400m -Duser.language=zh_CN -Duser.timezone=Asia/Shanghai -Duser.country=CN</p></blockquote>
<p>很明显是这里设置的时区和语言参数造成的ORA-12705错误，去掉这些参数，改成这样：</p>
<blockquote><p>JAVA_OPTS='-Xms256m -Xmx1400m'</p></blockquote>
<p>重启登录，一切正常。但是Windows平台上的应用也有这样的配置为什么就能正常连接同一台数据库呢？看来不只是和数据库端的设置有关，和应用服务器所在的OS也是有关的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.banping.com/2010/04/20/ora_12705/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>如何使用在线重定义功能建立分区表</title>
		<link>http://www.banping.com/2010/04/07/partition_table_online/</link>
		<comments>http://www.banping.com/2010/04/07/partition_table_online/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 04:47:28 +0000</pubDate>
		<dc:creator>banping</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.banping.com/?p=669</guid>
		<description><![CDATA[<p>oracle 提供了在线重定义功能，可以把普通表转化为分区表，记录一下操作过程：</p> <p>首先扩展必要的表空间，然后查看要操作的表是否可以进行分区：</p> <p>[oracle@erpdevdb admin]$ sqlplus " / as sysdba"</p> <p>SQL*Plus: Release 10.2.0.1.0 - Production on Fri Mar 26 18:50:12 2010</p> <p>Copyright (c) 1982, 2005, Oracle.  All rights reserved.</p> <p>Connected to:<br /> Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production<br /> With the Partitioning, OLAP and Data Mining options</p> <p>SQL&#62; alter database datafile [...]]]></description>
			<content:encoded><![CDATA[<p>oracle 提供了在线重定义功能，可以把普通表转化为分区表，记录一下操作过程：</p>
<p>首先扩展必要的表空间，然后查看要操作的表是否可以进行分区：</p>
<blockquote><p>[oracle@erpdevdb admin]$ sqlplus " / as sysdba"</p>
<p>SQL*Plus: Release 10.2.0.1.0 - Production on Fri Mar 26 18:50:12 2010</p>
<p>Copyright (c) 1982, 2005, Oracle.  All rights reserved.</p>
<p>Connected to:<br />
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production<br />
With the Partitioning, OLAP and Data Mining options</p>
<p>SQL&gt; alter database datafile 7 resize 12288m;</p>
<p>Database altered.</p>
<p>SQL&gt; connect erp/erp<br />
Connected.<br />
SQL&gt;<br />
SQL&gt; set timing on<br />
SQL&gt;<br />
SQL&gt; EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE('ERP', 'BALANCE',dbms_redefinition.cons_use_pk);</p>
<p>PL/SQL procedure successfully completed.</p></blockquote>
<p>如果不能分区，这一步会报错，然后建立中间表，这里采取按year进行range分区，按month进行list子分区的方式：</p>
<blockquote><p>SQL&gt; create table P_BALANCE<br />
2  (<br />
3    ID         INTEGER not null,<br />
4    YEAR       INTEGER not null,<br />
5    MONTH      INTEGER not null,<br />
6    ACODE      VARCHAR2(16) not null,<br />
7    BCODE      VARCHAR2(16) not null,<br />
8    FCODE      VARCHAR2(4) not null,<br />
9    CCODE      VARCHAR2(16) not null,<br />
10    GCODE      VARCHAR2(20) not null,<br />
11    SCODE      VARCHAR2(8) not null,<br />
12    NCODE      VARCHAR2(8) not null,<br />
13    HCODE      VARCHAR2(75) not null,<br />
14    ICODE      VARCHAR2(35) not null,<br />
15    XCODE      VARCHAR2(35) not null,<br />
16    DCODE      VARCHAR2(32) not null,<br />
17    ECODE      VARCHAR2(16) not null,<br />
18    RMBDEBIT   NUMBER(19,4),<br />
19    RMBCREDIT  NUMBER(19,4),<br />
20    RMBBALANCE NUMBER(19,4),<br />
21    FCYDEBIT   NUMBER(19,4),<br />
22    FCYCREDIT  NUMBER(19,4),<br />
23    FCYBALANCE NUMBER(19,4),<br />
24    USDDEBIT   NUMBER(19,4),<br />
25    USDCREDIT  NUMBER(19,4),<br />
26    USDBALANCE NUMBER(19,4),<br />
27    QTYDEBIT   NUMBER(19,8),<br />
28    QTYCREDIT  NUMBER(19,8),<br />
29    QTYBALANCE NUMBER(19,8),<br />
30    QTXDEBIT   NUMBER(19,4),<br />
31    QTXCREDIT  NUMBER(19,4),<br />
32    QTXBALANCE NUMBER(19,4),<br />
33    GATTR1     VARCHAR2(8) not null,<br />
34    GATTR2     VARCHAR2(8) not null,<br />
35    GATTR3     VARCHAR2(8) not null,<br />
36    GATTR4     VARCHAR2(8) not null,<br />
37    GATTR5     VARCHAR2(8) not null,<br />
38    GATTR6     VARCHAR2(8) not null,<br />
39    GATTR7     VARCHAR2(8) not null,<br />
40    GATTR8     VARCHAR2(8) not null,<br />
41    GATTR9     VARCHAR2(8) not null<br />
42  )<br />
43  PARTITION BY RANGE (YEAR)<br />
44  SUBPARTITION BY LIST (MONTH)<br />
45  SUBPARTITION TEMPLATE<br />
46  (SUBPARTITION B0 VALUES (0),<br />
47  SUBPARTITION B1 VALUES (1),<br />
48  SUBPARTITION B2 VALUES (2),<br />
49  SUBPARTITION B3 VALUES (3),<br />
50  SUBPARTITION B4 VALUES (4),<br />
51  SUBPARTITION B5 VALUES (5),<br />
52  SUBPARTITION B6 VALUES (6),<br />
53  SUBPARTITION B7 VALUES (7),<br />
54  SUBPARTITION B8 VALUES (8),<br />
55  SUBPARTITION B9 VALUES (9),<br />
56  SUBPARTITION B10 VALUES (10),<br />
57  SUBPARTITION B11 VALUES (11),<br />
58  SUBPARTITION B12 VALUES (12))<br />
59  (PARTITION B2005 VALUES LESS THAN (2005),<br />
60  PARTITION B2006 VALUES LESS THAN (2006),<br />
61  PARTITION B2007 VALUES LESS THAN (2007),<br />
62  PARTITION B2008 VALUES LESS THAN (2008),<br />
63  PARTITION B2009 VALUES LESS THAN (2009),<br />
64  PARTITION B2010 VALUES LESS THAN (2010),<br />
65  PARTITION B2011 VALUES LESS THAN (MAXVALUE))<br />
66  tablespace ERP_CW<br />
67  ;</p>
<p>Table created.</p>
<p>Elapsed: 00:00:00.57</p></blockquote>
<p>为中间表建立主键：</p>
<blockquote><p>SQL&gt; alter table P_BALANCE add constraint P_BALANCE_PRIMARYKEY primary key (ID);</p>
<p>Table altered.</p>
<p>Elapsed: 00:00:00.11</p></blockquote>
<p>开始用重定义的方式进行分区：</p>
<blockquote><p>SQL&gt; EXEC DBMS_REDEFINITION.START_REDEF_TABLE('CNDERP', 'BALANCE', 'P_BALANCE');</p>
<p>PL/SQL procedure successfully completed.</p>
<p>Elapsed: 00:02:17.53</p></blockquote>
<p>根据源表上的索引规则建立分区后的local 索引：</p>
<blockquote><p>SQL&gt; CREATE INDEX P_BALANCE_ID ON P_BALANCE(ID)<br />
2  local<br />
3  (<br />
4  PARTITION B2005 TABLESPACE ERP_INDEX,<br />
5  PARTITION B2006 TABLESPACE ERP_INDEX,<br />
6  PARTITION B2007 TABLESPACE ERP_INDEX,<br />
7  PARTITION B2008 TABLESPACE ERP_INDEX,<br />
8  PARTITION B2009 TABLESPACE ERP_INDEX,<br />
9  PARTITION B2010 TABLESPACE ERP_INDEX,<br />
10  PARTITION B2011 TABLESPACE ERP_INDEX<br />
11  )<br />
12  ;<br />
CREATE INDEX P_BALANCE_ID ON P_BALANCE(ID)<br />
*<br />
ERROR at line 1:<br />
ORA-01408: such column list already indexed</p>
<p>Elapsed: 00:00:00.00<br />
SQL&gt; create index P_BALANCE_CCODE_ACODE_NY on P_BALANCE (CCODE, ACODE, YEAR, MONTH)<br />
2  local<br />
3  (<br />
4  partition B2005 TABLESPACE ERP_INDEX,<br />
5  partition B2006 TABLESPACE ERP_INDEX,<br />
6  partition B2007 TABLESPACE ERP_INDEX,<br />
7  partition B2008 TABLESPACE ERP_INDEX,<br />
8  partition B2009 TABLESPACE ERP_INDEX,<br />
9  partition B2010 TABLESPACE ERP_INDEX,<br />
10  partition B2011 TABLESPACE ERP_INDEX<br />
11  )<br />
12  ;</p>
<p>Index created.</p>
<p>Elapsed: 00:00:55.11<br />
SQL&gt; create index P_BALANCE_DCODE on P_BALANCE (DCODE)<br />
2  local<br />
3  (<br />
4  partition B2005 TABLESPACE ERP_INDEX,<br />
5  partition B2006 TABLESPACE ERP_INDEX,<br />
6  partition B2007 TABLESPACE ERP_INDEX,<br />
7  partition B2008 TABLESPACE ERP_INDEX,<br />
8  partition B2009 TABLESPACE ERP_INDEX,<br />
9  partition B2010 TABLESPACE ERP_INDEX,<br />
10  partition B2011 TABLESPACE ERP_INDEX<br />
11  )<br />
12  ;</p>
<p>Index created.</p>
<p>Elapsed: 00:00:41.85<br />
SQL&gt; create index P_BALANCE_YEAR_MONTH_BCODE on P_BALANCE (BCODE, ACODE, YEAR, MONTH)<br />
2  local<br />
3  (<br />
4  partition B2005 TABLESPACE ERP_INDEX,<br />
5  partition B2006 TABLESPACE ERP_INDEX,<br />
6  partition B2007 TABLESPACE ERP_INDEX,<br />
7  partition B2008 TABLESPACE ERP_INDEX,<br />
8  partition B2009 TABLESPACE ERP_INDEX,<br />
9  partition B2010 TABLESPACE ERP_INDEX,<br />
10  partition B2011 TABLESPACE ERP_INDEX<br />
11  )<br />
12  ;</p>
<p>Index created.</p>
<p>Elapsed: 00:00:57.70<br />
SQL&gt; create index P_BALANCE_bcode_acode on P_BALANCE (BCODE, ACODE)<br />
2  local<br />
3  (<br />
4  partition B2005 TABLESPACE ERP_INDEX,<br />
5  partition B2006 TABLESPACE ERP_INDEX,<br />
6  partition B2007 TABLESPACE ERP_INDEX,<br />
7  partition B2008 TABLESPACE ERP_INDEX,<br />
8  partition B2009 TABLESPACE ERP_INDEX,<br />
9  partition B2010 TABLESPACE ERP_INDEX,<br />
10  partition B2011 TABLESPACE ERP_INDEX<br />
11  )<br />
12  ;</p>
<p>Index created.</p>
<p>Elapsed: 00:00:49.30</p></blockquote>
<p>如果有外键约束等其他条件也要在这里一并建立，分区完成后还要注意表上的序列也需要rebuild。</p>
<p>然后就可以完成在线分区了，要注意的是，这一步才完成实际的切换：</p>
<blockquote><p>SQL&gt; EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE('ERP', 'BALANCE', 'P_BALANCE');</p>
<p>PL/SQL procedure successfully completed.</p>
<p>Elapsed: 00:00:01.66</p></blockquote>
<p>如果在分区动作过程中业务DML操作很多，可以先同步一次再进行实际切换，这样会减少停滞的时间：</p>
<blockquote><p>dbms_redefinition.sync_interim_table('ERP', 'BALANCE', 'P_BALANCE');</p></blockquote>
<p>分区完成后，要重新收集统计信息，并行度根据cpu数量自己确定：</p>
<blockquote><p>SQL&gt;exec dbms_stats.gather_table_stats(ownname =&gt; 'erp',tabname =&gt; 'balance',cascade =&gt; TRUE,degree =&gt; 4);</p>
<p>PL/SQL procedure successfully completed.</p></blockquote>
<p>这里也可以根据需要指定granularity参数，然后就可以删除中间表了：</p>
<blockquote><p>SQL&gt; drop table p_balance;</p>
<p>Table dropped.</p></blockquote>
<p>分区常用的一些视图：user_tab_partitions，user_ind_partitions，dba_part_tables，dba_part_indexes等。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.banping.com/2010/04/07/partition_table_online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GES:Potential blocker on resource TX问题的处理</title>
		<link>http://www.banping.com/2010/03/31/ges_potential_blocker/</link>
		<comments>http://www.banping.com/2010/03/31/ges_potential_blocker/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 07:06:17 +0000</pubDate>
		<dc:creator>banping</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.banping.com/?p=672</guid>
		<description><![CDATA[<p>有时候会在Oracle alert日志中看到如下信息：</p> <p>GES: Potential blocker (pid=348868) on resource TX-0013000E-0010D004;</p> <p>这就是rac中的死锁，一般Oracle会自己处理，有时候需要手工干预。要找到这个引起死锁的session也很简单，通过v$process和v$session视图就能查到：</p> <p>select * from v$session where paddr= (select addr from v$process where spid='348868')</p> <p>可以根据这个session的情况来决定如何处理。比如这个session的program是oracle@p5b1 (J000)，这应该 是oracle自身的job，然后检查dba_jobs_running，发现昨晚的一个job没有跑完，而这个job阻塞了其他的session。</p> <p>可以查看v$session_wait视图查看该session的等待事件：</p> <p>select * from v$session_wait where event&#60;&#62;'SQL*Net message from client'<br /> and event&#60;&#62;'rdbms ipc message'</p> <p>发现等待事件在db file sequential read和gc cr request间不断切换，这在rac中是很常见的，说明这个job需要的很多block要从别的节点上作一致读，而state是WAITED KNOWN TIME表示等待已经结束了。</p> <p>那么如何找到被阻塞的session是什么呢？可以通过v$lock来查看，block=1的是blocker，block=0的是waiter，另外更直观的做法是查看DBA_WAITERS视图，该视图可以通过运行 $ORACLE_HOME/rdbms/admin/catblock.sql这个脚本来创建。DBA_WAITERS里的lock_id1和lock_id2分别对应v$lock中的id1和id2，不同的lock有不同的定义， 比如TM的话，lock1就是object id。</p> <p>如果严重影响了系统的运行，可以杀死引起死锁的session：</p> <p>alter system [...]]]></description>
			<content:encoded><![CDATA[<p>有时候会在Oracle alert日志中看到如下信息：</p>
<blockquote><p>GES: Potential blocker (pid=348868) on resource TX-0013000E-0010D004;</p></blockquote>
<p>这就是rac中的死锁，一般Oracle会自己处理，有时候需要手工干预。要找到这个引起死锁的session也很简单，通过v$process和v$session视图就能查到：</p>
<blockquote><p>select * from v$session where paddr= (select addr from v$process where spid='348868')</p></blockquote>
<p>可以根据这个session的情况来决定如何处理。比如这个session的program是oracle@p5b1 (J000)，这应该 是oracle自身的job，然后检查dba_jobs_running，发现昨晚的一个job没有跑完，而这个job阻塞了其他的session。</p>
<p>可以查看v$session_wait视图查看该session的等待事件：</p>
<blockquote><p>select * from v$session_wait where event&lt;&gt;'SQL*Net message from client'<br />
and event&lt;&gt;'rdbms ipc message'</p></blockquote>
<p>发现等待事件在db file sequential read和gc cr request间不断切换，这在rac中是很常见的，说明这个job需要的很多block要从别的节点上作一致读，而state是WAITED KNOWN TIME表示等待已经结束了。</p>
<p>那么如何找到被阻塞的session是什么呢？可以通过v$lock来查看，block=1的是blocker，block=0的是waiter，另外更直观的做法是查看DBA_WAITERS视图，该视图可以通过运行 $ORACLE_HOME/rdbms/admin/catblock.sql这个脚本来创建。DBA_WAITERS里的lock_id1和lock_id2分别对应v$lock中的id1和id2，不同的lock有不同的定义， 比如TM的话，lock1就是object id。</p>
<p>如果严重影响了系统的运行，可以杀死引起死锁的session：</p>
<blockquote><p>alter system kill session '833,33751'</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.banping.com/2010/03/31/ges_potential_blocker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

