系统升级后一项功能不正常,同事想看一下升级前的存储过程。首先想到的是闪回功能,不幸的是闪回遇到了ORA-01555错误。
SELECT * FROM DBA_TRIGGERS AS OF TIMESTAMP TO_TIMESTAMP('2014-06-19 05:25:00', 'yyyy-mm-dd hh24:mi:ss')
WHERE OWNER = '×××' AND TRIGGER_NAME = 'TRI_INS_FEEDBACK';
还好有每天用expdp产生的元数据备份。
元备份的优点是备份速度比较快,占用的空间比较小。缺点是没有数据。
之前的元数据备份一直没有用上,这次总算用上了,否则光是拷贝巨大的备份到测试环境上就需要很长的时间。
这次利用oracle中impdp的功能将数据库的元数据恢复到了指定的SQL文件中。从sql文件中找了需要的触发器。
从开发提出需求到找到相应的触发器只用了将近10分钟的时间。
用oracle数据泵的导入命令impdp中的sqlfile功能,实现了不导入数据文件到数据库,而将DDL语句导出到指定文件的功能。
impdp testuser/testbj directory=DPUMPDIR dumpfile=metadata_2014-06-18_01.DMP sqlfile=meta_expdp.sql ENCRYPTION_PASSWORD=PassWord
将DDL语句导入到sql文件后,我们就可以通过编辑器搜索导出的文件,从而找到我们需要的内容。