实验环境:oracle提供的owb示例文件owbdemo_files11.1 在owb11.2软件上运行。
常见错误:
(0)、
将目标用户和工作流用户owf_mgr设置成为owb用户(使用owb安全ui),否则部署时分别提示rpe-2260和1012。
(1)RPE-02072: 在 Oracle Workflow 资料档案库中尚未启用 Oracle Workflow NLS 语言 ZHS。请使用 Oracle Workflow wfnlena.sql 服务器端脚本启用该语言。
注意路径。
(2)、ora-06550:package body,line 321 column 7:PL/SQL:ora-02289:序列不存在。
部署维时遇到上述错误提示。
因为维里用到了序列,所以部署维前要先部署序列。即解决方法:部署序列,再部署维。
(3)、PL/SQL:ora-00942:表或视图不存在。
部署映射遇到上述错误提示。
因为在映射里是将源数据库模块里的表的数据传送给目标数据库模块上的表,故而部署时目标用户要访问源数据库模块上的表,若此时目标用户没有访问源数据库模块上表的select权限的话,就会提示上述错误。总之,发生ora-00942:表或视图不存在,一般都是因为用户没有权限。解决方法:grant select on 源数据库模块上表 to 目标用户;
(4)、
部署load_sales时,提示
两个变量的数据类型【 (NUMERIC)和 (DATE)】 提示 数据不兼容,例如:
VLD-1011: Der Datentyp von OUTGRP1.FINISH_MONTH in AGGREGATOR (NUMERIC) ist nicht mit dem Datentyp von SALES.TIMES_CAL_MONTH_START_DATE in SALES_OUT (DATE) kompatibel.
两个变量的数据类型【 (NUMERIC)和 (varchar2)】 提示 数据不匹配,例如:
VLD-1001: The datatype of INOUTGRP1.NAME in TABLE_SRC (NVARCHAR) does not match the datatype of INOUTGRP1.NAME in TABLE_STG (VARCHAR)
数据不匹配(告警)是可以进行隐式数据类型转换的,故而不用处理也可以的; 数据不兼容(错误),则要进行处理,具体如下:
在设计中心界面上,打开映射load_sales,将组outgrp1里finished_month的表达式从TO_NUMBER(TO_CHAR( INGRP1.ORDER_FINISHED, ''MMYYYY''),''999999'')'【为NUMBER类型,该类型与date类型不兼容引起VLD-1011错误】改为的ingrp.finish_month【date类型】。
执行load_sales时,提示ora-02291:违反完整性约束条件(sales_wh.sales_times_fk)-未找到父项关键字,
这个意思是说数据库用户sales_wh下的外键约束对象sales_times_fk所管理的表上的那个列,该列里的有些值不存在于其所引用的表上的列里的值。
查询两个与约束相关的视图user_cons_columns和user_constrains,可知表sales上的列times引用了表times上的列cal_month_start_date。
在设计中心界面上,打开映射load_sales,可以看出,xsales.表orders下的列order_finished(date类型)里的值通过一系列中间环节最后会传送给方体sales对应的方体运算符里的列time_cal_month_start_date。从time_cal_month_start_date这个名字可以看出,这个列存放的值在逻辑业务上的意义为一个月开始的那一天,即如3月1号等,所以映射load_sales里的to_num_expr运算符里的组outgrp1上的finish_month无论是load_sales.tcl脚本里原来的TO_NUMBER(TO_CHAR( INGRP1.ORDER_FINISHED, ''MMYYYY''),''999999'')'【为NUMBER类型,该类型与date类型不兼容引起VLD-1011错误】,还是后来自己改为的ingrp.finish_month【date类型】,在逻辑业务上的意义都不是表示一个月开始的那一天,故而最后改为to_date(`01-‘||to_char(INGRP1.ORDER_FINISHED,‘month-YY’))【date类型】。
还有,把时间维里的开始时间定为1998,年数定为4。这个修改可以在设计中心界面上,选中时间维times,右键选择打开,在名称选项卡上进行修改;也可以直接修改dim_times.tcl脚本,将里面的 POPULATE DATA FROM 2001 FOR 1 YEARS 改为 POPULATE DATA FROM 1998 FOR 4 YEARS。因为
xsales.表orders下的列order_finished(date类型)里的值跨度从1998年到2002年的。
这样,xsales.表orders下的列order_finished(date类型)里的值通过一系列中间环节变化了的值,最后传送给方体sales对应的方体运算符里的列time_cal_month_start_date,而这些变化了的值每一个都会在表times上的列cal_month_start_date里存在的。
参考:
插入的数据 如果某个字段是外键 那么该值要么为空 要么在主键表中 有对应的主键值 否则 就不满足参照完整性约束