- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Oracle 12c 作为数据库并使用以下方法获取表或其他对象的 ddl:-
dbms_metadata.get_ddl('TABLE','TABLE_NAME','SCHEMA_NAME');
与我正在使用的约束和引用约束相同:-
dbms_metadata.get_dependent_ddl('CONSTRAINT','TABLE_NAME','SCHEMA_NAME');
dbms_metadata.get_dependent_ddl('REF_CONSTRAINT','TABLE_NAME','SCHEMA_NAME');
现在我的问题是我想从表中提取分区脚本,我尝试了以下操作:-
从 dual 中选择 dbms_metadata.get_dependent_ddl('PARTITIONING','TABLE_NAME','SCHEMA_NAME');
但它给出了以下错误:-
ORA-31600: invalid input value PARTITIONING for parameter OBJECT_TYPE in function GET_DEPENDENT_DDL
ORA-06512: at "SYS.DBMS_METADATA", line 6069
ORA-06512: at "SYS.DBMS_METADATA", line 8761
ORA-06512: at line 1
31600. 00000 - "invalid input value %s for parameter %s in function %s"
*Cause: A NULL or invalid value was supplied for the parameter.
*Action: Correct the input value and try the call again.
我也试过:-
select dbms_metadata.get_ddl('PARTITION','PARTITION_NAME','SECONDARYUSER') from dual;
但它给出了同样的错误。
请建议我如何在 oracle 中使用 get_ddl 方法获取分区的 ddl。
最佳答案
分区是一个表选项,而不是一个单独的对象。默认情况下,表的 GET_DDL
应该生成分区信息。如果没有,则可能是您的 session 转换禁用了它。这两个语句肯定会生成一个包含所有分区选项的 DDL 脚本:
begin
dbms_metadata.set_transform_param(dbms_metadata.session_transform,'PARTITIONING',true);
end;
/
select dbms_metadata.get_ddl('TABLE','TABLE_NAME','SCHEMA_NAME') from dual;
如果您正在寻找一种方法来自动生成将表从非分区表转换为分区表的脚本,恐怕您就不走运了。尽管 12c 能够使用 ALTER TABLE
转换表,但 DBMS_METADATA_DIFF
包显然尚未更新以理解这些命令。
例如,如果您创建带分区和不带分区的同一张表,则此脚本不起作用:
select dbms_metadata_diff.compare_alter(object_type => 'TABLE', name1 => 'TABLE2', name2 => 'TABLE1') diffs from dual;
DIFFS
--------------------------------------------------------------
-- ORA-39266: Cannot alter unpartitioned table to partitioned.
ALTER TABLE "JHELLER"."TABLE2" RENAME TO "TABLE1"
幸运的是,在某些情况下,ALTER
语法看起来很简单。在我的简单示例中,我可以使用如下命令将表更改为分区:
alter table unpartitioned_table modify
[partitioning clause]
online;
关于oracle - 如何使用 get_ddl 获取分区脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57519740/
我正在开发一个用于获取 Oracle 数据库对象的 ddl 的应用程序。 使用以下查询获取数据库的对象 SELECT object_name, object_type FROM dba_object
我想为大多数数据库对象创建ddl脚本。 dbms_metadata.get_ddl适用于大多数对象类型。例如,以下为 View 创建ddl: select dbms_metadata.get_ddl
这是获取 DDL 或过程并使其美观的命令: EXEC DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM , 'PRET
我想得到表CARD_TABLE的DDL在 XT模式 SQL> select dbms_metadata.get_ddl('TABLE','CARD_TABLE','XT') from dual;
我正在使用 Oracle 12c 作为数据库并使用以下方法获取表或其他对象的 ddl:- dbms_metadata.get_ddl('TABLE','TABLE_NAME','SCHEMA_NAME
dbms_metadata.get_ddl()用于获取对象的DDL,其具体用法如下。 注意:在sqlplus里,为了更好的展示DDL,需要设置如下参数: 复制代码代码如下: set line
我正在尝试使用 JAVA 调用生成 DDL: DBMS_METADATA.GET_DDL; DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSIO
我想获取所有表的所有表定义。我想快速完成(这是我经常运行的脚本的一部分) 我使用的是 oracle 11g,我有 700 个表。在普通的 jdbc 代码上,它需要 4 分钟并执行以下操作: s = c
exec dbms_metadata.set_transform_param(DBMS_METADATA.SESSION_TRANSFORM, 'CONSTRAINTS_AS_ALTER', TRUE
我正在开发我们正在使用 get_ddl 创建表 ddl 的 Java 项目Oracle 12c 中的方法. 例如我的表名是 PARENT_EMP 和架构是 次要用户 然后我使用 get_ddl 方法。
我正在创建一个包来在我的模式中生成对象的 DDL(您解析对象名称,并使用 DDL 返回 clob),因此我可以生成文件,并将它们直接放入 SVN。 我正在使用 dbms_metadata.get_dd
我要 DDL s of Tables 以便我可以使用 UTL 将其放入数据库服务器Oracle 中的包。 问题是:当我们 select dbms_metadata.get_ddl('TABLE','T
(请原谅我的无知 - 我不是经验丰富的 Oracle 用户。) 我正在尝试使用 DBMS_METADATA.GET_DDL 函数(与 ALL_OBJECTS 或类似函数结合使用)来获取特定模式中所有表
这是我在这里发布的第一个问题,所以我希望格式是可以接受的。 我能够为我们所有的存储过程执行 get_ddl() 和 DESC PROCEDURE 但有些有一个空 body使用 describe 时,使
我正在寻找命令行或脚本化解决方案,以便从 SQL Server 2005+ 中为所有数据库对象提取 DDL:表、存储过程、 View 、索引/索引、约束等。GUI 工具不感兴趣。 优先选择内置工具,因
我们有一个很大的现有脚本,可以在我们的客户数据库(的克隆)中删除和重新创建表。我们的客户可能稍微更改了表或索引定义,因此我们的脚本尝试使用 dbms_metadata.get_ddl 的输出来重新创建
我是一名优秀的程序员,十分优秀!