首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于将整个Oracle DB导出为SQL脚本的任何工具

用于将整个Oracle DB导出为SQL脚本的任何工具
EN

Stack Overflow用户
提问于 2010-06-28 14:54:21
回答 4查看 4.7K关注 0票数 8

这就是我的问题,我想在我们的开发数据库(Oracle 10g)上创建一个基线,并签入我们的svn以进行版本控制,然后我们将使用liquibase来帮助我们管理增量数据库更改。

我的问题是我应该如何创建Oracle 10g的基准?数据库现在由具有大量配置数据的SQL表组成,我希望我的数据库基线基于一组500+脚本,以便检入subversion,而不是检入Oracle dump。

我试过使用liquibase,但它有一些性能问题。是否有人可以向我推荐任何对我有帮助的工具1.扫描任何Oracle Schema 2.生成一组SQL脚本(包含表结构和数据)..

提前感谢

詹姆斯!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-28 17:49:38

就像这样

代码语言:javascript
复制
SELECT DBMS_METADATA.GET_DDL('TABLE',table_name) FROM USER_TABLES;

是一个很好的开始。您可以使用PL/SQL和UTL_FILE对其进行调整,使其将每个表写入不同的文件。您可能还需要编写序列(尽管对它们进行版本控制是相当无意义的),可能还需要编写触发器/过程/函数/包等。

别忘了授权。

票数 4
EN

Stack Overflow用户

发布于 2014-04-03 07:31:03

更一般的解决方案是为选定的表列表转储DDL sql,但另外也转储其他类型的对象。这可以通过使用all_objects和all_users视图来完成。

为我工作的例子

代码语言:javascript
复制
select dbms_metadata.GET_DDL(u.object_type,u.object_name, u.owner)
from  all_objects u
where 1=1
-- filter only selected object types
and u.object_type in ('TABLE', 'INDEX', 'FUNCTION', 'PROCEDURE', 'VIEW', 
                      'TYPE', 'TRIGGER', 'SEQUENCE')
-- don't want system objects, generated, temp, invalid etc.
and u.object_name not like 'SYS_%'
and temporary!='Y'
and generated!='Y'
and status!='INVALID'
and u.object_name not like 'TMP_%'
and u.object_name not like '%$%'

-- if you want to filter only changed from some date/timestamp:
-- and u.last_ddl_time > '2014-04-02'

-- filter by owner
and owner in (
  select username from dba_USERS where DEFAULT_TABLESPACE not like 'SYS%' 
  and username not in ('ORACLE_OCM')
  and username not like '%$%'
  )
;

我写了一个python脚本,它基于类似的sql以增量模式刷新数据库模式:

  • 使用last_ddl_time>=max(从上次刷新开始的last_ddl_time )运行sql
  • 在末尾将last_ddl_time存储在文件系统中的某个位置,以便下次刷新

参考文献:

function

  • oracle
  1. dbms_metadata.GET_DDL oracle all_objects
票数 3
EN

Stack Overflow用户

发布于 2010-06-28 15:25:41

你有没有试过甲骨文的免费SQLDeveloper工具?它为您提供了导出DDL和数据的可能性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3130574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档