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

<channel>
	<title>恋恋风尘 &#187; Database</title>
	<atom:link href="http://leeawan.cn/category/database/feed/" rel="self" type="application/rss+xml" />
	<link>http://leeawan.cn</link>
	<description>Dust in The Wind</description>
	<lastBuildDate>Sat, 04 Feb 2012 08:17:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>oracle收缩表空间</title>
		<link>http://leeawan.cn/2011/08/oracle_shrink_space/</link>
		<comments>http://leeawan.cn/2011/08/oracle_shrink_space/#comments</comments>
		<pubDate>Sun, 21 Aug 2011 14:31:41 +0000</pubDate>
		<dc:creator>leeawan</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Oralce]]></category>

		<guid isPermaLink="false">http://leeawan.cn/?p=398</guid>
		<description><![CDATA[参考： oracle10g之shrink Oracle10g数据文件的收缩与数据对象跨表空间的迁移 oracle数据库在做大量的delete操作后数据表文件数据被删除，但是表空间并没又得到释放，需要手动来释放表空间，整理碎片。 1.查看表的使用状况 select sum(bytes)/1024/1024 M,segment_name,segment_type from user_segments where group by segment_name,segment_type having sum(bytes)/1024/1024 &#62;100; //大于100M的空间 2.开启行迁移功能 alter table table_name enable row movement; 3.整理表空间内的碎片 alter table wip_wo shrink space compact; 4.收缩表空间 alter table wip_wo shrink space; 5.查看收缩后的表空间 select sum(bytes)/1024/1024 M from user_segments where segment_name='tabale_name'; 6.收缩index的空间 alter index index_name shrink space; 注：如果table很大，在收缩表空间时会产生大量的archivelog]]></description>
			<content:encoded><![CDATA[<p class='fp'>参考：<br />
<a href="http://hi.baidu.com/bailang3106/blog/item/6f2785eefdd2a4212cf5342d.html">oracle10g之shrink</a><br />
<a href="http://black4371.blog.163.com/blog/static/3202390220104141941895/">Oracle10g数据文件的收缩与数据对象跨表空间的迁移</a></p>
<p>oracle数据库在做大量的delete操作后数据表文件数据被删除，但是表空间并没又得到释放，需要手动来释放表空间，整理碎片。<br />
1.查看表的使用状况</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: #00008b;">sum</span><span style="color: Olive;">(</span><span style="color: Blue;">bytes</span><span style="color: Olive;">)</span><span style="color: Gray;">/</span><span style="color: Maroon;">1024</span><span style="color: Gray;">/</span><span style="color: Maroon;">1024</span><span style="color: Gray;"> </span><span style="color: #00008b;">M</span><span style="color: Gray;">,</span><span style="color: Blue;">segment_name</span><span style="color: Gray;">,</span><span style="color: Blue;">segment_type</span><span style="color: Gray;"> </span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">user_segments</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Green;">group</span><span style="color: Gray;"> </span><span style="color: Green;">by</span><span style="color: Gray;"> </span><span style="color: Blue;">segment_name</span><span style="color: Gray;">,</span><span style="color: Blue;">segment_type</span><span style="color: Gray;"> <br /></span><span style="color: Green;">having</span><span style="color: Gray;"> </span><span style="color: #00008b;">sum</span><span style="color: Olive;">(</span><span style="color: Blue;">bytes</span><span style="color: Olive;">)</span><span style="color: Gray;">/</span><span style="color: Maroon;">1024</span><span style="color: Gray;">/</span><span style="color: Maroon;">1024</span><span style="color: Gray;"> &gt;</span><span style="color: Maroon;">100</span><span style="color: Gray;">; //大于</span><span style="color: Maroon;">100</span><span style="color: #00008b;">M</span><span style="color: Gray;">的空间</span></div></div>
<p>2.开启行迁移功能</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">alter</span><span style="color: Gray;"> </span><span style="color: Green;">table</span><span style="color: Gray;"> </span><span style="color: #00008b;">table_name</span><span style="color: Gray;"> </span><span style="color: Blue;">enable</span><span style="color: Gray;"> </span><span style="color: Green;">row</span><span style="color: Gray;"> </span><span style="color: Blue;">movement</span><span style="color: Gray;">;</span></div></div>
<p>3.整理表空间内的碎片</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">alter</span><span style="color: Gray;"> </span><span style="color: Green;">table</span><span style="color: Gray;"> </span><span style="color: Blue;">wip_wo</span><span style="color: Gray;"> </span><span style="color: Blue;">shrink</span><span style="color: Gray;"> </span><span style="color: Green;">space</span><span style="color: Gray;"> </span><span style="color: Blue;">compact</span><span style="color: Gray;">;</span></div></div>
<p>4.收缩表空间</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">alter</span><span style="color: Gray;"> </span><span style="color: Green;">table</span><span style="color: Gray;"> </span><span style="color: Blue;">wip_wo</span><span style="color: Gray;"> </span><span style="color: Blue;">shrink</span><span style="color: Gray;"> </span><span style="color: Green;">space</span><span style="color: Gray;">;</span></div></div>
<p>5.查看收缩后的表空间</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: #00008b;">sum</span><span style="color: Olive;">(</span><span style="color: Blue;">bytes</span><span style="color: Olive;">)</span><span style="color: Gray;">/</span><span style="color: Maroon;">1024</span><span style="color: Gray;">/</span><span style="color: Maroon;">1024</span><span style="color: Gray;"> </span><span style="color: #00008b;">M</span><span style="color: Gray;"> </span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">user_segments</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">segment_name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">'</span><span style="color: Red;">tabale_name</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;</span></div></div>
<p>6.收缩index的空间</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">alter</span><span style="color: Gray;"> </span><span style="color: Blue;">index</span><span style="color: Gray;"> </span><span style="color: Blue;">index_name</span><span style="color: Gray;"> </span><span style="color: Blue;">shrink</span><span style="color: Gray;"> </span><span style="color: Green;">space</span><span style="color: Gray;">;</span></div></div>
<p>注：如果table很大，在收缩表空间时会产生大量的archivelog</p>
</p>]]></content:encoded>
			<wfw:commentRss>http://leeawan.cn/2011/08/oracle_shrink_space/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>oracle10g之shrink</title>
		<link>http://leeawan.cn/2011/08/oralce_shrink/</link>
		<comments>http://leeawan.cn/2011/08/oralce_shrink/#comments</comments>
		<pubDate>Sun, 21 Aug 2011 14:16:49 +0000</pubDate>
		<dc:creator>leeawan</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Oralce]]></category>

		<guid isPermaLink="false">http://leeawan.cn/?p=394</guid>
		<description><![CDATA[转载自：oracle10g之shrink shrink 表的收缩语句让你手动收缩表、索引组织表、索引、分区、子分区、物化视图、物化视图日志。收缩语句只是对段的自动管理的对象有用。而段的自动管理的对象一定是在本地管理的表空间中。默认情况下，oracle会压缩段，调整hwm,立即释放可以复原的空间。 收缩段的空间需要启动对象的row movement属性。另外如果你的系统中有基于rowid的触发器，只执行该语句前应该禁用该触发器。COMPACT 如果指定compat，为了接下来的空间释放，oracel只是使用碎片整理程序整理段的空间，使表的行更加的紧凑。数据库并不会理解减低hwm，也不会立即释放空间。我们必须之后执行alter table xx shrink space语句去完成这个操作。该语句如果想使用多步完成shrink操作，而不想一步操作时间过长时非常有用。 对于索引和索引组织表而言，指定alter index&#124;table .. shrink space compat语句就等同于指定alter index&#124;table coalesce。shrink语句可以指定cascade，可以使使用coalesce的段更加紧凑，这样可以提高性能。但是如果我们不想释放没有使用的空间，我们可以使用coalesce语句。 cascade 如果指定cascade，那么oracle将该表相关联的对象，如索引等一起shrink了，包括索引组织表的二级索引也是如此。shrink语句的限制： 1）对簇、簇表、以及任何含有long列的对象无法使用shrink 2）LOB段不支持shrink，即使对表shrink时指定了cascade语句 3）对有函数索引的表不至此 4）即使指定cascade语句，也不会shrink mapping表(映射表),索引组织表的over flow segment. 5）如果一个是on commit物化视图的主表，那么我们是无法shrink这张表的。如果shrink rowid的物化视图，在shrink之后必须rebuild。 注意：在高可用环境下，要注意使用alter index&#124;table .. shrink space compat，只是移动了数据的位置，使数据更加的紧凑，但是并不移动hwm，而在这个操作期间，对该表是可以进行dml操作的。alter index&#124;table .. shrink space语句是减低hwm位置。同样的道理：在大表中我们如何去删除一个列呢？首先我们应该先使该表的列为unused，然后再drop该列。这样也是为了提高该表的可用性。 在10G 以前收缩表空间是用： 　　1.exp/imp 　　2.alter table xxx move　　 10G后用shrink表空间 表空间中支持自动段空间管理 (ASSM), 否则会报 ORA-10635: Invalid segment or [...]]]></description>
			<content:encoded><![CDATA[<p class='fp'> 转载自：<a href="http://hi.baidu.com/bailang3106/blog/item/6f2785eefdd2a4212cf5342d.html">oracle10g之shrink</a><br />
<strong>shrink </strong><br />
表的收缩语句让你手动收缩表、索引组织表、索引、分区、子分区、物化视图、物化视图日志。收缩语句只是对段的自动管理的对象有用。而段的自动管理的对象一定是在本地管理的表空间中。默认情况下，oracle会压缩段，调整hwm,立即释放可以复原的空间。<br />
    收缩段的空间需要启动对象的row movement属性。另外如果你的系统中有基于rowid的触发器，只执行该语句前应该禁用该触发器。<strong>COMPACT</strong><br />
如果指定compat，为了接下来的空间释放，oracel只是使用碎片整理程序整理段的空间，使表的行更加的紧凑。数据库并不会理解减低hwm，也不会立即释放空间。我们必须之后执行alter table xx shrink space语句去完成这个操作。该语句如果想使用多步完成shrink操作，而不想一步操作时间过长时非常有用。<br />
    对于索引和索引组织表而言，指定alter index|table .. shrink space compat语句就等同于指定alter index|table coalesce。shrink语句可以指定cascade，可以使使用coalesce的段更加紧凑，这样可以提高性能。但是如果我们不想释放没有使用的空间，我们可以使用coalesce语句。<br />
<span id="more-394"></span><br />
<strong>cascade</strong><br />
如果指定cascade，那么oracle将该表相关联的对象，如索引等一起shrink了，包括索引组织表的二级索引也是如此。shrink语句的限制：<br />
   1）对簇、簇表、以及任何含有long列的对象无法使用shrink<br />
    2）LOB段不支持shrink，即使对表shrink时指定了cascade语句<br />
   3）对有函数索引的表不至此<br />
   4）即使指定cascade语句，也不会shrink mapping表(映射表),索引组织表的over flow segment.<br />
    5）如果一个是on commit物化视图的主表，那么我们是无法shrink这张表的。如果shrink rowid的物化视图，在shrink之后必须rebuild。<br />
  注意：在高可用环境下，要注意使用alter index|table .. shrink space compat，只是移动了数据的位置，使数据更加的紧凑，但是并不移动hwm，而在这个操作期间，对该表是可以进行dml操作的。alter index|table .. shrink space语句是减低hwm位置。同样的道理：在大表中我们如何去删除一个列呢？首先我们应该先使该表的列为unused，然后再drop该列。这样也是为了提高该表的可用性。</p>
<p>在10G 以前收缩表空间是用：<br />
　　1.exp/imp<br />
　　2.alter table xxx move　　</p>
<p>10G后用shrink表空间</p>
<p>表空间中支持自动段空间管理 (ASSM), 否则会报 ORA-10635: Invalid segment or tablespace type</p>
<p>适用表，索引，大对象，IOT，物化视图</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">alter</span><span style="color: Gray;"> </span><span style="color: Green;">table</span><span style="color: Gray;"> </span><span style="color: Blue;">tbname</span><span style="color: Gray;"> </span><span style="color: Blue;">enable</span><span style="color: Gray;"> </span><span style="color: Green;">row</span><span style="color: Gray;"> </span><span style="color: Blue;">movement</span><span style="color: Gray;"> </span><span style="color: Blue;">shrink</span><span style="color: Gray;"> //必须开启行迁移功能。<br />&nbsp;<br /></span><span style="color: Green;">alter</span><span style="color: Gray;"> </span><span style="color: Green;">table</span><span style="color: Gray;"> </span><span style="color: Blue;">tbname</span><span style="color: Gray;"> </span><span style="color: Blue;">shrink</span><span style="color: Gray;"> </span><span style="color: Green;">space</span><span style="color: Gray;"> </span><span style="color: Blue;">compact</span><span style="color: Gray;">; //保持</span><span style="color: Blue;">HWM</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Green;">alter</span><span style="color: Gray;"> </span><span style="color: Green;">table</span><span style="color: Gray;"> </span><span style="color: Blue;">tbname</span><span style="color: Gray;"> </span><span style="color: Blue;">shrink</span><span style="color: Gray;"> </span><span style="color: Green;">space</span><span style="color: Gray;">; //回缩表与</span><span style="color: Blue;">HWM</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Green;">alter</span><span style="color: Gray;"> </span><span style="color: Green;">table</span><span style="color: Gray;"> </span><span style="color: Blue;">tbname</span><span style="color: Gray;"> </span><span style="color: Blue;">shrink</span><span style="color: Gray;"> </span><span style="color: Green;">space</span><span style="color: Gray;"> </span><span style="color: Green;">cascade</span><span style="color: Gray;">; //回缩表与相关索引<br />&nbsp;<br /></span><span style="color: Green;">alter</span><span style="color: Gray;"> </span><span style="color: Blue;">index</span><span style="color: Gray;"> </span><span style="color: Blue;">idxname</span><span style="color: Gray;"> </span><span style="color: Blue;">shrink</span><span style="color: Gray;"> </span><span style="color: Green;">space</span><span style="color: Gray;">;//回缩索引</span></div></div>
<p>　　相关限制<br />
　　cluster中的表<br />
　　有long类型的表<br />
　　有on_commit物化视图的表<br />
　　有基于rowid物化视图的表<br />
　　大对象(LOB)索引</p>
</p>]]></content:encoded>
			<wfw:commentRss>http://leeawan.cn/2011/08/oralce_shrink/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>oracle中得exp/imp详解(三)</title>
		<link>http://leeawan.cn/2011/08/oracl_exp_imp_c/</link>
		<comments>http://leeawan.cn/2011/08/oracl_exp_imp_c/#comments</comments>
		<pubDate>Sun, 21 Aug 2011 14:11:37 +0000</pubDate>
		<dc:creator>leeawan</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Oralce]]></category>

		<guid isPermaLink="false">http://leeawan.cn/?p=392</guid>
		<description><![CDATA[一、8i EXP常用选项 1、FULL，这个用于导出整个数据库，在ROWS=N一起使用时，可以导出整个数据库的结构。例如： exp sys file=./db_str.dmp log=./db_str.log full=y rows=n compress=y direct=y 2、BUFFER和FEEDBACK，在导出比较多的数据时，我会考虑设置这两个参数。例如： exp new file=yw97_2003.dmp log=yw97_2003_3.log feedback=10000 buffer=100000000 tables=WO4,OK_YT 3、FILL和LOG，这两个参数分别指定备份的DMP名称和LOG名称，包括文件名和目录，例子见上面。 需要说明的是，EXP可以直接备份到磁带中，即使用FILE=/dev/rmt0(磁带设备名)，但是一般我们都不这么做，原因有二：一、这样做的速度会慢很多，二、现在一般都是使用磁带库的，不建议直接对磁带进行操作。至于没有使用磁带库的朋友可以考虑和UNIX的TAR结合使用。 如果你真想使用EXP直接到磁带，你可以参考Metalink文章“EXPORTING TO TAPE ON UNIX SYSTEMS”（文档号：30428.1），该文中有详细解释。 4、COMPRESS参数将在导出的同时合并碎块，尽量把数据压缩到initial的EXTENT里，默认是N，一般建议使用。DIRECT参数将告诉EXP直接读取数据，而不像传统的EXP那样，使用SELECT来读取表中的数据，这样就减少了SQL语句处理过程。一般也建议使用。不过有些情况下DIRECT参数是无法使用的。 5、如何使用SYSDBA执行EXP/IMP？ 这是一个很现实的问题，有时候我们需要使用SYSDBA来执行EXP/IMP，如进行传输表空间的EXP/IMP，以及在9i下用SYS用户来执行EXP/IMP时，都需要使用SYSDBA才可。我们可以使用下面方式连入EXP/IMP： exp &#8220;&#8216;sys/sys as sysdba&#8217;&#8221; file=1.dmp tables=gototop.t rows=n 6、QUERY参数后面跟的是where条件，值得注意的是，整个where子句需要使用&#8221;"括起来，where子句的写法和SELECT中相同，如果是UNIX平台所有&#8221;和&#8217;都需要使用u26469屏蔽它们的特殊含义： exp gototop/gototop file=1.dmp log=1.log tables=cyx.t query=&#8221;where c1=20 and c2=gototop&#8221; 如果是windows平台，则使用下面的格式： exp c/c@ncn file=c.dmp log=c.log tables=t query=&#8221;"&#8221;where id=1 [...]]]></description>
			<content:encoded><![CDATA[<p><strong>一、8i EXP常用选项 </strong><br />
1、FULL，这个用于导出整个数据库，在ROWS=N一起使用时，可以导出整个数据库的结构。例如： </p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">exp</span><span style="color: Gray;"> </span><span style="color: Blue;">sys</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=./</span><span style="color: Blue;">db_str</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=./</span><span style="color: Blue;">db_str</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span><span style="color: Gray;"> </span><span style="color: Green;">full</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Green;">rows</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Blue;">compress</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">direct</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span></div></div>
<p>2、BUFFER和FEEDBACK，在导出比较多的数据时，我会考虑设置这两个参数。例如： </p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">exp</span><span style="color: Gray;"> </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">yw97_2003</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">yw97_2003_3</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">10000</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">100000000</span><span style="color: Gray;"> </span><span style="color: Blue;">tables</span><span style="color: Gray;">=</span><span style="color: Blue;">WO4</span><span style="color: Gray;">,</span><span style="color: Blue;">OK_YT</span></div></div>
<p>3、FILL和LOG，这两个参数分别指定备份的DMP名称和LOG名称，包括文件名和目录，例子见上面。<br />
需要说明的是，EXP可以直接备份到磁带中，即使用FILE=/dev/rmt0(磁带设备名)，但是一般我们都不这么做，原因有二：一、这样做的速度会慢很多，二、现在一般都是使用磁带库的，不建议直接对磁带进行操作。至于没有使用磁带库的朋友可以考虑和UNIX的TAR结合使用。 如果你真想使用EXP直接到磁带，你可以参考Metalink文章“EXPORTING TO TAPE ON UNIX SYSTEMS”（文档号：30428.1），该文中有详细解释。<br />
<span id="more-392"></span><br />
4、COMPRESS参数将在导出的同时合并碎块，尽量把数据压缩到initial的EXTENT里，默认是N，一般建议使用。DIRECT参数将告诉EXP直接读取数据，而不像传统的EXP那样，使用SELECT来读取表中的数据，这样就减少了SQL语句处理过程。一般也建议使用。不过有些情况下DIRECT参数是无法使用的。<br />
5、如何使用SYSDBA执行EXP/IMP？ 这是一个很现实的问题，有时候我们需要使用SYSDBA来执行EXP/IMP，如进行传输表空间的EXP/IMP，以及在9i下用SYS用户来执行EXP/IMP时，都需要使用SYSDBA才可。我们可以使用下面方式连入EXP/IMP： exp &#8220;&#8216;sys/sys as sysdba&#8217;&#8221; file=1.dmp tables=gototop.t rows=n<br />
6、QUERY参数后面跟的是where条件，值得注意的是，整个where子句需要使用&#8221;"括起来，where子句的写法和SELECT中相同，如果是UNIX平台所有&#8221;和&#8217;都需要使用u26469屏蔽它们的特殊含义： exp gototop/gototop file=1.dmp log=1.log tables=cyx.t query=&#8221;where c1=20 and c2=gototop&#8221; 如果是windows平台，则使用下面的格式： exp c/c@ncn file=c.dmp log=c.log tables=t query=&#8221;"&#8221;where id=1 and name=&#8217;gototop&#8217;&#8221;"&#8221; </p>
<p><strong>二、8i IMP常用选项</strong><br />
1、FROMUSER和TOUSER，使用它们实现将数据从一个SCHEMA中导入到另外一个SCHEMA中。<br />
2、IGNORE、GRANTS和INDEXES，其中IGNORE参数将忽略表的存在，继续导入，这个对于需要调整表的存储参数时很有用，我们可以先根据实际情况用合理的存储参数建好表，然后直接导入数据。而GRANTS和INDEXES则表示是否导入授权和索引，如果想使用新的存储参数重建索引，或者为了加快到入速度，我们可以考虑将INDEXES设为N，而GRANTS一般都是Y。 另外一个EXP/IMP都有的参数是PARFILE，它是用来定义EXP/IMP的参数文件，也就是说，上面的参数都可以写在一个参数文件中，但我们一般很少使用。</p>
<p><strong>三、Oracle9i EXP功能描述 </strong><br />
Oracle9i EXP在原有的基础上新增了部分新的参数，按功能主要分为以下几个部分：<br />
1、OBJECT_CONSISTENT &#8211; 用于设置EXP对象为只读以保持对象的一致性。默认是N。<br />
2、FLASHBACK_SCN和FLASHBACK_TIME &#8211; 用于支持FLASHBACK功能而新增。<br />
3、RESUMABLE、RESUMABLE_NAME和RESUMABLE_TIMEOUT &#8211; 用于支持RESUMABLE空间分配而新增。<br />
4、TTS_FULL_CHECK &#8211; 用于在传输表空间时使用依赖性检查。<br />
5、TEMPLATE &#8211; 用于支持iAS。<br />
6、TABLESPACES &#8211; 设置表空间导出模式。个人觉得对于一般用户而言，这个才是新增参数中最实用的一个，可以让用户在原来的FULL、OWNER、TABLES的基础上多了一种选择，使得EXP更加灵活。</p>
<p><strong>四、不同版本的EXP/IMP问题？</strong><br />
一般来说，从低版本导入到高版本问题不大，麻烦的是将高版本的数据导入到低版本中，在Oracle9i之前，不同版本Oracle之间的EXP/IMP可以通过下面的方法来解决：<br />
1、在高版本数据库上运行底版本的catexp.sql；<br />
2、使用低版本的EXP来导出高版本的数据；<br />
3、使用低版本的IMP将数据库导入到底版本数据库中；<br />
4、在高版本数据库上重新运行高版本的catexp.sql脚本。<br />
但在9i中，上面的方法并不能解决问题。如果直接使用底版本EXP/IMP会出现如下错误：<br />
EXP-00008: ORACLE error %lu encountered ORA-00904: invalid column name 这已经是一个公布的BUG，需要等到Oracle10.0才能解决，BUG号为2261，你可以到METALINK上去查看有关此BUG的详细信息。<br />
BUG归BUG，我们的工作还是要做，在没有Oracle的支持之前，我们就自己解决。<br />
在Oracle9i中执行下面的SQL重建exu81rls视图即可。 </p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">CREATE</span><span style="color: Gray;"> </span><span style="color: Green;">OR</span><span style="color: Gray;"> </span><span style="color: Blue;">REPLACE</span><span style="color: Gray;"> </span><span style="color: Green;">view</span><span style="color: Gray;"> </span><span style="color: Blue;">exu81rls</span><span style="color: Gray;">&nbsp; <br /></span><span style="color: Olive;">(</span><span style="color: Blue;">objown</span><span style="color: Gray;">,</span><span style="color: Blue;">objnam</span><span style="color: Gray;">,</span><span style="color: Blue;">policy</span><span style="color: Gray;">,</span><span style="color: Blue;">polown</span><span style="color: Gray;">,</span><span style="color: Blue;">polsch</span><span style="color: Gray;">,</span><span style="color: Blue;">polfun</span><span style="color: Gray;">,</span><span style="color: Blue;">stmts</span><span style="color: Gray;">,</span><span style="color: Blue;">chkopt</span><span style="color: Gray;">,</span><span style="color: Blue;">enabled</span><span style="color: Gray;">,</span><span style="color: Blue;">spolicy</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp; <br /></span><span style="color: Green;">AS</span><span style="color: Gray;"> </span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">u</span><span style="color: Gray;">.</span><span style="color: #00008b;">name</span><span style="color: Gray;">, </span><span style="color: Blue;">o</span><span style="color: Gray;">.</span><span style="color: #00008b;">name</span><span style="color: Gray;">, </span><span style="color: Blue;">r</span><span style="color: Gray;">.</span><span style="color: Blue;">pname</span><span style="color: Gray;">, </span><span style="color: Blue;">r</span><span style="color: Gray;">.</span><span style="color: Blue;">pfschma</span><span style="color: Gray;">, </span><span style="color: Blue;">r</span><span style="color: Gray;">.</span><span style="color: Blue;">ppname</span><span style="color: Gray;">, </span><span style="color: Blue;">r</span><span style="color: Gray;">.</span><span style="color: Blue;">pfname</span><span style="color: Gray;">,&nbsp; <br /></span><span style="color: Blue;">decode</span><span style="color: Olive;">(</span><span style="color: Blue;">bitand</span><span style="color: Olive;">(</span><span style="color: Blue;">r</span><span style="color: Gray;">.</span><span style="color: Blue;">stmt_type</span><span style="color: Gray;">,</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">,</span><span style="color: #8b0000;">''</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">SELECT,</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp; <br />|| </span><span style="color: Blue;">decode</span><span style="color: Olive;">(</span><span style="color: Blue;">bitand</span><span style="color: Olive;">(</span><span style="color: Blue;">r</span><span style="color: Gray;">.</span><span style="color: Blue;">stmt_type</span><span style="color: Gray;">,</span><span style="color: Maroon;">2</span><span style="color: Olive;">)</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">,</span><span style="color: #8b0000;">''</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">INSERT,</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp; <br />|| </span><span style="color: Blue;">decode</span><span style="color: Olive;">(</span><span style="color: Blue;">bitand</span><span style="color: Olive;">(</span><span style="color: Blue;">r</span><span style="color: Gray;">.</span><span style="color: Blue;">stmt_type</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">,</span><span style="color: #8b0000;">''</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">UPDATE,</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp; <br />|| </span><span style="color: Blue;">decode</span><span style="color: Olive;">(</span><span style="color: Blue;">bitand</span><span style="color: Olive;">(</span><span style="color: Blue;">r</span><span style="color: Gray;">.</span><span style="color: Blue;">stmt_type</span><span style="color: Gray;">,</span><span style="color: Maroon;">8</span><span style="color: Olive;">)</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">,</span><span style="color: #8b0000;">''</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">DELETE,</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">,&nbsp; <br /></span><span style="color: Blue;">r</span><span style="color: Gray;">.</span><span style="color: Blue;">check_opt</span><span style="color: Gray;">, </span><span style="color: Blue;">r</span><span style="color: Gray;">.</span><span style="color: Blue;">enable_flag</span><span style="color: Gray;">,&nbsp; <br /></span><span style="color: Blue;">DECODE</span><span style="color: Olive;">(</span><span style="color: Blue;">BITAND</span><span style="color: Olive;">(</span><span style="color: Blue;">r</span><span style="color: Gray;">.</span><span style="color: Blue;">stmt_type</span><span style="color: Gray;">, </span><span style="color: Maroon;">16</span><span style="color: Olive;">)</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp; <br /></span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Green;">user</span><span style="color: Gray;">$ </span><span style="color: Blue;">u</span><span style="color: Gray;">, </span><span style="color: Blue;">obj</span><span style="color: Gray;">$ </span><span style="color: Blue;">o</span><span style="color: Gray;">, </span><span style="color: Blue;">rls</span><span style="color: Gray;">$ </span><span style="color: Blue;">r</span><span style="color: Gray;">&nbsp; <br /></span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">u</span><span style="color: Gray;">.</span><span style="color: Green;">user</span><span style="color: #ffa500;"># = o.owner#&nbsp; </span><span style="color: Gray;"><br /></span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">r</span><span style="color: Gray;">.</span><span style="color: Blue;">obj</span><span style="color: #ffa500;"># = o.obj#&nbsp; </span><span style="color: Gray;"><br /></span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">uid</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;"> </span><span style="color: Green;">or</span><span style="color: Gray;">&nbsp; <br /></span><span style="color: Blue;">uid</span><span style="color: Gray;"> = </span><span style="color: Blue;">o</span><span style="color: Gray;">.</span><span style="color: Blue;">owner</span><span style="color: #ffa500;"># or&nbsp; </span><span style="color: Gray;"><br /></span><span style="color: #00008b;">exists</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Gray;"> </span><span style="color: Green;">select</span><span style="color: Gray;"> * </span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">session_roles</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Green;">role</span><span style="color: Gray;">=</span><span style="color: #8b0000;">'</span><span style="color: Red;">SELECT_CATALOG_ROLE</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp; </span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp; <br />/&nbsp; </span><span style="color: Green;">grant</span><span style="color: Gray;"> </span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Green;">on</span><span style="color: Gray;"> </span><span style="color: Blue;">sys</span><span style="color: Gray;">.</span><span style="color: Blue;">exu81rls</span><span style="color: Gray;"> </span><span style="color: Green;">to</span><span style="color: Gray;"> </span><span style="color: Green;">public</span><span style="color: Gray;">;&nbsp; /</span></div></div>
<p><strong>五、其他问题 </strong><br />
本文只讨论了Oracle8i和9i中的EXP/IMP的一些情况，对于之前的版本，在8.0.X中，除了QUERY参数不能用外，其它差别不大。针对没有QUERY的情况，我们可以先在数据库中使用查询条件建立临时中间表，然后使用EXP导出这个中间表即可。至于Oracle7因为目前使用的人较少，gototop不打算在此做详细解释了，如果读者朋友有需求，你可以参考Metalink文档：“Overview of Export and Import in Oracle7”（文档号：61949.1）。<br />
关于EXP/IMP的详细参数信息你可以通过EXP/IMP HELP=Y来获得。<br />
另外关于传输表空间的更多信息可以参考下面的Metelink文档，本文不再详述。<br />
[NOTE:77523.1] Transportable Tablespaces &#8212; An Example to setup and use.<br />
[NOTE:100698.1] Perform tablespace point-in-time recovery using Transportable Tablespace.<br />
在进行并行EXP/IMP的时候，如果IMP过程建索引的话不建议同时运行5个以上的IMP，如果你想加快速度 单个表导入：<br />
导入：<br />
   想从备份的dmp文件中导入某些表的时候,可以用如下imp命令，格式:<br />
    imp username/password@本地net服务名 file=xxx.dmp fromuser=xx touser=xx tables=(tablename)<br />
    username:登陆数据库的用户名<br />
   password:登陆数据库的密码<br />
   本地net服务名:连接服务器的本地net服务名<br />
   file:你的dmp文件的路径<br />
   fromuser,touser:从一个用户导入到另外一个用户<br />
   tables:从dmp文件中导入的表名<br />
导出：<br />
    exp   user/pw   tables=(tbname)   file=xxx.dmp</p>
]]></content:encoded>
			<wfw:commentRss>http://leeawan.cn/2011/08/oracl_exp_imp_c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>oracle中EXP/IMP 命令详解(二)</title>
		<link>http://leeawan.cn/2011/08/oracle_exp_imp_b/</link>
		<comments>http://leeawan.cn/2011/08/oracle_exp_imp_b/#comments</comments>
		<pubDate>Sun, 21 Aug 2011 13:58:52 +0000</pubDate>
		<dc:creator>leeawan</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Oralce]]></category>

		<guid isPermaLink="false">http://leeawan.cn/?p=389</guid>
		<description><![CDATA[Oracle的导入实用程序(Import utility)允许从数据库提取数据，并且将数据写入操作系统文件。imp使用的基本格式：imp[username[/password[@service]]]，以下例举imp常用用法。 1. 获取帮助 imp help=y 2. 导入一个完整数据库 imp system/manager file=bible_db log=dible_db full=y ignore=y 3. 导入一个或一组指定用户所属的全部表、索引和其他对象 imp system/manager file=seapark log=seapark fromuser=seapark imp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold) 4. 将一个用户所属的数据导入另一个用户 imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copyimp system/manager file=tank log=tank fromuser=(seapark,amy) touser=(seapark1, amy1) 5. 导入一个表 imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b) 6. 从多个文件导入 imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4) log=paycheck, filesize=1G [...]]]></description>
			<content:encoded><![CDATA[<p class='fp'>Oracle的导入实用程序(Import utility)允许从数据库提取数据，并且将数据写入操作系统文件。imp使用的基本格式：imp[username[/password[@service]]]，以下例举imp常用用法。<br />
1. 获取帮助 </p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: Blue;">help</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span></div></div>
<p>2. 导入一个完整数据库</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: #00008b;">system</span><span style="color: Gray;">/</span><span style="color: Blue;">manager</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">bible_db</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">dible_db</span><span style="color: Gray;"> </span><span style="color: Green;">full</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Green;">ignore</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span></div></div>
<p>3. 导入一个或一组指定用户所属的全部表、索引和其他对象</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: #00008b;">system</span><span style="color: Gray;">/</span><span style="color: Blue;">manager</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">seapark</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">seapark</span><span style="color: Gray;"> </span><span style="color: Blue;">fromuser</span><span style="color: Gray;">=</span><span style="color: Blue;">seapark</span></div></div>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: #00008b;">system</span><span style="color: Gray;">/</span><span style="color: Blue;">manager</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">seapark</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">seapark</span><span style="color: Gray;"> </span><span style="color: Blue;">fromuser</span><span style="color: Gray;">=</span><span style="color: Olive;">(</span><span style="color: Blue;">seapark</span><span style="color: Gray;">,</span><span style="color: Blue;">amy</span><span style="color: Gray;">,</span><span style="color: Blue;">amyc</span><span style="color: Gray;">,</span><span style="color: Blue;">harold</span><span style="color: Olive;">)</span></div></div>
<p>4. 将一个用户所属的数据导入另一个用户</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: #00008b;">system</span><span style="color: Gray;">/</span><span style="color: Blue;">manager</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">tank</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">tank</span><span style="color: Gray;"> </span><span style="color: Blue;">fromuser</span><span style="color: Gray;">=</span><span style="color: Blue;">seapark</span><span style="color: Gray;"> </span><span style="color: Blue;">touser</span><span style="color: Gray;">=</span><span style="color: Blue;">seapark_copy</span><span style="color: Gray;"><br /></span><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: #00008b;">system</span><span style="color: Gray;">/</span><span style="color: Blue;">manager</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">tank</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">tank</span><span style="color: Gray;"> </span><span style="color: Blue;">fromuser</span><span style="color: Gray;">=</span><span style="color: Olive;">(</span><span style="color: Blue;">seapark</span><span style="color: Gray;">,</span><span style="color: Blue;">amy</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Blue;">touser</span><span style="color: Gray;">=</span><span style="color: Olive;">(</span><span style="color: Blue;">seapark1</span><span style="color: Gray;">, </span><span style="color: Blue;">amy1</span><span style="color: Olive;">)</span></div></div>
<p>5. 导入一个表</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: #00008b;">system</span><span style="color: Gray;">/</span><span style="color: Blue;">manager</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">tank</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">tank</span><span style="color: Gray;"> </span><span style="color: Blue;">fromuser</span><span style="color: Gray;">=</span><span style="color: Blue;">seapark</span><span style="color: Gray;"> </span><span style="color: Blue;">TABLES</span><span style="color: Gray;">=</span><span style="color: Olive;">(</span><span style="color: Blue;">a</span><span style="color: Gray;">,</span><span style="color: Blue;">b</span><span style="color: Olive;">)</span></div></div>
<p>6. 从多个文件导入</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: #00008b;">system</span><span style="color: Gray;">/</span><span style="color: Blue;">manager</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Olive;">(</span><span style="color: Blue;">paycheck_1</span><span style="color: Gray;">,</span><span style="color: Blue;">paycheck_2</span><span style="color: Gray;">,</span><span style="color: Blue;">paycheck_3</span><span style="color: Gray;">,</span><span style="color: Blue;">paycheck_4</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">paycheck</span><span style="color: Gray;">, </span><span style="color: Blue;">filesize</span><span style="color: Gray;">=</span><span style="color: Maroon;">1</span><span style="color: #00008b;">G</span><span style="color: Gray;"> </span><span style="color: Green;">full</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span></div></div>
<p>7. 使用参数文件</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: #00008b;">system</span><span style="color: Gray;">/</span><span style="color: Blue;">manager</span><span style="color: Gray;"> </span><span style="color: Blue;">parfile</span><span style="color: Gray;">=</span><span style="color: Blue;">bible_tables</span><span style="color: Gray;">.</span><span style="color: Blue;">par</span></div></div>
<p>bible_tables.par参数文件：<br />
#Import the sample tables used for the Oracle8i Database Administrator&#8217;s<br />
Bible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import</p>
<p>8. 增量导入</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: #00008b;">system</span><span style="color: Gray;">./</span><span style="color: Blue;">manager</span><span style="color: Gray;"> </span><span style="color: Blue;">inctype</span><span style="color: Gray;">= </span><span style="color: Blue;">RECTORE</span><span style="color: Gray;"> </span><span style="color: Green;">FULL</span><span style="color: Gray;">=</span><span style="color: Blue;">Y</span><span style="color: Gray;"> </span><span style="color: Blue;">FILE</span><span style="color: Gray;">=</span><span style="color: Blue;">A</span></div></div>
<p><span id="more-389"></span><br />
<strong>Oracle imp/exp </strong></p>
<div class="hl-surround"><div class="hl-main"><span style="color: #00008b;">C</span><span style="color: Gray;">:</span><span style="color: Blue;">Documents</span><span style="color: Gray;"> </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">Settingsadministrator</span><span style="color: Gray;">&gt;</span><span style="color: Blue;">exp</span><span style="color: Gray;"> </span><span style="color: Blue;">help</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span></div></div>
<p>Export: Release 9.2.0.1.0 &#8211; Production on 星期三 7月 28 17:04:43 2004Copyright (c) 1982, 2002, Oracle Corporation.<br />
All rights reserved.<br />
通过输入 EXP 命令和用户名/口令，您可以后接用户名/口令的命令:<br />
例程: EXP SCOTT/TIGER或者，您也可以通过输入跟有各种参数的 EXP 命令来控制“导出”按照不同参数。<br />
要指定参数，您可以使用关键字:格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,&#8230;,valueN)例程: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)或 TABLES=(T1: P1,T1: P2)，如果 T1 是分区表USERID 必须是命令行中的第一个参数。<br />
关键字  说明(默认)        关键字      说明(默认)<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
USERID   用户名/口令           FULL         导出整个文件 (N)<br />
BUFFER   数据缓冲区大小         OWNER     所有者用户名列表<br />
FILE       输出文件 (EXPDAT.DMP)  TABLES       表名称列表<br />
COMPRESS   导入到一个区 (Y) RECORDLENGTH IO 记录的长度<br />
GRANTS  导出权限 (Y)           INCTYPE      增量导出类型<br />
INDEXES    导出索引 (Y)         RECORD       跟踪增量导出 (Y)<br />
DIRECT     直接路径 (N)            TRIGGERS     导出触发器 (Y)<br />
LOG        屏幕输出的日志文件  STATISTICS   分析对象 (ESTIMATE)<br />
ROWS    导出数据行 (Y)        PARFILE      参数文件名<br />
CONSISTENT 交叉表的一致性 (N) CONSTRAINTS  导出的约束条件 (Y)<br />
OBJECT_CONSISTENT    只在对象导出期间设置为读的事务处理 (N)<br />
FEEDBACK             每 x 行的显示进度 (0)<br />
FILESIZE             每个转储文件的最大大小<br />
FLASHBACK_SCN        用于将会话快照设置回以前状态的<br />
SCNFLASHBACK_TIME       用于获取最接近指定时间的 SCN 的时间<br />
QUERY                用于导出表的子集的 select 子句<br />
RESUMABLE            遇到与空格相关的错误时挂起 (N)<br />
RESUMABLE_NAME       用于标识可恢复语句的文本字符串<br />
RESUMABLE_TIMEOUT    RESUMABLE 的等待时间<br />
TTS_FULL_CHECK       对 TTS 执行完整的或部分相关性检查<br />
TABLESPACES          要导出的表空间列表<br />
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)<br />
TEMPLATE             调用 iAS 模式导出的模板名在没有警告的情况下成功终止导出。==================================================<br />
C:Documents and Settingsadministrator>imp help=y<br />
Import: Release 9.2.0.1.0 &#8211; Production on 星期三 7月 28 17:06:54 2004Copyright (c) 1982, 2002, Oracle Corporation.<br />
All rights reserved.<br />
可以通过输入 IMP 命令和您的用户名/口令后接用户名/口令的命令:<br />
例程: IMP SCOTT/TIGER或者, 可以通过输入 IMP 命令和各种参数来控制“导入”按照不同参数。<br />
要指定参数，您可以使用关键字:格式: IMP KEYWORD=value 或 KEYWORD=(value1,value2,&#8230;,vlaueN)例程: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N或 TABLES=(T1: P1,T1: P2)，如果 T1 是分区表USERID 必须是命令行中的第一个参数。<br />
关键字  说明（默认）        关键字      说明（默认）<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
USERID   用户名/口令           FULL         导入整个文件 (N)<br />
BUFFER   数据缓冲区大小         FROMUSER     所有人用户名列表<br />
FILE     输入文件 (EXPDAT.DMP)    TOUSER       用户名列表<br />
SHOW     只列出文件内容 (N) TABLES      表名列表<br />
IGNORE   忽略创建错误 (N)    RECORDLENGTH  IO 记录的长度<br />
GRANTS  导入权限 (Y)           INCTYPE      增量导入类型<br />
INDEXES 导入索引 (Y)          COMMIT       提交数组插入 (N)<br />
ROWS    导入数据行 (Y)        PARFILE      参数文件名<br />
LOG      屏幕输出的日志文件   CONSTRAINTS  导入限制 (Y)<br />
DESTROY                覆盖表空间数据文件 (N)<br />
INDEXFILE              将表/索引信息写入指定的文件<br />
SKIP_UNUSABLE_INDEXES  跳过不可用索引的维护 (N)<br />
FEEDBACK               每 x 行显示进度 (0)<br />
TOID_NOVALIDATE        跳过指定类型 ID 的验证<br />
FILESIZE               每个转储文件的最大大小<br />
STATISTICS             始终导入预计算的统计信息<br />
RESUMABLE            在遇到有关空间的错误时挂起 (N)<br />
RESUMABLE_NAME         用来标识可恢复语句的文本字符串<br />
RESUMABLE_TIMEOUT      RESUMABLE 的等待时间<br />
COMPILE                编译过程, 程序包和函数 (Y)<br />
STREAMS_CONFIGURATION  导入 Streams 的一般元数据 (Y)<br />
STREAMS_INSTANITATION  导入 Streams 的实例化元数据 (N)<br />
下列关键字仅用于可传输的表空间<br />
TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)<br />
TABLESPACES 将要传输到数据库的表空间DATAFILES 将要传输到数据库的数据文件<br />
TTS_OWNERS 拥有可传输表空间集中数据的用户成功终止导入，但出现警告。</p>
</p>]]></content:encoded>
			<wfw:commentRss>http://leeawan.cn/2011/08/oracle_exp_imp_b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>oracle中exp/imp命令详解(一)</title>
		<link>http://leeawan.cn/2011/08/oracle_exp_imp_a/</link>
		<comments>http://leeawan.cn/2011/08/oracle_exp_imp_a/#comments</comments>
		<pubDate>Sun, 21 Aug 2011 13:41:42 +0000</pubDate>
		<dc:creator>leeawan</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Oralce]]></category>

		<guid isPermaLink="false">http://leeawan.cn/?p=385</guid>
		<description><![CDATA[exp/imp两个命令可以说是oracle中最常用的命令了。 　　ORACLE数据库有两类备份方法。第一类为物理备份，该方法实现数据库的完整恢复，但数据库必须运行在归挡模式下（业务数据库在非归挡模式下运行），且需要极大的外部存储设备，例如磁带库；第二类备份方式为逻辑备份，业务数据库采用此种方式，此方法不需要数据库运行在归挡模式下，不但备份简单，而且可以不需要外部存储设备。 　　数据库逻辑备份方法 　　ORACLE数据库的逻辑备份分为三种模式：表备份、用户备份和完全备份。 　　表模式 　　备份某个用户模式下指定的对象（表）。业务数据库通常采用这种备份方式。 　　若备份到本地文件，使用如下命令： exp icdmain/icd rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 file=exp_icdmain_csd_yyyymmdd.dmp log=exp_icdmain_csd_yyyymmdd.log tables=icdmain.commoninformation，icdmain.serviceinfo，icdmain.dealinfo 若直接备份到磁带设备，使用如下命令： exp icdmain/icd rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 file=/dev/rmt0 log=exp_icdmain_csd_yyyymmdd.log tables=icdmain.commoninformation，icdmain.serviceinfo，icdmain.dealinfo 注：在磁盘空间允许的情况下，应先备份到本地服务器，然后再拷贝到磁带。出于速度方面的考虑，尽量不要直接备份到磁带设备。 　　用户模式 　　备份某个用户模式下的所有对象。业务数据库通常采用这种备份方式。 　　若备份到本地文件，使用如下命令： exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 file=exp_icdmain_yyyymmdd.dmp log=exp_icdmain_yyyymmdd.log 若直接备份到磁带设备，使用如下命令： exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 [...]]]></description>
			<content:encoded><![CDATA[<p class='fp'>exp/imp两个命令可以说是oracle中最常用的命令了。<br />
　　ORACLE数据库有两类备份方法。第一类为物理备份，该方法实现数据库的完整恢复，但数据库必须运行在归挡模式下（业务数据库在非归挡模式下运行），且需要极大的外部存储设备，例如磁带库；第二类备份方式为逻辑备份，业务数据库采用此种方式，此方法不需要数据库运行在归挡模式下，不但备份简单，而且可以不需要外部存储设备。<br />
<strong>　　数据库逻辑备份方法</strong><br />
　　ORACLE数据库的逻辑备份分为三种模式：表备份、用户备份和完全备份。<br />
　　<strong>表模式</strong><br />
　　备份某个用户模式下指定的对象（表）。业务数据库通常采用这种备份方式。<br />
　　若备份到本地文件，使用如下命令：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">exp</span><span style="color: Gray;"> </span><span style="color: Blue;">icdmain</span><span style="color: Gray;">/</span><span style="color: Blue;">icd</span><span style="color: Gray;"> </span><span style="color: Green;">rows</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">indexes</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Blue;">compress</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">65536</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">100000</span><span style="color: Gray;"> </span><span style="color: Blue;">volsize</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">exp_icdmain_csd_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">exp_icdmain_csd_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span><span style="color: Gray;"> </span><span style="color: Blue;">tables</span><span style="color: Gray;">=</span><span style="color: Blue;">icdmain</span><span style="color: Gray;">.</span><span style="color: Blue;">commoninformation</span><span style="color: Gray;">，</span><span style="color: Blue;">icdmain</span><span style="color: Gray;">.</span><span style="color: Blue;">serviceinfo</span><span style="color: Gray;">，</span><span style="color: Blue;">icdmain</span><span style="color: Gray;">.</span><span style="color: Blue;">dealinfo</span></div></div>
<p>若直接备份到磁带设备，使用如下命令：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">exp</span><span style="color: Gray;"> </span><span style="color: Blue;">icdmain</span><span style="color: Gray;">/</span><span style="color: Blue;">icd</span><span style="color: Gray;"> </span><span style="color: Green;">rows</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">indexes</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Blue;">compress</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">65536</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">100000</span><span style="color: Gray;"> </span><span style="color: Blue;">volsize</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=/</span><span style="color: Blue;">dev</span><span style="color: Gray;">/</span><span style="color: Blue;">rmt0</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">exp_icdmain_csd_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span><span style="color: Gray;"> </span><span style="color: Blue;">tables</span><span style="color: Gray;">=</span><span style="color: Blue;">icdmain</span><span style="color: Gray;">.</span><span style="color: Blue;">commoninformation</span><span style="color: Gray;">，</span><span style="color: Blue;">icdmain</span><span style="color: Gray;">.</span><span style="color: Blue;">serviceinfo</span><span style="color: Gray;">，</span><span style="color: Blue;">icdmain</span><span style="color: Gray;">.</span><span style="color: Blue;">dealinfo</span></div></div>
<p>注：在磁盘空间允许的情况下，应先备份到本地服务器，然后再拷贝到磁带。出于速度方面的考虑，尽量不要直接备份到磁带设备。<br />
<span id="more-385"></span><br />
　　<strong>用户模式</strong><br />
　　备份某个用户模式下的所有对象。业务数据库通常采用这种备份方式。<br />
　　若备份到本地文件，使用如下命令：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">exp</span><span style="color: Gray;"> </span><span style="color: Blue;">icdmain</span><span style="color: Gray;">/</span><span style="color: Blue;">icd</span><span style="color: Gray;"> </span><span style="color: Blue;">owner</span><span style="color: Gray;">=</span><span style="color: Blue;">icdmain</span><span style="color: Gray;"> </span><span style="color: Green;">rows</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">indexes</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Blue;">compress</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">65536</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">100000</span><span style="color: Gray;"> </span><span style="color: Blue;">volsize</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">exp_icdmain_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">exp_icdmain_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span></div></div>
<p>若直接备份到磁带设备，使用如下命令：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">exp</span><span style="color: Gray;"> </span><span style="color: Blue;">icdmain</span><span style="color: Gray;">/</span><span style="color: Blue;">icd</span><span style="color: Gray;"> </span><span style="color: Blue;">owner</span><span style="color: Gray;">=</span><span style="color: Blue;">icdmain</span><span style="color: Gray;"> </span><span style="color: Green;">rows</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">indexes</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Blue;">compress</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">65536</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">100000</span><span style="color: Gray;"> </span><span style="color: Blue;">volsize</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=/</span><span style="color: Blue;">dev</span><span style="color: Gray;">/</span><span style="color: Blue;">rmt0</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">exp_icdmain_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span></div></div>
<p>注：如果磁盘有空间，建议备份到磁盘，然后再拷贝到磁带。如果数据库数据量较小，可采用这种办法备份。</p>
<p>　　<strong>完全模式</strong><br />
　　备份完整的数据库。业务数据库不采用这种备份方式。备份命令为：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">exp</span><span style="color: Gray;"> </span><span style="color: Blue;">icdmain</span><span style="color: Gray;">/</span><span style="color: Blue;">icd</span><span style="color: Gray;"> </span><span style="color: Green;">rows</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">indexes</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Blue;">compress</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">65536</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">100000</span><span style="color: Gray;"> </span><span style="color: Blue;">volsize</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;"> </span><span style="color: Green;">full</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">exp_fulldb_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span><span style="color: Gray;">（磁带设备则为/</span><span style="color: Blue;">dev</span><span style="color: Gray;">/</span><span style="color: Blue;">rmt0</span><span style="color: Gray;">） </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">exp_fulldb_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span></div></div>
<p>对于数据库备份，建议采用增量备份，即只备份上一次备份以来更改的数据。</p>
<p>增量备份<br />
命令：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">exp</span><span style="color: Gray;"> </span><span style="color: Blue;">icdmain</span><span style="color: Gray;">/</span><span style="color: Blue;">icd</span><span style="color: Gray;"> </span><span style="color: Green;">rows</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">indexes</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Blue;">compress</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">65536</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">100000</span><span style="color: Gray;"> </span><span style="color: Blue;">volsize</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;"> </span><span style="color: Green;">full</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">inctype</span><span style="color: Gray;">=</span><span style="color: Blue;">incremental</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">exp_fulldb_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span><span style="color: Gray;">（磁带设备则为/</span><span style="color: Blue;">dev</span><span style="color: Gray;">/</span><span style="color: Blue;">rmt0</span><span style="color: Gray;">) </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">exp_fulldb_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span></div></div>
<p>注：关于增量备份必须满足下列条件：<br />
1.只对完整数据库备份有效，且第一次需要full=y参数，以后需要inctype=increment al参数。<br />
2. 用户必须有EXP_FULL_DATABASE的系统角色。<br />
3. 话务量较小时方可采用数据库备份。<br />
4. 如果磁盘有空间，建议备份到磁盘，然后再备份到磁带。</p>
<p>　　<strong>业务数据库备份方法及周期</strong><br />
　　用EXP进行备份前，先在SYS用户下运行CATEXP.SQL文件（如果以前已运行该文件，则不要执行这个脚本）。<br />
    没有特殊说明，不允许在客户端执行备份命令。<br />
　　备份命令参照表模式下的备份命令。<br />
    从磁盘文件备份到磁带<br />
    如果首先备份到本地磁盘文件，则需要转储到磁带设备上。</p>
<p>1. 若需查看主机上配置的磁带设备，使用如下命令：</p>
<div class="hl-surround"><div class="hl-main">lsdev -Cc tape</div></div>
<p>显示的结果如下例所示：</p>
<div class="hl-surround"><div class="hl-main">rmt0 Available 30-58-00-2，0 SCSI 4mm Tape Drive rmt1 Defined　 30-58-00-0，0 SCSI 4mm</div></div>
<p>Tape Drive标明Available的设备是可用的磁带设备。<br />
2. 若需查看磁带存储的内容，使用如下命令：</p>
<div class="hl-surround"><div class="hl-main">tar -tvf /dev/rmt0</div></div>
<p>显示的结果如下例所示：</p>
<div class="hl-surround"><div class="hl-main">-rw-r——r—— 300 400 8089600 Jan 11 14：33：57 2001 exp_icdmain_20010111.dmp</div></div>
<p>如果显示类似如下内容，则表示该磁带存储的备份数据是从数据库直接备份到磁带上，而非从本地磁盘转储到磁带的备份文件，因此操作系统无法识别。<br />
tar： 0511-193 An error occurred while reading from the media. There is an input or output error.<br />
或<br />
tar：0511-169 A directory checksum error on media；-267331077 not equal to<br />
2<br />
5626.<br />
3. 对于新磁带或无需保留现存数据的磁带，使用如下命令：</p>
<div class="hl-surround"><div class="hl-main">tar -cvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp</div></div>
<p>注：A. 该命令将无条件覆盖磁带上的现存数据。<br />
    B. 文件名不允许包含路径信息，如：/backup/exp_icdmain_yyyymmdd.dmp.<br />
4. 对于需要保留现存数据的磁带，使用如下命令：</p>
<div class="hl-surround"><div class="hl-main">tar -rvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp</div></div>
<p>注：该命令将文件exp_icdmain_yyyymmdd.dmp追加到磁带的末端，不会覆盖现存的数据。<br />
特别强调：如果备份时是从数据库直接备份到磁带上，则不可再向该磁带上追加复制任何其他文件，否则该备份数据失效。<br />
5. 若需将转储到磁带上的备份文件复制到本地硬盘，使用如下命令：<br />
A. 将磁带上的全部文件复制到本地硬盘的当前目录</p>
<div class="hl-surround"><div class="hl-main">tar -xvf /dev/rmt0</div></div>
<p>B. 将磁带上的指定文件复制到本地硬盘的当前目录</p>
<div class="hl-surround"><div class="hl-main">tar -xvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp</div></div>
<p>　　<strong>备份时间安排</strong><br />
　　由于备份时对系统I/O有较大影响，所以，建议在晚上11点以后进行备份工作。<br />
　　业务数据库Oracle版本的恢复<br />
　　恢复方案需根据备份方案确定。由于业务数据库采用表备份和用户备份相结合的方案，所以业务数据库的恢复需根据实际情况采用表恢复和用户恢复相结合的方案。</p>
<p>　　<strong>恢复方案</strong><br />
　　数据库的逻辑恢复分为表恢复、用户恢复、完全恢复三种模式。<br />
　　<strong>表模式</strong><br />
　　此方式将根据按照表模式备份的数据进行恢复。<br />
　　A. 恢复备份数据的全部内容若从本地文件恢复，使用如下命令：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: Blue;">icdmain</span><span style="color: Gray;">/</span><span style="color: Blue;">icd</span><span style="color: Gray;"> </span><span style="color: Blue;">fromuser</span><span style="color: Gray;">=</span><span style="color: Blue;">icdmain</span><span style="color: Gray;"> </span><span style="color: Blue;">touser</span><span style="color: Gray;">=</span><span style="color: Blue;">icdmain</span><span style="color: Gray;"> </span><span style="color: Green;">rows</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">indexes</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Green;">commit</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">65536</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">100000</span><span style="color: Gray;"> </span><span style="color: Green;">ignore</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Blue;">volsize</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">exp_icdmain_csd_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">imp_icdmain_csd_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span></div></div>
<p>若从磁带设备恢复，使用如下命令：</p>
<div class="hl-surround"><div class="hl-main">imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0 log=imp_icdmain_csd_yyyymmdd.log</div></div>
<p>B. 恢复备份数据中的指定表若从本地文件恢复，使用如下命令：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: Blue;">icdmain</span><span style="color: Gray;">/</span><span style="color: Blue;">icd</span><span style="color: Gray;"> </span><span style="color: Blue;">fromuser</span><span style="color: Gray;">=</span><span style="color: Blue;">icdmain</span><span style="color: Gray;"> </span><span style="color: Blue;">touser</span><span style="color: Gray;">=</span><span style="color: Blue;">icdmain</span><span style="color: Gray;"> </span><span style="color: Green;">rows</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">indexes</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Green;">commit</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">65536</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">100000</span><span style="color: Gray;"> </span><span style="color: Green;">ignore</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Blue;">volsize</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">exp_icdmain_csd_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">imp_icdmain_csd_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span><span style="color: Gray;"> </span><span style="color: Blue;">tables</span><span style="color: Gray;">=</span><span style="color: Blue;">commoninformationserviceinfo</span></div></div>
<p>若从磁带设备恢复，使用如下命令：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: Blue;">icdmain</span><span style="color: Gray;">/</span><span style="color: Blue;">icd</span><span style="color: Gray;"> </span><span style="color: Blue;">fromuser</span><span style="color: Gray;">=</span><span style="color: Blue;">icdmain</span><span style="color: Gray;"> </span><span style="color: Blue;">touser</span><span style="color: Gray;">=</span><span style="color: Blue;">icdmain</span><span style="color: Gray;"> </span><span style="color: Green;">rows</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">indexes</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Green;">commit</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">65536</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">100000</span><span style="color: Gray;"> </span><span style="color: Green;">ignore</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Blue;">volsize</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=/</span><span style="color: Blue;">dev</span><span style="color: Gray;">/</span><span style="color: Blue;">rmt0</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">imp_icdmain_csd_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span><span style="color: Gray;"> </span><span style="color: Blue;">tables</span><span style="color: Gray;">=</span><span style="color: Blue;">commoninformation</span><span style="color: Gray;">，</span><span style="color: Blue;">serviceinfo</span></div></div>
<p>　　<strong>用户模式</strong><br />
　　此方式将根据按照用户模式备份的数据进行恢复。<br />
　　A. 恢复备份数据的全部内容若从本地文件恢复，使用如下命令：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: Blue;">icdmain</span><span style="color: Gray;">/</span><span style="color: Blue;">icd</span><span style="color: Gray;"> </span><span style="color: Blue;">fromuser</span><span style="color: Gray;">=</span><span style="color: Blue;">icdmain</span><span style="color: Gray;"> </span><span style="color: Blue;">touser</span><span style="color: Gray;">=</span><span style="color: Blue;">icdmain</span><span style="color: Gray;"> </span><span style="color: Green;">rows</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">indexes</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Green;">commit</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">65536</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">100000</span><span style="color: Gray;"> </span><span style="color: Green;">ignore</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Blue;">volsize</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">exp_icdmain_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">imp_icdmain_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span></div></div>
<p>若从磁带设备恢复，使用如下命令：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: Blue;">icdmain</span><span style="color: Gray;">/</span><span style="color: Blue;">icd</span><span style="color: Gray;"> </span><span style="color: Blue;">fromuser</span><span style="color: Gray;">=</span><span style="color: Blue;">icdmain</span><span style="color: Gray;"> </span><span style="color: Blue;">touser</span><span style="color: Gray;">=</span><span style="color: Blue;">icdmain</span><span style="color: Gray;"> </span><span style="color: Green;">rows</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">indexes</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Green;">commit</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">65536</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">100000</span><span style="color: Gray;"> </span><span style="color: Green;">ignore</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Blue;">volsize</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=/</span><span style="color: Blue;">dev</span><span style="color: Gray;">/</span><span style="color: Blue;">rmt0</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">imp_icdmain_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span></div></div>
<p>B. 恢复备份数据中的指定表若从本地文件恢复，使用如下命令：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: Blue;">icdmain</span><span style="color: Gray;">/</span><span style="color: Blue;">icd</span><span style="color: Gray;"> </span><span style="color: Blue;">fromuser</span><span style="color: Gray;">=</span><span style="color: Blue;">icdmain</span><span style="color: Gray;"> </span><span style="color: Blue;">touser</span><span style="color: Gray;">=</span><span style="color: Blue;">icdmain</span><span style="color: Gray;"> </span><span style="color: Green;">rows</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">indexes</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Green;">commit</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">65536</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">100000</span><span style="color: Gray;"> </span><span style="color: Green;">ignore</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Blue;">volsize</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">exp_icdmain_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">imp_icdmain_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span><span style="color: Gray;"> </span><span style="color: Blue;">tables</span><span style="color: Gray;">=</span><span style="color: Blue;">commoninformation</span><span style="color: Gray;">，</span><span style="color: Blue;">serviceinfo</span></div></div>
<p>若从磁带设备恢复，使用如下命令：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: Blue;">icdmain</span><span style="color: Gray;">/</span><span style="color: Blue;">icd</span><span style="color: Gray;"> </span><span style="color: Blue;">fromuser</span><span style="color: Gray;">=</span><span style="color: Blue;">icdmain</span><span style="color: Gray;"> </span><span style="color: Blue;">touser</span><span style="color: Gray;">=</span><span style="color: Blue;">icdmain</span><span style="color: Gray;"> </span><span style="color: Green;">rows</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">indexes</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Green;">commit</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">65536</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">100000</span><span style="color: Gray;"> </span><span style="color: Green;">ignore</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Blue;">volsize</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=/</span><span style="color: Blue;">dev</span><span style="color: Gray;">/</span><span style="color: Blue;">rmt0</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">imp_icdmain_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span><span style="color: Gray;"> </span><span style="color: Blue;">tables</span><span style="color: Gray;">=</span><span style="color: Blue;">commoninformation</span><span style="color: Gray;">，</span><span style="color: Blue;">serviceinfo</span></div></div>
<p>　　<strong>完全模式</strong><br />
　　如果备份方式为完全模式，采用下列恢复方法：若从本地文件恢复，使用如下命令：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: #00008b;">system</span><span style="color: Gray;">/</span><span style="color: Blue;">manager</span><span style="color: Gray;"> </span><span style="color: Green;">rows</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">indexes</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Green;">commit</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">65536</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">100000</span><span style="color: Gray;"> </span><span style="color: Green;">ignore</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">volsize</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;"> </span><span style="color: Green;">full</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">exp_icdmain_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">imp_icdmain_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span></div></div>
<p>若从磁带设备恢复，使用如下命令：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: #00008b;">system</span><span style="color: Gray;">/</span><span style="color: Blue;">manager</span><span style="color: Gray;"> </span><span style="color: Green;">rows</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">indexes</span><span style="color: Gray;">=</span><span style="color: Blue;">n</span><span style="color: Gray;"> </span><span style="color: Green;">commit</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">65536</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">100000</span><span style="color: Gray;"> </span><span style="color: Green;">ignore</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">volsize</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;"> </span><span style="color: Green;">full</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=/</span><span style="color: Blue;">dev</span><span style="color: Gray;">/</span><span style="color: Blue;">rmt0</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">imp_icdmain_yyyymmdd</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span></div></div>
<p>参数说明<br />
1. ignore参数Oracle在恢复数据的过程中，当恢复某个表时，该表已经存在，就要根据ignore参数的设置来决定如何操作。<br />
若ignore=y，Oracle不执行CREATE TABLE语句，直接将数据插入到表中，如果插入的记录违背了约束条件，比如主键约束，则出错的记录不会插入，但合法的记录会添加到表中。<br />
若ignore=n，Oracle不执行CREATE TABLE语句，同时也不会将数据插入到表中，而是忽略该表的错误，继续恢复下一个表。<br />
2. indexes参数在恢复数据的过程中，若indexes=n，则表上的索引不会被恢复，但是主键对应的唯一索引将无条件恢复，这是为了保证数据的完整性。</p>
<p>字符集转换<br />
对于单字节字符集（例如US7ASCII），恢复时，数据库自动转换为该会话的字符集（NLS_LANG参数）；对于多字节字符集（例如ZHS16CGB231280），恢复时，应尽量使字符集相同（避免转换），如果要转换，目标数据库的字符集应是输出数据库字符集的超集。</p>
<p>恢复方法<br />
业务数据库采用表恢复方案。在用IMP进行恢复前，先在SYS用户下运行CATEXP.SQL文件（如果以前已运行该文件，则不要执行这个脚本），然后执行下列命令：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">IMP</span><span style="color: Gray;"> </span><span style="color: Blue;">ICDMAIN</span><span style="color: Gray;">/</span><span style="color: Blue;">ICD</span><span style="color: Gray;"> </span><span style="color: Blue;">FILE</span><span style="color: Gray;">=文件名</span><span style="color: Blue;">LOG</span><span style="color: Gray;">=</span><span style="color: Blue;">LOG</span><span style="color: Gray;">文件名</span><span style="color: Green;">ROWS</span><span style="color: Gray;">=</span><span style="color: Blue;">Y</span><span style="color: Gray;"> </span><span style="color: Green;">COMMIT</span><span style="color: Gray;">=</span><span style="color: Blue;">Y</span><span style="color: Gray;"> </span><span style="color: Blue;">BUFFER</span><span style="color: Gray;">=</span><span style="color: Blue;">Y</span><span style="color: Gray;"> </span><span style="color: Green;">IGNORE</span><span style="color: Gray;">=</span><span style="color: Blue;">Y</span><span style="color: Gray;"> </span><span style="color: Blue;">TABLES</span><span style="color: Gray;">=表名</span></div></div>
<p>注：要恢复的表名参照备份的表名<br />
。恢复是在原表基础上累加数据。没有特殊说明，不允许在客户端执行恢复命令将一个数据库的某用户的所有表导到另外数据库的一个用户下面的例子</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">exp</span><span style="color: Gray;"> </span><span style="color: Blue;">userid</span><span style="color: Gray;">=</span><span style="color: #00008b;">system</span><span style="color: Gray;">/</span><span style="color: Blue;">manager</span><span style="color: Gray;"> </span><span style="color: Blue;">owner</span><span style="color: Gray;">=</span><span style="color: Blue;">username1</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">expfile</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span><span style="color: Gray;"> </span><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: Blue;">userid</span><span style="color: Gray;">=</span><span style="color: #00008b;">system</span><span style="color: Gray;">/</span><span style="color: Blue;">manager</span><span style="color: Gray;"> </span><span style="color: Blue;">fromuser</span><span style="color: Gray;">=</span><span style="color: Blue;">username1</span><span style="color: Gray;"> </span><span style="color: Blue;">touser</span><span style="color: Gray;">=</span><span style="color: Blue;">username2</span><span style="color: Gray;"> </span><span style="color: Green;">ignore</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">expfile</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span></div></div>
<p>将一个数据库的某用户的所有表导到另外数据库的一个用户下面的例子</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">exp</span><span style="color: Gray;"> </span><span style="color: Blue;">userid</span><span style="color: Gray;">=</span><span style="color: #00008b;">system</span><span style="color: Gray;">/</span><span style="color: Blue;">manager</span><span style="color: Gray;"> </span><span style="color: Blue;">owner</span><span style="color: Gray;">=</span><span style="color: Blue;">username1</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">expfile</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span><span style="color: Gray;"> </span><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: Blue;">userid</span><span style="color: Gray;">=</span><span style="color: #00008b;">system</span><span style="color: Gray;">/</span><span style="color: Blue;">manager</span><span style="color: Gray;"> </span><span style="color: Blue;">fromuser</span><span style="color: Gray;">=</span><span style="color: Blue;">username1</span><span style="color: Gray;"> </span><span style="color: Blue;">touser</span><span style="color: Gray;">=</span><span style="color: Blue;">username2</span><span style="color: Gray;"> </span><span style="color: Green;">ignore</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">expfile</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span></div></div>
</p>]]></content:encoded>
			<wfw:commentRss>http://leeawan.cn/2011/08/oracle_exp_imp_a/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ORACLE多表关联UPDATE语句</title>
		<link>http://leeawan.cn/2011/02/oracleupdate/</link>
		<comments>http://leeawan.cn/2011/02/oracleupdate/#comments</comments>
		<pubDate>Thu, 17 Feb 2011 15:37:34 +0000</pubDate>
		<dc:creator>leeawan</dc:creator>
				<category><![CDATA[Database]]></category>

		<guid isPermaLink="false">http://leeawan.cn/?p=325</guid>
		<description><![CDATA[转载自网络 为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在某个业务受理子系统BSS中， --客户资料表create table customers ( customer_id number(8) not null, -- 客户标示city_name varchar2(10) not null, -- 所在城市customer_type char(2) not null, -- 客户类型.... ) create unique index PK_customers on customers (customer_id) 由于某些原因，客户所在城市这个信息并不什么准确，但是在 客户服务部的CRM子系统中，通过主动服务获取了部分客户20%的所在 城市等准确信息，于是你将该部分信息提取至一张临时表中： create table tmp_cust_city ( customer_id number(8) not null, citye_name varchar2(10) not null， customer_type char(2) not null) 1) 最简单的形式 --经确认customers表中所有customer_id小于1000均为'北京'--1000以内的均是公司走向全国之前的本城市的老客户:)update customers set [...]]]></description>
			<content:encoded><![CDATA[<p class='fp'>转载自网络<br />
为了方便起见,建立了以下简单模型,和构造了部分测试数据:<br />
 在某个业务受理子系统BSS中，</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Gray;">--客户资料表<br /></span><span style="color: Green;">create</span><span style="color: Gray;"> </span><span style="color: Green;">table</span><span style="color: Gray;"> </span><span style="color: Blue;">customers</span><span style="color: Gray;"> <br /></span><span style="color: Olive;">(</span><span style="color: Gray;"> <br /></span><span style="color: Blue;">customer_id</span><span style="color: Gray;"> </span><span style="color: #00008b;">number</span><span style="color: Olive;">(</span><span style="color: Maroon;">8</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">not</span><span style="color: Gray;"> </span><span style="color: Green;">null</span><span style="color: Gray;">, </span><span style="color: #ffa500;">-- 客户标示</span><span style="color: Gray;"><br /></span><span style="color: Blue;">city_name</span><span style="color: Gray;"> </span><span style="color: Blue;">varchar2</span><span style="color: Olive;">(</span><span style="color: Maroon;">10</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">not</span><span style="color: Gray;"> </span><span style="color: Green;">null</span><span style="color: Gray;">, </span><span style="color: #ffa500;">-- 所在城市</span><span style="color: Gray;"><br /></span><span style="color: Blue;">customer_type</span><span style="color: Gray;"> </span><span style="color: Green;">char</span><span style="color: Olive;">(</span><span style="color: Maroon;">2</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">not</span><span style="color: Gray;"> </span><span style="color: Green;">null</span><span style="color: Gray;">, </span><span style="color: #ffa500;">-- 客户类型</span><span style="color: Gray;"><br />.... <br /></span><span style="color: Olive;">)</span><span style="color: Gray;"> <br /></span><span style="color: Green;">create</span><span style="color: Gray;"> </span><span style="color: Green;">unique</span><span style="color: Gray;"> </span><span style="color: Blue;">index</span><span style="color: Gray;"> </span><span style="color: Blue;">PK_customers</span><span style="color: Gray;"> </span><span style="color: Green;">on</span><span style="color: Gray;"> </span><span style="color: Blue;">customers</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">customer_id</span><span style="color: Olive;">)</span></div></div>
<p>由于某些原因，客户所在城市这个信息并不什么准确，但是在<br />
客户服务部的CRM子系统中，通过主动服务获取了部分客户20%的所在<br />
城市等准确信息，于是你将该部分信息提取至一张临时表中：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">create</span><span style="color: Gray;"> </span><span style="color: Green;">table</span><span style="color: Gray;"> </span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> <br /></span><span style="color: Olive;">(</span><span style="color: Gray;"> <br /></span><span style="color: Blue;">customer_id</span><span style="color: Gray;"> </span><span style="color: #00008b;">number</span><span style="color: Olive;">(</span><span style="color: Maroon;">8</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">not</span><span style="color: Gray;"> </span><span style="color: Green;">null</span><span style="color: Gray;">, <br /></span><span style="color: Blue;">citye_name</span><span style="color: Gray;"> </span><span style="color: Blue;">varchar2</span><span style="color: Olive;">(</span><span style="color: Maroon;">10</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">not</span><span style="color: Gray;"> </span><span style="color: Green;">null</span><span style="color: Gray;">， <br /></span><span style="color: Blue;">customer_type</span><span style="color: Gray;"> </span><span style="color: Green;">char</span><span style="color: Olive;">(</span><span style="color: Maroon;">2</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">not</span><span style="color: Gray;"> </span><span style="color: Green;">null</span><span style="color: Gray;"><br /></span><span style="color: Olive;">)</span></div></div>
<p>1) 最简单的形式</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Gray;">--经确认</span><span style="color: Blue;">customers</span><span style="color: Gray;">表中所有</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">小于</span><span style="color: Maroon;">1000</span><span style="color: Gray;">均为</span><span style="color: #8b0000;">'</span><span style="color: Red;">北京</span><span style="color: #8b0000;">'</span><span style="color: Gray;"><br />--</span><span style="color: Maroon;">1000</span><span style="color: Gray;">以内的均是公司走向全国之前的本城市的老客户:)<br /></span><span style="color: Green;">update</span><span style="color: Gray;"> </span><span style="color: Blue;">customers</span><span style="color: Gray;"> <br /></span><span style="color: Green;">set</span><span style="color: Gray;"> </span><span style="color: Blue;">city_name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">'</span><span style="color: Red;">北京</span><span style="color: #8b0000;">'</span><span style="color: Gray;"><br /></span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">customer_id</span><span style="color: Gray;">&lt;</span><span style="color: Maroon;">1000</span></div></div>
<p><span id="more-325"></span><br />
2) 两表(多表)关联update &#8212; 仅在where字句中的连接</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Gray;">--这次提取的数据都是</span><span style="color: Blue;">VIP</span><span style="color: Gray;">，且包括新增的,所以顺便更新客户类别<br /></span><span style="color: Green;">update</span><span style="color: Gray;"> </span><span style="color: Blue;">customers</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;"> </span><span style="color: #ffa500;">-- 使用别名</span><span style="color: Gray;"><br /></span><span style="color: Green;">set</span><span style="color: Gray;"> </span><span style="color: Blue;">customer_type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">'</span><span style="color: Red;">01</span><span style="color: #8b0000;">'</span><span style="color: Gray;"> --</span><span style="color: Maroon;">01</span><span style="color: Gray;"> 为</span><span style="color: Blue;">vip</span><span style="color: Gray;">，</span><span style="color: Maroon;">00</span><span style="color: Gray;">为普通<br /></span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: #00008b;">exists</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Maroon;">1</span><span style="color: Gray;"> <br /></span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"> <br /></span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;"> <br /></span><span style="color: Olive;">)</span></div></div>
<p>3) 两表(多表)关联update &#8212; 被修改值由另一个表运算而来</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">update</span><span style="color: Gray;"> </span><span style="color: Blue;">customers</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;"> </span><span style="color: #ffa500;">-- 使用别名</span><span style="color: Gray;"><br /></span><span style="color: Green;">set</span><span style="color: Gray;"> </span><span style="color: Blue;">city_name</span><span style="color: Gray;">=</span><span style="color: Olive;">(</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Gray;"> </span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Olive;">)</span><span style="color: Gray;"> <br /></span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: #00008b;">exists</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Maroon;">1</span><span style="color: Gray;"> <br /></span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"> <br /></span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;"> <br /></span><span style="color: Olive;">)</span><span style="color: Gray;"> <br /></span><span style="color: #ffa500;">-- update 超过2个值</span><span style="color: Gray;"><br /></span><span style="color: Green;">update</span><span style="color: Gray;"> </span><span style="color: Blue;">customers</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;"> </span><span style="color: #ffa500;">-- 使用别名</span><span style="color: Gray;"><br /></span><span style="color: Green;">set</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">city_name</span><span style="color: Gray;">,</span><span style="color: Blue;">customer_type</span><span style="color: Olive;">)</span><span style="color: Gray;">=</span><span style="color: Olive;">(</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Gray;">,</span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_type</span><span style="color: Gray;"> <br /></span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"> <br /></span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Olive;">)</span><span style="color: Gray;"> <br /></span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: #00008b;">exists</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Maroon;">1</span><span style="color: Gray;"> <br /></span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"> <br /></span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;"> <br /></span><span style="color: Olive;">)</span></div></div>
<p>注意在这个语句中，<br />
 =(select b.city_name,b.customer_type from tmp_cust_city b<br />
 where b.customer_id=a.customer_id )<br />
 与<br />
 (select 1 from tmp_cust_city b<br />
 where b.customer_id=a.customer_id)<br />
 是两个独立的子查询，查看执行计划可知，对b表/索引扫描了2篇；<br />
 如果舍弃where条件，则默认对A表进行全表<br />
 更新，但由于</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Gray;"> </span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span></div></div>
