2016-11-15 45 views
-1

我想对我的数据库执行性能测试。 可以简单地测量每个事务的时间,然后执行回滚(将数据库恢复到与事务不会被执行完全相同的状态)吗? 或者我应该创建一个还原点,并在每次交易后使用它? 当谈到这第二种方法时,我遵循本教程: http://www.oracle.com/technetwork/issue-archive/2006/06-nov/o66recovery-098482.html 恢复数据库后不幸,我无法再次连接到它。我收到的错误是ORA-01033。我等了大约15分钟,但仍然无法登录。测试性能 - 回退vs恢复点

tl; dr 我可以在每次执行事务后使用回滚功能将数据库返回到先前的状态而不是使用还原点吗?

预先感谢您。

回答

0

rollback是您可以在单个事务范围内执行的操作 - 如果您有未提交的事务,它将回滚到最后的状态commit/rollback

另一方面,还原点在模式/整个数据库级别上运行在另一个级别上。它允许您在特定时间点(例如特定的SCN)中设置还原点,然后基本上可以回到这一点。自恢复点“时刻”以来,对数据的任何更改都将丢失。

这是一个用于测试数据库升级的好工具 - 您可以在“稳定”时间点设置还原点,然后根据需要执行尽可能多的测试,而无需手动还原所有的更改已经制成。您可以随时回到“安全”还原点。

+0

感谢您的回答,但我知道回滚和还原点的作用。问题是 - 如果我只对一个已执行的事务使用回滚,它就等于恢复数据库? – monterinio

+0

它是不一样的 - 当你执行回滚时,你正在使用回滚段,并与数据库SGA和块进行物理交互(高水印受到影响,创建的范围不会被销毁,缓冲区缓存被“污染”那些块等)。据我所知 - 还原点是一个很“清洁”的选择,但显然需要一些额外的工作和时间。 – golosovsky