sys schema中有V_ $ SQL视图。在 public 架构中,我有同义词v $ sql。如果我与用户 dbuser 连接到db,并且我尝试从v $ sql中获得一些东西。问题是,当我将架构更改为 sys (但仍然是DBUSER),并尝试再次使用V $ SQL,我的同义词不起作用。我有错误
[42000][942] ORA-00942: table or view does not exist
如果我使用v_ $ sql而不是v $ sql,则可以使用。为什么模式更改我的同义词后,为什么不起作用?
当您将当前的模式设置为'sys'时,V$SQL
则解析为SYS.V$SQL
,您无法访问。
"但是,我检查了dba_objects,那里是 no sys.v $ sql !!!"
SYS.V$SQL
是固定表。它不会在dba_object中显示。您可以在v $ fixed_table中看到它。
select * from v$fixed_table
where name like 'V$SQL';
+-------+------------+------+-----------+--------+ | NAME | OBJECT_ID | TYPE | TABLE_NUM | CON_ID | +-------+------------+------+-----------+--------+ | V$SQL | 4294951148 | VIEW | 65537 | 0 | +-------+------------+------+-----------+--------+
SYS
架构很特别,很奇怪,仅用于Oracle的使用。最好不要四处乱逛。