【发布时间】:2011-03-01 13:21:20
【问题描述】:
借助这个命令 show databases; 我可以在 MySQL 中查看数据库。
如何在Oracle中显示可用的数据库?
【问题讨论】:
借助这个命令 show databases; 我可以在 MySQL 中查看数据库。
如何在Oracle中显示可用的数据库?
【问题讨论】:
SELECT NAME FROM v$database; 在 oracle 中显示数据库名称
【讨论】:
XE 的内容,即唯一标识您的实例/数据库的唯一名称(是否称为 SID?)。另一方面,MySQL 的 show databases 命令打印 MySQL 所称的数据库(也称为模式)(大致与 Oracle 中的 SELECT USERNAME FROM DBA_USERS 相同)。
您可以将 MySQL“数据库”视为 Oracle 中的架构/用户。如果您有权限,可以查询DBA_USERS 视图以查看架构列表:
SELECT * FROM DBA_USERS;
【讨论】:
SELECT * FROM DBA_USERS;
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
....
监听器的状态
.....
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.10.20.20)(PORT=1521)))
服务总结...
服务“dbtest”有 1 个实例。
实例“dbtest”,状态 READY,有 1 个用于此服务的处理程序...
服务“dbtest1XDB”有 1 个实例。
实例“dbtest1”,状态 READY,有 1 个用于此服务的处理程序...
服务“dbtest_1”有 1 个实例。
实例“dbtest1”,状态 READY,有 1 个用于此服务的处理程序...命令成功完成
【讨论】: