针对drop column的情况,实际上12年前就测过(http://www.killdb.com/2012/02/25/column-to-remove-recovery-testing-and-dont-try/)。只不过之前是在Oracle 10gR2测试的,这里在11.2中测下,供大家参考!
drop column之前使用bbed查看一下block 数据
接下来进行drop column 操作。
drop column之后的block中实际数据和每行的偏移量,这里仍然通过bbed工具查看一下。
大家会发现对于drop column的情况来讲,Oracle本质上是将后面一个列的数据挪到了前面一个列。大家注意看前面2次操作的行头的偏移量,仔细看offset 8157 就会发现。 在drop column之前,8157 offset本来是我们这个表的object_type列数据,然而drop column之后,这个偏移量的数据变成了我们的object_id列了。
所以,你可以理解为是这个drop column的数据实际上被抹掉了。
当然如果你是drop的表中的最后一个列,那么不影响,可以恢复的。很明显,如果是中间列,就如上面测试,就没戏了。
如果说一定要想恢复怎么办?实际上你通过10046 trace跟着到一系列递归sql,然后反向执行,然后再向col$插入被删除的列数据,实际上是可以的,但是你仍然知识恢复了表结构,被drop column的数据是无法恢复的。
除了利用数据库备份、闪回等技术之外,那么如果有时候真的像删除这个列,是不是有更好的方法呢?
实际上是有的,你可以选择先把列进行unused操作(unsed column和drop column一样,都需要获得表级拍它锁),然后再空闲时间再进行drop操作,如果后面发现还需要,还有可恢复的余地。
我们可以看到,当表进行unused column操作之后,尽管这个表的列已经不属于这个表了,再被重用之前,实际上这个列的数据都存在,通过上面的bbed查看即可发现这一点。
c6.y..com/base/fcgi-bin/u?__=TM1LdgSmgvEk
c6.y..com/base/fcgi-bin/u?__=vagMmxSmgRgU
c6.y..com/base/fcgi-bin/u?__=kQcBmEomgC8A
c6.y..com/base/fcgi-bin/u?__=JONTWXomgvXP
c6.y..com/base/fcgi-bin/u?__=lub8hcvmgR8w
c6.y..com/base/fcgi-bin/u?__=c77mIUvmgek5
c6.y..com/base/fcgi-bin/u?__=qCmG1VvmgU7r
c6.y..com/base/fcgi-bin/u?__=U1CdsdRmg4vd
c6.y..com/base/fcgi-bin/u?__=dFKdYgRmgM3T
c6.y..com/base/fcgi-bin/u?__=YKLSCXL3g9ph
c6.y..com/base/fcgi-bin/u?__=YKLSCXL3g9ph
c6.y..com/base/fcgi-bin/u?__=1oDmfyQ3g7pS
c6.y..com/base/fcgi-bin/u?__=3lNqdoQ3gUA5
c6.y..com/base/fcgi-bin/u?__=U7OEF8Q3gtS5
c6.y..com/base/fcgi-bin/u?__=hKsWzfp3gip2
c6.y..com/base/fcgi-bin/u?__=DB6jI3p3gjfM
c6.y..com/base/fcgi-bin/u?__=xVoQNTp3gEIX
c6.y..com/base/fcgi-bin/u?__=lpSj9Rp3g5kX
c6.y..com/base/fcgi-bin/u?__=LzUOC9p3gotf
c6.y..com/base/fcgi-bin/u?__=zfh2Ilp3gpXd
c6.y..com/base/fcgi-bin/u?__=lDUbD1Y3gsOK
c6.y..com/base/fcgi-bin/u?__=2MeAKNY3gsbF
c6.y..com/base/fcgi-bin/u?__=dhSnrsY3g3cp
c6.y..com/base/fcgi-bin/u?__=X805nAY3gjSB
c6.y..com/base/fcgi-bin/u?__=5GijfTY3gslo
c6.y..com/base/fcgi-bin/u?__=qG2zc9Y3gAWW
c6.y..com/base/fcgi-bin/u?__=EwHyycu3gHrX
c6.y..com/base/fcgi-bin/u?__=RD0raYu3gWHf
c6.y..com/base/fcgi-bin/u?__=mJJMpPu3gN9q
c6.y..com/base/fcgi-bin/u?__=QrBpaTu3gNoB
到此这篇sql ldr(sqlldr导入时跳过一列)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/sqlbc/42741.html