将ddl部署为声明性xml状态

将ddl部署为声明性xml状态,xml,oracle,deployment,ddl,Xml,Oracle,Deployment,Ddl,我正在使用Oracle数据库,你们中的许多人在部署DDL语句时都遇到同样的问题,因为它们不是声明性的 我正在寻找一种工具,将表结构/序列/约束/索引作为XML文件从一个实例导出,并将其导入另一个实例。此外,我希望导入是智能的,我的意思是,如果导入表和现有表之间的区别是在模式中添加了一个新列,则执行“ALTERTABLEADDCOLUMN”。如果更改了列类型,则会执行“ALTERTABLE modify”,创建缺少的表/约束/索引等 通过这种方式,我可以以声明方式对数据库状态进行版本设置,并将此类

我正在使用Oracle数据库,你们中的许多人在部署DDL语句时都遇到同样的问题,因为它们不是声明性的

我正在寻找一种工具,将表结构/序列/约束/索引作为XML文件从一个实例导出,并将其导入另一个实例。此外,我希望导入是智能的,我的意思是,如果导入表和现有表之间的区别是在模式中添加了一个新列,则执行“ALTERTABLEADDCOLUMN”。如果更改了列类型,则会执行“ALTERTABLE modify”,创建缺少的表/约束/索引等

通过这种方式,我可以以声明方式对数据库状态进行版本设置,并将此类XML存储在版本控制系统中

目前,我不寻找查找表内容,只寻找结构


有什么建议吗?

据我所知,目前还没有这样的建议

拥有表的XML表示形式的第一个要求相对简单

create table my_table (col1 varchar2(10),col2 number(5,3), col3 DATE);
Table MY_TABLE created.

set pagesize 500
set long 10000
select SYS.dbms_metadata.get_sxml('TABLE','MY_TABLE') from dual;
SYS.DBMS_METADATA.GET_SXML('TABLE','MY_TABLE')) -------------------------------------------------------------------------------- 米欧帕尔 我的桌子 可乐 瓦查尔2 10 可乐 数 5. 3. 可乐 日期 10 40 1. 使用者 Y N 至于将其转换为三角形,作为读者的练习p

但说真的。。选项是将此XML传递到目标数据库上的脚本/过程。这将进行比较,生成delta和eiterh输出返回给用户,或者通过
dbms\u sql/execute immediate


抱歉,如果我没有提供更多帮助

是否有需要临时XML文件的原因?与SQL脚本相反?几乎任何PL/SQLIDE(TOAD、SQLDeveloper等)都能够连接到两个不同的数据库,并通过生成适当的DDL语句来生成使一个数据库看起来像另一个数据库所需的DDL。不过,实现原始更改的开发人员通常会将其原始脚本检入源代码管理,而不是对每个更改进行反向工程,因为这样可以更清楚地了解您指定的内容和默认设置。是的,@JustinCave,我们已经尝试过这种技术,但它仍然可以将DDL更改脚本保存到源代码管理中。我想要的是保存状态和一个将实例从一个状态移动到另一个状态的算法,就像我们存储包状态一样。我还希望将该XML包含到我的补丁中,以便在生产实例上进行处理。我真的很想将表作为包进行操作。 SYS.DBMS_METADATA.GET_SXML('TABLE','MY_TABLE') -------------------------------------------------------------------------------- <TABLE xmlns="http://xmlns.oracle.com/ku" version="1.0"> <SCHEMA>MI_PAR</SCHEMA> <NAME>MY_TABLE</NAME> <RELATIONAL_TABLE> <COL_LIST> <COL_LIST_ITEM> <NAME>COL1</NAME> <DATATYPE>VARCHAR2</DATATYPE> <LENGTH>10</LENGTH> </COL_LIST_ITEM> <COL_LIST_ITEM> <NAME>COL2</NAME> <DATATYPE>NUMBER</DATATYPE> <PRECISION>5</PRECISION> <SCALE>3</SCALE> </COL_LIST_ITEM> <COL_LIST_ITEM> <NAME>COL3</NAME> <DATATYPE>DATE</DATATYPE> </COL_LIST_ITEM> </COL_LIST> <PHYSICAL_PROPERTIES> <HEAP_TABLE> <SEGMENT_ATTRIBUTES> <SEGMENT_CREATION_DEFERRED></SEGMENT_CREATION_DEFERRED> <PCTFREE>10</PCTFREE> <PCTUSED>40</PCTUSED> <INITRANS>1</INITRANS> <TABLESPACE>USERS</TABLESPACE> <LOGGING>Y</LOGGING> </SEGMENT_ATTRIBUTES> <COMPRESS>N</COMPRESS> </HEAP_TABLE> </PHYSICAL_PROPERTIES> </RELATIONAL_TABLE> </TABLE>