可能遇到的报错信息如若在创建DIRECTORY之前普通用户sec未获得相应权限,将会收到最为常见的“ORA-01031: insufficient privileges”错误。模拟再现一下,供大家参考。sec@ora10g> conn / as sysdbaConnected.sys@ora10g> revoke CREATE ANY DIRECTORY from sec;Revoke succeeded.sys@ora10g> conn sec/secConnected.sec@ora10g> create directory dir_test as '/home/oracle/secooler';create directory dir_test as '/home/oracle/secooler'*ERROR at line 1:ORA-01031: insufficient privileges4.获得DIRECTORY创建结果信息用于查询获得DIRECTORY信息的数据库视图“仅有”两个,如下所示。sys@ora10g> select TABLE_NAME from dict where table_name like '%DIRECTORIES';TABLE_NAME------------------------------ALL_DIRECTORIESDBA_DIRECTORIES这里之所以强调“仅有”,是与其他数据库对象视图相比较而言的。例如,用于获得同名的数据库视图一般都会有三类,如下所示。sys@ora10g> select TABLE_NAME from dict where table_name like '%SYNONYMS';TABLE_NAME------------------------------DBA_SYNONYMSUSER_SYNONYMSALL_SYNONYMS用于查看DIRECTORY数据库对象的视图之所以没有以USER开头的是有其具体缘由的。请继续跟随我进行探索。我们使用ALL_DIRECTORIES视图查看刚刚创建成功的DIRECTORY对象。sec@ora10g> col owner for a6sec@ora10g> col DIRECTORY_NAME for a15sec@ora10g> col DIRECTORY_PATH for a30sec@ora10g> select * from all_directories where DIRECTORY_NAME = 'DIR_TEST';OWNER DIRECTORY_NAME DIRECTORY_PATH------ --------------- ------------------------------SYS DIR_TEST /home/oracle/secooler重点关注一下OWNER字段的返回结果,这里显示的内容是“SYS”,并不是我们所期待的那个创建DIRECTORY的当前用户“SEC”!这样便可以顺理成章的给出不存在以USER开头的“USER_DIRECTORIES”视图的合理解释,因为DIRECTORY数据库对象并不属于某个具体用户,都归SYS用户所有!5.小结在对Oracle数据库世界的探索过程中,不要放过任何蛛丝马迹,每一个细节问题都充满了乐趣,值得思考和总结。在践行的征程中我们追求的是一种甚解的态度!Good luck.secooler11.03.27-- The End --
oracle无创建directory权限,【DIRECTORY】普通用户创建Oracle DIRECTORY数据库对象的权限需求及探索...
最新推荐文章于 2021-05-09 12:08:31 发布