【问题标题】:Moving triggers and sequences from one schema to another将触发器和序列从一个模式移动到另一个模式
【发布时间】:2019-01-25 13:28:30
【问题描述】:

我的问题包括需要将触发器从一个架构移动/复制到另一个架构。问题之一是我无法创建从 schema1 到 schema2 的视图,为了解决这个问题,我想将所有视图移到一个大架构中。

但似乎不会出现触发器和序列。也许我需要准备一个文件来创建所有触发器和序列,并确保序列将使用旧模式中的最后一个数字进行更新..

【问题讨论】:

  • 我建议总是准备好脚本文件! (如果需要紧急启动新服务器,以防万一。)
  • 或者您可以使用 SQL Developer 之类的工具,该工具具有复制大量对象的功能
  • @jarlh 该脚本文件应该包含什么?也许你有一个模板示例?
  • 所有creategrant 等都需要重新创建您的数据库管理系统。
  • " 我无法创建从 schema1 到 schema2 的视图" 为什么不呢?一个模式很容易将其对象的权限授予另一个模式。

标签: sql database oracle oracle11g


【解决方案1】:

“其中一个问题是我无法创建从 schema1 到 schema2 的视图”

一种可能的解决方案是将所有内容保留在原处,并授予创建所需视图所需的权限。

grant select on schema1.table to schema2;

create schema2.view as select * from schema1.table;

【讨论】:

  • 我真诚地希望这是解决方案。比将两个模式合并为一个要好得多。
  • 在执行 S1000(1749)[Oracle][ODBC][Ora]ORA-01749 期间出现错误:您无法授予/撤销您自己的权限。
  • 您需要连接到schema1才能授予schema2权限。
【解决方案2】:

可以尝试生成 DDL 并通过以下方式将其放入文件中:

declare
cl clob;

begin
--(optional) for rec in (select * from all_views) loop

SELECT DBMS_METADATA.get_ddl ('VIEW', VIEW_NAME, VIEW_OWNER)
into   cl
from   dual;
dbms_output.put_line( cl);
end;

【讨论】:

  • 嗯,问题是OP一开始就无法创建视图,所以没有DDL可以提取。这是他们想要改变的其他一切。
猜你喜欢
  • 2011-08-20
  • 2022-07-26
  • 2011-04-28
  • 2021-01-13
  • 1970-01-01
  • 2018-08-08
  • 2015-09-04
  • 1970-01-01
  • 2019-07-18
相关资源
最近更新 更多