当前位置: > 数据库 > Oracle >

Oracle常见系统包及常用方法

时间:2014-10-03 15:21来源:linux.it.net.cn 作者:it

一、dbms_metadata.get_ddl:生成数据库对象的ddl信息:

 

二、dbms_stats用于搜集,查看,修改数据库对象的优化统计信息.

exec dbms_stats.gather_schema_stats('stud');

exec dbms_stats.gather_index_stats('stud','emp_idx');

 

三、DBMS_OUTPUT:用于输入和输出信息

首先,使用DBMS_OUTPUT.ENABLE激活本包,如果没有被激活,将无法调用本包的其它其余过程和函数。

但如果在SQL*PLUS中使用SERVEROUTPUT选项,则没有必要使用该过程。

 

四、DBMS_JOB:用于安排和管理作业队列,通过使用作业,可以使Oracle数据库定期执行特定的任务

设定任务使用dbms_job.submit(job out int,what in varchar2 next_date in date,interval)

 

五、DBMS_UTILITY :在过程中执行ddl语句,或者取得数据库各对象之间依赖关系

执行ddl语句

 

六、DBMS_DDL:提供了在PL/SQL块重新编译过程、函数和包(alter_complie),以及分析表、索引、簇并生成统计数据(analyze_object)的方法。

 

 

七、UTL_INADDR:用于取得主机名和ip地址

用于取得指定主机所对应的ip地址:select utl_inaddr.get_host_address('sjz06') ip from dual;

 

八、DBMS_RANDOM:提供了内置的随机数生成器,可以用于快速生成随机数

 

九、UTL_FILE:提供了在操作系统层面上对文件系统中文件的读写功能

在引用文件的时候,要使用到一个文件句柄,来表示对文件的读或写。文件句柄是通过包UTL_FILE中名称为UTL_FILE.FILE_TYPE的公有变量来定义的。

对于文件系统上目录的引用是通过使用目录名称,或者由CREATE DIRECTORY命令为目录分配的化名来实现的。

CREATE DIRECTORY source AS 'd:/source';

CREATE DIRECTORY target AS 'd:/target';

Grant read,write on directory source to ods_es;

Grant read,write on directory target to ods_es;


 

DECLARE v_getfile UTL_FILE.FILE_TYPE;

v_sou_dir  VARCHAR2(40) := 'source';

v_sou_file VARCHAR2(30) := 'source.csv';

v_tar_dir  VARCHAR2(40) := 'source';

v_tar_file VARCHAR2(30) := 'target.csv';

v_eachline VARCHAR2(400);

v_count INTEGER := 0;


 

BEGIN


 

UTL_FILE.FCOPY(v_sou_dir,v_sou_file,v_tar_dir,v_tar_file);

v_getfile := UTL_FILE.FOPEN(v_tar_dir,v_tar_file,'w');

DBMS_OUTPUT.PUT_LINE('以下是复制文件内容:''' || v_tar_file || '''');


 

LOOP

UTL_FILE.GET_LINE(v_getfile,v_eachline);

DBMS_OUTPUT.PUT_LINE(v_eachline);

v_count := v_count + 1;

END LOOP;


 

EXCEPTION

WHEN NO_DATA_FOUND THEN UTL_FILE.FCLOSE(v_getfile);

DBMS_OUTPUT.PUT_LINE(v_count || '行记录');


 

WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('SQLERRM: ' || SQLERRM);

DBMS_OUTPUT.PUT_LINE('SQLCODE: ' || SQLCODE);

END;
 

十、DBMS_PIPE:用于在同一例程(实例)的不同会话之间进行通信。比如连接到同一个数据库的两个独立会话之间可以通过管道进行通信,另外也可以在存储过程和Pro*C之间进行通信,这样就大大地增强了PL/SQL的处理能力。


 

(责任编辑:IT)
------分隔线----------------------------