如何在oracle中找到数据库名称而不使用sqlplus或srvctl?

eqfvzcg8  于 2023-08-03  发布在  Oracle
关注(0)|答案(2)|浏览(125)

我想知道在不连接数据库的情况下查找数据库名称的不同方法,既不使用sqlplus也不使用srvctl
在Oracle中,假设我在RAC中有2个节点运行数据库pstest。我可以通过简单地连接到任何一个数据库示例和查询来获得数据库名称,如下所示

SQL> select name from v$database;
NAME
---------
PSTEST

字符串
或者是

SQL> show parameter db_name
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_name                              string      pstest`


但是我需要知道如何在不通过sqlplus连接到数据库的情况下获得数据库名称pstest(因此上面两个都没有用)。
因为我的pstest数据库在2个示例中运行-node 1上的pstest1和node 2上的pstest2。所以我可以像下面这样使用srvctl

srvctl status database -d pstest
  Instance pstest1 is running on node1
  Instance pstest2 is running on node2


但是,如何在不使用srvctlsqlplus的情况下将<db_name>用于srvctl
先谢了。

velaa5lx

velaa5lx1#

在不理解为什么需要这个的情况下,一种实现方法是(考虑到您使用的是Oracle RAC
本例中的实用程序为csrsctl
范例

srvctl status database -d otcgr2ng
Instance otcgr2ng1 is running on node scglvdoraci0009
Instance otcgr2ng2 is running on node scglvdoraci0010
db_name=$(crsctl stat res -t | grep ".db$" | grep -v mgmt | awk -F '.' '{print $2}')
srvctl status database -d ${db_name}
Instance otcgr2ng1 is running on node scglvdoraci0009
Instance otcgr2ng2 is running on node scglvdoraci0010

字符串
我所做的是使用crsctl来获取数据库名称。很明显,它只适用于只有一个数据库的场景。
CRSCTL是您与Oracle Clusterware之间的接口,用于解析和调用Oracle Clusterware对象的Oracle Clusterware API。您可以使用CRSCTL命令来执行数个作业,例如启动和停止Oracle Clusterware资源、启用和停用Oracle Clusterware常驻程式、检查丛集的状况等等。
我删除了mgmtdb,它是网格基础架构的内部数据库。如果在Oracle RAC中有多个数据库,则

for db_name in $(crsctl stat res -t | grep ".db$" | grep -v mgmt | awk -F '.' '{print $2}')
do
echo $db_name
done

ztigrdn8

ztigrdn82#

“crsctl”命令为您提供数据库唯一名称,而不是数据库名称。如果这是备用数据库,则这两个参数可以不同。您需要执行srvctl(从RDBMS软件)以获取数据库名称。因此,如果数据库唯一名称与数据库名称不同(例如,对于备用数据库),则
因此,首先使用crstl获取数据库的唯一名称:
$CRS_HOME/bin/crsctl stat res -t|“.db$”|grep -v管理|awk -F '.' '{print $2}'
dbuniq_aws
然后使用srvctl获取数据库名称,使用大写的数据库唯一名称:
$ORACLE_HOME/bin/srvctl配置数据库-dDBUNIQ_AWS| grep '数据库名称:'| cut -d”:“-f2| cut -d”“-f2
DBUNIQ
如您所见,“srvctl config database”包含数据库名称的信息,只要您有数据库唯一名称信息。

相关问题