借助此命令,show databases;
我可以看到MySQL中的数据库。
如何显示Oracle中的可用数据库?
Answers:
您可以将MySQL“数据库”视为Oracle中的架构/用户。如果拥有特权,则可以查询DBA_USERS
视图以查看架构列表:
SELECT * FROM DBA_USERS;
SELECT * FROM DBA_USERS;
SELECT NAME FROM v$database;
在oracle中显示数据库名称
XE
,即唯一标识您的实例/数据库的唯一名称(它称为SID?)。另一方面,MySQL的show databases
命令会打印MySQL所谓的数据库(也称为模式)(大致是您SELECT USERNAME FROM DBA_USERS
在Oracle中获得的内容)。
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
也许您可以使用此视图,但我不确定。
select * from v$database;
但是我认为它只会向您显示有关当前数据库的信息。
其他选择,如果数据库正在linux中运行...可能是这样的:
SQL>!grep SID $TNS_ADMIN/tnsnames.ora | grep -v PLSExtProc
我不清楚,但是通常一台服务器只有一个数据库(有许多用户),如果您创建许多数据库,则意味着您还要创建许多实例,侦听器...。因此,您可以检查自己LISTENER
以进行识别。
在测试中,我创建了2个数据库(dbtest
和dbtest_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个该服务的处理程序...命令已成功完成