如何使用SQL*Plus在Oracle 11g中显示数据库

Nub*_*iya 73 oracle sqlplus oracle11g

借助此命令,show databases;我可以在MySQL中看到数据库.

如何在Oracle中显示可用的数据库?

小智 77

SELECT NAME FROM v$database; 显示oracle中的数据库名称

  • 这应该是答案 (3认同)
  • 我认为这就是问题所在。或者至少当我听到“数据库” ...而不是模式(或用户)时,这就是我的想法。 (2认同)

dpb*_*ley 51

您可以将MySQL"数据库"视为Oracle中的模式/用户.如果您具有权限,则可以查询DBA_USERS视图以查看模式列表.

  • 一些oracle数据库有很多没有对象的用户.对于这些,替代方案是SELECT DISTINCT OWNER FROM ALL_OBJECTS; (19认同)
  • 查询到DBA_USERS给出"ORA-00942:表或视图不存在",可能是权限问题?评论中的一个"从ALL_OBJECTS中选择DISTINCT所有者;" 正在使用相同的访问凭据.db 11g (5认同)
  • SELECT * FROM DBA_USERS;` (2认同)

Tho*_*att 23

Oracle没有像MySQL或MS SQL Server这样的简单数据库模型.我发现最接近的是查询表空间及其中的相应用户.

例如,我有一个DEV_DB表空间,其中包含我所有的实际"数据库":

SQL> SELECT TABLESPACE_NAME FROM USER_TABLESPACES;
Run Code Online (Sandbox Code Playgroud)

导致:

SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
EXAMPLE
DEV_DB
Run Code Online (Sandbox Code Playgroud)

也可以在所有表​​空间中查询用户:

SQL> select USERNAME, DEFAULT_TABLESPACE from DBA_USERS;
Run Code Online (Sandbox Code Playgroud)

或者在特定的表空间内(以我的DEV_DB表空间为例):

SQL> select USERNAME, DEFAULT_TABLESPACE from DBA_USERS where DEFAULT_TABLESPACE = 'DEV_DB';

ROLES DEV_DB
DATAWARE DEV_DB
DATAMART DEV_DB
STAGING DEV_DB
Run Code Online (Sandbox Code Playgroud)


Jon*_*han 14

也许你可以使用这个视图,但我不确定.

select * from v$database;
Run Code Online (Sandbox Code Playgroud)

但我认为它只会显示有关当前数据库的信息.

其他选项,如果db在linux中运行...应该是这样的:

SQL>!grep SID $TNS_ADMIN/tnsnames.ora | grep -v PLSExtProc
Run Code Online (Sandbox Code Playgroud)

  • 嗨@ a1an.毫无疑问,v $ database存在于11g中.检查您是否正在执行具有权限的查询.在这里,您有关于oracle 11g的v $ database的文档.http://docs.oracle.com/cd/B28359_01/server.111/b28320/dynviews_1086.htm Algo,这里有一篇文章,其中有一个关于在oracle 11g中使用v%数据库的例子.http://neeraj-dba.blogspot.com.es/2011/10/switchover-to-physical-standby-database.html祝你好运! (2认同)
  • 可能是权限问题,在 sysdba 工作时执行它 (2认同)