Oracle错误:ORA-27101: shared memory realm does not exist

来源:互联网 发布:淘宝首页推广费用 编辑:程序博客网 时间:2024/04/29 15:03

笔者今天维护一台 Windows Server的服务器上的Oracle,想要导出一个数据库文件。

然而,首先试着用sqlplus登录,发现报如下错误:

“ORA-01034 - Oracle not available”“ORA-27101 - shared memory realm does not exist”。

不能连接到我的Oracle数据库,然后就到网上搜索别人的博客。

发现这篇博客写的比较好:

处理错误:ORA-27101: shared memory realm does not exist记实

首先,找到了数据库安装文件中的ORACLE_BASE\ORACLE_HOME\DATABASE 下面的ORADIM.LOG文件。

发现错误和博客中描述的不太一样,但是还是死马当活马医,试过了博客中的两种方法,但是没什么用。

后来仔细查看上面的ORADIM.LOG文件,发现了一个 

错误:“ORA-03113:通信信道的文件结尾 进程ID:xxxx
然后搜索了这个错误,找到了如下这篇文章:

Oracle错误——ORA-03113:通信通道的文件结尾 解决办法 


按照博客描述,到错误日志里面寻找问题根源:博客中的地址为 e:\app\kang\diag\rdbms\oracle\oracle\trace\文件夹下oracle_ora_6320.trc文件, 主要需要注意的是\diag\rdbms\这个目录,然后根据进程id找到对应的log文件,原博主中的是进程ID是6320. 

原博主的错误日志如下:

Trace filee:\app\kang\diag\rdbms\oracle\oracle\trace\oracle_ora_6320.trc  Oracle Database 11gEnterprise Edition Release 11.2.0.1.0 - 64bit Production  With thePartitioning, OLAP, Data Mining and Real Application Testing options  Windows NT VersionV6.1 Service Pack 1  CPU                 : 4 - type 8664, 2 PhysicalCores  Process Affinity    : 0x0x0000000000000000  Memory (Avail/Total):Ph:2805M/6087M, Ph+PgF:6761M/12173M  Instance name: oracle  Redo thread mountedby this instance: 1  Oracle processnumber: 19  Windows thread id:6320, image: ORACLE.EXE (SHAD)        *** 2014-08-1608:18:55.461  *** SESSIONID:(191.3) 2014-08-16 08:18:55.461  *** CLIENT ID:()2014-08-16 08:18:55.461  *** SERVICE NAME:()2014-08-16 08:18:55.461  *** MODULENAME:(sqlplus.exe) 2014-08-16 08:18:55.461  *** ACTION NAME:()2014-08-16 08:18:55.461     ORA-19815: 警告:db_recovery_file_dest_size 字节 (共 4102029312 字节) 已使用 100.00%, 尚有 0 字节可用。  ************************************************************************  You have followingchoices to free up space from recovery area:  1. Consider changingRMAN RETENTION POLICY. If you are using Data Guard,     then consider changing RMAN ARCHIVELOGDELETION POLICY.  2. Back up files totertiary device such as tape using RMAN     BACKUP RECOVERY AREA command.  3. Add disk space andincrease db_recovery_file_dest_size parameter to     reflect the new space.  4. Delete unnecessaryfiles using RMAN DELETE command. If an operating     system command was used to delete files,then use RMAN CROSSCHECK and     DELETE EXPIRED commands.  ************************************************************************  ORA-19809:超出了恢复文件数的限制  ORA-19804: 无法回收33961984 字节磁盘空间 (从 4102029312 限制中)  *** 2014-08-1608:18:55.502 4132 krsh.c  ARCH: Error 19809Creating archive log file to'E:\APP\KANG\FLASH_RECOVERY_AREA\ORACLE\ARCHIVELOG\2014_08_16\O1_MF_1_159_%U_.ARC'  *** 2014-08-1608:18:55.502 2747 krsi.c  krsi_dst_fail: dest:1err:19809 force:0 blast:1  DDE: Problem Key 'ORA312' was flood controlled (0x1) (no incident)  ORA-00312: 联机日志 3 线程1: 'E:\APP\KANG\ORADATA\ORACLE\REDO03.LOG'  ORA-16038: 日志 3sequence# 159 无法归档  ORA-19809:超出了恢复文件数的限制  ORA-00312: 联机日志 3 线程1: 'E:\APP\KANG\ORADATA\ORACLE\REDO03.LOG'     *** 2014-08-1608:18:55.565  USER (ospid: 6320):terminating the instance due to error 16038  

(这里之所以不用自己的,一方面因为服务器当时是断网状态,不太方便,另一方面,我的log里面中文乱码,不太好说明问题)

我们可以看到:

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

也就是说 db_recovery_file_dest_size 大小不够用了。


解决途径(Oracle错误——ORA-03113:通信通道的文件结尾 解决办法 中博主的解决思路是对的,但是代码有些问题)

通过命令窗口:

————设置归档日志空间大小

sqlplus / as sysdba  shutdown abort     ----关闭进程  startup mount       ---- 装载数据库  select * from v$recovery_file_dest; ---查询归档日志  alter system set db_recovery_file_dest_size=10737418240; --设置归档日志空间为10G,可以根据实际情况增加  exit ---到这里空间大小已经设置完成  

设置好重启oracle,使用sqlplus登录已经可以进去了。


想要删除很久之前的归档日志,则使用rman工具,具体命令如下:

————删除归档日志

rman target /   -----进入rman工具窗口  RMAN>crosscheck archivelog all;  --运行这个命令可以把无效的expired的archivelog标出来。  RMAN>delete archivelog all completed before 'sysdate -7';  -- -即删除7天前的归档日志


作为一个小菜鸟,跌跌撞撞的成长。

0 0