大家好,我是猫奴.......不对,我是CodenJin。今天遇到程序员生涯第一次的删库事件。哈哈哈,我一点都不慌。(声明删库的人不是我,无论如何,好在表和数据都恢复了。)
我开始慌了,是不是我又做错了什么~为何会发生这件惨案呢?这是一个hibernate引发的血案。同事不小心做了这个操作,然后就炸了。
hibernate配置文件这里应该是用update,update表示对表结构修改。而create则是drop现有的表,再重新建表,所以这样一来数据就没了。
那么我是怎么恢复的呢?其实数据库是有个回收站的,准确来说,我是使用了闪回技术。(注:数据库类型的是oracle)做个简单科普,oracle10g中增强了闪回查询的功能,并且提供了将整个数据库回退到过去某个时刻的能力。更多详情,请问度娘。直接上图吧。
查询某一时间段闪回区数据查询所有从今天零点起drop的表,你们可以将sql查询条件编写更为精确,这里展示给大家看。(我偷懒了,哈哈哈。)接下来就是恢复操作,不逼逼上图。
恢复指定的表可惜的是,不能执行批量恢复操作。注意两个框内容要对应,ORIGINAL_NAME这一列就是你要恢复的表名,执行后你的表和数据就回来了。假如之前删掉的表被重新建了,执行这一步前请先把它drop掉。
希望本次分享,能帮助到大家,写的不好或是不正确,欢迎指正。同事也不用跑路了,哈哈。
网友评论