检查数据库中用户的存在

时间:2018-10-15 15:25:55

标签: oracle11g

正在运行选择查询以检查特定数据库中用户的可用性

SELECT * FROM dba_users WHERE username='<username>'

现在担心的是,在要执行此查询的地方,我要检查多个数据库。

是否有一种修改查询的方式,使得它可以同时在所有数据库上执行,即使用单个查询来检查用户在所有数据库中的可用性?

1 个答案:

答案 0 :(得分:1)

数据库链接可能会有所帮助。

选择您要对其运行查询的数据库之一,并创建指向所有其他数据库的数据库链接。然后对所有UNION中的DBA_USERS进行查询(我可以使用ALL_USERS来访问它)。

例如:

SQL> connect scott/tiger@db11
Connected.
SQL> create database link dbl_db20
  2  connect to user_name_here
  3  identified by its_password_here
  4  using 'xx.yy.zz.ww:1521/db20';

Database link created.

SQL> select *
  2  from (select 'DB11' what, username from all_users@db11
  3        union all
  4        select 'DB20' what, username from all_users@dbl_db20
  5       )
  6  where username = 'SCOTT';

WHAT USERNAME
---- ------------------------------
DB11 SCOTT

SQL>