oracle数据字典

简介: 一、数据字典   数据字典是oracle存放有关数据库信息的地方,几乎所有的系统信息和对象信息都可在数据字典中进行查询。数据字典是oracle数据库系统的信息核心,它是一组提供有关数据库信息的表和视图的集合,这些表和视图是只读的。

一、数据字典
  数据字典是oracle存放有关数据库信息的地方,几乎所有的系统信息和对象信息都可在数据字典中进行查询。数据字典是oracle数据库系统的信息核心,它是一组提供有关数据库信息的表和视图的集合,这些表和视图是只读的。它是随着数据库的建立而建立的,当数据库执行特定动作时数据字典也会自动更新。数据一览与数据字典来记录、校验和管理正在进行的操作。
oracle中、sys用户是数据字典的拥有者,数据字典保证在所有数据库的系统表空间system内,任何用户都无权更改sys模式下的模式对象或数据字典中的行。也就是说数据字典只能查询,不能手动进行修改。

  数据字典用途
  oracle通过存取数据字典从而比较方便地获取有关用户某事对象和存储结构等信息。当系统执行了DDL语句后,oracle会及时修改数据字典。任何用户只能以读的形式使用数据字典获取数据库信息。

数据字典存储的信息

  • 数据用户的名称
  • 为用户授予的权限和角色
  • 模式对象的名称,如 tables,views,indexex,procedures,functions,packages,triggers等。
  • 完整性约束的具体信息;
  • 每个字段的默认值;
  • 数据库空间的使用情况;
  • 审计功能,在Oracle_Home\productdb_l\rdbms\admin目录下的文件cataudit.sql就是用于为审计创建数据字典视图的脚步。
  • 对象与用户的严格管理(适用于高度机密管理);
  • 其他一般数据库信息。

  三种前缀的数据字典视图
  user_ :任何用户都可以读取的视图,每个用户读取的都不一样,它只提供当前用户某事下的对象信息。如查询当前模式下的所有对象select object_name, object_type from user_objects;

  all_ :所有用户都可读取的用户视图,它提供与用户有关的对象信息。如查询当前用户可访问的所有对象
select owner, object_name, object_type from all_objects;
  dba_:提供了只有数据库管理员才可读取的视图,包括所有用户视图中的对象信息。如select owner, object_name, object_type from sys.dba_objects;

二、数据字典相关查询

  1、 查询用户

select username from dba_users; -- 只有管理员权限的用户才能查询

select username from all_users; -- 当前或任何用户都可使用

-- 查看当前用户的默认表空间
select username, default_tablespace from user_users;

--当前用户角色
select * from user_role_privs;

-- 当前用户的系统权限和表级权限
select * from user_sys_privs;
select * from user_tab_privs;

   2、查询 表空间 (拥有DBA权限的用户才能查询)

select * from dba_data_files;
select * from dba_tablespaces; --表空间

select tablespace_name, sum(bytes), sum(blocks) from dba_free_space group by tablespace_name; --空闲表空间

select * from dba_data_files where tablespace_name='USERS'; -- 表空间对于的数据文件

select * from dba_segments where tablespace_name='USERS';
--查询用户模式对象所使用过的正在使用空间大小
select name, type, source_size, code_size from user_object_size;

  3、查询数据库对象(拥有DBA权限的用户才能查询)

select * from dba_objects
select * from dba_objects where object_type = upper('package body');

select * from dba_objects where OBJECT_TYPE='TABLE' and OWNER='SCOTT'

  可根据拥有者查询下列对象类型(object_type)

  cluster    databaselink
  function   index
  library   package
  package body   procedure
  sequence   synonym
  table   trigger
  type   undefined
  view
  4、查询表

--表使用的extent的信息。segment_type='ROLLBACK'

select * from dba_tables;
select extent_id, bytes from dba_extents where segment_name='CUSTOMERS' and segment_type='TABLE' order by extent_id;

--    查看回滚段的空间分配信息列信息 SELECT * FROM user_tab_columns;
select distinct table_name from user_tab_columns where column_name='ID';