<p>有可能不能提供&#8221;足够多&#8221;值，因为tmp_cust_city只是一部分客户的信息，所以报错（如果指定的列&#8211;city_name可以为NULL则另当别论）：</p>
<div class="hl-surround"><div class="hl-main">01407, 00000, &quot;cannot update (%s) to NULL&quot;<br />// *Cause: <br />// *Action:</div></div>
<p>一个替代的方法可以采用：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">update</span><span style="color: Gray;"> </span><span style="color: Blue;">customers</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;"> </span><span style="color: #ffa500;">-- 使用别名</span><span style="color: Gray;"><br /></span><span style="color: Green;">set</span><span style="color: Gray;"> </span><span style="color: Blue;">city_name</span><span style="color: Gray;">=</span><span style="color: Blue;">nvl</span><span style="color: Olive;">((</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Gray;"> </span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Olive;">)</span><span style="color: Gray;">,</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Olive;">)</span></div></div>
<p>或者 </p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">set</span><span style="color: Gray;"> </span><span style="color: Blue;">city_name</span><span style="color: Gray;">=</span><span style="color: Blue;">nvl</span><span style="color: Olive;">((</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Gray;"> </span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Olive;">)</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">未知</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;"> <br /></span><span style="color: #ffa500;">-- 当然这不符合业务逻辑了</span></div></div>
<p>4) 上述3)在一些情况下，因为B表的纪录只有A表的20-30%的纪录数，<br />
考虑A表使用INDEX的情况，使用cursor也许会比关联update带来更好的性能：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">set</span><span style="color: Gray;"> </span><span style="color: Blue;">serveroutput</span><span style="color: Gray;"> </span><span style="color: Green;">on</span><span style="color: Gray;"><br /></span><span style="color: Green;">declare</span><span style="color: Gray;"><br /></span><span style="color: Green;">cursor</span><span style="color: Gray;"> </span><span style="color: Blue;">city_cur</span><span style="color: Gray;"> </span><span style="color: Green;">is</span><span style="color: Gray;"><br /></span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">customer_id</span><span style="color: Gray;">,</span><span style="color: Blue;">city_name</span><span style="color: Gray;"> <br /></span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> <br /></span><span style="color: Green;">order</span><span style="color: Gray;"> </span><span style="color: Green;">by</span><span style="color: Gray;"> </span><span style="color: Blue;">customer_id</span><span style="color: Gray;">; <br /></span><span style="color: Green;">begin</span><span style="color: Gray;"><br /></span><span style="color: Green;">for</span><span style="color: Gray;"> </span><span style="color: Blue;">my_cur</span><span style="color: Gray;"> </span><span style="color: Green;">in</span><span style="color: Gray;"> </span><span style="color: Blue;">city_cur</span><span style="color: Gray;"> </span><span style="color: Blue;">loop</span><span style="color: Gray;"> <br />&nbsp;<br /></span><span style="color: Green;">update</span><span style="color: Gray;"> </span><span style="color: Blue;">customers</span><span style="color: Gray;"> <br /></span><span style="color: Green;">set</span><span style="color: Gray;"> </span><span style="color: Blue;">city_name</span><span style="color: Gray;">=</span><span style="color: Blue;">my_cur</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Gray;"> <br /></span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">my_cur</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">; <br />&nbsp;<br /></span><span style="color: #ffa500;">/** 此处也可以单条/分批次提交，避免锁表情况 **/</span><span style="color: Gray;"> <br /></span><span style="color: #ffa500;">-- if mod(city_cur%rowcount,10000)=0 then</span><span style="color: Gray;"><br /></span><span style="color: #ffa500;">-- dbms_output.put_line('----');</span><span style="color: Gray;"><br /></span><span style="color: #ffa500;">-- commit;</span><span style="color: Gray;"><br /></span><span style="color: #ffa500;">-- end if;</span><span style="color: Gray;"><br /></span><span style="color: Green;">end</span><span style="color: Gray;"> </span><span style="color: Blue;">loop</span><span style="color: Gray;">; <br /></span><span style="color: Green;">end</span><span style="color: Gray;">;</span></div></div>
<p>5) 关联update的一个特例以及性能再探讨<br />
 在oracle的update语句语法中，除了可以update表之外，也可以是视图，所以有以下1个特例：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">update</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Gray;">,</span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Gray;"> </span><span style="color: Green;">as</span><span style="color: Gray;"> </span><span style="color: Blue;">new_name</span><span style="color: Gray;"> <br /></span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">customers</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;">, <br /></span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"> <br /></span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;"> <br /></span><span style="color: Olive;">)</span><span style="color: Gray;"> <br /></span><span style="color: Green;">set</span><span style="color: Gray;"> </span><span style="color: Blue;">city_name</span><span style="color: Gray;">=</span><span style="color: Blue;">new_name</span></div></div>
