Oracle常见错误问题收集和解决方案

来源:互联网 发布:java 日期选择控件 编辑:程序博客网 时间:2024/05/01 19:08

1、rman下备份数据库时,cannot reclaim XXX bytes disk space from XXX limit
问题描述:问题是在db_recovery_file_dest_size 备份时没有足够的空间造成的解决方案:为db_recovery_file_dest_size 添加或清理空间:SQL> show parameter db_recovery_file_destSQL> alter system set db_recovery_file_dest_size=10G scope=both;SQL> alter system set log_archive_dest_1='LOCATION=F:\oradata\orcl\frarea' scope=both ;或查看归档日志RMAN> list archivelog all;使用目标数据库控制文件替代恢复目录可以先把归档日志备份到其他的空间,然后用rman删除归档日志;RMAN> delete archivelog all;
-------------------------------------------------------------------------------------------------------------------------------------------------------------
2、rman下备份数据库时,ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode
问题描述:问题是数据库日志模式为NOARCHIVELOG 备份时修改为ARCHIVELOG模式。解决方案:修改数据库为归档模式:详细请参考:http://blog.csdn.net/hbtianmimi/article/details/9094971
-------------------------------------------------------------------------------------------------------------------------------------------------------------
3、Oracle报ORA-01078和LRM-00109错解决方法
 问题描述:ORA-01078: failure in processing system parameters      LRM-00109: could not open parameter file '/oracle/product/11.1.0/dbs/initorcl.ora' 解决方法:将$ORACLE_BASE/admin/数据库名称/pfile目录下的init.ora.012009233838形式的文件copy 到$ORACLE_HOME/dbs目录下initoracle.ora即可。(注:initoracle.ora中的oracle为你的实例名 ORACLE_SID)     比如:cp /oracle/admin/xok/pfile/init.ora.75200916276 /oracle/product/11.1.0/dbs/initorcl.ora

-------------------------------------------------------------------------------------------------------------------------------------------------------------
4、ORA-00845 MEMORY_TARGET not supported on this system (oracle11g for asianux3 )
问题描述:这个问题是由于设置SGA的大小超过了操作系统/dev/shm的大小:解决方案:一种是修改初始化参数,使得初始化参数中SGA的设置小于/dev/shm的大小,另一种方法就是调整/dev/shm的大小。[root@db2  ~]# df  -h  /dev/shm    //查看/dev/shm大小tmpfs                 1.0G  500M  500M 50%  /dev/shm[root@db2 ~]#vi /etc/fstab      //更换/dev/shm默认大小为2GLABEL=/                 /                       ext3    defaults        1 1LABEL=/boot             /boot                   ext3    defaults        1 2#tmpfs                   /dev/shm               tmpfs   defaults        0 0tmpfs                   /dev/shm     tmpfs   defaults,size=2048M  0 0devpts                  /dev/pts                devpts  gid=5,mode=620  0 0sysfs                   /sys                    sysfs   defaults        0 0proc                    /proc                   proc    defaults        0 0LABEL=SWAP-hda3         swap                    swap    defaults        0 0//注:本行defaults,size=10240M 中间无空格[root@db2 ~]#[root@db2 ~]# umount /dev/shm[root@db2  ~]# mount /dev/shm[root@db2  ~]# df  -h/dev/hda2             8.2G  4.1G  3.8G  53% //dev/hda1              92M   12M   75M  14% /boottmpfs                 2.0G  240M  1.8G  12% /dev/shm/dev/sda              7.9G  7.5G   39M 100% /array修改/etc/fstab,重新mount /dev/shm,然后就可以启动数据库了。详细请参考:http://ibmcn.blog.51cto.com/510174/766996

-------------------------------------------------------------------------------------------------------------------------------------------------------------
5、ORA-01102: cannot mount database in EXCLUSIVE mode
问题描述:出现ORA-1102错误可能有以下几种可能:一、在HA系统中,已经有其他节点启动了实例,将双机共享的资源(如磁盘阵列上的裸设备)占用了;二、说明Oracle被异常关闭时,有资源没有被释放,一般有以下几种可能,1、 Oracle的共享内存段或信号量没有被释放;2、 Oracle的后台进程(如SMON、PMON、DBWn等)没有被关闭;3、 用于锁内存的文件lk<sid>和sgadef<sid>.dbf文件没有被删除。 第一点,可以通过在备节点上查数据库状态来判断是否已启动实例。第二点,如果系统是因为断电引起数据库宕机的,并且系统在接电被重启后,我们可以排除第二种可能的1、2点。接下来考虑第3点。查$ORACLE_HOME/dbs目录:[oracle@localhost dbs]$ ls sgadef*  ls: cannot access sgadef*: No such file or directory  [oracle@localhost dbs]$ ls lk*  lkORCL  [oracle@localhost dbs]$   lk<sid>文件没有被删除。将它删除掉[oracle@localhost dbs]$ rm lkORCL  再启动数据库,成功。如果是Oracle进程没有关闭,用以下命令查出存在的oracle进程:[root@localhost dbs]# ps -ef|grep oracle  root      2310  2358  0 16:00 pts/0    00:00:00 su - oracle  oracle    2311  2310  0 16:00 pts/0    00:00:00 -bash  root      2427  2403  0 10:47 pts/1    00:00:00 su - oracle  ……   然后用kill -9命令杀掉进程$kill -9 <PID> 总结:当发生1102错误时,可以按照以下流程检查、排错:1.如果是HA系统,检查其他节点是否已经启动实例;2.检查Oracle进程是否存在,如果存在则杀掉进程; 3.检查信号量是否存在,如果存在,则清除信号量;4.检查共享内存段是否存在,如果存在,则清除共享内存段; 5.检查锁内存文件lk<sid>和sgadef<sid>.dbf是否存在,如果存在,则删除。详细请参考:http://blog.csdn.net/jscpb/article/details/6790653


原创粉丝点击