在sql developer中过滤系统定义的表

时间:2017-01-02 15:12:27

标签: oracle oracle-sqldeveloper oracle12c

我正在关注oracle的教程,我刚刚创建了我的oracle数据库。

但是我看到所有这些冗余表,顺便说一句,我的数据库不是容器数据库。

enter image description here

这些东西到底是什么?为什么会这样?

正如它在评论中所说,如果您使用系统帐户登录,这通常会看到。我创建了一个新帐户并使用该帐户登录,一切正常。

2 个答案:

答案 0 :(得分:0)

来自Oracle documentation

  

Oracle数据库的一个重要部分是它的数据字典   是一组只读的表,提供管理元数据   关于数据库。

     

数据字典包含以下信息:

     
      
  • 数据库中每个架构对象的定义,包括   列和完整性约束信息的默认值

  •   
  • 为架构分配和当前使用的空间量   对象

  •   
  • 授予Oracle数据库用户,权限和角色的名称   用户和与用户相关的审核信息(请参阅"用户帐户")

  •   
     

数据字典是每个人的数据管理的核心部分   Oracle数据库。例如,数据库执行以下操作   动作:

     
      
  • 访问数据字典以查找有关用户,架构的信息   对象和存储结构

  •   
  • 每次发出DDL语句时修改数据字典   (参见"数据定义语言(DDL)声明")

  •   
     

因为Oracle数据库只是在表中存储数据字典数据   与其他数据一样,用户可以使用SQL查询数据。例如,用户   可以运行SELECT语句来确定它们的权限,哪些表   存在于他们的模式中,无论是哪些列都在这些表中   索引构建在这些列上,依此类推。

例如:

SQL> select count(1) from user_tables;

  COUNT(1)
----------
       167

SQL> create table oneMoreTable(a number);

Table created.

SQL> select count(1) from user_tables;

  COUNT(1)
----------
       168
SQL> select count(distinct table_name), count(1) from user_tab_columns;

COUNT(DISTINCTTABLE_NAME)   COUNT(1)
------------------------- ----------
                      172        465

SQL> drop table oneMoreTable;

Table dropped.

SQL> select count(distinct table_name), count(1) from user_tab_columns;

COUNT(DISTINCTTABLE_NAME)   COUNT(1)
------------------------- ----------
                      171        464

答案 1 :(得分:0)

通常,这些是"属于"到数据库 - 要么是因为它们是由一个预定义用户(SYS,SYSTEM,SYSDBA ......)所拥有,要么是因为Oracle使用它们进行内务管理,例如对

  • 全文索引(这些名称为DR $ ...)
  • 物化视图日志(这些日志名为RUPD $ ...和MLOG $ ...)

Apart包含前缀V$的表是存储易失信息的表。这些表也称为dynamic performance表。

易失性信息由oracle实例在使用时生成(使用中表示实例已启动并运行)。易失信息包括统计,用户会话信息,内存分配。