-- 查看当前用户下所有的表
select * from user_tables;
--查看名称包含log字符的表
select object_name, object_id from user_objects where instr(object_name, 'LOG') > 0;
-- 查看某表的创建时间
select object_name, created from user_objects where object_name = upper('&table_name');
-- 查看某表的大小
select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name = upper('&table_name');
-- 查看放在oracle的内存的表
select table_name, cache from user_tables where instr(cache, 'Y') > 0;

  5、查询索引

select * from dba_indexes; -- 索引,包括主键索引

select * from all_indexes;
select * from dba_ind_columns; -- 索引列

select i.index_name, i.uniqueness, c.column_name from user_indexes i, user_ind_columns c where i.index_name=c.index_name and i.table_name = 'PERSON'; --连接使用

-- 查看索引个数和类别
select index_name, index_type, table_name from user_indexes order by table_name;
-- 查看索引被索引的字段
select * from user_ind_columns where index_name=upper('&index_name');
-- 查看索引的大小
select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name = upper('&index_name');

  6、查询序列

select * from dba_sequences;
select * from all_sequences;

查看序列号,last_number是当前值
select * from user_sequences;

  7、查询视图

select * from dba_views;
select * from all_views;

可用目录desc all_views;来查看视图结构
其中,Text列可用于查询视图生产的脚本。

--查询当前用户视图的名称
select view_name from user_views;

--查询创建视图的select语句
select view_name, text_length from user_views;
set long 2000;

--可以根据视图的text_length 值设定set long的大小
select text from user_views where view_name = upper('&view_name');

  8、查询聚簇

select * from dba_clusters;

  9、查询快照

select * from dba_snapshots;

  快照、分区应存在相对应的表空间

  10、查询同义词

select * from dba_synonyms where table_owner='SCOTT';
select * from ALL_synonyms where table_owner='SYSTEM';

  如果用户表可以被访问,那么同义词也可以被访问,用户表不能被访问,则同义词也不能被访问。

  11、查询数据库链

select * from dba_db_links;

   12、查询触发器(12)

select * from dba_triggers;

存储过程,函数从dba_objects查找

查询文本
select text from user_source where name = 'PRO_PERSON_FINDBYID';

oracle总是将存储过程,函数放在system表空间。

  13、查看函数和过程的状态

select object_name, status from user_objects where object_type='FUNCTION';
select object_name, status from user_objects where object_type='PROCEDURE';

--查看源代码
select * from all_source where owner='WUXX' and name=upper('&plsql_name');

  14、查询约束

约束是和表关联的,可以在create table或alter table table_name add/drop/modify 来建立、修改、删除约束。
可以临时禁止约束,如:
alter table book_example
disable constraint book_example_l;
数据完整性约束

select constraint_name, constraint_type, table_name from dba_constraints;

  15、查询回滚段
在所有的修改结果存入磁盘前,回滚段中保持恢复该事务所需的全部信息,必须以数据库发送的事务来相应确定其大小。(DML语句才可回滚,create, drop, truncate等DDL不能回滚)
回滚段数量=并发事务/4,但不能超过50个;是每个回滚段大小足够处理一个完整的事物;

create rollback segment r05 tablespace rbs;
create rollback segment rbs_cvt tablespace rbs storage(initial 1M next 500k);

  16、查询作业

select job, broken, next_date, interval, what from user_jobs;
select job, broken, next_date, interval, what from dba_jobs;

--正在运行的作业
select * from dba_jobs_running;

使用包exec dbms_job.sumit(:v_num, 'a;', sysdate, 'sysdate +(10/(24*60*60))');加入作业。间隔10秒

使用包exec dbms_job.sumit(:v_num, 'a;', sysdate, 'sysdate +(10/(24*60))');加入作业。间隔11分
使用表exec dbms_job.remove(21)删除21号作业。

其他信息查询
查询优化模式对象使用过的或正在使用的空间大小

select name, type, source_size, code_size from user_object_size;

查询字段的默认值

