ORA-19815错误解决办法

本文介绍了解决Oracle 10.2中ORA-19815错误的过程,该错误提示flash_recovery_area空间已满。通过调整RMAN保留策略、删除过期归档日志等步骤释放了空间。
Oracle 10.2 发生ORA-19815错误,提示flash_recovery_area空间已满错误。

下面是解决过程,记录之。[@more@]
ORA-19815错误解决办法

Alert.log中报错信息:
Errors in file d:adminpiscbdumppisc_mmon_2156.trc:
ORA-19815: WARNING: db_recovery_file_dest_size of 2147483 bytes is 100.00% used, and has 0 remaining bytes available.

Sat Apr 07 17:56:50 2007
************************************************************************
You have following choices to free up space from flash 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.
************************************************************************

解决步骤如下:
1、查看归档设置:sys@PISC> archive log list;
数据库日志模式 非存档模式
自动存档 禁用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 137
当前日志序列 139
sys@PISC>

2、删除归档日志以便释放空间

C:>rman target=sys/admin@Pisc

恢复管理器: Release 10.2.0.1.0 - Production on 星期六 4月 7 18:11:52 2007

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到目标数据库: PISC (DBID=588620064)

RMAN> crosscheck archivelog all;

使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=143 devtype=DISK
对归档日志的验证成功
存档日志文件名 =D:FLASH_RECOVERY_AREAPISCARCHIVELOG2007_03_03O1_MF_1_111_2YKVQXGF_.ARC 记录 ID=1 时间戳 =616247040
对归档日志的验证成功
存档日志文件名 =D:FLASH_RECOVERY_AREAPISCARCHIVELOG2007_03_06O1_MF_1_112_2YTRVQK5_.ARC 记录 ID=2 时间戳 =616539001
对归档日志的验证成功
存档日志文件名 =D:FLASH_RECOVERY_AREAPISCARCHIVELOG2007_03_08O1_MF_1_113_2YYR3K2X_.ARC 记录 ID=3 时间戳 =616669300
对归档日志的验证成功
存档日志文件名 =D:FLASH_RECOVERY_AREAPISCARCHIVELOG2007_03_10O1_MF_1_114_2Z4MHY6R_.ARC 记录 ID=4 时间戳 =616861191
对归档日志的验证成功
存档日志文件名 =D:FLASH_RECOVERY_AREAPISCARCHIVELOG2007_03_10O1_MF_1_115_2Z5CQW00_.ARC 记录 ID=5 时间戳 =616886014
已交叉检验的 5 对象


RMAN> delete expired archivelog all;

释放的通道: ORA_DISK_1
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=143 devtype=DISK

已存档的日志副本列表
关键字     Thrd Seq     S 短时间     名称
------- ---- ------- - ---------- ----
1       1    111     X 02-3月 -07 D:FLASH_RECOVERY_AREAPISCARCHIVELOG2007_03_03O1_MF_1_111_2YKVQXGF_.ARC
2       1    112     X 03-3月 -07 D:FLASH_RECOVERY_AREAPISCARCHIVELOG2007_03_06O1_MF_1_112_2YTRVQK5_.ARC
3       1    113     X 06-3月 -07 D:FLASH_RECOVERY_AREAPISCARCHIVELOG2007_03_08O1_MF_1_113_2YYR3K2X_.ARC
4       1    114     X 08-3月 -07 D:FLASH_RECOVERY_AREAPISCARCHIVELOG2007_03_10O1_MF_1_114_2Z4MHY6R_.ARC
5       1    115     X 10-3月 -07 D:FLASH_RECOVERY_AREAPISCARCHIVELOG2007_03_10O1_MF_1_115_2Z5CQW00_.ARC

是否确定要删除以上对象 (输入 YES 或 NO)? YES
已删除的存档日志
存档日志文件名 =D:FLASH_RECOVERY_AREAPISCARCHIVELOG2007_03_03O1_MF_1_111_2YKVQXGF_.ARC 记录 ID=1 时间戳 =616247040
已删除的存档日志
存档日志文件名 =D:FLASH_RECOVERY_AREAPISCARCHIVELOG2007_03_06O1_MF_1_112_2YTRVQK5_.ARC 记录 ID=2 时间戳 =616539001
已删除的存档日志
存档日志文件名 =D:FLASH_RECOVERY_AREAPISCARCHIVELOG2007_03_08O1_MF_1_113_2YYR3K2X_.ARC 记录 ID=3 时间戳 =616669300
已删除的存档日志
存档日志文件名 =D:FLASH_RECOVERY_AREAPISCARCHIVELOG2007_03_10O1_MF_1_114_2Z4MHY6R_.ARC 记录 ID=4 时间戳 =616861191
已删除的存档日志
存档日志文件名 =D:FLASH_RECOVERY_AREAPISCARCHIVELOG2007_03_10O1_MF_1_115_2Z5CQW00_.ARC 记录 ID=5 时间戳 =616886014
5 EXPIRED 对象已删除


