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


Answers:


58

您可以将MySQL“数据库”视为Oracle中的架构/用户。如果拥有特权,则可以查询DBA_USERS视图以查看架构列表:

SELECT * FROM DBA_USERS;

21
一些oracle数据库有很多没有对象的用户。对于这些,替代方法是从ALL_OBJECTS中选择SELECT所有者。
加里·迈尔斯

1
+1个不错的选择,请注意,如果您不是特权用户并发出此查询,则只会看到那些拥有至少一个对象特权的所有者。
dpbradley

5
对DBA_USERS的查询给出了“ ORA-00942:表或视图不存在”,也许是权限问题?注释“选择来自ALL_OBJECTS的所有者”中的一个;正在使用相同的访问凭据。db 11g
a1an 2012年

2
SELECT * FROM DBA_USERS;
费利佩·奥古斯托

92

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


2
我认为这就是问题所在。或者至少这是我听到“数据库” ...而不是架构(或用户)时想到的。
Randy Stegbauer 2015年

2
这应该是答案
Ameya Deshpande '18 -10-31

例如,如果您运行Oracle Database Express Edition,则打印类似的信息XE,即唯一标识您的实例/数据库的唯一名称(它称为SID?)。另一方面,MySQL的show databases命令会打印MySQL所谓的数据库(也称为模式)(大致是您SELECT USERNAME FROM DBA_USERS在Oracle中获得的内容)。
阿尔瓦罗·冈萨雷斯

28

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

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

SQL> SELECT TABLESPACE_NAME FROM USER_TABLESPACES;

导致:

SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
EXAMPLE
DEV_DB

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

SQL> select USERNAME, DEFAULT_TABLESPACE from DBA_USERS;

或在特定的表空间内(以我的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

14

也许您可以使用此视图,但我不确定。

select * from v$database;

但是我认为它只会向您显示有关当前数据库的信息。

其他选择,如果数据库正在linux中运行...可能是这样的:

SQL>!grep SID $TNS_ADMIN/tnsnames.ora | grep -v PLSExtProc

第一个在11g中不起作用的文件:“ ORA-00942:表或视图不存在”
2012年

2
嗨@ a1an 毫无疑问,v $ database存在于11g中。检查您是否以足够的权限执行查询。在这里,您可以获得有关Oracle 11g v $ database的文档。docs.oracle.com/cd/B28359_01/server.111/b28320/…Algo,在这里您有一篇帖子,其中包含有关在Oracle 11g中使用v%database的示例。neeraj-dba.blogspot.com.es/2011/10/…祝你好运!
乔纳森(Jonathan)2012年

2
可能是jsut一个权限问题,以sysdba的身份执行它
2012年

好的,@ a1an,只需授予该视图上的选择权限即可。将v_ $ database上的select授予您的用户;请注意下划线!v $ database是同义词,您不能授予progestedgest同义词(它可能以ORA-02030错误结尾)。
乔纳森(Jonathan)

1

我不清楚,但是通常一台服务器只有一个数据库(有许多用户),如果您创建许多数据库,则意味着您还要创建许多实例,侦听器...。因此,您可以检查自己LISTENER以进行识别。

在测试中,我创建了2个数据库(dbtestdbtest_1),因此当我检查LISTENER状态时,它看起来像这样:

lsnrctl status

....

聆听者的状态

.....

(描述=(地址=(协议= tcp)(主机= 10.10.20.20)(端口= 1521)))

服务摘要...

服务“ dbtest”具有1个实例。

实例“ dbtest”,状态为“就绪”,具有1个该服务的处理程序。

服务“ dbtest1XDB”具有1个实例。

实例“ dbtest1”,状态为READY,具有1个该服务的处理程序。

服务“ dbtest_1”具有1个实例。

实例“ dbtest1”,状态为READY,具有1个该服务的处理程序...命令已成功完成

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.