用sqlplus提取oracle数据库erd
extract oracle database erd with sqlplus
我想问一下如何从 sqlplus 中提取 oracle ER 图 (ERD)。我有一个条件,我必须从我的 vps(另一个服务器上的这个 oracle 数据库)访问 oracle 数据库。我需要使用 vps 因为使用 vps 它将提供一个域,该域将用于 oracle 数据库服务器授予对其数据库的访问权限。我所知道的生成 ER 图的方法来自 oracle sql Developer。但是对于我当前的 vps,它仅提供 CLI。不幸的是 sql 开发人员使用 GUI,所以我不能使用它。那么我如何在不使用 sql 开发人员的情况下从 oracle 数据库中提取 ER 图,并且此解决方案不能使用带有 GUI 的应用程序。
您可以生成包含每个 table 描述的纯文本文件,将此文件从远程计算机下载到本地计算机,然后将内容加载到 ERD 工具(如 Oracle DataModeler)中。
获取table描述(包括您的目标、外键约束)的常用脚本是:
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 工具来构建您的图表,但诀窍在于您如何获取源脚本。
如果您担心如何为所有 10,000 个 table 生成 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 将其交给您,除非您有办法直接访问服务器 directories/files .
祝你好运。
我想问一下如何从 sqlplus 中提取 oracle ER 图 (ERD)。我有一个条件,我必须从我的 vps(另一个服务器上的这个 oracle 数据库)访问 oracle 数据库。我需要使用 vps 因为使用 vps 它将提供一个域,该域将用于 oracle 数据库服务器授予对其数据库的访问权限。我所知道的生成 ER 图的方法来自 oracle sql Developer。但是对于我当前的 vps,它仅提供 CLI。不幸的是 sql 开发人员使用 GUI,所以我不能使用它。那么我如何在不使用 sql 开发人员的情况下从 oracle 数据库中提取 ER 图,并且此解决方案不能使用带有 GUI 的应用程序。
您可以生成包含每个 table 描述的纯文本文件,将此文件从远程计算机下载到本地计算机,然后将内容加载到 ERD 工具(如 Oracle DataModeler)中。
获取table描述(包括您的目标、外键约束)的常用脚本是:
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 工具来构建您的图表,但诀窍在于您如何获取源脚本。
如果您担心如何为所有 10,000 个 table 生成 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 将其交给您,除非您有办法直接访问服务器 directories/files .
祝你好运。