使用SYS模式中的Oracle DB中的同义词



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的使用。最好不要四处乱逛。

最新更新