dba_tables>=all_tables
dba_tables故明思义是dba拥有的或可以访问的所有的表
all_tables指的是某一用户拥有的或可以访问的所有的表
如果某一用户就是dba那么两者就等价了。

解决方案 »

  1.   

    DBA用户的dba_tables和all_tables都是sys用户dba_tables和all_tables的同义词ALL_TABLES describes all relational tables accessible to the user.DBA_TABLES describes all relational tables in the database.ALL_TABLES视图的定义多出了下面一段话,
    我觉得主要体现tables accessible to the user  and (o.owner# = userenv('SCHEMAID')
           or o.obj# in
                (select oa.obj#
                 from sys.objauth$ oa
                 where grantee# in ( select kzsrorol
                                     from x$kzsro
                                   ) 
                )
           or /* user has system privileges */
     exists (select null from v$enabledprivs
             where priv_number in (-45 /* LOCK ANY TABLE */,
           -47 /* SELECT ANY TABLE */,
           -48 /* INSERT ANY TABLE */,
           -49 /* UPDATE ANY TABLE */,
           -50 /* DELETE ANY TABLE */)
                     )
          )
      and t.dataobj# = cx.obj# (+)
      and cx.owner# = cu.user# (+)