<?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; 非常规恢复</title>
	<atom:link href="https://www.xifenfei.com/tag/%e9%9d%9e%e5%b8%b8%e8%a7%84%e6%81%a2%e5%a4%8d/feed" rel="self" type="application/rss+xml" />
	<link>https://www.xifenfei.com</link>
	<description>提供7*24专业数据库(Oracle,SQL Server,MySQL,PostgreSQL等)恢复和技术支持@Tel:17813235971</description>
	<lastBuildDate>Thu, 29 Oct 2026 15:31:46 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>使用DUL挖数据文件恢复非数据外对象方法</title>
		<link>https://www.xifenfei.com/2014/01/%e4%bd%bf%e7%94%a8dul%e6%8c%96%e6%95%b0%e6%8d%ae%e6%96%87%e4%bb%b6%e6%81%a2%e5%a4%8d%e9%9d%9e%e6%95%b0%e6%8d%ae%e5%a4%96%e5%af%b9%e8%b1%a1%e6%96%b9%e6%b3%95.html</link>
		<comments>https://www.xifenfei.com/2014/01/%e4%bd%bf%e7%94%a8dul%e6%8c%96%e6%95%b0%e6%8d%ae%e6%96%87%e4%bb%b6%e6%81%a2%e5%a4%8d%e9%9d%9e%e6%95%b0%e6%8d%ae%e5%a4%96%e5%af%b9%e8%b1%a1%e6%96%b9%e6%b3%95.html#comments</comments>
		<pubDate>Sat, 18 Jan 2014 12:55:05 +0000</pubDate>
		<dc:creator><![CDATA[惜分飞]]></dc:creator>
				<category><![CDATA[非常规恢复]]></category>
		<category><![CDATA[dul]]></category>
		<category><![CDATA[dul恢复plsql]]></category>
		<category><![CDATA[Oracle 恢复]]></category>
		<category><![CDATA[ORACLE恢复]]></category>
		<category><![CDATA[ORACLE数据库恢复]]></category>

		<guid isPermaLink="false">https://www.xifenfei.com/?p=5077</guid>
		<description><![CDATA[联系：手机/微信(+86 17813235971) QQ(107644445)  &#8230; <a href="https://www.xifenfei.com/2014/01/%e4%bd%bf%e7%94%a8dul%e6%8c%96%e6%95%b0%e6%8d%ae%e6%96%87%e4%bb%b6%e6%81%a2%e5%a4%8d%e9%9d%9e%e6%95%b0%e6%8d%ae%e5%a4%96%e5%af%b9%e8%b1%a1%e6%96%b9%e6%b3%95.html">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<div id="xifenfeicopyright">
<p>联系：<a href="https://www.xifenfei.com/about_xifenfei" target="_blank">手机/微信(+86 17813235971)   QQ(107644445)</a><a target="_blank" href="http://wpa.qq.com/msgrd?v=3&#038;uin=107644445&#038;site=qq&#038;menu=yes"><img src="https://www.xifenfei.com/wp-content/themes/img/site_qq.jpg" alt="QQ咨询惜分飞" title="QQ咨询惜分飞"/></a></p>
<p>标题：<a href="https://www.xifenfei.com/2014/01/%e4%bd%bf%e7%94%a8dul%e6%8c%96%e6%95%b0%e6%8d%ae%e6%96%87%e4%bb%b6%e6%81%a2%e5%a4%8d%e9%9d%9e%e6%95%b0%e6%8d%ae%e5%a4%96%e5%af%b9%e8%b1%a1%e6%96%b9%e6%b3%95.html" target="_blank">使用DUL挖数据文件恢复非数据外对象方法</a></p>
<p>作者：<a href="https://www.xifenfei.com" target="_blank">惜分飞</a>©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]</p>
</div>
<p>在dul进行数据库挖掘恢复的时候，我们可以通过unload table/user等方式来恢复表数据，但是对于一些view,index,trigger,source,seq,Dblink等不能直接通过unload来实现,但是可以通过挖基表来实现相关操作,这里提供了一些处理思路,在实际操作中根据需求,分析数据字典灵活应用<br />
<strong>一．view</strong><br />
导出对象</p>
<pre class="brush: bash; title: ; notranslate">
USER$
OBJ$
COL$
VIEW$
</pre>
<p>执行sql语句</p>
<pre class="brush: sql; title: ; notranslate">
Set pages 10000
Set long 1000
Spool d:\create_view.sql
select 
  'CREATE OR REPLACE VIEW '||O.NAME||' ('||
   replace(c.cols,',',','||chr(10))||')'||CHR(10)||
  'as'||chr(10), v.text
from
user$ u, obj$ o, view$ v,
( SELECT COL.OBJ#, COL.COLS
  FROM
  (SELECT 
    OBJ#, COL#, substr(SYS_CONNECT_BY_PATH(NAME,','),2) COLS
  FROM COL$
  WHERE COL# &gt; 0
  START WITH COL# = 1
  CONNECT BY PRIOR OBJ# = OBJ# AND PRIOR COL# = COL# - 1 ) COL,
  (SELECT OBJ#, COUNT(*) COLCNT FROM COL$ 
  WHERE COL# &gt; 0 GROUP BY OBJ#) CN
  WHERE COL.OBJ# = CN.OBJ# AND COL.COL# = CN.COLCNT
) C
where u.user#=o.owner# and o.obj# = c.obj#
  and v.obj# = o.obj# and u.name=upper('&amp;username');
</pre>
<p>说明<br />
1）	分布执行，不能放置一个脚本文件中执行<br />
2）	每条as后面的select语句可能需要重新格式化<br />
3）	Create view 语句最后需要增加”;”<br />
<br />
<strong>二．source </strong><br />
导出对象</p>
<pre class="brush: bash; title: ; notranslate">
USER$
SOURCE$
OBJ$</pre>
<p>执行sql语句</p>
<pre class="brush: sql; title: ; notranslate">
Set pages 10000
Set long 1000
set linse 1000
Spool d:\create_source.sql
SELECT DECODE(S.LINE,1,'CREATE OR REPLACE ','')||SOURCE SOURCE
FROM 
  USER$ U, OBJ$  O, SOURCE$ S
WHERE 
  U.USER# = O.OWNER# AND 
  O.OBJ# = S.OBJ# AND
  U.NAME = UPPER('&amp;username')
  -- AND O.NAME = UPPER('&amp;SOURCE_NAME')
ORDER BY S.OBJ#, S.LINE;</pre>
<p>说明<br />
1）	注意SOURCE中的用户名,如果导入不是相同用户,需要修改该脚本用户名<br />
2）	修改完用户名后,直接执行生成脚本即可<br />
<br />
<strong>三．Index</strong><br />
导出对象</p>
<pre class="brush: bash; title: ; notranslate">
USER$
OBJ$
COL$
IND$
ICOL$
</pre>
<p>执行sql</p>
<pre class="brush: sql; title: ; notranslate">
Set pages 10000
Set long 1000
set linse 1000
Spool d:\create_index.sql
SELECT 
  'CREATE '||decode(bitand(IDX.property, 1), 1, 'UNIQUE', '')||
  ' INDEX '||I.NAME||' ON '||T.NAME||'('||IDX.PATH||');' INDEX_DDL
FROM 
  USER$ U, OBJ$  T, OBJ$ I, 
  (
    select I.PROPERTY, I.BO#, I.OBJ#, C.POS#,
            SUBSTR(sys_connect_by_path(CN.NAME,','),2) path
    from IND$ I, ICOL$ C, COL$ CN
    WHERE I.OBJ# = C.OBJ# AND I.BO# = C.BO#
      AND I.BO# = CN.OBJ# AND C.COL# = CN.INTCOL#
    start with C.POS#=1 
    connect by PRIOR I.OBJ# = I.OBJ# 
            AND prior C.POS# = C.POS# - 1 ) IDX,
  (SELECT I.BO#, I.OBJ#, COUNT(*) COLCNT 
    FROM ICOL$ I GROUP BY I.BO#, I.OBJ#) IDXC
WHERE 
  U.USER# = T.OWNER# AND 
  IDX.BO# = T.OBJ# AND
  IDX.OBJ# = I.OBJ# AND
  IDX.BO# =  IDXC.BO# AND
  IDX.OBJ# = IDXC.OBJ# AND
  IDX.POS# = IDXC.COLCNT AND
  U.NAME = upper('&amp;username')
ORDER BY T.NAME, I.NAME;
</pre>
<p>说明<br />
1）	因为SYS_CONNECT_BY_PATH所以需要10g及其以上版本<br />
2）	SQL中没有分区唯一性索引<br />
3）	注意检查sql是否因为行长度不够导致异常<br />
<br />
<strong>四．Sequence</strong><br />
导出对象</p>
<pre class="brush: bash; title: ; notranslate">USER$
OBJ$
SEQ$</pre>
<p>执行sql语句</p>
<pre class="brush: sql; title: ; notranslate">
Set pages 10000
Set long 1000
set linse 1000
Spool d:\create_sequence.sql
SELECT 
  'CREATE SEQUENCE '|| SEQ_NAME || 
  ' MINVALUE '||minval ||
  ' MAXVALUE '||MAXVAL ||
  ' START WITH '||LASTVAL ||
  ' ' || CYC || ' ' || ORD ||
  DECODE(SIGN(CACHE), 1,' CACHE '|| CACHE, 'NOCACHE') ||
  ';' SEQ_DDL
from
  (select u.name OWNER, o.name SEQ_NAME,
      s.minvalue MINVAL, s.maxvalue MAXVAL, 
      s.increment$ INC,
      decode (s.cycle#, 0, 'NOCYCLE', 1, 'CYCLE ') CYC,
      decode (s.order$, 0, 'NOORDER', 1, 'ORDER') ORD,
      s.cache, s.highwater LASTVAL
  from seq$ s, obj$ o, user$ u
  where u.user# = o.owner#
    and o.obj# = s.obj# 
and u.name=upper('&amp;username'));
</pre>
<p><strong>五．TRIGGER</strong><br />
导出对象</p>
<pre class="brush: bash; title: ; notranslate">
OBJ$
USER$
TRIGGER$
</pre>
<p>执行sql语句</p>
<pre class="brush: sql; title: ; notranslate">
Set pages 10000
Set long 1000
set linse 1000
Spool d:\create_trigger.sql
select
   'CREATE OR REPLACE TRIGGER '|| trigger_name || chr(10)||
   decode( substr( trigger_type, 1, 1 ), 
           'A', 'AFTER ', 'B', 'BEFORE ', 'I', 
           'INSTEAD OF ' ) ||
   triggering_event || ' ON ' || table_owner || '.' ||
   table_name || chr(10) || REF_CLAUSE || chr(10) ||
   decode( instr( trigger_type, 'EACH ROW' ), 0, null,
           'FOR EACH ROW' ), trigger_body
from  (
   select trigusr.name owner, trigobj.name trigger_name,
      decode(t.type#, 0, 'BEFORE STATEMENT',
           1, 'BEFORE EACH ROW',   2, 'AFTER STATEMENT',
           3, 'AFTER EACH ROW',    4, 'INSTEAD OF',
           'UNDEFINED') trigger_type,
   decode(t.insert$*100 + t.update$*10 + t.delete$,
           100, 'INSERT', 010, 'UPDATE', 001, 'DELETE',
           110, 'INSERT OR UPDATE', 101, 'INSERT OR DELETE',
           011, 'UPDATE OR DELETE',
           111, 'INSERT OR UPDATE OR DELETE', 
           'ERROR') triggering_event,
   tabusr.name table_owner, tabobj.name table_name, 
   'REFERENCING NEW AS '||t.refnewname||' OLD AS '||t.refoldname REF_CLAUSE,
   t.whenclause,decode(t.enabled, 0, 'DISABLED', 1, 'ENABLED', 'ERROR') STATUS,
   t.definition , t.action# trigger_body
   from obj$ trigobj, obj$ tabobj, trigger$ t,
        user$ tabusr, user$ trigusr
   where (trigobj.obj#   = t.obj# and
       tabobj.obj#    = t.baseobject and
       tabobj.owner#  = tabusr.user# and
       trigobj.owner# = trigusr.user# and
       bitand(t.property, 63)     &lt; 8 ))
where table_owner=upper('&amp;username')
order by owner, trigger_name;
</pre>
<p><strong>六. Dblink</strong><br />
导出对象</p>
<pre class="brush: bash; title: ; notranslate">
Sys.link$
sys.user$
</pre>
<p>执行查询sql</p>
<pre class="brush: sql; title: ; notranslate">
SELECT 'CREATE '||DECODE(U.NAME,'PUBLIC','public ')||'DATABASE LINK '||CHR(10)
||DECODE(U.NAME,'PUBLIC',Null, 'SYS','',U.NAME||'.')|| L.NAME||chr(10)
||'CONNECT TO ' || L.USERID || ' IDENTIFIED BY &quot;'||L.PASSWORD||'&quot; USING
'''||L.HOST||''''
||chr(10)||';' TEXT
FROM SYS.LINK$ L, SYS.USER$ U
WHERE L.OWNER# = U.USER#;
</pre>
<div id="crp_related"><ul><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2012/02/odu%e6%81%a2%e5%a4%8dpackageviewdblink%e7%ad%89%e6%95%b0%e6%8d%ae%e8%84%9a%e6%9c%ac%e6%93%8d%e4%bd%9c.html" rel="bookmark" class="crp_title">ODU恢复PACKAGE/VIEW/DBLINK等数据脚本操作</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2011/12/dbms_scheduler%e5%b8%b8%e8%a7%84%e6%93%8d%e4%bd%9c.html" rel="bookmark" class="crp_title">DBMS_SCHEDULER常规操作</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2011/08/%e7%9b%91%e6%8e%a7index%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a1%b9.html" rel="bookmark" class="crp_title">监控Index注意事项</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2012/03/%e9%80%9a%e8%bf%87%e4%bf%ae%e6%94%b9%e5%9f%ba%e8%a1%a8link%e8%ae%a9%e9%9d%9epublic-dblink%e5%8f%98%e4%b8%bapublic.html" rel="bookmark" class="crp_title">通过修改基表(link$)让非public dblink变为public</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2011/12/vpwfile_users%e5%92%8c%e5%af%86%e7%a0%81%e6%96%87%e4%bb%b6%e5%85%b3%e7%b3%bb%e7%bb%ad.html" rel="bookmark" class="crp_title">V$PWFILE_USERS和密码文件关系(续)</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2011/11/%e6%b7%b1%e5%85%a5%e5%88%86%e6%9e%90%e6%95%b0%e6%8d%ae%e5%ba%93%e7%89%88%e6%9c%ac%e7%9b%b8%e5%85%b3%e8%a7%86%e5%9b%be.html" rel="bookmark" class="crp_title">深入分析数据库版本相关视图</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2013/11/%e8%af%81%e6%98%8e%e9%80%92%e5%bd%92session%e5%ad%98%e5%9c%a8%e5%b9%b6%e8%a7%a3%e9%87%8a%e4%b8%ba%e4%bb%80%e4%b9%88%e4%b8%8d%e5%9c%a8vsession%e4%b8%ad%e6%98%be%e7%a4%ba.html" rel="bookmark" class="crp_title">证明递归session存在并解释为什么不在v$session中显示</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2013/06/%e9%80%9a%e8%bf%87%e5%9f%ba%e8%a1%a8%e8%8e%b7%e5%8f%96segment-header-block.html" rel="bookmark" class="crp_title">通过基表获取segment header block</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2016/02/exp%e8%b7%b3%e8%bf%87%e6%9f%90%e4%ba%9b%e8%a1%a8%e5%af%bc%e5%87%ba%e6%95%b0%e6%8d%ae.html" rel="bookmark" class="crp_title">exp跳过某些表导出数据</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2011/11/%e6%b8%85%e7%a9%baschema%e4%b8%ad%e6%89%80%e6%9c%89%e8%a1%a8%e7%9a%84comment%e4%bf%a1%e6%81%af.html" rel="bookmark" class="crp_title">清空schema中所有表的comment信息</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2015/06/postgresql%e7%ae%80%e5%8d%95%e6%93%8d%e4%bd%9c%e4%b9%8b-%e5%88%9b%e5%bb%ba%e5%ba%93%e7%99%bb%e5%bd%95ddldmlhelp%e7%99%bb%e5%87%ba.html" rel="bookmark" class="crp_title">PostgreSQL简单操作之&#8212;创建库,登录,ddl,dml,help,登出,删除库</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2015/05/%e9%80%9a%e8%bf%87with%e5%ae%9e%e7%8e%b0%e5%af%b9%e8%a1%a8%e9%9d%9e%e6%b3%95dml%e6%93%8d%e4%bd%9c-%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88.html" rel="bookmark" class="crp_title">通过with实现对表非法dml操作&#8212;解决方案_with_subquery=materialize或者psu(2014.07以后)</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>https://www.xifenfei.com/2014/01/%e4%bd%bf%e7%94%a8dul%e6%8c%96%e6%95%b0%e6%8d%ae%e6%96%87%e4%bb%b6%e6%81%a2%e5%a4%8d%e9%9d%9e%e6%95%b0%e6%8d%ae%e5%a4%96%e5%af%b9%e8%b1%a1%e6%96%b9%e6%b3%95.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
