Oracle 数据库元数据查询管理 - 示例
在 Oracle 数据库中,可以使用数据字典视图来查询用户、数据库、模式、表、表结构、视图等数据库对象的元数据信息。以下是一些常用的查询示例:
查询用户信息
查询所有用户:
1
SELECT * FROM DBA_USERS;
查询当前用户:
1
SELECT USER FROM DUAL;
查询用户的默认表空间:
1
SELECT DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE FROM DBA_USERS WHERE USERNAME = 'YOUR_USERNAME';
查询数据库信息
查询数据库版本:
1
SELECT * FROM V$VERSION;
查询数据库实例名:
1
SELECT INSTANCE_NAME FROM V$INSTANCE;
查询数据库参数:
1
SELECT * FROM V$PARAMETER;
查询模式信息
查询所有模式:
1
2
3
4
5
6
7
8
9SELECT * FROM DBA_USERS;
SELECT * FROM DBA_USERS WHERE USERNAME NOT IN (
'SYS','SYSTEM','DBSNMP','NEW_USER','OUTLN','MGMT_VIEW',
'FLOWS_FILES','MDSYS','ORDSYS','EXFSYS','WMSYS','APPQOSSYS','APEX_030200',
'OWBSYS_AUDIT','ORDDATA','CTXSYS','ANONYMOUS','SYSMAN','XDB','ORDPLUGINS',
'OWBSYS','SI_INFORMTN_SCHEMA','OLAPSYS','SCOTT','ORACLE_OCM','XS$NULL','MDDATA',
'DIP','APEX_PUBLIC_USER','SPATIAL_CSW_ADMIN_USR','SPATIAL_WFS_ADMIN_USR'
);查询当前用户的模式:
1
SELECT USERNAME AS SCHEMA_NAME FROM USER_USERS;
查询表信息
查询所有表:
1
SELECT * FROM DBA_TABLES;
查询当前用户的表:
1
SELECT * FROM USER_TABLES;
查询特定用户的表:
1
SELECT * FROM ALL_TABLES WHERE OWNER = 'YOUR_SCHEMA_NAME';
查询表结构
查询表的所有列:
1
SELECT * FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = 'YOUR_TABLE_NAME' AND OWNER = 'YOUR_SCHEMA_NAME';
查询表的主键:
1
2
3
4SELECT * FROM ALL_CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'P'
AND TABLE_NAME = 'YOUR_TABLE_NAME'
AND OWNER = 'YOUR_SCHEMA_NAME';查询表的外键:
1
2
3
4SELECT * FROM ALL_CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'R'
AND TABLE_NAME = 'YOUR_TABLE_NAME'
AND OWNER = 'YOUR_SCHEMA_NAME';查询表的索引:
1
2
3SELECT * FROM ALL_INDEXES
WHERE TABLE_NAME = 'YOUR_TABLE_NAME'
AND OWNER = 'YOUR_SCHEMA_NAME';查询表的触发器:
1
2
3SELECT * FROM ALL_TRIGGERS
WHERE TABLE_NAME = 'YOUR_TABLE_NAME'
AND OWNER = 'YOUR_SCHEMA_NAME';
查询视图信息
查询所有视图:
1
SELECT * FROM DBA_VIEWS;
查询当前用户的视图:
1
SELECT * FROM USER_VIEWS;
查询特定用户的视图:
1
SELECT * FROM ALL_VIEWS WHERE OWNER = 'YOUR_SCHEMA_NAME';
查询视图的定义:
1
SELECT TEXT FROM ALL_VIEWS WHERE VIEW_NAME = 'YOUR_VIEW_NAME' AND OWNER = 'YOUR_SCHEMA_NAME';
查询其他数据库对象
查询序列:
1
SELECT * FROM ALL_SEQUENCES WHERE SEQUENCE_OWNER = 'YOUR_SCHEMA_NAME';
查询存储过程和函数:
1
SELECT * FROM ALL_PROCEDURES WHERE OWNER = 'YOUR_SCHEMA_NAME';
查询包:
1
SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE' AND OWNER = 'YOUR_SCHEMA_NAME';
查询同义词:
1
SELECT * FROM ALL_SYNONYMS WHERE OWNER = 'YOUR_SCHEMA_NAME';
获取 DDL 语句
获取表的 DDL 语句:
1
SELECT DBMS_METADATA.GET_DDL('TABLE', 'YOUR_TABLE_NAME', 'YOUR_SCHEMA_NAME') FROM DUAL;
获取视图的 DDL 语句:
1
SELECT DBMS_METADATA.GET_DDL('VIEW', 'YOUR_VIEW_NAME', 'YOUR_SCHEMA_NAME') FROM DUAL;
获取存储过程或函数的 DDL 语句:
1
SELECT DBMS_METADATA.GET_DDL('PROCEDURE', 'YOUR_PROCEDURE_NAME', 'YOUR_SCHEMA_NAME') FROM DUAL;
通过这些查询,你可以获取到关于用户、数据库、模式、表、表结构、视图以及其他数据库对象的详细元数据信息。根据你的具体需求,可以选择合适的查询来获取所需的信息。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 思学!
评论
GiscusGitalk







