Oracle使用regexp_like报错ORA-12733 正则表达式太长

注:此篇内容并没有解决正则表达式太长的问题。

在命令行窗口连接数据库:

>sqlplus username/password@hostname:port/SID或service_name

其中:

  • username 是你的数据库用户名。

  • password 是你的数据库密码。

  • hostname 是数据库服务器的主机名或IP地址。

  • port 是监听端口,默认是1521。

  • SID 是系统标识符,是数据库实例的唯一名称。

  • service_name 是数据库的服务名,这是在Oracle Net Configuration中配置的。

ORA-12733错误通常发生在Oracle数据库中,当正则表达式的长度超过了系统允许的最大限制时。Oracle的REGEXP_LIKE函数确实有一个可配置的最大长度限制,以防止内存溢出或性能问题。当你的正则表达式超过了这个值,就会触发这个错误。

解决这个问题的方法有:

  1. 减少正则表达式长度: 确保你的正则表达式尽可能简洁。如果可能,试着分解或重构你的查询,将长表达式拆分成几个较小的表达式。

  2. 增加数据库配置: 你可以增加数据库的REGEXP_LIKE_LIMIT参数来扩大允许的最大长度,但这可能会影响到性能。执行如下命令(以SQL*Plus为例):

    SQL> ALTER SESSION SET REGEXP_LIKE_LIMIT = your_new_limit;
  3. 确保提供的新值是小于或等于数据库有效内存的一个合理数量。

  4. 使用查询优化: 通过审核你的SQL查询,看看是否有其他方法可以更有效或间接地实现你的需求,可能不需要直接使用长正则表达式。

  5. 增加硬件资源: 如果以上方法都无法解决问题,可能是数据库的硬件限制。在这种情况下,升级数据库服务器的硬件或考虑使用分区、索引等数据库优化技术。

如何查看REGEXP_LIKE_LIMIT值的大小?

在Oracle数据库中,你可以通过以下步骤查看当前的REGEXP_LIKE_LIMIT值:

  1. 使用SQL Plus: 打开SQL Plus,运行以下命令:

    SQL> SELECT DBMS_METADATA.get_database_attribute(null, 'REGEXP_LIKE_LIMIT') as max_regexp_length FROM dual;
  2. 这将返回当前设置的最大正则表达式长度。

  3. 通过动态性能视图: 你还可以通过动态性能视图来查看:

SQL> SELECT * FROM V$SESSION WHERE SERIAL#, TYPE = 'P' 

然后,查找列REGEXP_LIMIT,它显示了每个会话的当前REGEXP_LIKE_LIMIT值。

请注意,这两个方法可能会返回应用的会话级或数据库全局的值,具体取决于你的配置和安全上下文。如果你能够修改这个限制,通常需要足够的管理员权限。

oracle11g提示DBMS_METADATA.get_database_attribute这个方法不存在

对于较早版本的Oracle数据库,如11g,你可能无法直接使用DBMS_METADATA.get_database_attribute这个特定函数来获取REGEXP_LIKE_LIMIT的值。

如果你使用的是Oracle 11g,你可以尝试查询动态性能视图或其他方式,尽管这些选项可能不如新版本直观。以下是一个不使用DBMS_METADATA的方法:

  1. 查看所有会话的限制: 在SQL Plus中,运行:

    SELECT NVL(session_id, 'global') AS session_id,resource_name, resource_limit
    FROM dba_resources
    WHERE resource_name = 'REGEXP_LIKE_LIMIT';

    如果结果显示的是global,那么这可能是全局的最大值。

  2. 查询每个会话的用户定义的限制: 如果某个用户或会话设置了个体限定,你可以查看:

    SELECT username, upper_level_resource, MAX(resource_limit) AS max_limit
    FROM dba_users_reservations
    WHERE upper_level_resource = 'REGEXP_LIKE_LIMIT'
    GROUP BY username, upper_level_resource;

    请确保你有足够的权限来执行这些查询。如果数据库集群或共享服务器模式下,你可能需要找到可以代表所有会话用户的角色来查看。

    如果你确定并没有其他的会话设置,那么你可能需要联系你的DBA或者查阅Oracle文档以获取更多关于如何查看或修改此限制的特定信息。

