--Tables
SELECT table_name, owner, Tablespace_name, Num_Rows
FROM all_tables WHERE tablespace_name is not NULL
AND owner not in ('SYS', 'SYSTEM')
ORDER BY owner, table_name;
--Columns
SELECT OWNER, TABLE_NAME, Column_name, Data_type, data_length, data_precision, NULLABLE, character_Set_Name
From all_tab_cols
where USER_GENERATED = 'YES'
AND owner not in ('SYS', 'SYSTEM');
--Indexes
select Owner, index_name, table_name, uniqueness,BLEVEL,STATUS from ALL_INDEXES
WHERE owner not in ('SYS', 'SYSTEM')
--Constraints
select owner, constraint_name, constraint_type, table_name, search_condition, status, index_name, index_owner
From all_constraints
WHERE generated = 'USER NAME'
AND owner not in ('SYS', 'SYSTEM')
--Role Previleges
select grantee, granted_role, admin_option, delegate_option, default_role, common
From DBA_ROLE_PRIVS
--Sys Privileges
select grantee, privilege, admin_option, common
From DBA_SYS_PRIVS
3条答案
按热度按时间aemubtdh1#
我做了类似的事情。我通过OPENQUERY语句直接从Oracle数据库中读取SQL Server中的内容,并将结果保存到SQL Server表中,以允许分析历史比较模式信息和更改。
因此,你必须对以下查询的结果集做的是以某种方式存储它们(常规),并向其添加某种唯一/主键或时间戳,以便区分不同的扫描。
抛开SQL Server特定的代码,这些是我到目前为止使用的基本Oracle SQL查询:
a14dhokn2#
你可以这样开始:
这将对所有创建表的DDL进行逆向工程,但不会给予当前的表/列统计信息。
一些工具(例如Oracle的Data Modeler/ SQL Developer)允许你将它们指向一个数据库,它会将数据库模型逆向工程到一个图表中,这将是一个很好的开始表之间的关系的地方。
j2cgzkjk3#
MongoDB支持JSON文档,所以解决这个问题的最好方法是将数据库元数据提取到JSON文档中。您可以使用SchemaCrawler将数据库元数据提取为JSON。
Sualeh Fatehi,SchemaCrawler