<p>这样能避免对B表或其索引的2次扫描，但前提是 A(customer_id) b(customer_id)必需是unique index或primary key。否则报错：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Maroon;">01779</span><span style="color: Gray;">, </span><span style="color: Maroon;">00000</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">cannot modify a column which maps to a non key-preserved table</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"><br />// *</span><span style="color: Blue;">Cause</span><span style="color: Gray;">: </span><span style="color: Blue;">An</span><span style="color: Gray;"> </span><span style="color: Blue;">attempt</span><span style="color: Gray;"> </span><span style="color: Blue;">was</span><span style="color: Gray;"> </span><span style="color: Blue;">made</span><span style="color: Gray;"> </span><span style="color: Green;">to</span><span style="color: Gray;"> </span><span style="color: Green;">insert</span><span style="color: Gray;"> </span><span style="color: Green;">or</span><span style="color: Gray;"> </span><span style="color: Green;">update</span><span style="color: Gray;"> </span><span style="color: Blue;">columns</span><span style="color: Gray;"> </span><span style="color: Green;">of</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;"> </span><span style="color: Green;">join</span><span style="color: Gray;"> </span><span style="color: Green;">view</span><span style="color: Gray;"> </span><span style="color: Blue;">which</span><span style="color: Gray;"> <br />// </span><span style="color: Green;">map</span><span style="color: Gray;"> </span><span style="color: Green;">to</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;"> </span><span style="color: Blue;">non</span><span style="color: Gray;">-</span><span style="color: Green;">key</span><span style="color: Gray;">-</span><span style="color: Blue;">preserved</span><span style="color: Gray;"> </span><span style="color: Green;">table</span><span style="color: Gray;">. <br />// *</span><span style="color: Green;">Action</span><span style="color: Gray;">: </span><span style="color: Green;">Modify</span><span style="color: Gray;"> </span><span style="color: Blue;">the</span><span style="color: Gray;"> </span><span style="color: Blue;">underlying</span><span style="color: Gray;"> </span><span style="color: Blue;">base</span><span style="color: Gray;"> </span><span style="color: Blue;">tables</span><span style="color: Gray;"> </span><span style="color: Blue;">directly</span><span style="color: Gray;">.</span></div></div>
<p>6）oracle另一个常见错误<br />
 回到3)情况,由于某些原因，tmp_cust_city customer_id 不是唯一index/primary key</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">update</span><span style="color: Gray;"> </span><span style="color: Blue;">customers</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;"> </span><span style="color: #ffa500;">-- 使用别名</span><span style="color: Gray;"><br /></span><span style="color: Green;">set</span><span style="color: Gray;"> </span><span style="color: Blue;">city_name</span><span style="color: Gray;">=</span><span style="color: Olive;">(</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Gray;"> </span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Olive;">)</span><span style="color: Gray;"> <br /></span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: #00008b;">exists</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Maroon;">1</span><span style="color: Gray;"> <br /></span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"> <br /></span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;"> <br /></span><span style="color: Olive;">)</span></div></div>