对于Oracle 11g,dba_resources视图可能不存在,因为它是Oracle 12c或更高版本引入的

针对11g,你可以尝试使用以下不同的方法:

  1. 查看系统全局区(SGA)的初始化参数: SQL Plus 中输入:

    SELECT name, value 
    FROM v$parameter 
    WHERE name = 'REGEXP_LIKE_LIMIT';

    这将返回名为REGEXP_LIKE_LIMIT的系统参数及其当前值。

  2. 查看动态性能视图: 对于会话级别的限制,使用:

    SELECT username, resource_name, resource_limit 
    FROM v$session_stats 
    WHERE upper_level_resource = 'REGEXP_LIKE_LIMIT';

    如果这个视图没有明确显示你期望的限制,它可能表示全局配置。

  3. 如果您是SYS或者具有足够权限的DBA,请尝试

    SELECT upper_level_resource, max(resource_limit) 
    FROM dba_reservations
    WHERE upper_level_resource = 'REGEXP_LIKE_LIMIT'
    GROUP BY upper_level_resource;

    请注意,由于Oracle版本的限制,一些视图和函数可能在不同的版本之间不兼容,或者不存在。如果以上方法仍然不能提供你需要的信息,建议查阅你的Oracle数据库版本对应的文档。
    对于Oracle 11g,确实没有v$session_stats视图。在这种情况下,你可以通过查询其他视图和系统表来找到REGEXP_LIKE_LIMIT相关的信息。然而,限制信息可能不会直接以这样的方式存储,尤其是在无监控的情况下。

    如果你确定REGEXP_LIKE_LIMIT这一限制与限制查询的数量有关,并且你想要查看全局配置,可能需要查看以下几个潜在的位置:
    1.初始化参数: 可以查询v\$parameter视图来查找REGEXP_LIKE_LIMIT参数,如下:

    SELECT name, value 
    FROM v$parameter 
    WHERE name = 'REGEXP_LIKE_LIMIT';

    2.动态性能视图: 对于较老版本的Oracle,你可能需要通过包装查询来获取这个信息。例如,检查当前会话的动态SQL统计:

    SELECT * 
    FROM v$sql 
    WHERE parameter = 'SQL_SQLLOBSIZE' OR parameter = 'SQL_NEW_SQLTHRU觐arsql';

    这些参数可能与限制查询数量有关,虽然不一定直接等同于REGEXP_LIKE_LIMIT
    3.视图v$sql_plan注释: 看看SQL执行计划可能包含的资源限制(如果你有查询计划缓存的话):

    SELECT SQL_ID, accumulated_cost, resource_name 
    FROM v$sql_plan 
    WHERE resource_name LIKE '%LIKE_LIMIT%'

    如果找到相关资源名称,你可以联系你的DBA来确认那个确切的限制。如果上述查询都无法确定确切的限制,可能需要查询数据库的日志文件或者做更深入的系统检查,这通常需要数据库管理员的帮助。

    如果查询v$parameter时提示"未选中行",这意味着在当前会话中没有找到相应的参数。这通常发生在默认安装情况下,可能因为REGEXP_LIKE_LIMIT这个参数不是必须显式设置的,或者你的数据库配置不包括这个设置。

    为了确定这个限制是否存在,你可以:
    1.检查系统全局区(SGA)的初始化参数是否包含:

    SELECT name, value 
    FROM v$parameter 
    WHERE name LIKE 'DB_NAME';

    2.如果有一个系统参数叫REGEXP_LIKE_LIMIT,它通常会被纳入这个查询结果。
    3.如果上面的查询结果没有直接返回REGEXP_LIKE_LIMIT,你可以分析数据库的启动参数文件(init.oraspfile),它通常包含了所有默认和你手动设置的参数。如果是在生产环境中,可能需要遵循最佳实践来保证性能,而不仅仅是寻找一个潜在的限制参数。
    4.如果还是没有找到,可能需要联系系统管理员或者DBA查询数据库的配置,并查看配置文件来确定是否有这样的限制。
    如果默认配置文件中没有设置,那么REGEXP_LIKE_LIMIT可能是被禁止或置为了Oracle的一个默认值,这可能意味着没有设置明确的限制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/811955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用机器学习库做动态定价策略的例子

