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 选项)
- 系统现在应该报告“数据库打开”
在我的本地 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 选项)
- 系统现在应该报告“数据库打开”