一、获取据库对象(Oracle、达梦)
- ALL_OBJECTS 表
- 数据库所有对象表:包括表、视图、物化视图、函数……等
-- 查询所有对象
SELECT * from ALL_OBJECTS
-- 筛选条件 - OWENR:哪个数据库。- OBJECT_TYPE 类型:
SELECT OBJECT_NAME,OBJECT_TYPE from ALL_OBJECTS
WHERE OWNER = 'MIDDLE' AND OBJECT_TYPE = 'MATERIALIZED VIEW'
类型(OBJECT_TYPE)
- oracle的ALL_OBJECTS中的OBJECT_TYPE表示:
TABLE
:表示表,这是用于存储和管理数据库中数据的主要结构。VIEW
:表示视图,它是一个虚拟表,基于一个或多个表的列的查询结果生成。PROCEDURE
:表示存储过程,它是一组预编译的SQL语句,用于执行特定的操作或逻辑。SEQUENCE
:表示序列,它是一个数据库对象,用于生成唯一的序列号。INDEX
:表示索引,它可以帮助提高查询的性能,通过创建单独的表来存储查询中使用的列的值。MATERIALIZED VIEW
:表示物化视图,它是基于一个或多个表的查询结果预先计算并存储的视图。JAVA SOURCE
:表示Java源代码,这是存储在数据库中的Java类或接口的源代码。JAVA CLASS
:表示Java类,这是编译后的Java类,存储在数据库中。JAVA RESOURCE
:表示Java资源,这可以是任何类型的资源,如属性文件、文本文件等。JAVA DATA
:表示Java数据对象,这是存储在数据库中的Java对象。XML TABLE
:表示XML表,这是将XML文档作为表进行存储和处理的方式。TYPE
:表示自定义类型,这是用户定义的数据类型。PACKAGE
:表示包,这是用于封装和组织相关过程和类型的逻辑单元。JAVA RESOURCE
:表示Java资源,这可以是从文件中导入的任何类型的资源。DATA FILE
:表示数据文件,这是存储数据库数据的物理文件。
- 达梦的ALL_OBJECTS中的OBJECT_TYPE表示:
TABLE
:表示表,这是用于存储和管理数据库中数据的主要结构。VIEW
:表示视图,它是一个虚拟表,基于一个或多个表的列的查询结果生成。PROCEDURE
:表示存储过程,它是一组预编译的SQL语句,用于执行特定的操作或逻辑。FUNCTION
:表示函数,它是一组可调用的代码块,用于执行特定的操作或计算结果。SEQUENCE
:表示序列,它是一个数据库对象,用于生成唯一的序列号。INDEX
:表示索引,它可以帮助提高查询的性能,通过创建单独的表来存储查询中使用的列的值。MATERIALIZED VIEW
:表示物化视图,它是基于一个或多个表的查询结果预先计算并存储的视图。PACKAGE
:表示包,这是用于封装和组织相关过程和类型的逻辑单元。TYPE
:表示自定义类型,这是用户定义的数据类型。
二、获取对象的DDL-数据定义语言(达梦)
- 语法:SELECT dbms_metadata.get_ddl('对象类型','对象名称') FROM DUAL
- 对象类型见:类型(OBJECT_TYPE)达梦
-- 获取DDL语句(根据不同类型)
SELECT dbms_metadata.get_ddl('MATERIALIZED_VIEW','WH_LOG') FROM DUAL
-- 获取DDL-物化视图日志
SELECT dbms_metadata.get_ddl('TABLE','MLOG$_Z_ZZX') FROM DUAL
-- 获取DDL-物化视图
SELECT dbms_metadata.get_ddl('MATERIALIZED_VIEW','CS_COMMIT_COMPLETE') FROM DUAL
SELECT dbms_metadata.get_ddl('MATERIALIZED_VIEW_LOG','MLOG$_Z_ZZX') FROM DUAL
-- 获取DDL-视图
SELECT dbms_metadata.get_ddl('VIEW','V1') FROM DUAL
三、Oracle查询物化视图
- 也可以使用《一》中的ALL_OBJECTS进行查询
-- 整个数据库的物化视图
select * from DBA_MVIEWS where OWNER = 'MIDDLE'
-- 当前用户的物化视图
SELECT * FROM USER_MVIEWS WHERE MVIEW_NAME = 'V2'
-- 创建物化日志
create materialized view log on "Z_ZZX" with rowid, sequence (ID_CPM_JH, CODE) including new values;
-- 查询物化视图的日志
select * from MLOG$_Z_ZZX
-- 查询物化视图日志表
SELECT * from ALL_OBJECTS WHERE OWNER = 'MIDDLE' and OBJECT_NAME LIKE '%MLOG$%'
-- 查询物化视图
SELECT * from ALL_OBJECTS
WHERE OWNER = 'MIDDLE' AND OBJECT_TYPE = 'MATERIALIZED VIEW'
-- 查询物化视图需要的表
select REFERENCED_NAME from ALL_DEPENDENCIES WHERE OWNER = 'MIDDLE' AND TYPE = 'MATERIALIZED VIEW' AND NAME = 'WH_LOG' AND REFERENCED_NAME <> 'WH_LOG'
-- 连表查询物化视图以及使用到的表
SELECT * FROM user_mviews um left join SYS.ALL_DEPENDENCIES ad on ad.NAME = um.MVIEW_NAME WHERE ad.OWNER = 'MIDDLE' AND ad.TYPE = 'MATERIALIZED VIEW' AND ad.NAME = 'WH_LOG' AND ad.REFERENCED_NAME <> 'WH_LOG'
标签:--,定义语言,视图,查询,获取,DDL,TYPE,SELECT,VIEW
From: https://www.cnblogs.com/kakarotto-chen/p/17843198.html