动态定价是一个复杂的问题,涉及到市场需求、库存、竞争对手行为、季节性因素等多个变量。在实际应用中,动态定价通常需要复杂的模型和大量的数据分析。我选择使用Python(Golearn库)进行机器学习模型的训练和部署,而将G…

简述VPS 与 Apache 搭建网站方式对比:新手科普指南

在互联网时代,拥有一个网站对于个人、企业以及组织来说已经成为了必备的一项资源。然而,对于新手来说,如何搭建一个网站可能是一个挑战。在这篇文章中,我将探讨两种常见的搭建网站的方式:使用虚拟专用服务器&#xff0…

A complete evaluation of the Chinese IP geolocation databases(2015年)

下载地址:A Complete Evaluation of the Chinese IP Geolocation Databases | IEEE Conference Publication | IEEE Xplore 被引用次数:12 Li H, He Y, ** R, et al. A complete evaluation of the Chinese IP geolocation databases[C]//2015 8th International Conference…

chatgpt Team 4.0共享合租账号的新方式

为了更好地满足工作需求,我订阅了GPT PLUS会员,但我发现,4.0每三小时问答40次经常吃灰,而且每月近200元的费用让我感到有点肉痛。 于是,我开始寻找有没有什么替代品。在逛某论坛的时候,发现了一个共享Team…

2024年MathorCup数学应用挑战赛A题思路分析

文章目录 题目简介题目背景和重要性题目要求和目标 题目分析和解题思路理解PCI规划的基本原则PCI参考算法 建立数学模型定义决策变量建立目标函数确定约束条件唯一性约束:确保每个小区的PCI在整个网络中是唯一的。 设计优化算法目标函数分析约束条件分析问题规模分析…

ClickHouse 与 MySQL 介绍与比较

ClickHouse 与 MySQL 介绍与比较 一、ClickHouse简介 ClickHouse是由Yandex开发的开源列式数据库管理系统(DBMS)。它是专门为在线分析处理(OLAP)任务设计的,可以使用SQL查询语言处理高速数据。ClickHouse的列式存储方式让它在处理大数据分析任务时表现出卓越的速度…

python抠图程序

import cv2 import numpy as np def color_threshold(image, lower, upper): hsv_image cv2.cvtColor(image, cv2.COLOR_BGR2HSV) mask cv2.inRange(hsv_image, lower, upper) result cv2.bitwise_and(image, image, maskmask) return result # 读取图片…

客户端传日期格式字段(String),服务端接口使用java.util.Date类型接收报错问题