<p>当对于一个给定的a.customer_id<br />
 (select b.city_name from tmp_cust_city b where b.customer_id=a.customer_id)<br />
 返回多余1条的情况，则会报如下错误：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Maroon;">01427</span><span style="color: Gray;">, </span><span style="color: Maroon;">00000</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">single-row subquery returns more than one row</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"><br />// *</span><span style="color: Blue;">Cause</span><span style="color: Gray;">: <br />// *</span><span style="color: Green;">Action</span><span style="color: Gray;">:</span></div></div>
<p>一个比较简单近似于不负责任的做法是 </p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">update</span><span style="color: Gray;"> </span><span style="color: Blue;">customers</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;"> </span><span style="color: #ffa500;">-- 使用别名</span><span style="color: Gray;"><br /></span><span style="color: Green;">set</span><span style="color: Gray;"> </span><span style="color: Blue;">city_name</span><span style="color: Gray;">=</span><span style="color: Olive;">(</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Gray;"> </span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;"> </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">rownum</span><span style="color: Gray;">=</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span></div></div>
<p>如何理解 01427 错误，在一个很复杂的多表连接update的语句，经常因考虑不周，出现这个错误，<br />
 仍已上述例子来描述，一个比较简便的方法就是将A表代入 值表达式 中,使用group by 和<br />
 having 字句查看重复的纪录 </p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">(</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">,</span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Gray;">,</span><span style="color: #00008b;">count</span><span style="color: Olive;">(</span><span style="color: Gray;">*</span><span style="color: Olive;">)</span><span style="color: Gray;"> <br /></span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">,</span><span style="color: Blue;">customers</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;"> <br /></span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;"> <br /></span><span style="color: Green;">group</span><span style="color: Gray;"> </span><span style="color: Green;">by</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">,</span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Gray;"> <br /></span><span style="color: Green;">having</span><span style="color: Gray;"> </span><span style="color: #00008b;">count</span><span style="color: Olive;">(</span><span style="color: Gray;">*</span><span style="color: Olive;">)</span><span style="color: Gray;">&gt;=</span><span style="color: Maroon;">2</span><span style="color: Gray;"> <br /></span><span style="color: Olive;">)</span></div></div>
</p>]]></content:encoded>
			<wfw:commentRss>http://leeawan.cn/2011/02/oracleupdate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ORACLE UPDATE语句语法与性能分析的一点看法</title>
		<link>http://leeawan.cn/2010/06/oracle_update_syntax/</link>
		<comments>http://leeawan.cn/2010/06/oracle_update_syntax/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 11:52:33 +0000</pubDate>
		<dc:creator>leeawan</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://leeawan.cn/?p=268</guid>
		<description><![CDATA[转自:老骆驼空间站 为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在某个业务受理子系统BSS中， &#8211;客户资料表 create table customers&#160; (&#160;&#160; customer_id&#160; &#160;number(8)&#160; &#160; not null,&#160; -- 客户标示&#160;&#160; city_name&#160; &#160; &#160;varchar2(10) not null,&#160; -- 所在城市&#160;&#160; customer_type char(2)&#160; &#160; &#160; not null,&#160; -- 客户类型&#160;&#160; ...&#160; )&#160; create unique index PK_customers on customers (customer_id) 由于某些原因，客户所在城市这个信息并不什么准确，但是在 客户服务部的CRM子系统中，通过主动服务获取了部分客户20%的所在 城市等准确信息，于是你将该部分信息提取至一张临时表中： create table tmp_cust_city&#160; (&#160;&#160; customer_id&#160; &#160; number(8) not null,&#160;&#160; citye_name&#160; &#160; &#160;varchar2(10) not [...]]]></description>
			<content:encoded><![CDATA[<p class='fp'>转自:<a href="http://blog.csdn.net/gisfarmer/archive/2009/02/23/3925531.aspx">老骆驼空间站</a><br />
为了方便起见,建立了以下简单模型,和构造了部分测试数据:<br />
在某个业务受理子系统BSS中，<br />
&#8211;客户资料表</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">create</span><span style="color: Gray;"> </span><span style="color: Green;">table</span><span style="color: Gray;"> </span><span style="color: Blue;">customers</span><span style="color: Gray;"><br />&nbsp; </span><span style="color: Olive;">(</span><span style="color: Gray;"><br />&nbsp;&nbsp; </span><span style="color: Blue;">customer_id</span><span style="color: Gray;">&nbsp; &nbsp;</span><span style="color: #00008b;">number</span><span style="color: Olive;">(</span><span style="color: Maroon;">8</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">not</span><span style="color: Gray;"> </span><span style="color: Green;">null</span><span style="color: Gray;">,&nbsp; </span><span style="color: #ffa500;">-- 客户标示</span><span style="color: Gray;"><br />&nbsp;&nbsp; </span><span style="color: Blue;">city_name</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">varchar2</span><span style="color: Olive;">(</span><span style="color: Maroon;">10</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">not</span><span style="color: Gray;"> </span><span style="color: Green;">null</span><span style="color: Gray;">,&nbsp; </span><span style="color: #ffa500;">-- 所在城市</span><span style="color: Gray;"><br />&nbsp;&nbsp; </span><span style="color: Blue;">customer_type</span><span style="color: Gray;"> </span><span style="color: Green;">char</span><span style="color: Olive;">(</span><span style="color: Maroon;">2</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Green;">not</span><span style="color: Gray;"> </span><span style="color: Green;">null</span><span style="color: Gray;">,&nbsp; </span><span style="color: #ffa500;">-- 客户类型</span><span style="color: Gray;"><br />&nbsp;&nbsp; ...<br />&nbsp; </span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp; </span><span style="color: Green;">create</span><span style="color: Gray;"> </span><span style="color: Green;">unique</span><span style="color: Gray;"> </span><span style="color: Blue;">index</span><span style="color: Gray;"> </span><span style="color: Blue;">PK_customers</span><span style="color: Gray;"> </span><span style="color: Green;">on</span><span style="color: Gray;"> </span><span style="color: Blue;">customers</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">customer_id</span><span style="color: Olive;">)</span></div></div>
<p>  由于某些原因，客户所在城市这个信息并不什么准确，但是在<br />
  客户服务部的CRM子系统中，通过主动服务获取了部分客户20%的所在<br />
  城市等准确信息，于是你将该部分信息提取至一张临时表中：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">create</span><span style="color: Gray;"> </span><span style="color: Green;">table</span><span style="color: Gray;"> </span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"><br />&nbsp; </span><span style="color: Olive;">(</span><span style="color: Gray;"><br />&nbsp;&nbsp; </span><span style="color: Blue;">customer_id</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #00008b;">number</span><span style="color: Olive;">(</span><span style="color: Maroon;">8</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">not</span><span style="color: Gray;"> </span><span style="color: Green;">null</span><span style="color: Gray;">,<br />&nbsp;&nbsp; </span><span style="color: Blue;">citye_name</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">varchar2</span><span style="color: Olive;">(</span><span style="color: Maroon;">10</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">not</span><span style="color: Gray;"> </span><span style="color: Green;">null</span><span style="color: Gray;">，<br />&nbsp;&nbsp; </span><span style="color: Blue;">customer_type</span><span style="color: Gray;">&nbsp; </span><span style="color: Green;">char</span><span style="color: Olive;">(</span><span style="color: Maroon;">2</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp; &nbsp;</span><span style="color: Green;">not</span><span style="color: Gray;"> </span><span style="color: Green;">null</span><span style="color: Gray;"><br />&nbsp; </span><span style="color: Olive;">)</span></div></div>
<p>1) 最简单的形式<br />
   &#8211;经确认customers表中所有customer_id小于1000均为&#8217;北京&#8217;<br />
   &#8211;1000以内的均是公司走向全国之前的本城市的老客户:)</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">update</span><span style="color: Gray;"> </span><span style="color: Blue;">customers</span><span style="color: Gray;"><br />&nbsp;&nbsp; </span><span style="color: Green;">set</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">city_name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">'</span><span style="color: Red;">北京</span><span style="color: #8b0000;">'</span><span style="color: Gray;"><br />&nbsp;&nbsp; </span><span style="color: Green;">where</span><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">customer_id</span><span style="color: Gray;">&lt;</span><span style="color: Maroon;">1000</span></div></div>
<p>2) 两表(多表)关联update &#8212; 仅在where字句中的连接<br />
   &#8211;这次提取的数据都是VIP，且包括新增的,所以顺便更新客户类别</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">update</span><span style="color: Gray;"> </span><span style="color: Blue;">customers</span><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">a</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #ffa500;">-- 使用别名</span><span style="color: Gray;"><br />&nbsp;&nbsp; </span><span style="color: Green;">set</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">customer_type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">'</span><span style="color: Red;">01</span><span style="color: #8b0000;">'</span><span style="color: Gray;"> --</span><span style="color: Maroon;">01</span><span style="color: Gray;"> 为</span><span style="color: Blue;">vip</span><span style="color: Gray;">，</span><span style="color: Maroon;">00</span><span style="color: Gray;">为普通<br />&nbsp;&nbsp; </span><span style="color: Green;">where</span><span style="color: Gray;">&nbsp; </span><span style="color: #00008b;">exists</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Maroon;">1</span><span style="color: Gray;"> <br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">from</span><span style="color: Gray;">&nbsp; &nbsp;</span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">where</span><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">)</span></div></div>
<p><span id="more-268"></span><br />
3) 两表(多表)关联update &#8212; 被修改值由另一个表运算而来</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">update</span><span style="color: Gray;"> </span><span style="color: Blue;">customers</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;">&nbsp; &nbsp;</span><span style="color: #ffa500;">-- 使用别名</span><span style="color: Gray;"><br />&nbsp;&nbsp; </span><span style="color: Green;">set</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">city_name</span><span style="color: Gray;">=</span><span style="color: Olive;">(</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Gray;"> </span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; </span><span style="color: Green;">where</span><span style="color: Gray;">&nbsp; </span><span style="color: #00008b;">exists</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Maroon;">1</span><span style="color: Gray;"> <br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">from</span><span style="color: Gray;">&nbsp; &nbsp;</span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">where</span><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">)</span></div></div>
<p>   &#8212; update 超过2个值</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">update</span><span style="color: Gray;"> </span><span style="color: Blue;">customers</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;">&nbsp; &nbsp;</span><span style="color: #ffa500;">-- 使用别名</span><span style="color: Gray;"><br />&nbsp;&nbsp; </span><span style="color: Green;">set</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">(</span><span style="color: Blue;">city_name</span><span style="color: Gray;">,</span><span style="color: Blue;">customer_type</span><span style="color: Olive;">)</span><span style="color: Gray;">=</span><span style="color: Olive;">(</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Gray;">,</span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_type</span><span style="color: Gray;"> <br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">from</span><span style="color: Gray;">&nbsp; &nbsp;</span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"> <br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">where</span><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; </span><span style="color: Green;">where</span><span style="color: Gray;">&nbsp; </span><span style="color: #00008b;">exists</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Maroon;">1</span><span style="color: Gray;"> <br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">from</span><span style="color: Gray;">&nbsp; &nbsp;</span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">where</span><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">)</span></div></div>
<p>   注意在这个语句中  =(select b.city_name,b.customer_type<br />
 from   tmp_cust_city b<br />
 where  b.customer_id=a.customer_id)<br />
   与<br />
 (select 1 from   tmp_cust_city b<br />
  where  b.customer_id=a.customer_id)<br />
是两个独立的子查询，查看执行计划可知，对b表/索引扫描了2篇；如果舍弃where条件，则默认对A表进行全表更新，但由于(select b.city_name from tmp_cust_city b where where  b.customer_id=a.customer_id)有可能不能提供&#8221;足够多&#8221;值，因为tmp_cust_city只是一部分客户的信息，所以报错（如果指定的列&#8211;city_name可以为NULL则另当别论）;</p>
<p>01407, 00000, &#8220;cannot update (%s) to NULL&#8221;<br />
// *Cause:<br />
// *Action:<br />
   一个替代的方法可以采用：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">update</span><span style="color: Gray;"> </span><span style="color: Blue;">customers</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;">&nbsp; &nbsp;</span><span style="color: #ffa500;">-- 使用别名</span><span style="color: Gray;"><br />&nbsp;&nbsp; </span><span style="color: Green;">set</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">city_name</span><span style="color: Gray;">=</span><span style="color: Blue;">nvl</span><span style="color: Olive;">((</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Gray;"> </span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Olive;">)</span><span style="color: Gray;">,</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; --或者<br />&nbsp;&nbsp; </span><span style="color: Green;">set</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">city_name</span><span style="color: Gray;">=</span><span style="color: Blue;">nvl</span><span style="color: Olive;">((</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Gray;"> </span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Olive;">)</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">未知</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;</span><span style="color: #ffa500;">-- 当然这不符合业务逻辑了</span></div></div>
<p>4) 上述3)在一些情况下，因为B表的纪录只有A表的20-30%的纪录数，考虑A表使用INDEX的情况，使用cursor也许会比关联update带来更好的性能：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">set</span><span style="color: Gray;"> </span><span style="color: Blue;">serveroutput</span><span style="color: Gray;"> </span><span style="color: Green;">on</span><span style="color: Gray;"><br /></span><span style="color: Green;">declare</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">cursor</span><span style="color: Gray;"> </span><span style="color: Blue;">city_cur</span><span style="color: Gray;"> </span><span style="color: Green;">is</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">customer_id</span><span style="color: Gray;">,</span><span style="color: Blue;">city_name</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">from</span><span style="color: Gray;">&nbsp; &nbsp;</span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">order</span><span style="color: Gray;"> </span><span style="color: Green;">by</span><span style="color: Gray;"> </span><span style="color: Blue;">customer_id</span><span style="color: Gray;">;<br /></span><span style="color: Green;">begin</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">for</span><span style="color: Gray;"> </span><span style="color: Blue;">my_cur</span><span style="color: Gray;"> </span><span style="color: Green;">in</span><span style="color: Gray;"> </span><span style="color: Blue;">city_cur</span><span style="color: Gray;"> </span><span style="color: Blue;">loop</span><span style="color: Gray;"><br />&nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">update</span><span style="color: Gray;"> </span><span style="color: Blue;">customers</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">set</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">city_name</span><span style="color: Gray;">=</span><span style="color: Blue;">my_cur</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">where</span><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">my_cur</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; <br />&nbsp;&nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">/** 此处也可以单条/分批次提交，避免锁表情况 **/</span><span style="color: Gray;"><br /></span><span style="color: #ffa500;">--&nbsp; &nbsp; &nbsp;if mod(city_cur%rowcount,10000)=0 then</span><span style="color: Gray;"><br /></span><span style="color: #ffa500;">--&nbsp; &nbsp; &nbsp; &nbsp; dbms_output.put_line('----');</span><span style="color: Gray;"><br /></span><span style="color: #ffa500;">--&nbsp; &nbsp; &nbsp; &nbsp; commit;</span><span style="color: Gray;"><br /></span><span style="color: #ffa500;">--&nbsp; &nbsp; &nbsp;end if;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">end</span><span style="color: Gray;"> </span><span style="color: Blue;">loop</span><span style="color: Gray;">;<br /></span><span style="color: Green;">end</span><span style="color: Gray;">;</span></div></div>
<p>5) 关联update的一个特例以及性能再探讨<br />
   在oracle的update语句语法中，除了可以update表之外，也可以是视图，所以有以下1个特例：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">update</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Gray;">,</span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Gray;"> </span><span style="color: Green;">as</span><span style="color: Gray;"> </span><span style="color: Blue;">new_name</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">from</span><span style="color: Gray;">&nbsp; &nbsp;</span><span style="color: Blue;">customers</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;">,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">where</span><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">set</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">city_name</span><span style="color: Gray;">=</span><span style="color: Blue;">new_name</span></div></div>
