问题标签 [dbms-metadata]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
154 浏览

database - DBMS_METADATA:使用触发器获取表 SXML

我想使用这个简单的函数读取表的 SXML 表示:

当我使用“ SELECT get_table_sxml('TABLENAME') FROM dual ”选择生成的 XML 时,我得到了完整的 xml 表示,包括约束和引用约束。

但是,输出中缺少与此表关联的触发器。

谁能给我一个提示我必须做什么才能将触发器放入输出xml?

生成的 XML 应该用于另一个数据库来比较表并使用 DBMS_METADATA 包构建差异脚本。所以我需要使用“sxml”格式。

0 投票
2 回答
204 浏览

sql - Oracle 12c 以一种奇怪的方式解释 SQL(Inner Query)

我们最近将 Oracle 数据库从 10g 迁移到 12c (12.1.0.1.0)。在考虑了一些查询的问题后,我们决定进一步清理数据库并删除所有不需要的对象。
因此,我编写了一个查询,在数据库 DDL 中搜索要显示的特定文本,其中使用了特定的视图或函数。

这会导致以下异常:

发生异常是因为我们的数据库中有“Body Type”对象,并且它们不提供带有DBMS_METADATA.GET_DDL(). 运行下面的查询会产生与初始查询完全相同的异常。

所以,我尝试创建一个内部列表,首先通过重写我的查询将所有用户对象的列表减少到我真正关心的时间:

有趣的是,它带来了与上面所示相同的异常。我不明白为什么会这样。

我希望 Oracle 首先创建内部列表并DBMS_METADATA.GET_DLL()仅使用剩余值使用该函数,因为相同的值将导致异常。为什么甲骨文在这里做其他事情?

为了解决这个特定问题,我必须ORDER BY在内部查询中添加一个对我来说看起来很愚蠢的东西。为什么我必须强制 Oracle 首先使用ORDER BY?

提前感谢您对为什么会发生这种情况的任何解释?- 我记得,后面的查询在 Oracle 10g 上运行没有任何问题。
(我担心在其他进行计算的报告上会出现相同的行为,这可能会因为这种行为而出错!)。

0 投票
2 回答
9604 浏览

oracle - 如何使 dbms_metadata.get_ddl 更漂亮/更有用

我正在创建一个包以在我的模式中生成对象的 DDL(您解析对象名称,并返回clob带有 DDL 的),因此我可以生成文件,并将它们直接放入 SVN。

我正在使用dbms_metadata.get_ddl,它适用于除表/物化视图之外的所有对象。

如果我创建一个表:

并使用以下命令生成 DDL:

它给了我们:

要获取所有相关索引,我们可以使用:

具有:

我想创建一个文件,其中包含:创建表、约束、索引、授权(拥有一个包含所有需要定义的文件)并使用dbms_metadata它看起来对我来说是不可能的。

我的输出问题是:

  1. 名字的双引号

  2. DDL 中的模式名称使我们难以跨多个模式编译相同的 DDL。要解决这个问题,我们需要创建一些 for 的正则表达式或添加如下内容可以解决这个问题:

    但是您必须再添加 8 行:

    /li>
  3. 无法同时提取约束(使用索引)和索引。由于重复定义,您无法连接输出ui_test。是的,可以选择删除约束,get_ddl但我们正在失去约束/检查。

  4. PL/SQL Developer 如何创建输出

    /li>

有人知道创建类似于 PL/SQL Developer 的输出的方法吗?我猜他们创建了一些 XML 解析器dbms_metadata.get_xml来创建一个更漂亮的版本(缩进,顺序,一切都很好,准备好在任何地方编译)。

当然我可以玩正则表达式,user_indexes但这不是重点。

附言。DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'PRETTY',true);什么是“漂亮”是一个奇怪的定义。

0 投票
1 回答
560 浏览

java - 使用标识使 DBMS_METADATA.GET_DDL 漂亮

我正在尝试使用 JAVA 调用生成 DDL:

它工作正常,但它给了我类似的东西:

我想要类似的东西:

0 投票
2 回答
7271 浏览

oracle - 在 oracle 中为索引获取完整的 ddl

我正在使用 oracle 11g/12c。我想在我的数据库中获取索引的 ddl。为此,我使用了查询 -

这里 'SYS_IL0000091971C00001$$' 是我的索引名称,而 'CCEEXPERTS' 是我的所有者名称。

从这里我得到了 ddl -

而我实际的 ddl 是 -

在 "CCEEXPERTS"."DATABLOB" ( 之后的实际 ddl 中,下一行字符和它们的 ddl 被截断。

如何获得完整的 ddl?请帮我...

提前致谢。

0 投票
2 回答
1694 浏览

oracle - oracle ORA-31603 即使当 sysdba

我通过 sqlplus 与 sys 作为 sysdba 连接到 oracle 数据库 11.2.0.4 企业版。如果我运行查询:

我得到错误错误

如果我运行,我也会遇到类似的错误

如果我查询DBA_OBJECTSor DBA_SOURCE,则 TYPE 类型的对象就在那里。

即使我在 SYS 模式中查询其他 TYPE 类型对象,我也会收到这些错误,但并非所有 TYPE 类型对象都会给我这个问题。

0 投票
1 回答
850 浏览

sql - 在预建表上获取物化视图的 DDL - 获取单行子查询

我在同名的预建表上有一个物化视图。当尝试使用DBMS_METADATA.GET_DDL()获取物化视图的 DDL 时,我得到ORA-01427: single-row subquery returns more than one row from inside DBMS_METADATA。这是一个最小的例子:

直接分配给 PL/SQL 中的变量以及在 PL/SQL 中使用 SQL 时会发生同样的错误。

这不是特别理想...我假设发生错误是因为表和物化视图具有相同的名称并且GET_DDL()将多行返回到我的 SELECT 中。

我只想要一行 - 物化视图的行。我在对GET_DDL(). 我不想返回表的 DDL。

进一步的几点:

我怎样才能获得物化视图的 DDL。

0 投票
1 回答
50 浏览

sql - 如何获取整个数据库中某列使用的函数名?

我有一个名为 employee_vw 的视图,其中包含以下查询:

我想找出列上应用了哪些函数。我尝试使用select dbms_metadata.get_ddl('COLUMN','ENAME','HR') FROM DUAL,但没有看到列对象类型。

我的要求是能够列出应用于整个数据库中指定列的所有函数。有什么办法可以找出来吗?

提前致谢。

0 投票
1 回答
541 浏览

oracle - 如何在 PlSql 中获取准确的表定义

ESU_1 是源表

我使用 ESU_1 创建了一个表 ESU_2

当我使用下面的查询来获取表定义时

我得到了这个 o/p

但我想要确切的表定义

我怎样才能得到这个?

0 投票
0 回答
155 浏览

oracle - 如何将 DBMS_METADATA Oracle 转换为 Postgres?

如何将用于在 oracle 中提交 XML 数据的 DBMS_METADATA 过程和函数转换为 postgresql

例如 :