我正在尝试查看每个用户显示的对象列表,但 none 是可见的 SQL*Plus
I am trying to view a list of objects displayed per user but none are visible SQL*Plus
我被告知运行此代码可以查看显示的对象列表
SELECT OWNER,OBJECT_NAME,OBJECT_TYPE FROM USER_OBJECTS WHERE OWNER = ‘sam';
当我 运行 它时,我得到这个错误
ORA-00904: "OWNER": invalid identifier
但是,我能够运行这个并且它有效
SELECT OBJECT_NAME,OBJECT_TYPE FROM USER_OBJECTS WHERE OBJECT_NAME NOT LIKE ‘BIN%’;
我的目的是查看每个角色分配的对象列表。我正在使用 Oracles SQL Plus 18G
谢谢
尝试使用正确的引号,但总的来说 table 名称是 ALL_OBJECTS
USER_OBJECTS 是实际用户的视图,没有所有者列
SELECT OWNER,OBJECT_NAME,OBJECT_TYPE
FROM ALL_OBJECTS
WHERE OWNER = 'sam'
https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements003.htm
https://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_4378.htm#i1634422
首先,清除回收站以避免 BIN%
个对象(已删除的对象)。
SQL> purge recyclebin;
Recyclebin purged.
现在,查询:如果您从 user_objects
select,那里没有 OWNER
列。在 all_objects
中,然后限制结果是有意义的,因为在我的 XE 数据库中这样的查询 returns ~7.300 个对象:
SQL> select owner, object_name, object_type
2 from all_objects
3 order by owner, object_name;
OWNER OBJECT_NAME OBJECT_TYPE
---------- -------------------- --------------------
PUBLIC DUAL SYNONYM
PUBLIC MAP_OBJECT SYNONYM
PUBLIC SYSTEM_PRIVILEGE_MAP SYNONYM
PUBLIC TABLE_PRIVILEGE_MAP SYNONYM
SYS DUAL TABLE
SYS ORA$BASE EDITION
SYS SYSTEM_PRIVILEGE_MAP TABLE
SYS TAB$ TABLE
SYS TABLE_PRIVILEGE_MAP TABLE
<snip>
XDB XMLINDEX INDEXTYPE
XDB XMLINDEXINSFUNC FUNCTION
XDB XMLINDEXLOADFUNC FUNCTION
XDB XMLINDEX_NOOP OPERATOR
7323 rows selected.
默认情况下,除非您在创建 users/objects 时使用双引号,否则 Oracle "stores" 所有内容均大写。因此,'sam'
不存在于您的数据库中,但 'SAM'
存在。所以:
SQL> select owner, object_name, object_type
2 from all_objects
3 where owner = 'SAM' --> uppercase in single quotes
4 order by owner, object_name;
no rows selected
SQL>
我没有用户 SAM
,所以没有返回任何内容,但应该在您的数据库中。如果没有,答案很简单:用户 SAM
没有任何对象。
我被告知运行此代码可以查看显示的对象列表
SELECT OWNER,OBJECT_NAME,OBJECT_TYPE FROM USER_OBJECTS WHERE OWNER = ‘sam';
当我 运行 它时,我得到这个错误
ORA-00904: "OWNER": invalid identifier
但是,我能够运行这个并且它有效
SELECT OBJECT_NAME,OBJECT_TYPE FROM USER_OBJECTS WHERE OBJECT_NAME NOT LIKE ‘BIN%’;
我的目的是查看每个角色分配的对象列表。我正在使用 Oracles SQL Plus 18G
谢谢
尝试使用正确的引号,但总的来说 table 名称是 ALL_OBJECTS
USER_OBJECTS 是实际用户的视图,没有所有者列
SELECT OWNER,OBJECT_NAME,OBJECT_TYPE
FROM ALL_OBJECTS
WHERE OWNER = 'sam'
https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements003.htm https://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_4378.htm#i1634422
首先,清除回收站以避免 BIN%
个对象(已删除的对象)。
SQL> purge recyclebin;
Recyclebin purged.
现在,查询:如果您从 user_objects
select,那里没有 OWNER
列。在 all_objects
中,然后限制结果是有意义的,因为在我的 XE 数据库中这样的查询 returns ~7.300 个对象:
SQL> select owner, object_name, object_type
2 from all_objects
3 order by owner, object_name;
OWNER OBJECT_NAME OBJECT_TYPE
---------- -------------------- --------------------
PUBLIC DUAL SYNONYM
PUBLIC MAP_OBJECT SYNONYM
PUBLIC SYSTEM_PRIVILEGE_MAP SYNONYM
PUBLIC TABLE_PRIVILEGE_MAP SYNONYM
SYS DUAL TABLE
SYS ORA$BASE EDITION
SYS SYSTEM_PRIVILEGE_MAP TABLE
SYS TAB$ TABLE
SYS TABLE_PRIVILEGE_MAP TABLE
<snip>
XDB XMLINDEX INDEXTYPE
XDB XMLINDEXINSFUNC FUNCTION
XDB XMLINDEXLOADFUNC FUNCTION
XDB XMLINDEX_NOOP OPERATOR
7323 rows selected.
默认情况下,除非您在创建 users/objects 时使用双引号,否则 Oracle "stores" 所有内容均大写。因此,'sam'
不存在于您的数据库中,但 'SAM'
存在。所以:
SQL> select owner, object_name, object_type
2 from all_objects
3 where owner = 'SAM' --> uppercase in single quotes
4 order by owner, object_name;
no rows selected
SQL>
我没有用户 SAM
,所以没有返回任何内容,但应该在您的数据库中。如果没有,答案很简单:用户 SAM
没有任何对象。