Oracle 19c:Oracle 错误 12514,无法连接到数据库

Oracle 19c: Oracle Error 12514, no connection to DB possible

在我的本地 oracle 19c 安装(Windows Server 2016)上,一切都 运行 正常,直到本周 Windows 更新。从那时起,每当我尝试连接到数据库时,我都会收到错误 ORA-12514 – TNS:listener 当前不知道连接描述符 中请求的服务。

我的listener.ora:

我的监听器 Windows 服务是 运行:

可疑的是 lsnrctl 实用程序没有监听我的服务名称,它只列出了 EXTPROC1521:

每当我尝试连接到数据库时,我都会得到:

我无法通过任何方式连接到数据库,无论是使用普通用户名,还是使用 sys 或系统。 我试着玩 listener.ora 并重新启动了 Windows 服务,但都没有影响 :-( 你能帮帮我吗?

您的数据库是否处于打开模式?笔记!您的数据库 Windows 服务可以是 运行,但数据库可以处于以下任何模式:open|mount|nomount|down。确保您的数据库处于打开模式。一旦数据库进入打开模式,数据库就会将其服务注册到侦听器,您将能够登录

使数据库进入打开模式:

C:\>set ORACLE_SID=<MYSID>
C:\>sqlplus / as sysdba
SQL>startup

警报日志

数据库警报日志是您的转到文件,用于检查数据库引擎的健康状况。
数据库警报日志会告诉为什么数据库在重启后无法进入打开模式。 (可能是因为 FRA(快速恢复区)尺寸过小)

定位警报日志是一场噩梦,所以我在几年前创建了一个bash函数。

declare -f alog
alog ()
{
    less -r ${ORACLE_BASE}/diag/rdbms/$(echo ${ORACLE_SID} | tr '[:upper:]' '[:lower:]')*/${ORACLE_SID}/trace/alert_${ORACLE_SID}.log
}

fra.sql

--------------------------------------------------------------------------------
-- name:    fra.sql
-- purpose: Display information about the Fast Recovery Area (FRA)
-- author:  Bjarte Brandt
-- date:    09.03.2010
-- remarks:
-- Change size:
-- alter system set db_recovery_file_dest_size=<size> scope=both
--------------------------------------------------------------------------------
col name format a60
col used format 99.99 heading 'Used %'

select
  name,
  floor(space_limit / 1024 / 1024) "Size MB",
  ceil(space_used  / 1024 / 1024) "Used MB",
  (space_used/space_limit) * 100 used
from
  v$recovery_file_dest
order by name;

select
  file_type,
  percent_space_used,
  percent_space_reclaimable,
  number_of_files
from
  v$flash_recovery_area_usage;

如果您现在处于 100%,则必须决定如何处理归档日志模式下的数据库。您可以实施备份策略、禁用快速恢复区、将数据库设置为 noarchivelog 模式或调整 FRA 的大小 - 所有选择都取决于用例。

注意!我知道有很多事情要考虑。请记住,您现在使用的引擎与世界上最大的银行完全相同。需要时间去掌握。

祝你好运!

按照以下说明终于解决了我的问题: https://www.programmersought.com/article/48144147987/

总结:

  • 通过命令“shutdown”关闭数据库
  • 启动数据库但是通过“启动挂载”来防止它被试图打开它
  • 创建“select * from v$log”以查看重做日志
  • 通过“恢复数据库直到时间 'YYYY-MM-DD HH:MM:SS';”进行恢复带有标记为“当前”的重做日志内的日期时间。
  • 系统应报告“媒体恢复完成”
  • 然后做一个“alter database open resetlogs;”。这将重置所有活动的重做日志并打开数据库。
  • 然后关闭数据库
  • 然后通过注释“启动”启动数据库(w/o 选项)
  • 系统现在应该报告“数据库打开”