<p>这样能避免对B表或其索引的2次扫描，但前提是 A(customer_id) b(customer_id)必需是unique index或primary key。否则报错：<br />
01779, 00000, &#8220;cannot modify a column which maps to a non key-preserved table&#8221;<br />
// *Cause: An attempt was made to insert or update columns of a join view which<br />
// map to a non-key-preserved table.<br />
// *Action: Modify the underlying base tables directly.</p>
<p>6）oracle另一个常见错误<br />
   回到3)情况,由于某些原因，tmp_cust_city customer_id 不是唯一index/primary key</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">update</span><span style="color: Gray;"> </span><span style="color: Blue;">customers</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;">&nbsp; &nbsp;</span><span style="color: #ffa500;">-- 使用别名</span><span style="color: Gray;"><br /></span><span style="color: Green;">set</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">city_name</span><span style="color: Gray;">=</span><span style="color: Olive;">(</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Gray;"> </span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; </span><span style="color: Green;">where</span><span style="color: Gray;">&nbsp; </span><span style="color: #00008b;">exists</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Maroon;">1</span><span style="color: Gray;"> <br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">from</span><span style="color: Gray;">&nbsp; &nbsp;</span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">where</span><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Olive;">)</span></div></div>
<p>当对于一个给定的a.customer_id<br />
(select b.city_name from tmp_cust_city b where b.customer_id=a.customer_id)返回多余1条的情况，则会报如下错误：<br />
01427, 00000, &#8220;single-row subquery returns more than one row&#8221;<br />
// *Cause:<br />
// *Action:</p>
<p>   一个比较简单近似于不负责任的做法是</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">update</span><span style="color: Gray;"> </span><span style="color: Blue;">customers</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;">&nbsp; &nbsp;</span><span style="color: #ffa500;">-- 使用别名</span><span style="color: Gray;"><br /></span><span style="color: Green;">set</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">city_name</span><span style="color: Gray;">=</span><span style="color: Olive;">(</span><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">city_name</span><span style="color: Gray;"> </span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">tmp_cust_city</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">customer_id</span><span style="color: Gray;"> </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">rownum</span><span style="color: Gray;">=</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span></div></div>
<p>如何理解 01427 错误，在一个很复杂的多表连接update的语句，经常因考虑不周，出现这个错误，仍已上述例子来描述，一个比较简便的方法就是将A表代入 值表达式 中,使用group by 和having 字句查看重复的纪录<br />
   (select b.customer_id,b.city_name,count(*)<br />
    from tmp_cust_city b,customers a<br />
    where b.customer_id=a.customer_id<br />
    group by b.customer_id,b.city_name<br />
    having count(*)>=2<br />
   )</p>