客户端传日期格式字段(string),服务端接口使用java.util.Date类型接收报错问题 问题演示第1种:客户端以URL拼接的方式传值第2种:客户端以body中的form-data方式提交第3种 客户端以Body中的json方式提交 问题解决(全局解…

softmax回归:多分类问题的解码器

随着人工智能技术的不断发展,分类问题在机器学习领域中的地位日益凸显。在众多分类算法中,softmax回归以其独特的优势和广泛的应用场景,成为了处理多分类问题的有力工具。本文将深入探讨softmax回归的原理、应用及其优缺点,以期为…

【24届数字IC秋招总结】提前批面试经验1——小米、百度昆仑芯、长鑫存储

文章目录 前言一、小米-SOC验证工程师1.1 面试问题二、百度昆仑芯-芯片验证工程师2.1 一面面试问题2.2 二面面试问题三、长鑫存储-数字电路前言 提前批面试公司:小米、百度昆仑芯、长鑫存储 一、小米-SOC验证工程师 面试时间:7.23 周末 1.1 面试问题 1、 问研究生项目,自…

【Django】必须登陆才能访问功能实现

一、直接使用session传递登录状态(不推荐,但能用) 这是最简单、最直接的方法。 1.登录视图添加标识 添加登录状态标识 request.session[is_logged_in] False def user_login(request):# 这是一个登录状态标识request.session[is_logged_in] Falseif request.…

pytorch-多分类实战之手写数字识别

目录 1. 网络设计2. 代码实现2.1 网络代码2.2 train 3. 完整代码 1. 网络设计 输入是手写数字图片28x28,输出是10个分类0~9,有两个隐藏层,如下图所示: 2. 代码实现 2.1 网络代码 第一层将784降维到200,第二次使用…

oracle表误删恢复

update误更新表恢复: UPDATE sysuser a SET dept(SELECT jjxm FROM z_temp20190313 b WHERE b.sbbma.dept) WHERE useful1 AND dept IS NOT NULL 查询sysuser表最后dml操作时间: select max(ora_rowscn),to_char(scn_to_timestamp(max(ora_rowscn)),y…

以Centos7为例,监控SSD硬盘的I/O性能,分析硬盘的读写数据

监控SSD硬盘的I/O性能可以通过多种工具和命令来实现。在CentOS 7系统中,以下是一些常用的方法来监控SSD的I/O性能: 使用iostat命令: iostat是sysstat包的一部分,可以报告CPU统计信息和所有块设备的I/O统计信息。要安装sysstat包&a…

ChatGPT基础(二) ChatGPT的使用和调优

文章目录 ChatGPT的特性采用关键词进行提问给ChatGPT指定身份提升问答质量的策略1.表述方式上的优化2.用"继续"输出长内容3.营造场景4.由浅入深,提升问题质量5.预设回答框架和风格 ChatGPT的特性 1.能够联系上下文进行回答 ChatGPT回答问题是有上下文的&…

uni-app web端使用getUserMedia,摄像头拍照

<template><view><video id"video"></video></view> </template> 摄像头显示在video标签上 var opts {audio: false,video: true }navigator.mediaDevices.getUserMedia(opts).then((stream)> {video document.querySelec…

【python】在pycharm创建一个新的项目

双击打开pycharm,选择create new project 选择create,后进入项目 右键项目根目录,选择new一个新的python file 随意命名一下 输入p 然后后面就会出现智能补全提示,此时轻敲一下tab,代码就写好了,非常的方便 右键执行一下代码,下面两个直接运行和debug运行都是可以的 小结 …

CentOS 8服务器搭建L2TP服务器(over IPsec)操作指南

正文共&#xff1a;1234 字 14 图&#xff0c;预估阅读时间&#xff1a;2 分钟 之前发过把我自己的服务器搬上公网的文章&#xff08;我用100块钱把物理服务器放到了公网&#xff0c;省了几万块&#xff01;&#xff09;&#xff0c;当时L2TP拨号用的是网络上的解决方案&#x…

微服务整合Spring Cloud Gateway动态路由

前置 创建 Spring Cloud项目 参考&#xff1a;创建Spring Cloud Maven工程-CSDN博客 1. 创建一个maven jar类型项目 在idea中右键父工程-》New-》Module 创建一个maven工程 2. 引入相关依赖 在POM文件中引入下面的依赖 <project xmlns"http://maven.apache.org/P…

IntelliJ IDEA 快捷键和自定义操作详细配置指南

IntelliJ IDEA 是一款功能强大的集成开发环境(IDE),广泛应用于Java、Kotlin、Groovy 等语言的开发中。其丰富的功能和灵活的配置选项使得开发人员能够高效地进行代码编写、调试和项目管理。本文将介绍如何在 IntelliJ IDEA 中快速进行配置并充分发挥其强大功能,使您的开发环…