<?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>半瓶</title>
	<atom:link href="http://www.banping.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.banping.com</link>
	<description>一瓶子不满  半瓶子晃荡</description>
	<lastBuildDate>Wed, 28 Jul 2010 14:11:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<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[对大数据量查询时，合理使用索引能极大的提高查询效率，以下几则案例是前一段时间优化系统时做的，简单记录一下。
案例一，优化前的查询执行计划：
SQL&#62; set autotrace traceonly
SQL&#62; set timing on
SQL&#62; set linesize 200
SQL&#62;
SQL&#62; select count(*) from busilink
2  where (wpcode='074' or wpcode='078'  or  wpcode='099' ) and wcode ='0795'
3  or (wcode in (select  rwcode  from ratifyauth where wcodeto = '0795') and (wpcode='074'  or wpcode='078'   or wpcode='099' ) )
4  /
Elapsed: 00:00:00.05
Execution Plan
----------------------------------------------------------
Plan hash value: 4220767725
------------------------------------------------------------------------------------------------
&#124; Id  &#124; Operation              &#124; Name                  &#124; [...]]]></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/25/qingqinghepancao/</link>
		<comments>http://www.banping.com/2010/06/25/qingqinghepancao/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 03:01:41 +0000</pubDate>
		<dc:creator>banping</dc:creator>
				<category><![CDATA[随笔]]></category>

		<guid isPermaLink="false">http://www.banping.com/?p=732</guid>
		<description><![CDATA[琼瑶曾用《青青河边草》的爱情故事博取人们的眼泪：
青青河边草 悠悠天不老
野火烧不尽 风雨吹不倒
青青河边草 绵绵到海角
海角路不尽 相思情未了
那这个名字的来历在哪里呢，古代有两首诗词：
其一是《古诗十九首》的第二首，内容如下：
青青河畔草 郁郁园中柳
盈盈楼上女 皎皎当窗牖
娥娥红粉妆 纤纤出素手
昔为倡家女 今为荡子妇
荡子行不归 空床难独守
其二是汉乐府民歌《饮马长城窟行》：
青青河畔草 绵绵思远道
远道不可思 宿昔梦见之
梦见在我傍 忽觉在他乡
他乡各异县 展转不相见
枯桑知天风 海水知天寒
入门各自媚 谁肯相为言
客从远方来 遗我双鲤鱼
呼儿烹鲤鱼 中有尺素书
长跪读素书 书中竟何如
上言加餐食 下言长相忆
相比之下，第二首更有意境，值得品位赏析。
]]></description>
			<content:encoded><![CDATA[<p>琼瑶曾用《青青河边草》的爱情故事博取人们的眼泪：</p>
<blockquote><p>青青河边草 悠悠天不老<br />
野火烧不尽 风雨吹不倒<br />
青青河边草 绵绵到海角<br />
海角路不尽 相思情未了</p></blockquote>
<p>那这个名字的来历在哪里呢，古代有两首诗词：</p>
<p>其一是《古诗十九首》的第二首，内容如下：</p>
<blockquote><p>青青河畔草 郁郁园中柳<br />
盈盈楼上女 皎皎当窗牖<br />
娥娥红粉妆 纤纤出素手<br />
昔为倡家女 今为荡子妇<br />
荡子行不归 空床难独守</p></blockquote>
<p>其二是汉乐府民歌《饮马长城窟行》：</p>
<blockquote><p>青青河畔草 绵绵思远道<br />
远道不可思 宿昔梦见之<br />
梦见在我傍 忽觉在他乡<br />
他乡各异县 展转不相见<br />
枯桑知天风 海水知天寒<br />
入门各自媚 谁肯相为言<br />
客从远方来 遗我双鲤鱼<br />
呼儿烹鲤鱼 中有尺素书<br />
长跪读素书 书中竟何如<br />
上言加餐食 下言长相忆</p></blockquote>
<p>相比之下，第二首更有意境，值得品位赏析。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.banping.com/2010/06/25/qingqinghepancao/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[最近接触到的一个系统，出现了莫名其妙的数据丢失，怀疑是应用程序的问题，可是如何定位出问题的程序位置很难，最后根据大概的数据丢失时间，结合Logminer工具找出了有问题的程序，下面记录定位程序错误的过程：
一、根据大概的时间定位需要哪些归档文件
ERPDB1@/orabak&#62;rman target /
Recovery Manager: Release 10.2.0.3.0 - Production on Tue Apr 6 09:26:15 2010
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
connected to target database: CNDERPDB (DBID=2400249746)
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')";
using target database control file instead of recovery catalog
List of Backup Sets
===================
BS Key  Size       Device Type Elapsed [...]]]></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[前段时间通过dba_outstanding_alerts发现表空间增长超过了85%，然后加了个裸设备做为数据文件，虽然这个数据文件可用，但dba_outstanding_alerts中的警告信息并没有消失：
SQL&#62; col reason for a50
SQL&#62; SELECT REASON
2  , METRIC_VALUE
3  , TO_CHAR(CREATION_TIME,'DD-MON-YYYY HH24:MI:SS') cdate
4  FROM SYS.DBA_OUTSTANDING_ALERTS;
REASON                                             METRIC_VALUE CDATE
-------------------------------------------------- ------------ -----------------------
Tablespace [ERP_INDEX] is [94 percent] full          94.5023148 26-MAR-2010 19:45:05
可见Oracle在这里认为这个表空间已经使用了94%以上，查看一下预警阀值的设定：
SQL&#62; col METRICS_NAME for a50
SQL&#62; col WARN_VAL for a10
SQL&#62; col CRIT_VAL for a10
SQL&#62; col OBJ_TYPE for a20
SQL&#62; SELECT METRICS_NAME
2  , WARNING_VALUE WARN_VAL
3  , CRITICAL_VALUE CRIT_VAL
4  , OBJECT_TYPE OBJ_TYPE
5  FROM [...]]]></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>《吉檀迦利》，你读过吗？</title>
		<link>http://www.banping.com/2010/06/07/jitanjiali/</link>
		<comments>http://www.banping.com/2010/06/07/jitanjiali/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 06:35:48 +0000</pubDate>
		<dc:creator>banping</dc:creator>
				<category><![CDATA[随笔]]></category>

		<guid isPermaLink="false">http://www.banping.com/?p=718</guid>
		<description><![CDATA[高中时侯读泰戈尔的《吉檀迦利》，感觉那本厚厚的书里蕴含着很多的哲理，可惜那本书在大学期间遗失了，幸亏我现在还有本纪伯伦的散文诗集，现在纷繁的生活状态下，有几人能静下心来？节选《吉檀迦利》中我喜欢的一节：
55
乏倦压在你的心上，你眼中尚有睡意。
你没有得到消息说荆棘丛中花朵正在盛开吗？醒来罢，呵，醒来！不要让光阴虚度了！
在石径的尽头，在幽静无人的田野里，我的朋友在独坐着。不要欺骗他罢。醒来，呵，醒来罢！
即使正午的骄阳使天空喘息摇颤——即使灼热的沙地展布开它干渴的巾衣——
在你心的深处难道没有快乐吗？你的每一个足音，不会使道路的琴弦迸出痛苦的柔音吗？
]]></description>
			<content:encoded><![CDATA[<p>高中时侯读泰戈尔的《吉檀迦利》，感觉那本厚厚的书里蕴含着很多的哲理，可惜那本书在大学期间遗失了，幸亏我现在还有本纪伯伦的散文诗集，现在纷繁的生活状态下，有几人能静下心来？节选《吉檀迦利》中我喜欢的一节：</p>
<blockquote><p>55<br />
乏倦压在你的心上，你眼中尚有睡意。</p>
<p>你没有得到消息说荆棘丛中花朵正在盛开吗？醒来罢，呵，醒来！不要让光阴虚度了！</p>
<p>在石径的尽头，在幽静无人的田野里，我的朋友在独坐着。不要欺骗他罢。醒来，呵，醒来罢！</p>
<p>即使正午的骄阳使天空喘息摇颤——即使灼热的沙地展布开它干渴的巾衣——</p>
<p>在你心的深处难道没有快乐吗？你的每一个足音，不会使道路的琴弦迸出痛苦的柔音吗？</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.banping.com/2010/06/07/jitanjiali/feed/</wfw:commentRss>
		<slash:comments>1</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[在一个大型系统开发环境，有人反映无法连接到数据库，经检查判断是listener的问题，找到对应的进程杀掉后重启listener 就解决了。
开始怀疑是只是单个session的问题：
[oracle@erpdevdb bdump]$ sqlplus banping/banping
SQL*Plus: Release 10.2.0.1.0 - Production on Mon May 17 10:23:07 2010
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL&#62;
SQL&#62; select machine from v$session;
MACHINE
----------------------------------------------------------------
servicedesk
localhost.localdomain
x-9ee5775925
erpdevdb
erp-app
WORKGROUP\DEV00
WORKGROUP\ERP_DEV003
WORKGROUP\DEV00
erp-app
servicedesk
servicedesk
localhost.localdomain
erpdevdb
......
39 rows selected.
SQL&#62; select sql_id from v$session where machine='x-9ee5775925';
SQL_ID
-------------
2vwg9dh3v6rkg
SQL&#62; select sql_text from v$sql [...]]]></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[前段时间把一个在Linux 平台运行的应用程序部署一套到windows平台上，是java开发的基于oracle10g的程序，部署完成后，发现有个写入操作会报错，而后台跟踪到的SQL是插入日期时侯出现的问题。
insert into t ( fromtime ) values ( '2009-4-15' )
其中的fromtime是date 类型，而SQL中并没有对字符串做to_date转化。程序不大好修改，只能在环境变量等参数配置上下手。而奇怪的是这样的SQL在原来的Linux 平台上能运行的很好，说明是和环境问题是有关的。
首先修改了oracle的nls_date_format参数，原来是空的，改为yyyy-mm-dd hh24:mi:Ss，用sqlplus连到服务器测试SQL能执行，但是java程序还是报错，看来得改客户端的nls_date_format设置，老熊说有些jdbc驱动可以采用设置数据库的nls_data_format方式来解决，因为这种驱动连接上后自动将会话的这个设为跟数据库一样的。修改windows系统的环境变量仍然不行，看来java程序可以不从操作系统来读变量。以下是测试过程：
SQL&#62; create table t1 (mydate varchar2(20));
Table created.
SQL&#62; insert into t1 mydate values (2010-10-10);
1 row created.
SQL&#62; alter table t1 modify mydate date;
Table altered.
SQL&#62;
SQL&#62; desc t1;
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
MYDATE                                             DATE
SQL&#62; insert into t1 mydate values ('2010-10-10');
insert into t1 mydate values ('2010-10-10')
*
ERROR at line [...]]]></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[今天在数据库的v$locked_object视图 里发现一个923号session，用户是SYS，一直持有对 PLAN_TABLE表的锁不释放，PLAN_TABLE是存储SQL执行计划的，很奇怪。
select sid,serial#,paddr,username,server,schemaname,osuser,terminal,program from v$session where sid=923
SID    SERIAL#    PADDR    USERNAME    SERVER    SCHEMANAME    OSUSER    TERMINAL    PROGRAM
923    42779    0700000C8F3D9588    SYS    PSEUDO    SYS    oracle    pts/2    sqlplus@p5b1 (TNS V1-V3)
查看进程信息：
select * from v$process where addr='0700000C8F3D9588'
发现spid的值为234178，这个也就是操作系统的进程id：
DB2@/ora_arch&#62;ps -ef&#124;grep 234178
oracle 413964 807630   0 15:00:19  pts/1  0:00 grep 234178
oracle 234178 623538   0   May 04      -  0:39 oraclebanpingdb2 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
通过检查一些操作日志发现5月4号，青年节这天确实有人登录执行过一个SQL：
SQL&#62; create or replace procedure show_space(...
然后异常退出了，那么可以断定就是这个session一直僵死在这里了。
这时在数据库端杀session：
alter [...]]]></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[锁是数据库里一个重要的概念，可以自己来模拟一个Oracle中的死锁状态。
首先session A登录到系统，更新一条记录：
[oracle@devdb ~]$ export ORACLE_SID=optm
[oracle@devdb ~]$ sqlplus " / as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Tue May 11 23:14:09 2010
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL&#62; connect banping/mypassword
Connected.
SQL&#62; create table banpingtest (a varchar2(10),b varchar2(10));
Table created.
SQL&#62; insert [...]]]></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>配置Linux防火墙的一些方法</title>
		<link>http://www.banping.com/2010/04/30/linux_iptables/</link>
		<comments>http://www.banping.com/2010/04/30/linux_iptables/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 09:07:55 +0000</pubDate>
		<dc:creator>banping</dc:creator>
				<category><![CDATA[主机及存储]]></category>

		<guid isPermaLink="false">http://www.banping.com/?p=694</guid>
		<description><![CDATA[首先查看一下现有的防火墙配置：
[root@localhost banping]# vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -p tcp -m tcp --dport 8000 -j ACCEPT
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 [...]]]></description>
			<content:encoded><![CDATA[<p>首先查看一下现有的防火墙配置：</p>
<blockquote><p>[root@localhost banping]# vi /etc/sysconfig/iptables</p>
<p># Firewall configuration written by system-config-securitylevel<br />
# Manual customization of this file is not recommended.<br />
*filter<br />
:INPUT ACCEPT [0:0]<br />
:FORWARD ACCEPT [0:0]<br />
:OUTPUT ACCEPT [0:0]<br />
:RH-Firewall-1-INPUT - [0:0]<br />
-A INPUT -p tcp -m tcp --dport 8000 -j ACCEPT<br />
-A INPUT -j RH-Firewall-1-INPUT<br />
-A FORWARD -j RH-Firewall-1-INPUT<br />
-A RH-Firewall-1-INPUT -i lo -j ACCEPT<br />
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT<br />
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT<br />
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT<br />
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT<br />
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT<br />
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT<br />
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT<br />
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT<br />
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT<br />
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited</p></blockquote>
<p>查看现有的策略：</p>
<blockquote><p>[root@localhost banping]# iptables -L -n<br />
Chain INPUT (policy ACCEPT)<br />
target     prot opt source               destination<br />
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:8000<br />
RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0</p>
<p>Chain FORWARD (policy ACCEPT)<br />
target     prot opt source               destination<br />
RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0</p>
<p>Chain OUTPUT (policy ACCEPT)<br />
target     prot opt source               destination</p>
<p>Chain RH-Firewall-1-INPUT (2 references)<br />
target     prot opt source               destination<br />
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0<br />
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 255<br />
ACCEPT     esp  --  0.0.0.0/0            0.0.0.0/0<br />
ACCEPT     ah   --  0.0.0.0/0            0.0.0.0/0<br />
ACCEPT     udp  --  0.0.0.0/0            224.0.0.251         udp dpt:5353<br />
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:631<br />
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:631<br />
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED<br />
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22<br />
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:23<br />
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited</p></blockquote>
<p>如果要重新配置，先清空之前的策略：</p>
<blockquote><p>[root@localhost banping]# iptables -F<br />
[root@localhost banping]# iptables -X<br />
[root@localhost banping]# iptables -L -n<br />
Chain INPUT (policy ACCEPT)<br />
target     prot opt source               destination</p>
<p>Chain FORWARD (policy ACCEPT)<br />
target     prot opt source               destination</p>
<p>Chain OUTPUT (policy ACCEPT)<br />
target     prot opt source               destination</p></blockquote>
<p>先配置开放22端口，否则如果是远程登入的，会把自己关在外面：</p>
<blockquote><p>[root@localhost banping]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT</p></blockquote>
<p>然后丢弃所有的input，根据需要配置开放的就行了：</p>
<blockquote><p>[root@localhost banping]# iptables -P INPUT DROP<br />
[root@localhost banping]# iptables -P OUTPUT ACCEPT<br />
[root@localhost banping]# iptables -P FORWARD ACCEPT</p></blockquote>
<p>然后要保存一下：</p>
<blockquote><p>[root@localhost banping]# /etc/rc.d/init.d/iptables save<br />
将当前规则保存到 /etc/sysconfig/iptables：[确定]</p></blockquote>
<p>重启防火墙服务：</p>
<blockquote><p>[root@localhost banping]# service iptables restart<br />
清除防火墙规则：[确定]<br />
把 chains 设置为 ACCEPT 策略：filter [确定]<br />
正在卸载 Iiptables 模块：[确定]<br />
应用 iptables 防火墙规则：[确定]<br />
载入额外 iptables 模块：ip_conntrack_netbios_ns [确定]</p></blockquote>
<p>除了用iptables命令，也可以直接编辑/etc/sysconfig/iptables文件，最终的配置结果可能如下，：</p>
<blockquote><p>[root@localhost banping]# vi /etc/sysconfig/iptables</p>
<p># Generated by iptables-save v1.3.5 on Thu Apr 29 17:28:08 2010<br />
*filter<br />
:INPUT DROP [3:349]<br />
:FORWARD ACCEPT [0:0]<br />
:OUTPUT ACCEPT [5585:947488]<br />
-A INPUT -i lo -j ACCEPT<br />
-A INPUT -s 172.16.0.1 -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT<br />
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
-A INPUT -s 172.16.0.2 -i eth0 -j ACCEPT<br />
-A INPUT -s 172.16.0.3 -i eth0 -j ACCEPT<br />
COMMIT<br />
# Completed on Thu Apr 29 17:28:08 2010</p></blockquote>
<p>可见，这里的配置允许指定的IP访问22端口，开放80端口，不限制下边的两个IP进行连接。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.banping.com/2010/04/30/linux_iptables/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
