意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

【Oracle】存储过程 Drop后闪回恢复

来源:佚名 编辑:佚名
2023-12-05 23:18:59

文中使用的Oracle版本为10g。

flashback教程又来了,这次flashback的是误操作删除的存储过程。

本操作需要在获得DBA账号权限的前提下进行操作,只要执行如下脚本:


【Oracle】存储过程 Drop后闪回恢复

select text
from dba_source as of timestamp to_timestamp('<time>', 'YYYY-MM-DD HH24:MI:SS')
where owner = '<tablespace>' and name = '<procedures_name>'
order by line;

这条语句共需传入3个参数,一个是时间,这个时间一般来说是被删除的确切时间。第二个是表空间,有了表空间才知道存储过程的拥有者是谁,最后是存储过程的名称,这个好理解如果连删除掉的存储过程名称都不知道那还查个鬼。

最后需要根据行序号(line)进行自然排序,为什么还需要排序呢?

因为查询出来的内容虽然说是存储过程,但是是一个数据集来的。可以简单理解成原本存储过程的每一行在这里会形成一行记录,同时会被记录行数。将所有内容都导出到命令窗口中进行再执行即可恢复存储过程。

这样就很有意思了,从这里可以推测出Oracle数据库在存储未知容量的数据时也是通过切割存储的方式来存储的,这种方式会形成一张虚拟的纵表,纵表内容可以超出一般字段类型的容量大小。这为后面我们做大数据量存储提供了思路。

本网站发布或转载的文章均来自网络,其原创性以及文中表达的观点和判断不代表本网站。
上一篇: mysql直接拷贝data目录下数据库源文件还原数据库方法 下一篇: MySql 常用sql语句