ORA-01034和ORA-27101同时出现表明Oracle实例未启动,根本原因是共享内存未分配;需先检查ora_pmon进程是否存在、alert日志报错、/dev/shm大小及kernel.shmall/shmmax参数,并用sqlplus / as sysdba执行startup确认实例状态。
这两个错误同时出现,基本等于 Oracle 实例处于关闭状态。连接池连登录界面都进不去,不是配置问题,是数据库服务压根没跑起来。
lsnrctl status,看监听器是否运行;如果报 “TNS-12541: TNS:no listener”,说明监听没启,用 lsnrctl start 启动sqlplus / as sysdba,然后执行 startup —— 如果提示 “ORACLE instance started”,说明实例之前是 shutdown immediate 过的,现在已拉起startup 失败并报 “ORA-01078: failure in processing system parameters”,检查 $ORACLE_HOME/dbs/spfile<sid>.ora 或 init<sid>.ora 是否存在、权限是否为 oracle 用户可读Spring Boot 启动时报 “Access denied for user”,但你确认密码没错?别急,Oracle 的密码区分大小写,且 11g 默认密码策略会锁定连续输错 10 次的用户。
sys)登录后查:SELECT username, account_status FROM dba_users WHERE username = 'YOUR_USER';,如果返回 LOCKED,执行 ALTER USER YOUR_USER ACCOUNT UNLOCK;
SELECT tablespace_name, status FROM dba_tablespaces WHERE tablespace_name = (SELECT default_tablespace FROM dba_users WHERE username = 'YOUR_USER');,若 status 是 OFFLINE,需 DBA 执行 ALTER TABLESPACE xxx ONLINE;
?useUnicode=true&characterEncoding=utf8 这类 MySQL 参数,Oracle 会忽略甚至干扰认证流程Oracle 11g 最新支持 ojdbc6(11.2.0.4),但 Spring Boot 2.3+ 默认倾向 ojdbc8,混用会导致 ClassCastException 或静默失败。
<exclusions><exclusion><groupId>com.oracle.database.jdbc</groupId><artifactId>ojdbc8</artifactId></exclusion></exclusions>
com.oracle.database.jdbc:ojdbc6:11.2.0.4,别用老坐标 com.oracle:ojdbc6(中央仓库无授权,容易 resolve 失败)oracle.jdbc.OracleDriver,oracle.jdbc.driver.OracleDriver 已废弃,Spring Boot 2.2+ 会直接 WARN 并可能跳过注册Linux 上启动 Spring Boot 时抛 Connection reset by peer,日志里还夹着 “Authentication lapse 74909 ms”,这和 Oracle 无关,是 JVM 在生成 SecureRandom 时卡在熵池枯竭。
-Djava.security.egd=file:/dev/./urandom(注意是 /dev/./urandom,不是 /dev/random)sqlnet.ora 加 SQLNET.EXPIRE_TIME=0,那只是延长探测间隔,不解决熵问题HikariPool-1 - Starting... 这行,如果卡在 “Initializing connection pool” 超过 30 秒,就是熵没配对Oracle 11g 的坑不在语法,而在它的“老派脾气”:实例状态、用户锁死、驱动绑定、系统熵源——四个环节任意一个断了,连接就彻底哑火。调试时别一上来就翻 application.yml,先确认数据库进程活着、用户能登、驱动能加载、JVM 不卡住,再谈 SQL 层问题。