select table_name, column_name, data_default, low_value, hight_value from dba_tab_columns;
目录
相关文章
|
7天前
|
SQL Oracle 关系型数据库
不小心删除表或数据后,如何利用Oracle的闪回进行恢复
不小心删除表或数据后,如何利用Oracle的闪回进行恢复
|
7天前
|
DataWorks Oracle 关系型数据库
DataWorks操作报错合集之尝试从Oracle数据库同步数据到TDSQL的PG版本,并遇到了与RAW字段相关的语法错误,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
36 0
|
6天前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之在oracle cdc2.3 + flink1.7环境下只能初始化同步数据,但后续Oracle的增删改查无法同步出去,是什么导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
14 1
|
7天前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之在 DataWorks 中,使用Oracle作为数据源进行数据映射和查询,如何更改数据源为MaxCompute或其他类型
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
33 1
|
7天前
|
SQL Oracle 关系型数据库
Oracle spool格式化数据命令
在这个示例中,通过设置不同的 `SET`命令参数,你可以控制输出的格式,包括每页行数、每行字符数、列分隔符等。你也可以使用其他的 `SET`命令参数来进一步定制输出格式。
18 0
|
7天前
|
Oracle 安全 关系型数据库
Oracle数据守卫(DG):数据的“守护者”与“时光机”
【4月更文挑战第19天】Oracle Data Guard保障数据安全,通过实时维护备库实现故障切换,保证业务连续性。它使用日志传输和应用保持数据同步,如同“时光机”,借助闪回技术能恢复误操作数据。此外,它还提供数据压缩、加密和故障转移等功能,提升数据库安全性与性能。作为数据管理员,理解并善用Data Guard是确保企业数据安全的关键。
|
7天前
|
SQL Oracle 关系型数据库
Oracle 12c的TOP N语句:数据排名的“快速通道”
【4月更文挑战第19天】Oracle 12c的TOP N语句是用于快速获取数据集排名前N的记录的SQL查询方法,特别适合寻找最具代表性的数据。通过指定排序条件和数量,TOP N能高效筛选出所需信息,例如最高销售额产品或最大访问量网页。在Oracle 12c中,查询优化器对TOP N查询进行了优化,保证快速返回结果,并提供丰富的排序和过滤选项。基本用法如`SELECT ... ORDER BY ... FETCH FIRST N ROWS ONLY`,还可结合`OFFSET`进行分页查询或用`WITH TIES`保持结果完整性。掌握TOP N语句能提升数据分析效率,助力企业决策。
|
7天前
|
存储 Oracle 关系型数据库
Oracle 12c的临时UNDO:数据的“临时保镖”
【4月更文挑战第19天】Oracle 12c引入的临时UNDO为数据安全提供新保障。它为临时操作和特定事务提供独立UNDO空间,避免共享UNDO带来的性能瓶颈和管理复杂性。临时UNDO随事务开始分配,记录修改历史,事务结束后自动释放。优点包括提高性能、简化管理及保证数据一致性。但需注意手动配置、监控和优化,以防长时间占用资源。了解其工作原理和最佳实践是提升数据库性能的关键。
|
7天前
|
监控 Oracle 关系型数据库
Oracle 12c的Adaptive执行计划:数据的“聪明导航员”
【4月更文挑战第19天】Oracle 12c的Adaptive执行计划是数据库查询的智能优化工具,能根据实际运行情况动态调整执行策略。它像一个聪明的导航系统,不仅生成初始执行计划,还能实时监控并适应统计信息和资源变化,例如自动切换索引或调整并行度。此外,它支持自适应连接和统计信息收集,提升处理复杂查询和变化数据环境的能力。数据管理员应充分利用这一特性来优化查询性能和用户体验。
|
7天前
|
存储 NoSQL Oracle
Oracle 12c的内存列存储:数据的“闪电侠”
【4月更文挑战第19天】Oracle 12c的内存列存储以超高速度革新数据处理,结合列存储与内存技术,实现快速查询与压缩。它支持向量化查询和并行处理,提升效率,但需合理配置以平衡系统资源。作为数据管理员,应善用此功能,适应业务需求和技术发展。