</p>]]></content:encoded>
			<wfw:commentRss>http://leeawan.cn/2010/06/oracle_update_syntax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle The Account is Locked的解决方法</title>
		<link>http://leeawan.cn/2010/06/oracle_the_account_is_locked/</link>
		<comments>http://leeawan.cn/2010/06/oracle_the_account_is_locked/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 11:38:05 +0000</pubDate>
		<dc:creator>leeawan</dc:creator>
				<category><![CDATA[Database]]></category>

		<guid isPermaLink="false">http://leeawan.cn/?p=265</guid>
		<description><![CDATA[转自：你是编程高手吗的空间 第一种 ORA-28000: the account is locked 第一步：使用PL/SQL，登录名为system,数据库名称不变，选择类型的时候把Normal修改为Sysdba; 第二步：选择myjob,查看users; 第三步：选择system,右击点击“编辑”； 第四步：修改密码，把“帐户被锁住”的勾去掉； 第五步：点击“应用”再点击“关闭”； 第六步：重新登录就可以通过验证了； 第二种 ALTER USER username ACCOUNT UNLOCK; 第三种 在plsql developer中要是以scott/tiger登录时提示ora-28000 the account is locked。 解决办法： 新装完Oracle10g后，用scott/tiger测试，会出现以下错误提示： oracle10g the account is locked oracle10g the password has expired 原因：默认Oracle10g的scott不能登陆。 解决： conn sys/sys as sysdba; //以DBA的身份登录alter user scott account unlock;// 然后解锁conn scott/tiger //弹出一个修改密码的对话框，修改一下密码就可以了 在运行里面输入cmd在DOS模式下输入sqlplus，以system用户名登录，密码是刚装oracle时自己填写的密码orcl，登录进去以后。 SQL&#62; conn [...]]]></description>
			<content:encoded><![CDATA[<p class='fp'>转自：<a href="http://hi.baidu.com/%C4%E3%CA%C7%B1%E0%B3%CC%B8%DF%CA%D6%C2%F0/blog/item/4637a4d1371a1d85a0ec9c52.html">你是编程高手吗的空间</a></p>
<p>第一种<br />
ORA-28000: the account is locked<br />
第一步：使用PL/SQL，登录名为system,数据库名称不变，选择类型的时候把Normal修改为Sysdba;<br />
第二步：选择myjob,查看users;<br />
第三步：选择system,右击点击“编辑”；<br />
第四步：修改密码，把“帐户被锁住”的勾去掉；<br />
第五步：点击“应用”再点击“关闭”；<br />
第六步：重新登录就可以通过验证了；<br />
第二种<br />
ALTER USER username ACCOUNT UNLOCK;</p>
<p>第三种<br />
在plsql developer中要是以scott/tiger登录时提示ora-28000 the account is locked。<br />
解决办法：<br />
新装完Oracle10g后，用scott/tiger测试，会出现以下错误提示：<br />
oracle10g the account is locked<br />
oracle10g the password has expired<br />
原因：默认Oracle10g的scott不能登陆。<br />
解决：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">conn</span><span style="color: Gray;"> </span><span style="color: Blue;">sys</span><span style="color: Gray;">/</span><span style="color: Blue;">sys</span><span style="color: Gray;"> </span><span style="color: Green;">as</span><span style="color: Gray;"> </span><span style="color: Blue;">sysdba</span><span style="color: Gray;">; //以</span><span style="color: Blue;">DBA</span><span style="color: Gray;">的身份登录<br /></span><span style="color: Green;">alter</span><span style="color: Gray;"> </span><span style="color: Green;">user</span><span style="color: Gray;"> </span><span style="color: Blue;">scott</span><span style="color: Gray;"> </span><span style="color: Blue;">account</span><span style="color: Gray;"> </span><span style="color: Blue;">unlock</span><span style="color: Gray;">;// 然后解锁<br /></span><span style="color: Blue;">conn</span><span style="color: Gray;"> </span><span style="color: Blue;">scott</span><span style="color: Gray;">/</span><span style="color: Blue;">tiger</span><span style="color: Gray;"> //弹出一个修改密码的对话框，修改一下密码就可以了</span></div></div>
<p><span id="more-265"></span><br />
在运行里面输入cmd在DOS模式下输入sqlplus，以system用户名登录，密码是刚装oracle时自己填写的密码orcl，登录进去以后。</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">SQL</span><span style="color: Gray;">&gt; </span><span style="color: Blue;">conn</span><span style="color: Gray;"> </span><span style="color: Blue;">sys</span><span style="color: Gray;">/</span><span style="color: Blue;">sys</span><span style="color: Gray;"> </span><span style="color: Green;">as</span><span style="color: Gray;"> </span><span style="color: Blue;">sysdba</span><span style="color: Gray;">;&nbsp; &nbsp; &nbsp; &nbsp;（分号是必须的但是我是以</span><span style="color: #00008b;">system</span><span style="color: Gray;">登录的所在这不应该写</span><span style="color: Blue;">conn</span><span style="color: Gray;"> </span><span style="color: Blue;">sys</span><span style="color: Gray;">/</span><span style="color: Blue;">sys</span><span style="color: Gray;"> </span><span style="color: Green;">as</span><span style="color: Gray;"> </span><span style="color: Blue;">sysdba</span><span style="color: Gray;">应该写</span><span style="color: Blue;">conn</span><span style="color: Gray;"> </span><span style="color: #00008b;">system</span><span style="color: Gray;">/</span><span style="color: Blue;">orcl</span><span style="color: Gray;"> </span><span style="color: Green;">as</span><span style="color: Gray;"> </span><span style="color: Blue;">sysdba</span><span style="color: Gray;">;）<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">Connected</span><span style="color: Gray;">.<br /></span><span style="color: Green;">SQL</span><span style="color: Gray;">&gt; </span><span style="color: Green;">alter</span><span style="color: Gray;"> </span><span style="color: Green;">user</span><span style="color: Gray;"> </span><span style="color: Blue;">scott</span><span style="color: Gray;"> </span><span style="color: Blue;">account</span><span style="color: Gray;"> </span><span style="color: Blue;">unlock</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">User</span><span style="color: Gray;"> </span><span style="color: Blue;">altered</span><span style="color: Gray;">.<br /></span><span style="color: Green;">SQL</span><span style="color: Gray;">&gt; </span><span style="color: Green;">commit</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">Commit</span><span style="color: Gray;"> </span><span style="color: Blue;">complete</span><span style="color: Gray;">.<br /></span><span style="color: Green;">SQL</span><span style="color: Gray;">&gt; </span><span style="color: Blue;">conn</span><span style="color: Gray;"> </span><span style="color: Blue;">scott</span><span style="color: Gray;">/</span><span style="color: Blue;">tiger</span><span style="color: Gray;">//请输入新密码，并确认后</span><span style="color: Blue;">OK</span><span style="color: Gray;"><br /></span><span style="color: Blue;">Password</span><span style="color: Gray;"> </span><span style="color: Blue;">changed</span><span style="color: Gray;"><br /></span><span style="color: Blue;">Connected</span><span style="color: Gray;">.</span></div></div>
</p>]]></content:encoded>
			<wfw:commentRss>http://leeawan.cn/2010/06/oracle_the_account_is_locked/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>oracle 数据导入导出</title>
		<link>http://leeawan.cn/2010/06/oracle_import_export/</link>
		<comments>http://leeawan.cn/2010/06/oracle_import_export/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 12:14:19 +0000</pubDate>
		<dc:creator>leeawan</dc:creator>
				<category><![CDATA[Database]]></category>

		<guid isPermaLink="false">http://leeawan.cn/?p=263</guid>
		<description><![CDATA[exp 将数据库内的各对象以二进制方式下载成dmp文件，方便数据迁移。 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- buffer：下载数据缓冲区，以字节为单位，缺省依赖操作系统 consistent：下载期间所涉及的数据保持read only，缺省为n direct：使用直通方式 ，缺省为n feeback：显示处理记录条数，缺省为0，即不显示 file：输出文件，缺省为expdat.dmp filesize：输出文件大小，缺省为操作系统最大值 indexes：是否下载索引，缺省为n，这是指索引的定义而非数据，exp不下载索引数据 log：log文件，缺省为无，在标准输出显示 owner：指明下载的用户名 query：选择记录的一个子集 rows：是否下载表记录 tables：输出的表名列表 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- 导出整个实例 exp dbuser/oracle@oradb file=oradb.dmp log=oradb.log full=y consistent=y direct=y user应具有dba权限 导出某个用户所有对象 exp dbuser/oracle@oradb file=dbuser.dmp log=dbuser.log owner=dbuser buffer=4096000 feedback=10000 导出一张或几张表 exp dbuser/oracle@oradb file=dbuser.dmp log=dbuser.log tables=table1,table2 buffer=4096000 feedback=10000 导出某张表的部分数据 exp dbuser/oracle@oradb file=dbuser.dmp log=dbuser.log tables=table1 buffer=4096000 feedback=10000 query=\”where col1=\’…\’ and col2 [...]]]></description>
			<content:encoded><![CDATA[<p><strong>exp</strong><br />
将数据库内的各对象以二进制方式下载成dmp文件，方便数据迁移。<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
buffer：下载数据缓冲区，以字节为单位，缺省依赖操作系统<br />
consistent：下载期间所涉及的数据保持read only，缺省为n<br />
direct：使用直通方式 ，缺省为n<br />
feeback：显示处理记录条数，缺省为0，即不显示<br />
file：输出文件，缺省为expdat.dmp<br />
filesize：输出文件大小，缺省为操作系统最大值<br />
indexes：是否下载索引，缺省为n，这是指索引的定义而非数据，exp不下载索引数据<br />
log：log文件，缺省为无，在标准输出显示<br />
owner：指明下载的用户名<br />
query：选择记录的一个子集<br />
rows：是否下载表记录<br />
tables：输出的表名列表<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
导出整个实例</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">exp</span><span style="color: Gray;"> </span><span style="color: Blue;">dbuser</span><span style="color: Gray;">/</span><span style="color: Blue;">oracle</span><span style="color: Gray;">@</span><span style="color: Blue;">oradb</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">oradb</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">oradb</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span><span style="color: Gray;"> </span><span style="color: Green;">full</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">consistent</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">direct</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span></div></div>
<p>user应具有dba权限<br />
导出某个用户所有对象</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">exp</span><span style="color: Gray;"> </span><span style="color: Blue;">dbuser</span><span style="color: Gray;">/</span><span style="color: Blue;">oracle</span><span style="color: Gray;">@</span><span style="color: Blue;">oradb</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">dbuser</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">dbuser</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span><span style="color: Gray;"> </span><span style="color: Blue;">owner</span><span style="color: Gray;">=</span><span style="color: Blue;">dbuser</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">4096000</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">10000</span></div></div>
<p>导出一张或几张表</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">exp</span><span style="color: Gray;"> </span><span style="color: Blue;">dbuser</span><span style="color: Gray;">/</span><span style="color: Blue;">oracle</span><span style="color: Gray;">@</span><span style="color: Blue;">oradb</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">dbuser</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">dbuser</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span><span style="color: Gray;"> </span><span style="color: Blue;">tables</span><span style="color: Gray;">=</span><span style="color: Blue;">table1</span><span style="color: Gray;">,</span><span style="color: Blue;">table2</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">4096000</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">10000</span></div></div>
<p>导出某张表的部分数据</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">exp</span><span style="color: Gray;"> </span><span style="color: Blue;">dbuser</span><span style="color: Gray;">/</span><span style="color: Blue;">oracle</span><span style="color: Gray;">@</span><span style="color: Blue;">oradb</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">dbuser</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">dbuser</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span><span style="color: Gray;"> </span><span style="color: Blue;">tables</span><span style="color: Gray;">=</span><span style="color: Blue;">table1</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">4096000</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">10000</span><span style="color: Gray;"> </span><span style="color: Blue;">query</span><span style="color: Gray;">=\”</span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">col1</span><span style="color: Gray;">=\’…\’ </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">col2</span><span style="color: Gray;"> \&lt;…\”</span></div></div>
<p>不可用于嵌套表<br />
以多个固定大小文件方式导出某张表</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">exp</span><span style="color: Gray;"> </span><span style="color: Blue;">dbuser</span><span style="color: Gray;">/</span><span style="color: Blue;">oracle</span><span style="color: Gray;">@</span><span style="color: Blue;">oradb</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Maroon;">1.</span><span style="color: Blue;">dmp</span><span style="color: Gray;">,</span><span style="color: Maroon;">2.</span><span style="color: Blue;">dmp</span><span style="color: Gray;">,</span><span style="color: Maroon;">3.</span><span style="color: Blue;">dmp</span><span style="color: Gray;">,… </span><span style="color: Blue;">filesize</span><span style="color: Gray;">=</span><span style="color: Maroon;">1000</span><span style="color: #00008b;">m</span><span style="color: Gray;"> </span><span style="color: Blue;">tables</span><span style="color: Gray;">=</span><span style="color: Blue;">emp</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">4096000</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">10000</span></div></div>
<p>这种做法通常用在：表数据量较大，单个dump文件可能会超出文件系统的限制<br />
直通路径方式<br />
direct=y，取代buffer选项，query选项不可用<br />
有利于提高下载速度<br />
consistent选项<br />
自export启动后，consistent=y冻结来自其它会话的对export操作的数据对象的更新，这样可以保证dump结果的一致性。但这个过程不能太长，以免回滚段和联机日志消耗完<br />
<span id="more-263"></span></p>
<p><strong>imp</strong><br />
将exp下载的dmp文件上载到数据库内。<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
buffer：上载数据缓冲区，以字节为单位，缺省依赖操作系统<br />
commit：上载数据缓冲区中的记录上载后是否执行提交<br />
feeback：显示处理记录条数，缺省为0，即不显示<br />
file：输入文件，缺省为expdat.dmp<br />
filesize：输入文件大小，缺省为操作系统最大值<br />
fromuser：指明来源用户方<br />
ignore：是否忽略对象创建错误，缺省为n，在上载前对象已被建立往往是一个正常现象，所以此选项建议设为y<br />
indexes：是否上载索引，缺省为n，这是指索引的定义而非数据，如果上载时索引已建立，此选项即使为n也无效，imp自动更新索引数据<br />
log：log文件，缺省为无，在标准输出显示<br />
rows：是否上载表记录<br />
tables：输入的表名列表<br />
touser：指明目的用户方<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
导入整个实例</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: Blue;">dbuser</span><span style="color: Gray;">/</span><span style="color: Blue;">oracle</span><span style="color: Gray;">@</span><span style="color: Blue;">oradb</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">oradb</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">oradb</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span><span style="color: Gray;"> </span><span style="color: Green;">full</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">4096000</span><span style="color: Gray;"> </span><span style="color: Green;">commit</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Green;">ignore</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">10000</span></div></div>
<p>导入某个用户所有对象</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: Blue;">dbuser</span><span style="color: Gray;">/</span><span style="color: Blue;">oracle</span><span style="color: Gray;">@</span><span style="color: Blue;">oradb</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Blue;">dbuser</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Blue;">dbuser</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span><span style="color: Gray;"> </span><span style="color: Blue;">fromuser</span><span style="color: Gray;">=</span><span style="color: Blue;">dbuser</span><span style="color: Gray;"> </span><span style="color: Blue;">touser</span><span style="color: Gray;">=</span><span style="color: Blue;">dbuser2</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">2048000</span><span style="color: Gray;"> </span><span style="color: Green;">commit</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Green;">ignore</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">10000</span></div></div>
<p>导入一张或几张表</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: Blue;">dbuser2</span><span style="color: Gray;">/</span><span style="color: Blue;">oracle</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=</span><span style="color: Green;">user</span><span style="color: Gray;">.</span><span style="color: Blue;">dmp</span><span style="color: Gray;"> </span><span style="color: Blue;">log</span><span style="color: Gray;">=</span><span style="color: Green;">user</span><span style="color: Gray;">.</span><span style="color: Blue;">log</span><span style="color: Gray;"> </span><span style="color: Blue;">tables</span><span style="color: Gray;">=</span><span style="color: Blue;">table1</span><span style="color: Gray;">,</span><span style="color: Blue;">table2</span><span style="color: Gray;"> </span><span style="color: Blue;">fromuser</span><span style="color: Gray;">=</span><span style="color: Blue;">dbuser</span><span style="color: Gray;"> </span><span style="color: Blue;">touser</span><span style="color: Gray;">=</span><span style="color: Blue;">dbuser2</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">2048000</span><span style="color: Gray;"> </span><span style="color: Green;">commit</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Green;">ignore</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">10000</span></div></div>
<p>以多个固定大小文件方式导入某张表</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">imp</span><span style="color: Gray;"> </span><span style="color: Blue;">dbuser</span><span style="color: Gray;">/</span><span style="color: Blue;">oracle</span><span style="color: Gray;">@</span><span style="color: Blue;">oradb</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">=\</span><span style="color: Olive;">(</span><span style="color: Maroon;">1.</span><span style="color: Blue;">dmp</span><span style="color: Gray;">,</span><span style="color: Maroon;">2.</span><span style="color: Blue;">dmp</span><span style="color: Gray;">,</span><span style="color: Maroon;">3.</span><span style="color: Blue;">dmp</span><span style="color: Gray;">,…\</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Blue;">filesize</span><span style="color: Gray;">=</span><span style="color: Maroon;">1000</span><span style="color: #00008b;">m</span><span style="color: Gray;"> </span><span style="color: Blue;">tables</span><span style="color: Gray;">=</span><span style="color: Blue;">emp</span><span style="color: Gray;"> </span><span style="color: Blue;">fromuser</span><span style="color: Gray;">=</span><span style="color: Blue;">dbuser</span><span style="color: Gray;"> </span><span style="color: Blue;">touser</span><span style="color: Gray;">=</span><span style="color: Blue;">dbuser2</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Gray;">=</span><span style="color: Maroon;">4096000</span><span style="color: Gray;"> </span><span style="color: Green;">commit</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Green;">ignore</span><span style="color: Gray;">=</span><span style="color: Blue;">y</span><span style="color: Gray;"> </span><span style="color: Blue;">feedback</span><span style="color: Gray;">=</span><span style="color: Maroon;">10000</span></div></div>
]]></content:encoded>
			<wfw:commentRss>http://leeawan.cn/2010/06/oracle_import_export/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>oracle解锁</title>
		<link>http://leeawan.cn/2010/04/oracle_lock/</link>
		<comments>http://leeawan.cn/2010/04/oracle_lock/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 11:57:16 +0000</pubDate>
		<dc:creator>leeawan</dc:creator>
				<category><![CDATA[Database]]></category>

		<guid isPermaLink="false">http://leeawan.cn/?p=253</guid>
		<description><![CDATA[1、查看数据库锁,诊断锁的来源及类型: select object_id,session_id,locked_mode from v$locked_object; 或者用以下命令： select b.owner,b.object_name,l.session_id,l.locked_mode from v$locked_object l, dba_objects b where b.object_id=l.object_id; 2、找出数据库的serial#,以备杀死: select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time; 3、杀死该session: alter system kill session 'sid,serial#']]></description>
			<content:encoded><![CDATA[<p class='fp'>1、查看数据库锁,诊断锁的来源及类型: </p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">object_id</span><span style="color: Gray;">,</span><span style="color: Blue;">session_id</span><span style="color: Gray;">,</span><span style="color: Blue;">locked_mode</span><span style="color: Gray;"> </span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">v</span><span style="color: Gray;">$</span><span style="color: Blue;">locked_object</span><span style="color: Gray;">;</span></div></div>
<p>或者用以下命令： </p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">owner</span><span style="color: Gray;">,</span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">object_name</span><span style="color: Gray;">,</span><span style="color: Blue;">l</span><span style="color: Gray;">.</span><span style="color: Blue;">session_id</span><span style="color: Gray;">,</span><span style="color: Blue;">l</span><span style="color: Gray;">.</span><span style="color: Blue;">locked_mode</span><span style="color: Gray;"> </span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">v</span><span style="color: Gray;">$</span><span style="color: Blue;">locked_object</span><span style="color: Gray;"> </span><span style="color: Blue;">l</span><span style="color: Gray;">, </span><span style="color: Blue;">dba_objects</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">object_id</span><span style="color: Gray;">=</span><span style="color: Blue;">l</span><span style="color: Gray;">.</span><span style="color: Blue;">object_id</span><span style="color: Gray;">;</span></div></div>
<p>2、找出数据库的serial#,以备杀死: </p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">t2</span><span style="color: Gray;">.</span><span style="color: Blue;">username</span><span style="color: Gray;">,</span><span style="color: Blue;">t2</span><span style="color: Gray;">.</span><span style="color: Blue;">sid</span><span style="color: Gray;">,</span><span style="color: Blue;">t2</span><span style="color: Gray;">.</span><span style="color: Blue;">serial</span><span style="color: #ffa500;">#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time;</span></div></div>
<p>3、杀死该session: </p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">alter</span><span style="color: Gray;"> </span><span style="color: #00008b;">system</span><span style="color: Gray;"> </span><span style="color: Blue;">kill</span><span style="color: Gray;"> </span><span style="color: Green;">session</span><span style="color: Gray;"> </span><span style="color: #8b0000;">'</span><span style="color: Red;">sid,serial#</span><span style="color: #8b0000;">'</span></div></div>
</p>]]></content:encoded>
			<wfw:commentRss>http://leeawan.cn/2010/04/oracle_lock/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

