Oracle:在实时数据库上添加、重命名和删除列

发布于 2024-10-06 05:53:43 字数 64 浏览 5 评论 0原文

在实时运行的 Oracle 数据库上哪些操作是允许的,哪些是不允许的?具体来说,在添加、删除和重命名列时如何处理?

What operations are permitted and not permitted on a live, running Oracle database? Specifically, how is this handled when adding, dropping, and renaming columns?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

jJeQQOZ5 2024-10-13 05:53:43

您可以在正在运行的实例上进行几乎所有类似的更改。当然,我不建议对系统中的用户执行此操作。

也就是说,Oracle 11.2 有一个杀手级新功能,称为 EBR(基于版本的重新定义)。可以将其视为能够“提交”和“回滚”DDL 更改。这可能会有用,具体取决于具体情况。

You can make almost all changes like this on a running instance. Of course I wouldn't recommend doing this with USERS in the system.

That said, Oracle 11.2 has a killer new feature called EBR, Edition-Based-Redefinition. Think of it like being able to "commit" and "rollback" DDL changes. That might be useful, depending upon circumstance.

黑白记忆 2024-10-13 05:53:43

在线更改(即当其他会话处于活动状态时)可以使用 DBMS_REDEFINITION此处描述、此处此处),但这是企业版 功能

Online changes (ie while other sessions are active) can be done using DBMS_REDEFINITION (described here, here and here) but that is an Enterprise Edition feature

Saygoodbye 2024-10-13 05:53:43

您可以毫无问题地添加、删除和重命名列。

注意事项,

添加具有默认值的列会强制数据库对现有行发出更新语句。在大桌子上要小心,否则负载会激增。

重命名列可能会破坏您的应用程序。为此做好计划,但除此之外你应该没问题。还要意识到,除非您正确计划,否则您将为尝试访问该列的查询生成错误。

You can add, drop, and rename columns without issue.

Caveats,

adding a column with a default value forces the database to issue an update statement for existing rows. Be careful on large tables or the load will spike.

rename a column can break your app. Plan for this but otherwise you should be fine. Also realize that you will be generating errors for queries that try to access the column unless you plan things properly.

合久必婚 2024-10-13 05:53:43

你可以做这些事情。如果数据库找到不允许更改的原因,您将收到一个漂亮的令人讨厌的图表,其中包含很酷的错误代码,您可以检查下一步需要做什么。

如果没有其他用户运行查询或没有作业在后台运行,那么您遇到的麻烦就会减少。

you can do those things. if the database finds a reason to disallow the change, you will get a nice nastygram with a cool error code you can check for what you need to do next.

you will have less trouble if there are no other users runnign queries or no jobs running in the background tc.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文