recovery满导致监听报错(不支持的服务)

早上登录oracle数据库发现无法连接,tns错误。

一直在监听说找原因,删了然后新建,还是一直报错

不支持的服务。

C:\Users\Administrator>lsnrctl


LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 03-3月 -2015 15:22:50


Copyright (c) 1991, 2010, Oracle.  All rights reserved.


欢迎来到LSNRCTL, 请键入"help"以获得信息。


LSNRCTL> status
正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 32-bit Windows: Version 11.2.0.1.0 - Production
启动日期                  03-3月 -2015 13:41:37
正常运行时间              0 天 1 小时 41 分 20 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序日志文件          d:\oracle\product\11.2.0\client_1\log\diag\tnslsnr\WIN-6GJ468PT63I\listener\alert\log.xml
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN-6GJ468PT63I)(PORT=1521)))
监听程序不支持服务
命令执行成功
LSNRCTL>
LSNRCTL>


进入数据库发现自动挂起,查找日志。

C:\Users\Administrator>sqlplus / as sysdba


SQL>startup mount;


SQL> show parameter dump


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
background_core_dump                 string      partial
background_dump_dest                 string      d:\oracle\diag\rdbms\wmtest\wm
                                                 test\trace
core_dump_dest                       string      d:\oracle\diag\rdbms\wmtest\wm
                                                 test\cdump
max_dump_file_size                   string      unlimited
shadow_core_dump                     string      none
user_dump_dest                       string      d:\oracle\diag\rdbms\wmtest\wm
                                                 test\trace

发现下面的错误。RECOVERY满。

***********************************************************************

You have following choices to free up space from recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
   then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
   BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
   reflect the new space.
4. Delete unnecessary files using RMAN DELETE command. If an operating
   system command was used to delete files, then use RMAN CROSSCHECK and
   DELETE EXPIRED commands.
************************************************************************
Errors in file d:\oracle\diag\rdbms\wmtest\wmtest\trace\wmtest_arc2_1468.trc:
ORA-19809: 超出了恢复文件数的限制
ORA-19804: 无法回收 48290816 字节磁盘空间 (从 10485760000 限制中)
ARC2: Error 19809 Creating archive log file to 'D:\ORACLE\FLASH_RECOVERY_AREA\WMTEST\ARCHIVELOG\2015_03_03\O1_MF_1_289_%U_.ARC'
ARCH: Archival stopped, error occurred. Will continue retrying
Errors in file d:\oracle\diag\rdbms\wmtest\wmtest\trace\wmtest_arc1_2016.trc:
ORA-16038: 日志 2 sequence# 290 无法归档
ORA-19809: 超出了恢复文件数的限制
ORA-00312: 联机日志 2 线程 1: 'D:\ORACLE\ORADATA\WMTEST\ONLINELOG\O1_MF_2_B7F31RQJ_.LOG'
ORA-00312: 联机日志 2 线程 1: 'D:\ORACLE\FLASH_RECOVERY_AREA\WMTEST\ONLINELOG\O1_MF_2_B7F31WY4_.LOG'
Errors in file d:\oracle\diag\rdbms\wmtest\wmtest\trace\wmtest_ora_3632.trc:

ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 10485760000 字节) 已使用 100.00%, 尚有 0 字节可用。


SQL> show parameter recovery


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      D:\oracle\flash_recovery_area
db_recovery_file_dest_size           big integer 12000M
recovery_parallelism                 integer     0
SQL> alter system db_recovery_file_dest_size=1300M;
alter system db_recovery_file_dest_size=1300M
             *
第 1 行出现错误:
ORA-02065: 非法的 ALTER SYSTEM 选项


SQL> alter system set db_recovery_file_dest_size=1300M;


系统已更改。


SQL>alter database open;


下午又出现问题了,检查发现软件哥们启用的 归档,但是没有做过备份,没有删除过归档,没设置过过期时间。

这里已经把所有的db_recovery_file_dest的容量都占完了。

解决方法:删除多余的归档文件。然后设置较大的db_recovery_file_dest_size。

删除多余的归档文件

打开RMAN

rman target /

RMAN>crosscheck archivelog all;   -- 运行这个命令可以把无效的expired的archivelog标出来。

RMAN>delete expired archivelog all;  -- 直接全部删除过期的归档日志。

RMAN>delete noprompt archivelog until time "sysdate -3";  -- 也可以直接用一个指定的日期来删除。

重新打开数据库:

SQL> alter database open;

Database altered.

action




================================================================================================


参考文章


SQL> startup
ORACLE instance started.

Total System Global Area  263049216 bytes
Fixed Size                  2212448 bytes
Variable Size             234884512 bytes
Database Buffers           20971520 bytes
Redo Buffers                4980736 bytes
Database mounted.
ORA-03113: 通信通道的文件结尾
进程 ID: 5801
会话 ID: 1 序列号: 5