RMAN>

3、验证结果
SQL> SELECT substr(name, 1, 30) name, space_limit AS total,
2 space_used AS used, 3 space_used/space_limit as pct_used,
4 space_reclaimable AS reclaimable,
5 number_of_files AS files
6 FROM v$recovery_file_dest ;

NAME TOTAL USED PCT_USED RECLAIMABLE FILES
----------------------------------------------------------------------------------
D:/flash_recovery_area 104857600 0 0 0 0

SQL>

至此,解决完毕。
/**/
实际上,由于数据库运行于非归档模式,一种简便的方法是:
1 alter system set db_recovery_file_dest_size=20G
2 修改日志归档路径,指向另外的地方。 alter system set db_recovery_file_dest='D:/bk';
3 备份日志后删除之。 直接在文件系统中删除文件;
4 将系统改回来:alter system set db_recovery_file_dest='D:/flash_recovery_area';
alter system set db_recovery_file_dest_size=100M;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7176288/viewspace-909168/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7176288/viewspace-909168/

### ORA-04045 和 ORA-16000 错误解决方案 ORA-04045 和 ORA-16000 是 Oracle 数据库中常见的错误代码,分别表示不同的问题。以下是针对这两个错误的详细解决方法。 #### ORA-04045 错误 ORA-04045 错误通常出现在尝试访问一个对象时,该对象由于权限不足或被重命名/删除而无法找到。此错误的核心在于对象的状态或用户权限的问题[^3]。 - **检查对象是否存在**:确认目标对象(如表、视图等)是否仍然存在数据库中。可以通过查询 `ALL_OBJECTS` 视图来验证: ```sql SELECT OBJECT_NAME, STATUS FROM ALL_OBJECTS WHERE OBJECT_NAME = 'YOUR_OBJECT_NAME'; ``` - **验证用户权限**:确保当前用户具有对该对象的适当权限。如果权限不足,可以请求 DBA 授予必要的权限。 - **重新编译无效对象**:如果对象状态为 `INVALID`,可以通过以下存储过程批量编译无效的视图或其他对象: ```sql CREATE OR REPLACE PROCEDURE compile_invalid_views(p_owner VARCHAR2) AS str_sql VARCHAR2(200); BEGIN FOR invalid_views IN (SELECT OBJECT_NAME FROM ALL_OBJECTS WHERE STATUS = 'INVALID' AND OBJECT_TYPE = 'VIEW' AND OWNER = UPPER(p_owner)) LOOP str_sql := 'ALTER VIEW ' || p_owner || '.' || invalid_views.OBJECT_NAME || ' COMPILE'; BEGIN EXECUTE IMMEDIATE str_sql; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(SQLERRM); END; END LOOP; END; ``` #### ORA-16000 错误 ORA-16000 错误表明数据库处于只读模式或受限模式,通常与数据库的打开模式有关。这可能是由于数据库配置或恢复操作引起的[^3]。 - **检查数据库模式**:使用以下命令检查数据库的当前打开模式: ```sql SELECT OPEN_MODE FROM V$DATABASE; ``` - **切换到正常模式**:如果数据库处于受限模式(RESTRICTED),可以尝试将其切换回正常模式(READ WRITE)。需要以管理员身份执行以下命令: ```sql ALTER DATABASE OPEN; ``` - **检查告警日志**:查看数据库的告警日志文件,了解导致数据库进入受限模式的具体原因。路径通常为 `$ORACLE_BASE/diag/rdbms/<dbname>/<instance_name>/trace/alert_<instance_name>.log`。 #### 综合建议 在解决上述两个错误时,还需要注意以下几点: - 确保数据库版本和客户端工具版本兼容。 - 定期维护数据库对象,避免因权限或状态问题引发错误- 如果问题持续存在,建议联系数据库管理员或参考官方文档进一步排查。 ```sql -- 示例:检查数据库对象状态 SELECT OWNER, OBJECT_NAME, OBJECT_TYPE, STATUS FROM ALL_OBJECTS WHERE STATUS = 'INVALID'; ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值