您的当前位置:首页正文

ORA-01948和ORA-04052错误的解决方法

2023-11-18 来源:爱上美食网

一、事件背景: 业务人员在创建一个物化视图的时候,报了以下错误: SQLgt; CREATE MATERIALIZED VIEW MV_RETAIL_wbmout_R 2 T

一、事件背景:

业务人员在创建一个物化视图的时候,报了以下错误:

SQL> CREATE MATERIALIZED VIEW MV_RETAIL_wbmout_R

2 TABLESPACE SAPDATA

3 PCTUSED 0

4 PCTFREE 10

5 INITRANS 2

6 MAXTRANS 255

7 STORAGE (

8 INITIAL 64K

9 NEXT 1M

10 MINEXTENTS 1

11 MAXEXTENTS UNLIMITED

12 PCTINCREASE 0

13 BUFFER_POOL DEFAULT

14 FLASH_CACHE DEFAULT

15 CELL_FLASH_CACHE DEFAULT

16 )

17 NOCACHE

18 LOGGING

19 NOCOMPRESS

20 NOPARALLEL

21 BUILD DEFERRED

22 REFRESH COMPLETE ON DEMAND

23 WITH ROWID

24 AS

25 SELECT "record_code" FROM "wbm_store_out_record"@MYSQL

CREATE MATERIALIZED VIEW MV_RETAIL_wbmout_R

*

第 1 行出现错误:

ORA-04052: 在查找远程对象 datachk.wbm_store_out_record@OTO 时出错

ORA-01948: 标识符的名称长度 (31) 超过最大长度 (30)

其中"wbm_store_out_record"@MYSQL是远程mysql数据库上面的一个表,通过透明网关进行访问;

二、查找metalink的资料,整理如下

2.1 症状

Line # = 0 Column # = 0 Error Text = ORA-04052: error occurred when looking up remote object Oracle.V_STG_GENDGEN@DBLINK

ORA-01948: identifier's name length (31) exceeds maximum (30)

This occurs even though the SQL Server table name is less than 30 characters.

A query of the remote table via SQLPlus does not produce the error. However, running an anonymous block from SQLPlus does produce the error:

Error starting at line 1 in command:

declare

v_count integer;

begin

select count(*) into v_count from ORACLE.V_STG_GENDGEN@DBLINK ;

end;

Error report:

ORA-04052: error occurred when looking up remote object ORACLE.V_STG_GENDGEN@RAY

ORA-01948: identifier's name length (31) exceeds maximum (30)

04052. 00000 - "error occurred when looking up remote object %s%s%s%s%s"

*Cause: An error has occurred when trying to look up a remote object.

*Action: Fix the error. Make sure the remote database system has run

KGLR.SQL to create necessary views used for querying/looking up

objects stored in the database.

通过透明网关可以进行相应的select,但是诸如创建物化视图的时候,就会报相应的列长度报错;

2.2 原因

当通过透明网关访问远程的ms、mysql数据库时,当这些表中有任意的一列长度大于30个字符的时候就会报这个错误;

2.3 解决方法

方法一、根据报错的内容,列的长度大于30个字符会报错,修改相应列的长度小于30个字符即可(当系统已经上线后,一些字段可能都被引用到了应用,所以这个时候修改列的名称有一定的风险,不建议使用)

方法二、创建一个视图,所有列的名称长度都不超过30个字符即可(推荐使用)

因为我们的系统已经上线了,避免出现没必要的问题,,直接创建一个视图即可;

Oracle 单实例 从32位 迁移到 64位 方法

在CentOS 6.4下安装Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虚拟机中安装步骤

Debian 下 安装 Oracle 11g XE R2

Oracle RAC 11.2(12C)正确关闭顺序

本文永久更新链接地址:

linux

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

上一篇:新鲜草莓的保存方法

下一篇:

热门图文

  • functionfoo的原型与prototype属性解惑_javascript技巧

    本文主要参考了 MDN文档 和 知乎讨论 。 在js中,大部分东西都是对象,数组是对象,函数也是对象,对象更加是对象。 不管我们给数组和函数定义什么内容,它们总是有一些相同的方法和属性 。比如说hasOwnProperty(),toString()等: 这说明一个对象所拥有的属性不仅仅是它本身拥有的属性,它还会从其他对象中继承一些属性。当js在一个对象中找不到需要的属性时,它会到这个对象的父对象

  • Javascript面象对象成员、共享成员变量实验_javascript技巧

    JavaScript中对象的创建有以下几种方式:(1)使用内置对象(2)使用JSON符号(3)自定义对象构造一、使用内置对象JavaScript可用的内置对象可分为两种:1,JavaScript语言原生对象(语言级对象),如String、Object、Function等;2,JavaScript运行期的宿主对象(环境宿主级对象),如window、document、body等。我们所说的使用内置对象,是指通过JavaScript语言原生对象的构造方法,实例化出一个新的对象。如:复制代码 代码如下:

  • HTML颜色选择器实现代码_javascript技巧

    在HTML中font标签即可对字体内容设置颜色。1、font语法:<fontcolor="#FF0000">我是红色字体</font>首先font是一对常规标签,将字体文本内容放入标签内,font标签内设置color颜色+对应颜色值即可设置font标签对象内字体颜色。2、htmlfont设置字体颜色实例完整代码<!DOCTYPEhtml><html><head><metacharset="utf-8&

  • 简略的前端架构心得&&基于editor为例子的编码小技巧_javascript技巧

    javascript中存在几种对URL字符串进行编码的方法:escape(),encodeURI(),以及encodeURIComponent()。这几种编码所起的作用各不相同。escape() 方法:采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。不会被此方法编码的字符: @ * / +encodeURI() 方法:把

  • 基于jQuery的获得各种控件Value的方法_jquery

    // 这是取$("xxxx") 这个选择器选到的对象的value$("xxxx").val();// 这是向$("xxxx") 这个选择器选到的对象的value里赋值"test"$("xxxx").val("test");也就是说.val();这个方法是双向的 能读数据能写数据更多例子请看:http://www.w3school.com.

Top