• 1. 无线产品线DB脚本测试 常见问题及分析 产品测试部 吴晓燕 2009 年 8月
  • 2. 内容环境变量及配置相关 SQL常见语法错误 oracle和informix语法的区别
  • 3. 1、Can't locate XML/DOM.pm; 2、libclntsh.so.8.0: 打开失败: 无此文件或目录 3、pdb.pl连接数据库提示找不到pm包,检查perl5的环境变量,patch/class_path中dc_perl的路径等; 4、提示连接数据库无权限,检查是否创建数据库后是否给用户授权;环境配置
  • 4. 5、informix数据库报错,使用finderr 206 ,finderr 1262辅助查看错误信息。 6、在unix中使用文本编辑后的文件容易有空行,显示为^M,有时会导致执行时报错,VI编辑文件,使用":%s/^M//g"删除全部空行。 7、执行loadunl.sh时,要注意sh脚本里是否有变量需要修改,如果是默认的$1/$2@$3,就会报错。
  • 5. setup脚本时,报无法连接数据库,检查insdb.xml中配置是否正确,informix和oracle不同: oracle MCNMS5 MCNMS5 nrmdb4 nrmdb4 Oracle Oracle Informix nrmdb4 nrmdb4 nrmuser nrmoptr Informix Informix
  • 6. 删除用户时,提示被锁; 查询此用户的会话进程 SQL〉SELECT SID,SERIAL# FROM V$SESSION WHERE USERNAME='USER1'; SID SERIAL# ----------------------------- 24 25341 结束此用户的所有会话 SQL>ALTER SYSTEM KILL SESSION '24,25341';
  • 7. SQL: -1262: Failed to locate SQL error message 分片时由于字段导致分片出错,将原来的compress_date字段分片改为first_result; FIRST_RESULT DATETIME YEAR TO SECOND NOT NULL, COMPRESS_DATE DATETIME YEAR TO SECOND NOT NULL, scan_start_time<'2009-08-24 00:00:00' and scan_start_time>='2009-08-20 00:00:00' in DPMDBS01,
  • 8. SQL: -206: Failed to locate SQL error message 由于字段的DATETIME类型写错导致的 应精确到天 FIRST_RESULT DATETIME YEAR TO SECOND NOT NULL, 精确到秒 SCAN_START_TIME DATETIME YEAR TO FRACTION NOT NULL,
  • 9. 存储过程如果没有使用end ;/结束符,导致脚本执行后不能继续向下执行或退出; 如:nrmdb函数add_function.sql执行后没有反应,仅显示数字。
  • 10. 创建函数出错 Oracle/nrmdb/nrmdb_functions.sql Prepare SQL Error ORA-24373: invalid length specified for statement (DBD ERROR: OCIStmtPrepare)
  • 11. 执行需要分片的脚本前,如测试表空间没有按默认大小去分配,需要修改frg.xml文件中的初始大小: $DB_PATH> frg_config.xml 1024 如果表空间没按默认的数量去创建,需要修改相关表空间名称部分,如: clrdbs01,clrdbs02….. 如果是nmosdb,需要修改nmosdb_tbl.sql和fmdb_tbl.sql中的extent部分的大小,如: EXTENT SIZE 190062 NEXT SIZE 19006 LOCK MODE PAGE;
  • 12. ' '内的字符串中间不要有空行,否则执行时会报错:ORA-01756: quoted string not properly terminated oracle例子: comment on column TAA_SM_CONFIG.OPERATION_ID is '操作ID号 1:浏览 2:编辑 4:控制 各权限为位或关系 5:1+4 7:1+2+4 3:1+2 6:2+4 编辑和控制都隐含具有浏览功能' /
  • 13. 执行脚本时注意公共表和应用模块用到的表,在创建时有没有重复创建。 表或索引等对象已经存在: Oracle报错: ORA-00955: name is already used by an existing object. Informix报错: 310: Table (informix.tca_ne_schema) already exists in database. 缺表:206: The specified table (nrmdb:meta_columns) is not in the database.对象存在或不存在
  • 14. SQL语句中数据类型写错 如:OBJECT_CLASS NUMRIC,应为 NUMERIC, oracle报错为:ORA-00902: invalid datatype informix报错为: 9628: Type (numric) not found. 当定义一个NUMERIC型字段时,需要同时指定整数部分的大小和小数部分的大小。如:MUNERIC(23,0) 一个 NUMERIC型数据的整数部分最大只能有28位,小数部分的位数必须小于或等于整数部分的位数,小数部分可以是零。 NUMERIC不设定成NUMERIC(10,2)的形式的话,就表示整型,不包含小数位。数值类型
  • 15. CHAR的最大长度是 2000bite, VARCHAR2的最大长度是 4000bite, 因此下面的CHAR应修改为VARCHAR2 LOCATION_INFO CHAR(4000), ORA-00910: specified length too long for its datatypeCHAR和 VARCHAR2
  • 16. Oracle: SYSDATE为取当前系统时间,不应加 ‘ ‘ ,如果中间没有空格也会报错。 例:TIME_STAMP DATE DEFAULT 'SYSDATE' ORA-01841: (full) year must be between -4713 and +9999, and not be 0 Informix: TIME_STAMP DATETIME YEAR TO SECOND DEFAULT CURRENT YEAR TO SECOND日期类型
  • 17. 创建索引报错 CREATE INDEX ix2pub_intid2spc_info ON pub_intid2spc_info(vendor_id) Informix 报错为:352: Column (vendor_id) not found. Oracle 报错为:ORA-00904: "VENDOR_ID": invalid identifier创建索引
  • 18. Oracle中创建索引的语法; CREATE INDEX IX2_ALARM_ACT ON TFA_ALARM_ACT( EVENT_TIME ASC, ACTIVE_STATUS ASC ); 如果用在Informix数据库则会报错: SQL: -212:Failed to locate SQL error message创建索引
  • 19. Informix create public link for nrmdb@wcdmaserver:link; 报错:201: A syntax error has occurred. 同义词不能使用public,可以使用synonym完成创建。 Oracle create public synonym link for nrmdb@wcdmaserver.link; 创建同义词
  • 20. (本页无文本内容)
  • 21. 数据类型对比 Informix Oracle datetime,data date interval integer serial integer varchar varchar2
  • 22. 语法区别Informix: 自增长字段的设置 如:create table "taw_rm_user" ( "id" serial not null, Oracle SQL>CREATE SEQUENCE myseq INCREMENT BY 10 START WITH 120 MAXVALUE 9999 NOCACHE NOCYCLE;
  • 23. 在建表语句中table后面的表名加“ ” oracle在处理时把它当做是字符串的表名创建。 导致查询时需要使用select * from "taw_rm_user";才能查到表。语法区别
  • 24. informix: Create table table_name( col1 integer, col2 varchar(20), unique(col) ) fragment by expression col1 =1 in cmdbs01, --------字段值等于1时入01表空间; col1 =2 in cmdbs02, --------字段值等于2时入02表空间; extend size 200000 next size 20000 lock mode row; 蓝色部分可以替换为fragment by round robin in dbs1,dbs2,dbs3 --------随机分片方式语法区别
  • 25. Oracle Create table table_name( col1 integer, col2 varchar2(20), unique(col) USING INDEX LOCAL ) partition by range(col1)( PARTITION VALUES LESS THAN(2) TABLESPACE cmdbs01 字段值等于1时入01表空间; PARTITION VALUES LESS THAN(3) TABLESPACE cmdbs02, 字段值等于2时入02表空间; storage (initial 200000 next 20000k ); 蓝色部分可以替换为:partition by hash(col1) store in (cmdbs01,cmdbs02) ---随机分片方式,hash是oracle中调用的一个函数。 删除临时表需要先truncate 表; ----删除数据比delete快。语法区别
  • 26. Informix create table tpa_indicator_abnormal ( id SERIAL not null, tabname varchar(64) not null, first_result datetime year to second not null, ne_id int8 not null, ne_type integer, sum_level integer, Condition varchar(255), colum_name varchar(128) not null, check_time datetime year to second default CURRENT year to second, comment varchar(255), primary key (first_result, ne_id, colum_name,tabname, id) constraint PK_TPA_INDICATOR_A ); create index ix_tpa_indicator_abnormal on tpa_indicator_abnormal(check_time,first_result);语法区别
  • 27. Oracle create sequence tpa_indicator_abnormal_id start with 1 increment by 1; create table tpa_indicator_abnormal( id number not null, tabname varchar2(64) not null, first_result DATE not null, ne_id number not null, ne_type number, sum_level number, Condition varchar2(255), colum_name varchar2(128) not null, check_time DATE default SYSDATE , constraint PK_TPA_INDICATOR_ABNORMAL primary key (tabname, first_result, ne_id, colum_name, id) );语法区别
  • 28. 练习题定位以下两个问题的原因,并提出解决办法: QEUSTION1: CREATE TABLE LINKSET_OFFC_H ( LINKSET_INT_ID INTEGE, NE_TYPE SMALLINT, NE_ID INTEGER, TIME_STAMP DATETIME YEAR TO SECOND, LINKSET_ID VARCHAR(20), OBJECT_CLASS SMALLINT, ORIG_SPC VARCHAR(20), DEST_SPC VARCHAR(20), NUM_LINKS INTEGER ); 9628: Type (intege) not found.
  • 29. QEUSTION2: CREATE INDEX IX1_ALARM_ACT ON TFA_ALARM_ACT ( C_FP0 ASC, C_FP1 ASC, C_FP2 ASC, C_FP3 ASC ); SQL: -212: <>练习题
  • 30. 定位以下两个问题的原因,并提出解决办法: QEUSTION3:Can't locate XML/DOM.pm; QEUSTION4:libclntsh.so.8.0: 打开失败: 无此文件或目录练习题