问题:oracle启动以后无法连接。
报错:ORA-01033: ORACLE initialization or shutdown in progress
解决方式:
启动pdb,就好了,执行命令:alter pluggable database db12cp1(数据库名字) open;
原因:
PDB是Oracle 12c及以上版本引入的一个特性,它允许多个数据库实例在共享一组物理资源的同时,也可以隔离数据,提高数据库的效率。然而,当PDB启动失败时,这将导致用户无法访问相关的数据库资源。
建议改进:
oracle 12c启动时自动启动pdb
1.在12.1.0.1版本,PDB是不支持自启动的,只能通过触发器来实现
在CDB种创建触发器,在CDB启动时启动PDB
下面是启动所有PDB
CREATE TRIGGER open_pdbs
AFTER STARTUP
ON DATABASE
BEGIN
EXECUTE IMMEDIATE \'alter pluggable database all open\';
END open_all_pdbs;
从12.1.0.2版本,PDB开始支持自启动,通过alter pluggable database [pdb_name | all] save state命令来实现,该命令会记录PDB当前状态到数据字典dba_pdb_saved_states中,在下次启动CDB时,会查询该视图中的PDB状态,如果PDB是OPEN,那么就启动PDB
alter pluggable database [pdb_name | all] save state;
查询记录的PDB状态
select con_name,state from dba_pdb_saved_states;
整体排查思路:
1、查看当前实例的状态是否启动成功:
select instance_name,status from v$instance;
2、查看数据的状态是否正常
SELECT name,open_mode,log_mode,database_role FROM v$database;
3、查看监听状态是否正常
lsnrctl status
4、前面都没问题,其实就发懵了,也是请教外部大佬,说是12.0的pdb新特性,说查看下pdb的状态,一看发现是“MOUNTED”状态,问题找到了
show pdbs