好记性不如烂笔头,以后将项目中常见的oracle的错误,已经解决办法详细记录下来。
1.ORA-24324:
错误描述:
SQL> shutdown immediate;
ORA-24324: service handle not initialized
ORA-24323: value not allowed
ORA-01089: immediate shutdown in progress - no operations are permitted
错误解决办法:
A、 切换到root用户下,杀掉oracle相关的进程:
root> ps -ef|grep $ORACLE_SID|grep -v grep|awk '{print $2}'|xargs -i kill -9
B、 用ipcs指令来检查数据库占用的内存:
root> ipcs –m
IPC status from /dev/kmem as of Mon Sep 10 16:45:16 2001
T ID KEY MODE OWNER GROUP SEGSZ CPID LPID
Shared Memory:
m 24064 0x4cb0be18 --rw-r----- oracle dba 28975104 1836 23847
m 1 0x4e040002 --rw-rw-rw- root root 31008 572 572
m 2 0x411ca945 --rw-rw-rw- root root 8192 572 584
m 4611 0x0c6629c9 --rw-r----- root root 7216716 1346 23981
m 4 0x06347849 --rw-rw-rw- root root 77384 1346 1361
C、用ipcrm命令释放掉数据库占用的内存:
root> ipcrm -m 24064
D、进入sqlplus重新启动数据库实例
2.常见的表空间不足,需要扩展表空间:
错误描述:
********表空间不足等
错误解决办法:
alter tablespace SYSTEM add datafile '/ora/oracle/app/oracle/cbsdb164/system17.dbf' size 200m;
3.undo日志过大
错误描述:
当空间不够,没有东西可以删,只能通过重建undo日志
错误解决办法:
1. 新增一个undo tablespace.
SQL> create undo tablespace UNDOTBS2 datafile '/opt/oracle/oradata/undotbs001.dbf' size 2048M extent management local;
Tablespace created.
SQL>
2. 设置使用新增的undo tablespace.
SQL> alter system set undo_tablespace=UNDOTBS2 scope=both;
System altered.
SQL>
3. 删除。
SQL> drop tablespace UNDOTBS1 including contents and datafiles cascade constraints;
Tablespace dropped.
SQL>
4. 重建
SQL> create undo tablespace UNDOTBS1 DATAFILE '/opt/oracle/oradata/undotbs01.dbf' SIZE 3048M EXTENT MANAGEMENT LOCAL;
Tablespace created.
SQL>
5. 设置使用新的
SQL> alter system set undo_tablespace=UNDOTBS1 scope=both;
System altered.
SQL>
6. 删除临时undo tablespace.
SQL> drop tablespace UNDOTBS2 including contents and datafiles cascade constraints;
Tablespace dropped.
3.ORA-03113
错误描述:
ORA-03113: end-of-file on communication channel
Process ID: 21812
Session ID: 170 Serial number: 3
错误解决办法:
启动数据库 #su - oracle
#sqlplus / as sysdba
#startup
查看它的启动日志
#cd /opt/oracle/db/diag/rdbms/iptvmem/iptvmem/trace
#tail -f alert_iptvmem.log
会有如下的错误:
ALTER DATABASE MOUNT
Errors in file /opt/oracle/db/diag/rdbms/iptvmem/iptvmem/trace/iptvmem_mman_29092.trc:
ORA-27103: internal error
Linux-x86_64 Error: 17: File exists
查看专家的解决办法,创建spfile文件然后在其中加入这样的参数:
*.memory_max_target=3200M
*.memory_target=1500M
但是如果你修改了当前的spfile文件,那你再次启动就会报错:
不能打开文件/opt/oracle/db/product/11.1.0/dbs/initiptvmem.ora;
而你查看当前的路径下,不存在该文件,当然会报这样的错。
为什么报这样的错呢?
你编辑过当前路径下的spfile文件,导致它不可用,启动时就会找默认的init$SID.ora文件。
解决的思路如下:数据库用pfile启动
1.如何得到pfile
从/opt/oracle/db/admin/iptvmem/pfile路径下获取pfile文件复制到/opt/oracle/db/product/11.1.0/dbs路径下
文件名重新定义为init$SID.ora
#cp /opt/oracle/db/admin/iptvmem/pfile/*.ora /opt/oracle/db/product/11.1.0/dbs/initipevmem.ora
2.启动数据库
#sqlplus / as sysdba
启动数据库
#startup pfile='/opt/oracle/db/product/11.1.0/dbs/initipevmem.ora'
3.备份initiptvmem.ora文件
#cp initipevmem.ora initipevmem.ora.cxm
4.在initipevmem.ora中新增:
*.memory_max_target=3200M
*.memory_target=1500M
检查一下文件中是否存在memory_target的配置,如果有配置,将原来的删掉。
启动数据库:
#startup pfile='/opt/oracle/db/product/11.1.0/dbs/initipevmem.ora'
自此问题应该解决。