[oracle@web trace]$ tail -f alert_orcl.log 
ORA-19809: 超出了恢复文件数的限制
ORA-19804: 无法回收 44062720 字节磁盘空间 (从 4070572032 限制中)
ARCH: Error 19809 Creating archive log file to '/opt/oracle/flash_recovery_area/ORCL/archivelog/2011_11_04/o1_mf_1_482_%u_.arc'
Errors in file /opt/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_6141.trc:
ORA-16038: 日志 2 sequence# 482 无法归档
ORA-19809: 超出了恢复文件数的限制
ORA-00312: 联机日志 2 线程 1: '/opt/oracle/oradata/orcl/redo02.log'
USER (ospid: 6141): terminating the instance due to error 16038
Fri Nov 04 15:28:21 2011
Instance terminated by USER, pid = 6141
Fri Nov 04 15:30:35 2011

通过这里的错误信息,可以看到是归档归档不了了,马上查看归档的路径
SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     23
下一个存档日志序列   25
当前日志序列           25

用的是DB_RECOVERY_FILE_DEST的路径了。估计又是以前遇到过的错误的。
Oracle官方的有关19809的信息
ORA-19809: limit exceeded for recovery files 
Cause: The limit for recovery files specified by the DB_RECOVERY_FILE_DEST_SIZE was exceeded. 
Action: The error is accompanied by 19804. See message 19804 for further details.

ORA-19804: cannot reclaim string bytes disk space from string limit 
Cause: Oracle cannot reclaim disk space of specified bytes from the DB_RECOVERY_FILE_DEST_SIZE limit. 
Action: There are five possible solutions: 
1) Take frequent backup of recovery area using RMAN. 
2) Consider changing RMAN retention policy. 
3) Consider changing RMAN archivelog deletion policy.
4) Add disk space and increase DB_RECOVERY_FILE_DEST_SIZE. 
5) Delete files from recovery area using RMAN.

基本上的原因是,db_recovery_file_desc有size限制,默认是2G,如果用户没有设置过的话,应该就是这里的归档的文件超过了这个大小,而导致归档失败了,

先查看一下情况吧

SQL> archive log list;

数据库日志模式            存档模式

自动存档             启用

存档终点            USE_DB_RECOVERY_FILE_DEST

最早的联机日志序列     23

下一个存档日志序列   25

当前日志序列           25

SQL> select * from v$recovery_file_dest;

NAME
--------------------------------------------------------------------------------
SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
----------- ---------- ----------------- ---------------
/opt/oracle/flash_recovery_area
 4070572032 4068022784                 0             100

这里已经把所有的db_recovery_file_dest的容量都占完了。

解决方法:删除多余的归档文件。然后设置较大的db_recovery_file_dest_size。

删除多余的归档文件

打开RMAN

rman target /

RMAN>crosscheck archivelog all;   -- 运行这个命令可以把无效的expired的archivelog标出来。

RMAN>delete expired archivelog all;  -- 直接全部删除过期的归档日志。

RMAN>delete noprompt archivelog until time "sysdate -3";  -- 也可以直接用一个指定的日期来删除。

重新打开数据库:

SQL> alter database open;

Database altered.

action
指定retention的策略,使得archivelog不至于这样增加

RMAN>configure retention policy to recovery window of 7 days;

RMAN>configure retention policy to redundancy 3;

SQL>alter system db_recovery_file_dest_size=4G scope=both;

把archivelog_dest指定到没有限制的地方

SQL>alter system log_archive_dest='/home/oracle';


查看修改ORACLE10G归档日志空间的限制

在ORACLE10G中,默认的归档路径为$ORACLE_BASE/flash_recovery_area。对于这个路径,ORACLE有一个限制,就是默认只能有2G的空间给归档日志使用,可以使用下面两个SQL语句去查看它的限制:
1. select * from v$recovery_file_dest;
2. show parameter db_recovery_file_dest(这个更友好直观一些)
当归档日志数量大于2G时,那么就会由于没有更多的空间去容纳更多的归档日志会报无法继续归档的错误。
如:“RA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 10017792 bytes disk space from 2147483648 limit
ARC0: Error 19809 Creating archive log file to '/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_04_30/o1_mf_1_220_0_.arc' ”这时我们可以修改它的默认限制,比如说将它增加到5G或更多,也可以将归档路径重新置到别的路径,就不会有这个限制了。 
更改限制语句如下:
alter system set db_recovery_file_dest_size=5368709102 (这里为5G 5x1024x1024x1024=5G)
alter system set db_recovery_file_dest_size=10737418240


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值