1

我需要对数据库进行一些结构更改(更改表、添加新列、更改一些行等),但我需要确保如果出现问题,我可以回滚到初始状态:

  • 所有需要的更改都在一个 SQL 脚本文件中。
  • 我没有对数据库的管理访问权限。
  • 我真的需要确保在服务器端完成备份,因为 BD 有超过 30 GB 的数据。
  • 我需要使用 sqlplus(在通过 vpn 的 ssh 专用会话下)
  • 它不可能使用“闪回数据库”!它已关闭,我无法停止数据库。

我真的很深$#$%吗?

任何想法如何使用 sqlplus 备份数据库并将备份留在数据库服务器上?

4

3 回答 3

5

比 exp/imp 更好,你应该使用 rman。它是专门为此目的而构建的,它可以进行热备份/恢复,如果你完全搞砸了,你仍然可以。

一个“问题”是您也必须备份 $ORACLE_HOME 目录(根据我的经验),因为您需要本地存储的信息来恢复控制文件。

在 google 上搜索 rman 在第一页上提供了一些非常好的信息。

于 2009-03-17T16:31:40.850 回答
2

另一种方法可能是创建一个包含修改后的结构和数据的新模式,并对其进行实际测试。这假设您的数据库服务器上有足够的空间来保存所有测试数据。在将更改转储到生产环境之前,您确实应该非常清楚您的更改将起作用。

我不会使用 sqlplus 来执行此操作。看看出口/进口。导出实用程序将获取数据库的定义和数据(可以在读取一致模式下完成)。导入实用程序将读取此文件并从中创建数据库结构。但是,访问这些实用程序确实需要授予权限,特别是如果您需要备份整个数据库,而不仅仅是一个模式。

也就是说,您需要在没有管理权限的情况下执行 DBA 的任务(更改表、备份数据库等),这有点令人不安。我想我至少会在开始之前寻求 DBA 的帮助来监督您的方法,如果不是坚持 DBA(或具有适当特权和知识的人)实际执行对数据库的修改并在必要时帮助恢复。

于 2009-03-17T16:20:31.393 回答
1

尝试通过 sqlplus 备份 30GB 的数据是很疯狂的,这需要几个小时才能完成,并且需要 3 到 5 倍的磁盘空间,并且如果不进行更多测试可能无法恢复。

您需要使用 exp 和 imp。这些是旨在备份和恢复数据库的命令行工具。它们是命令行工具,如果您可以通过 ssh 访问 sqlplus,则可以访问 imp/exp。您不需要管理员权限即可使用它们。他们将为您有权访问的用户转储数据库(以及所有表、触发器、视图、过程)。

于 2009-03-17T16:22:45.053 回答