如何连接Oracle Linux服务器上的多套Oracle数据库并列出所有数据库
嘿,我来帮你搞定这个Oracle数据库的连接和列表问题!
列出服务器上所有Oracle数据库
要找出服务器上的所有数据库,你可以用这几个实用方法:
查看oratab配置文件:这是最直接的方式,Oracle会把所有数据库实例(包括容器数据库CDB和独立数据库)的信息存在
/etc/oratab里。执行以下命令查看:cat /etc/oratab输出的每行格式是
ORACLE_SID:ORACLE_HOME:N/Y,其中ORACLE_SID就是数据库实例名,N/Y表示是否开机自动启动。注意这个文件里只会显示CDB和独立数据库,可插拔数据库(PDB)属于CDB的一部分,需要进入CDB后查询。检查监听注册的服务:通过监听状态可以看到所有对外提供服务的数据库(包括CDB、PDB和独立数据库)。执行:
lsnrctl status在输出的
Services Summary部分,你会看到所有注册的服务名,通常服务名和数据库实例名对应,或者是自定义的名称。查询CDB中的PDB:如果你已经以sysdba身份连接到容器数据库,可以用SQL语句列出所有PDB:
SELECT name, open_mode FROM v$pdbs;这个结果会显示该CDB下的3个可插拔数据库。
连接独立数据库执行查询
要连接那两套独立数据库,你可以用以下两种方式:
通过环境变量指定SID连接:
- 先从
/etc/oratab里找到目标独立数据库的ORACLE_SID和ORACLE_HOME。 - 设置对应的环境变量(以bash为例):
export ORACLE_SID=你的独立数据库SID export ORACLE_HOME=/对应数据库的ORACLE_HOME路径 export PATH=$ORACLE_HOME/bin:$PATH - 然后直接用sysdba身份连接:
连接成功后就可以执行查询操作了。sqlplus / as sysdba
- 先从
直接在sqlplus命令中指定连接字符串:
如果你知道独立数据库的服务名(可以从lsnrctl status的输出里找到),也可以直接用完整的连接字符串连接:sqlplus sys/你的密码@//localhost:1521/服务名 as sysdba(如果监听端口不是默认的1521,替换成实际端口即可)
内容的提问来源于stack exchange,提问作者Adroop
相关产品推荐
相关产品推荐

