Dec
01
2006
在创建含有LOB字段的表时,出现这样的报错:
ORA-03001: unimplemented feature
OERR的解释是:
ORA-03001 unimplemented feature
Cause: At attempt was made to use a feature that is not currently implemented.
Action: Do not attempt to use this feature at this time.
这个很自然让人想到难道是LOB的功能没有安装?但是我们也知道对于LOB的支持是内置在Oracle数据库中的,不需要额外安装,那么到底是什么原因?
因为数据库版本是9.0.1.5,也就是是Oracle9i release1 的数据库,检查数据库的文档我们发现这样一段话:
Restrictions on AUTO:
* You can specify this clause only for permanent, locally managed tablespace.
* You cannot specify this clause for the SYSTEM tablespace.
* You cannot store LOBs in AUTO segment-managed tablespaces.
也就是在Oracle9iR1版本中,我们不能在ASSM的表空间中创建LOB字段,这个限制在9iR2中被移除了。
解决方法:
1。升级数据库到9iR2,或者
2。将LOB字段存储在非ASSM的表空间中。
比如:
- CREATE TABLESPACE manual_seg_ts DATAFILE 'file_2.f' SIZE 1M
- EXTENT MANAGEMENT LOCAL
- SEGMENT SPACE MANAGEMENT MANUAL;
LOB 


ORA 03001 


Nov
28
2006
Oracle数据库监听无法正常启动,在log文件中产生大量的错误信息。
28-NOV-2006 14:39:55 * 12531
TNS-12531: TNS:cannot allocate memory
28-NOV-2006 14:39:55 * 12531
TNS-12531: TNS:cannot allocate memory
OERR的解释是:
TNS-12531 TNS:cannot allocate memory
Cause: Sufficient memory could not be allocated to perform the desired activity.
Action: Either free some resource for TNS, or add more memory to the machine. For further details, turn on tracing and re-execute the operation.
实际上,可用内存肯定是足够的,最后发现原因居然是hosts文件中缺少主机定义。
配置监听我们使用的是netstat -in检查网卡绑定的IP地址,然后将IP写入listener.ora文件。
通常netstat -in中显示的IP地址在/etc/hosts文件中都会有配置,而偏偏这次没有,于是oracle的监听程序在启动的时候在hosts文件中检查不到listener.ora中配置的主机,所以无法正常启动。
另外,如果/etc/hosts中设置的IP和主机名称对应中没有本机hostname命令显示的主机名,也同样会报这个错误。
解决方法:
在/etc/hosts中配置正确的IP地址和主机名称
Oracle 


TNS 12531 


Nov
19
2006
本文对eygle的如何处理ORA-600 [2662]作一点补充。
通常我们对于ORA-600 [2662]错误的解决是通过10015 ADJUST_SCN事件来增进current SCN以达到比数据文件中最大的SCN还要大的目的,这样才可能启动数据库。
eygle的例子中报错信息如下:
ORA-00600: internal error code, arguments: [2662], [0], [547743994], [0], [898092653], [8388617], [], []
这个报错参数的含义在metalink中如此描述的:
Arg [a] Current SCN WRAP
Arg [b] Current SCN BASE
Arg [c] dependent SCN WRAP
为了存储更大的SCN值,当SCN BASE到足够大并开始重置的时候,SCN WRAP将加1。
Arg [d] dependent SCN BASE
Arg [e] Where present this is the DBA where the dependent SCN came from.
也就是Arg [d] 的值是从哪个block中找到的,通常是一个data block address。
通过这几个参数根据一定的规则可以计算出我们需要的level。计算规则如下:
1. Arg [c] *4得出一个数值,假设为V_Wrap
2. 如果Arg [d]=0,则V_Wrap值为需要的level
Arg [d] < 1073741824,V_Wrap+1为需要的level
Arg [d] < 2147483648,V_Wrap+2为需要的level
Arg [d] < 3221225472,V_Wrap+3为需要的level
仍旧看eygle的案例。
Arg [c] *4 = 0 * 4 = 0
Arg [d] = 898092653 < 1073741824
所以level = 0+1 = 1
因此其实eygle不需要增进level 10,level 1就应该足够了。
- alter session set events '10015 trace name adjust_scn level 1';
看另外一个例子的报错信息,我们再来计算一次。
ORA-00600: internal error code, arguments: [2662], [0], [2179133], [8656], [70114056], [33855201], [], []
Arg [c] *4 = 8656 * 4 = 34624
Arg [d] = 70114056 < 1073741824
所以level = 34624 + 1 = 34625
因此在这个例子中我们应该执行
- alter session set events 'IMMEDIATE trace name ADJUST_SCN level 34625';
ORA 600 2662 


Oracle 


Nov
19
2006
因为忽然需要安装数个在AIX5L Based Systems (64-bit)上的Oracle9i RAC环境,而且都是手动创建,所以今天晚上创建到第三个的时候已经头晕了。
数据库软件打到9208的patch,是从最初的安装环境tar到新RAC环境的两个节点上的。
所有数据库目录结构手工创建。
所有init参数手工修改。
然后准备启动数据库实例到nomount状态,用create database手动创建数据库。
但是startup nomount却开始报错。
ORA-00603: ORACLE server session terminated by fatal error
ORA-27504: IPC error creating OSD context
ORA-27300: OS system dependent operation:socket failed with status: 68
ORA-27301: OS failure message: Can’t assign requested address
ORA-27302: failure occurred at: sskgxpcre1
因为说实话环境太多,前面安装HACMP的IBM的哥们儿估计也被弄得有点儿晕了,忘记创建裸设备,忘记设置系统limits的事情前面也都发生过,所以一看是OS报的错误,不由不怀疑到是不是又忘了设置什么。
检查系统浪费了不少时间,后来自己检查,才发现原来是自己晕了。。。汗。
错误原因:
在init参数里面设置的cluster_interconnects参数还是原来那个环境的私有IP,所以当cluster_database=true的数据库实例启动时,Oracle无法正确取得节点间的心跳地址,故而报错。
解决方法:
cluster_interconnects参数改正确就好啦。
ORA 27302 


Oracle 

