如何查询Oracle数据库中数据库视图的创建用户?
Oracle 查询视图创建者的等效SQL语句
如果你需要查询Oracle数据库中某个视图的创建者,可以使用以下适配后的SQL语句,对应你提供的TSQL版本调整:
SELECT u.username AS creator_name, v.* FROM all_views v JOIN all_users u ON u.username = v.owner WHERE v.view_name = '你的视图名称' -- Oracle默认以大写存储对象名,建议匹配实际存储的大小写
关键说明:
all_views:对应TSQL中的sys.all_views,存储当前用户有权限查看的所有视图信息,其中view_name是视图名称,owner字段记录了视图的所属用户(通常就是创建者,除非后续通过权限变更转移了所有权)。all_users:对应你提到的TSQL中的sys.database_principals,存储数据库中所有用户的信息,username为用户名。你之前猜测的USER是Oracle的内置伪列,仅代表当前会话的用户,无法用来关联所有视图的创建者。- 若需要查看数据库中所有视图(包括当前用户无权限访问的),可将
all_views替换为dba_views、all_users替换为dba_users,但执行该语句需要DBA级权限。 - 如果视图创建时使用了大小写敏感的名称(带双引号),查询时需用双引号包裹视图名称以匹配。
和TSQL语句的对应关系:
| TSQL对象 | Oracle等效对象 |
|---|---|
sys.all_views | all_views |
sys.database_principals | all_users/dba_users |
v.schema_id | v.owner(直接关联用户名) |
内容的提问来源于stack exchange,提问作者HJH008
相关产品推荐
相关产品推荐

