诗檀软件专业数据库修复团队
适用于:
Oracle Database - Enterprise Edition – 版本 12.1.0.1 及以上
本文信息适用于任何平台。
症状
尝试(非SYSDBA)连接到在多租户RAC数据库的12.1可插拔数据库(PDB)间歇性地返回以下错误:
ORA-01033: ORACLE initialization or shutdown in progress
原因
该问题是由2个因素导致的:
1. 用于连接到PDB的服务名是PDB本身的名称
2. 在所有RAC实例上的PDB没有都打开
在RAC环境中使用PDB名作为服务名不是很好的做法,因为一旦PDB被mount,实例会以SCAN 和节点listeners注册PDB名称。这可能会导致连接到被指向PDB被mount(未打开)的数据库实例,同时当连接非SYSDBA用户时,可导致一个ORA-1033错误。
解决方案
- 使用除PDB以外的名称创建一个CRS 服务 – 例如:
$ORACLE_HOME/bin/srvctl add service -database
racdb -pdb
pdb_name -s
pdb_srv -i "
racinst1,racinst2"
-
通过srvctl启动服务:
$ORACLE_HOME/bin/srvctl start service -database
racdb -pdb
pdb_name -s
pdb_srv
-
使用新服务连接用户- 以下是tnames.ora的示例TNS条目:
PDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = lc4-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =
pdb_srv)
)
)