`
lancezhcj
  • 浏览: 48768 次
  • 性别: Icon_minigender_2
  • 来自: 衡阳
社区版块
存档分类
最新评论

oracle中的DBMS

阅读更多
最近在看存储过程,看得有点郁闷,我们的技术经理大概太牛了,复杂的业务逻辑都用存储过程实现了,不得已。我也得向他看齐,其中有很多DBMS_的,不懂,一个一个学着来:
一、DBMS_LOB
1、SUBSTR(字段,长度,起始位置)
在pl/sql中的sql窗口输入如下sql语句:
select dbms_lob.substr(send_str) from ydkf_interface_log;
读取clob数据时,当clob数据过大时(超过4000),会提示ORA-06502:PL/SQL:numeric or value error: character string buffer too small,可我想在查询的结果集中查看,可使用拆分的方式,算是条条道路通罗马吧:
select
dbms_lob.substr(send_str,1007,1),
dbms_lob.substr(send_str,3000,1008),
dbms_lob.substr(send_str,dbms_lob.getlength(send_str),3001) from ydkf_interface_log where case_no='CK201109221600045614' order by id desc
        

二、  DBMS_Job包的用法(别处贴来的)
设置初始化参数 job_queue_processes
  sql> alter system set job_queue_processes=n;(n>0)
  job_queue_processes最大值为1000
  
  查看job queue 后台进程
  sql>select name,description from v$bgprocess;


包含以下子过程:  

Broken()过程。
change()过程。
Interval()过程。
Isubmit()过程。
Next_Date()过程。
Remove()过程。
Run()过程。
Submit()过程。
User_Export()过程。
What()过程。

1、
Broken()过程更新一个已提交的工作的状态,典型地是用来把一个已破工作标记为未破工作。
这个过程有三个参数:job   、broken与next_date。

PROCEDURE   Broken   (job               IN   binary_integer,
                                    Broken         IN   boolean,
                                    next_date   IN   date   :=SYSDATE)

job参数是工作号,它在问题中唯一标识工作。
broken参数指示此工作是否将标记为破——TRUE说明此工作将标记为破,而FLASE说明此工作将标记为未破。
next_date参数指示在什么时候此工作将再次运行。此参数缺省值为当前日期和时间。


2、
Change()过程用来改变指定工作的设置。
这个过程有四个参数:job、what   、next_date与interval。

PROCEDURE   Change   (job                 IN   binary_integer,
                                    What               IN   varchar2,
                                    next_date     IN   date,
                                    interval       IN   varchar2)

此job参数是一个整数值,它唯一标识此工作。
What参数是由此工作运行的一块PL/SQL代码块。
next_date参数指示何时此工作将被执行。
interval参数指示一个工作重执行的频度。


3、
Interval()过程用来显式地设置重执行一个工作之间的时间间隔数。
这个过程有两个参数:job与interval。

PROCEDURE   Interval   (job             IN   binary_integer,
                                        Interval   IN   varchar2)

job参数标识一个特定的工作。interval参数指示一个工作重执行的频度。


4、
ISubmit()过程用来用特定的工作号提交一个工作。
这个过程有五个参数:job、what、next_date、interval与no_parse。

PROCEDURE   ISubmit   (job               IN   binary_ineger,
                                      What             IN   varchar2,
                                      next_date   IN   date,
                                      interval     IN   varchar2,
                                      no_parse     IN   booean:=FALSE)

这个过程与Submit()过程的唯一区别在于此job参数作为IN型参数传递且包括一个
由开发者提供的工作号。如果提供的工作号已被使用,将产生一个错误。


5、
Next_Date()过程用来显式地设定一个工作的执行时间。这个过程接收两个参数:job与next_date。

PROCEDURE   Next_Date(job                   IN   binary_ineger,
                                        next_date       IN   date)

job标识一个已存在的工作。next_date参数指示了此工作应被执行的日期与时间。


6、
Remove()过程来删除一个已计划运行的工作。这个过程接收一个参数:

PROCEDURE   Remove(job   IN     binary_ineger);

job参数唯一地标识一个工作。这个参数的值是由为此工作调用Submit()过程返回的job参数的值。
已正在运行的工作不能由调用过程序删除。


7、
Run()过程用来立即执行一个指定的工作。这个过程只接收一个参数:

PROCEDURE   Run(job   IN   binary_ineger)  

job参数标识将被立即执行的工作。


8、
使用Submit()过程,工作被正常地计划好。
这个过程有五个参数:job、what、next_date、interval与no_parse。

PROCEDURE   Submit   (   job               OUT   binary_ineger,
                                      What             IN     varchar2,
                                      next_date   IN     date,
                                      interval     IN     varchar2,
                                      no_parse     IN     booean:=FALSE)

job参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作。
what参数是将被执行的PL/SQL代码块。
next_date参数指识何时将运行这个工作。
interval参数何时这个工作将被重执行。
no_parse参数指示此工作在提交时或执行时是否应进行语法分析——TRUE
指示此PL/SQL代码在它第一次执行时应进行语法分析,
而FALSE指示本PL/SQL代码应立即进行语法分析。


9、
User_Export()过程返回一个命令,此命令用来安排一个存在的工作以便此工作能重新提交。
此程序有两个参数:job与my_call。

PROCEDURE   User_Export(job                 IN   binary_ineger,
                                            my_call         IN   OUT   varchar2)

job参数标识一个安排了的工作。my_call参数包含在它的当前状态重新提交此工作所需要
的正文。


10、
What()过程应许在工作执行时重新设置此正在运行的命令。这个过程接收两个参数:job与what。

PROCEDURE   What   (job     IN   binary_ineger,
                                What   IN   OUT   varchar2)

job参数标识一个存在的工作。what参数指示将被执行的新的PL/SQL代码。


一个简单例子:  

创建测试表
SQL>   create   table   test_job(a   date);

表已创建。

创建一个自定义过程
SQL>   create   or   replace   procedure   test_job_pro   as
    2     begin
    3     insert   into   test_job   values(sysdate);
    4     end;
    5     /

过程已创建。

创建JOB
SQL>   variable   job1   number; --声明一个job变量
SQL>  
SQL>   begin
    2  dbms_job.submit(:job1,test_job_pro; ',sysdate, 'sysdate+1/24*60 ');  --每天1440分钟,即一分钟运行test过程一次
    3     end;
    4     /

PL/SQL   过程已成功完成。

运行JOB
SQL>   begin
    2     dbms_job.run(:job1);
    3     end;
    4     /

PL/SQL   过程已成功完成。

SQL>   select   to_char(a, 'yyyy/mm/dd   hh24:mi:ss ')   时间   from   a;

时间
-------------------
2001/01/07   23:51:21
2001/01/07   23:52:22
2001/01/07   23:53:24

删除JOB
SQL>   begin
    2     dbms_job.remove(:job1);
    3     end;
    4     /

PL/SQL   过程已成功完成。
分享到:
评论

相关推荐

    oracle dbms_lob

    Oracle数据库系统中,`DBMS_LOB`是一个重要的PL/SQL包,专门用于处理大型对象(LOBs,Large Object)。LOBs是Oracle提供的一种数据类型,用于存储大量数据,如文本、图像、音频或视频文件等。这个包包含了各种过程和...

    ORACLE SYS.DBMS_REGISTRY_SYS has errors

    标题中的问题“ORACLE SYS.DBMS_REGISTRY_SYS has errors”指的是在Oracle数据库系统中,系统包BODY `SYS.DBMS_REGISTRY_SYS` 出现错误,导致了一系列的PL/SQL调用失败。这种错误通常与数据库的元数据注册功能有关,...

    用Oracle的DBMS_JOB来实现任务计划管理.pdf

    在本文中,我们将详细介绍如何使用 Oracle 的 DBMS_JOB 来实现任务计划管理。 任务计划管理的需求 在许多管理系统中,经常会遇到定时执行某项任务的情况。例如,对于数据库的日常备份等耗时长、重复性强的工作,就...

    ORACLE DBMS STATS ERROR

    在Oracle数据库中,`DBMS_STATS` 是一个重要的包,它用于收集和管理表、索引和其他数据库对象的统计信息,这些信息用于优化器选择执行查询的最佳执行计划。然而,当出现错误“ORA-04063: package body 'SYS.DBMS_...

    使用dbms_stats包手工收集统计信息

    Oracle 数据库中使用 dbms_stats 包手动收集统计信息 在 Oracle 数据库中,dbms_stats 包提供了一种手动收集统计信息的方式,包括基于表、用户和索引的统计信息。通过使用 dbms_stats 包,我们可以手动收集统计信息...

    关于用oracle的dbms_xmldom导出xml文档编码格式UTF-8的问题总结

    在处理Oracle数据库中使用DBMS_XMLDOM模块创建并导出XML文档时,经常会遇到有关文档编码格式的问题,尤其是如何确保导出的XML文档采用UTF-8编码格式。本文将对这一问题进行详细的探讨,并提供解决方法。 #### 问题...

    IT文档\dbms\Oracle

    《IT文档\dbms\Oracle》系列,主要记录了一位DBA在工作中遇到的问题与解决方案,以日记的形式展现了Oracle数据库管理的日常。Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统,其复杂性和灵活性使得DBA的...

    Oracle DBMS对RBAC模型的支持.pdf

    1. 角色的创建:在Oracle DBMS中,管理员可以定义不同的角色,这些角色代表了系统中的不同职责或工作职能。例如,可以创建一个“财务管理员”角色,赋予其对财务数据的特定访问权限。角色的创建使得权限管理更为灵活...

    oracle 报表开发中用PCK直接生成xml数据文件

    总的来说,Oracle的`dbms_xmlgen`包提供了一种便捷的方式,允许开发者在PL/SQL环境中生成XML数据文件。尽管对于大型数据集,这种方法可能不是最高效的,但在小规模应用或测试场景下,它是一个实用且灵活的解决方案。...

    Re-post: DBMS_XPLAN : Display Oracle Execution Plans

    标题“DBMS_XPLAN: 显示Oracle执行计划”是一个关于Oracle数据库系统中用于分析SQL查询执行性能的重要工具的讨论。这个工具允许用户查看SQL语句的执行计划,从而理解数据库如何处理这些语句,以及哪些操作可能影响...

    DBMS_JOB包创建ORACLE定时任务

    在Oracle数据库中,`DBMS_JOB`包提供了一种机制,用于创建和管理后台作业(Job),这些作业可以在特定的时间或按一定的时间间隔执行。这对于需要定期执行的任务非常有用,比如数据清理、统计报告生成、备份等。 ###...

    dbms_obfuscation_toolkit加密解密数据

    ### DBMS_OBFUSCATION_TOOLKIT:Oracle 数据库中的加密与解密工具包 DBMS_OBFUSCATION_TOOLKIT是Oracle数据库提供的一种用于数据加密解密的强大工具包,自Oracle 8i版本开始引入。它支持多种加密算法,如DES、...

    ORACLE随机数DBMS_RANDOM包

    Oracle数据库中的DBMS_RANDOM包是一个非常实用的工具,它提供了生成随机数和随机字符串的功能,广泛应用于各种场景,包括测试、模拟数据生成等。本文将详细介绍DBMS_RANDOM包的四个主要函数及其用法。 1. **dbms_...

    Oracle之DBMS_RANDOM包详解

     其中,initialize,random,terminate函数在Oracle11g中已不推荐使用,主要用于向后兼容。下面对各个函数进行举例说明  1. INITIALIZE  用一个种子值来初始化DBMS_RANDOM包。  默认情况下,DBMS_RANDOM包是...

    ORACLE DBA 助手DBMS_LOGMNER 界面操作工具 (ORACLE 重做日志分析工具)

    对于偶尔需要进行 重做日志 解释的人(或者记力不是特别强的牛人)来讲,可能不太记得完整的DBMS_...鉴于以上的种种不便,在下对LOGMNER程序包,进行了封装,方便大量使用ORACLE 强大的日志分析工具dbms_logmner.

    Oracle中比对2张表之间数据是否一致的几种方法

    #### 方法一:利用Oracle 11g中的`dbms_comparison`包 当两张表的数据结构完全相同,并且其中一张表所在数据库版本为Oracle 11g及以上时,可以使用`dbms_comparison`包来进行数据对比。此包提供了非常便捷的方式来...

    [Oracle] dbms_metadata.get_ddl 的使用方法总结

    Oracle数据库中的`dbms_metadata.get_ddl`是一个非常实用的包,它允许开发人员和管理员获取数据库对象的创建语句(DDL),这对于备份和恢复、迁移或者理解对象定义非常有帮助。下面我们将深入探讨`dbms_metadata.get...

    在oracle中使用java sources

    在Oracle数据库环境中,Java Sources是一种强大的特性,它允许我们在数据库内部执行Java代码,利用Java的丰富库和API来处理复杂的业务逻辑或者实现特定的功能。Oracle数据库支持存储过程、函数、包等PL/SQL对象,而...

Global site tag (gtag.js) - Google Analytics