我想问一下从sqlplus提取oracle ER图(ERD)。我有一个条件,我必须从我的vps(这个oracle数据库在另一个服务器上)访问oracle数据库。我需要使用VPS,因为使用VPS时,它将提供一个将用于Oracle数据库服务器授予对数据库访问权限的域。我知道生成ER图是从oracle sql developer。但用我目前的vps,它只提供CLI。不幸的SQL开发人员使用GUI,所以我不能使用它。那么如何从oracle数据库witohout使用sql开发人员提取ER图并且此解决方案不得使用GUI的应用程序。用sqlplus提取oracle数据库erd
0
A
回答
0
您可以生成一个纯文本文件,其中包含每个表的说明,将此文件从远程计算机下载到本地计算机,然后将内容加载到ERD工具(如Oracle DataModeler)中。
常见的脚本获取表的说明(包括你的目标,外键约束)是:
set heading off;
set echo off;
Set pages 1000;
set long 50000;
SET linesize 150;
spool My_ddl.sql;
select DBMS_METADATA.GET_DDL('TABLE','<your table 1>','<schema>') from DUAL;
select DBMS_METADATA.GET_DDL('TABLE','<your table 2>','<schema>') from DUAL;
select DBMS_METADATA.GET_DDL('TABLE','<your table 3>','<schema>') from DUAL;
.
.
.
spool off;
所以基本上你还是要使用GUI工具来构建你的图表,但诀窍在于你如何获得你的源脚本。
如果你担心如何为所有万台的get_ddl
指令,不要害怕,因为你可以运行以下命令:
SELECT 'SELECT DBMS_METADATA.GET_DDL(''TABLE'','''||table_name||''', ''<LOCAL/FOREIGN SCHEMA>'') FROM dual;' as get_ddls
FROM all_tables
WHERE owner = '<User of the foreign schema where tables are stored>';
,然后只是复制粘贴的结果,前面的脚本。
为了检索文件生成的服务器端,除非您有办法直接访问服务器目录/文件,否则您总是可以询问(当然,恳求)您的DBA将它交给您。
祝你好运。
相关问题
- 1. Oracle数据库sqlplus的问题
- 2. 填充数据库在oracle(sqlplus)
- 3. 无法通过服务名称用sqlplus连接Oracle数据库
- 4. 从Oracle数据库提取数据不起作用
- 5. sqlplus中的Oracle 12c默认可插拔数据库
- 6. 有困难从Oracle数据库中提取数据,JavaBean和JSP
- 7. Python,Oracle数据库,列中的XML数据,提取cx_Oracle.Object
- 8. 使用CodeIgniter从Oracle数据库中提取随机行Active Record
- 9. Oracle:使用sqlplus设置NLS_PARAMETERS
- 10. Oracle,描述用户recyclebin,SQLPLUS
- 11. Advantage Database ERD,来自现有数据库。
- 12. 数据库图表(ERD)最终表格
- 13. 数据库设计 - ERD。建模问题
- 14. 数据库ERD - 结表(一到多)
- 15. 无法从ERD创建数据库
- 16. 为此示例数据库绘制ERD
- 17. 数据库设计/ ERD - 测验引擎
- 18. SQL数据库,ERD,乌鸦脚记法,
- 19. 数据库设计/ ERD图验证
- 20. 连接SQLPLUS在Oracle
- 21. 我不能用sqlplus(权限不足)在Oracle中创建数据库视图
- 22. Android数据库提取数据库值
- 23. 如何获取现有数据库的ERD图表?
- 24. SessionFactory的Hibernate不提交Oracle数据库
- 25. 拦截从Oracle数据提供者到数据库的调用
- 26. 数据库oracle
- 27. 数据库Oracle
- 28. Oracle EBS r12 - 建模数据库中没有FK约束的ERD ....变换脚本?
- 29. Oracle数据库读取查询的性能提升
- 30. SQL提取XML的Clob导致Oracle 10g数据库,以冻结
谢谢你的答案先生。我真的赞赏它。但先生,我只是有一个没有sys特权的用户,用户是否需要特权来运行此查询?我有另一个条件,我不知道我的用户帐户授予访问的表是什么。我只想得到一个表,我的用户帐户可以访问它。它可能只get_ddl只有我的用户帐户授予的表? 顺便说一句,感谢战利品,我真的帮助你的答案。 –
格里您好,很高兴我能帮到您。您需要一个特殊的权限'SELECT_CATALOG_ROLE'才能运行'get_ddl'查询,但只有当表的模式不同于您的模式时,在这种情况下,您还需要在'get_ddl'函数中引用特定的模式。我修改了我的答案,以便您可以看到此更改。 –
再次感谢先生。你的回答真的解决了我的问题,谢谢你帮助我,我希望我能在未来和你一样好哈哈。再来一次。非常感谢 –