dbms_utility包含许多杂类的功能。

我以前看过一个连接,

http://tamimdba.wordpress.com/tag/dbms_utility/

PL/SQL Packages DBMS_UTILITY

November 14, 2009 Tamim Khan Leave a comment

PL/SQL Packages DBMS_UTILITY

Source : {ORACLE_HOME}/rdbms/admin/dbmsutil.sql

COMPILE_SCHEMA Compile all procedures, functions, packages, and triggers in the specified schema.

Syntax

DBMS_UTILITY.COMPILE_SCHEMA (

schema VARCHAR2);

Code examples

EXEC DBMS_UTILITY.compile_schema('SCOTT');

ANALYZE_SCHEMA Analyze all the tables, clusters, and indexes in a schema.

Syntax

DBMS_UTILITY.ANALYZE_SCHEMA (

schema           VARCHAR2,

method           VARCHAR2,

estimate_rows    NUMBER   DEFAULT NULL,

estimate_percent NUMBER   DEFAULT NULL,

method_opt       VARCHAR2 DEFAULT NULL);

Code examples

exec DBMS_UTILITY.ANALYZE_SCHEMA('SCOTT','COMPUTE');

exec DBMS_UTILITY.ANALYZE_SCHEMA('SCOTT','ESTIMATE', estimate_rows => 1000);

exec DBMS_UTILITY.ANALYZE_SCHEMA('SCOTT','ESTIMATE', estimate_percent => 25);

exec DBMS_UTILITY.ANALYZE_SCHEMA('SCOTT','DELETE')

[N.B: Do not collect stats for either the SYS or SYSTEM schemas.]

ANALYZE_DATABASE Analyze all the tables, clusters, and indexes in a database.

Syntax

DBMS_UTILITY.ANALYZE_DATABASE (

method           VARCHAR2,

estimate_rows    NUMBER   DEFAULT NULL,

estimate_percent NUMBER   DEFAULT NULL,

method_opt       VARCHAR2 DEFAULT NULL);

Code examples

exec DBMS_UTILITY.ANALYZE_DATABASE('COMPUTE');

ANALYZE_PART_OBJECT Equivalent to ANALYZE_DATABASE use for partition table.

Syntax

dbms_utility.analyze_part_object (

schema        IN VARCHAR2 DEFAULT NULL,

object_name   IN VARCHAR2 DEFAULT NULL,

object_type   IN CHAR DEFAULT 'T',

command_type  IN CHAR DEFAULT 'E',

command_opt   IN VARCHAR2 DEFAULT NULL,

sample_clause IN VARCHAR2 DEFAULT 'sample 5 percent');

Code examples

--assumes a partitioned table named 'part_tab'

exec dbms_utility.analyze_part_object('UWCLASS', 'PART_TAB', 'T', 'E', 'V');

FORMAT_ERROR_STACK Function Format the current error stack.

Syntax

DBMS_UTILITY.FORMAT_CALL_STACK

RETURN VARCHAR2;

Code examples

CREATE TABLE error_log (

timestamp     DATE,

username      VARCHAR2(30),

instance      NUMBER,

database_name VARCHAR2(50),

error_stack   VARCHAR2(2000)

);

CREATE OR REPLACE TRIGGER LogErrors

AFTER SERVERERROR ON DATABASE

BEGIN

INSERT INTO error_log

VALUES (SYSDATE, SYS.LOGIN_USER, SYS.INSTANCE_NUM, SYS.DATABASE_NAME, DBMS_UTILITY.FORMAT_ERROR_STACK);

END LogErrors;

DBMS_UTILITY.FORMAT_ERROR_BACKTRACE In Oracle Database 10g, Oracle added DBMS_UTILITY.FORMAT_ERROR_BACKTRACE, which can and should be called in your exception handler. It displays the call stack at the point where an exception was raised, even if the function is called in a PL/SQL block in an outer scope from that where the exception was raised. Thus, you can call DBMS_UTILITY.FORMAT_ERROR_BACKTRACE within an exception section at the top level of your stack and still find out where the error was raised deep within the call stack.

Syntax

DBMS_UTILITY. FORMAT_ERROR_BACKTRACE

RETURN VARCHAR2;

FORMAT_CALL_STACK Function Format the current call stack.

Code examples

CREATE OR REPLACE PROCEDURE error_test1 AS

BEGIN

RAISE VALUE_ERROR;

END error_test1;

/

CREATE OR REPLACE PROCEDURE error_test2 AS

BEGIN

error_test1;

EXCEPTION

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE('FORMAT_CALL_STACK ->' || DBMS_UTILITY.FORMAT_CALL_STACK);

DBMS_OUTPUT.PUT_LINE('FORMAT_ERROR_STACK->' || DBMS_UTILITY.FORMAT_ERROR_STACK);

END error_test2;

/

SQL> SET SERVEROUTPUT ON

SQL> exec error_test2

FORMAT_CALL_STACK ->----- PL/SQL Call Stack -----

object      line  object

handle    number  name

2F226BE0         6  procedure SYSTEM.ERROR_TEST2

2F222E7C         1  anonymous block

FORMAT_ERROR_STACK->ORA-06502: PL/SQL: numeric or value error

PL/SQL procedure successfully completed.

IS_CLUSTER_DATABASE Function Is this database running in cluster database mode.

Syntax

DBMS_UTILITY.IS_CLUSTER_DATABASE

RETURN NUMBER;

Code examples

SET SERVEROUTPUT ON

BEGIN

IF DBMS_UTILITY.is_cluster_database THEN

dbms_output.put_line('Clustered');

ELSE

dbms_output.put_line('Not Clustered');

END IF;

END;

/

GET_TIME Function Current time in 100th’s of a second.

Syntax

DBMS_UTILITY.GET_TIME

RETURN NUMBER;

Code examples

BEGIN

dbms_output.put_line( 'Start Time: ' || dbms_utility.get_time );

dbms_lock.sleep(seconds => 10);

dbms_output.put_line( 'End Time:   ' || dbms_utility.get_time );

END;

/

Start Time: 1119218

End Time:   1120218

PORT_STRING Function Return a string that uniquely identifies the version of Oracle and the operating system.

Syntax

DBMS_UTILITY.PORT_STRING

RETURN VARCHAR2;

Code examples

SELECT DBMS_UTILITY.port_string

FROM   dual;

DB_VERSION Version information for the database.

Syntax

DBMS_UTILITY.DB_VERSION (

version       OUT VARCHAR2,

compatibility OUT VARCHAR2);

Code examples

SET SERVEROUTPUT ON

DECLARE

v_version  VARCHAR2(100);

v_compatibility  VARCHAR2(100);

BEGIN

DBMS_UTILITY.db_version (version => v_version, compatibility => v_compatibility);

DBMS_OUTPUT.put_line('Version: ' || v_version || '  Compatibility: ' || v_compatibility);

END;

/

CURRENT_INSTANCE Function Return the current connected instance number.

Syntax

DBMS_UTILITY.CURRENT_INSTANCE

RETURN NUMBER;

Code examples

SELECT DBMS_UTILITY.current_instance

FROM   dual;

ACTIVE_INSTANCES Active instance numbers and names

Syntax

DBMS_UTILITY.IS_CLUSTER_DATABASE

RETURN NUMBER;

Code examples

SET SERVEROUTPUT ON

DECLARE

v_instance_table  DBMS_UTILITY.instance_table;

v_instance_count  NUMBER;

BEGIN

DBMS_UTILITY.active_instances (instance_table => v_instance_table,instance_count => v_instance_count);

IF v_instance_count > 0 THEN

FOR i IN 1 .. v_instance_count LOOP

DBMS_OUTPUT.put_line(v_instance_table(i).inst_number || ' = ' || v_instance_table(i).inst_name);

END LOOP;

END IF;

END;

/

EXEC_DDL_STATEMENT Execute the DDL statement in parse_string.

Syntax

DBMS_UTILITY.EXEC_DDL_STATEMENT (

parse_string IN VARCHAR2);

Code examples

BEGIN

dbms_utility.exec_ddl_statement('create table emp_test as select * from scott.emp');

END;

/

GET_PARAMETER_VALUE Function  Get an init.ora parameter.

Syntax

DBMS_UTILITY.GET_PARAMETER_VALUE (

parnam IN     VARCHAR2,

intval IN OUT BINARY_INTEGER,

strval IN OUT VARCHAR2)

RETURN BINARY_INTEGER;

Code examples

DECLARE

parnam VARCHAR2(256);

intval BINARY_INTEGER;

strval VARCHAR2(256);

partyp BINARY_INTEGER;

BEGIN

partyp := dbms_utility.get_parameter_value('db_block_size',intval, strval);

dbms_output.put('parameter value is: ');

IF partyp = 1 THEN

dbms_output.put_line(strval);

ELSE

dbms_output.put_line(intval);

END IF;

IF partyp = 1 THEN

dbms_output.put('parameter value length is: ');

dbms_output.put_line(intval);

END IF;

dbms_output.put('parameter type is: ');

IF partyp = 1 THEN

dbms_output.put_line('string');

ELSE

dbms_output.put_line('integer');

END IF;

END;

/

parameter value is: 8192

parameter type is: integer

COMMA_TO_TABLE Convert a comma-separated list of names into a PL/SQL table of names.

Syntax

DBMS_UTILITY.COMMA_TO_TABLE (

list   IN  VARCHAR2,

tablen OUT BINARY_INTEGER,

tab    OUT UNCL_ARRAY);

Code examples

CREATE TABLE c2t_test (readline VARCHAR2(200));

INSERT INTO c2t_test VALUES ('"1","Mainframe","31-DEC-2001"');

INSERT INTO c2t_test VALUES ('"2","MPP","01-JAN-2002"');

INSERT INTO c2t_test VALUES ('"3","Mid-Size","02-FEB-2003"');

INSERT INTO c2t_test VALUES ('"4","PC","03-MAR-2004"');

INSERT INTO c2t_test VALUES ('"5","Macintosh","04-APR-2005"');

COMMIT;

SELECT * FROM c2t_test;

CREATE TABLE test_import (

src_no NUMBER(5),

src_desc VARCHAR2(20),

load_date DATE);

CREATE OR REPLACE PROCEDURE load_c2t_test IS

c_string VARCHAR2(250);

cnt      BINARY_INTEGER;

my_table dbms_utility.lname_array;

BEGIN

FOR t_rec IN (SELECT * FROM c2t_test)

LOOP

dbms_utility.comma_to_table(t_rec.readline, cnt, my_table);

my_table(1) := TRANSLATE(my_table(1), 'A"','A');

my_table(2) := TRANSLATE(my_table(2), 'A"','A');

my_table(3) := TRANSLATE(my_table(3), 'A"','A');

INSERT INTO test_import

(src_no, src_desc, load_date)

VALUES

(TO_NUMBER(my_table(1)), my_table(2), TO_DATE(my_table(3)));

END LOOP;

COMMIT;

END load_c2t_test;

/

exec load_c2t_test;

SELECT * FROM test_import;

TABLE_TO_COMMA Converts a PL/SQL table of names into a comma-separated list of names.

Syntax

DBMS_UTILITY.TABLE_TO_COMMA (

tab    IN  UNCL_ARRAY,

tablen OUT BINARY_INTEGER,

list   OUT VARCHAR2);

NAME_RESOLVE Resolve the given name.

Syntax

DBMS_UTILITY.NAME_RESOLVE (

name          IN  VARCHAR2,

context       IN  NUMBER,

schema        OUT VARCHAR2,

part1         OUT VARCHAR2,

part2         OUT VARCHAR2,

dblink        OUT VARCHAR2,

part1_type    OUT NUMBER,

object_number OUT NUMBER);

NAME_TOKENIZE Parse the given name.

Syntax

DBMS_UTILITY.NAME_TOKENIZE (

name    IN  VARCHAR2,

a       OUT VARCHAR2,

b       OUT VARCHAR2,

c       OUT VARCHAR2,

dblink  OUT VARCHAR2,

nextpos OUT BINARY_INTEGER);

Code examples

declare

v_a      varchar2(30);

v_b      varchar2(30);

v_c      varchar2(30);

v_dblink varchar2(30);

v_next   number;

type vcArray is table of varchar2(255);

v_names vcArray := vcArray( 'tamimdba@gmail.com','tamim@oracledba','tamim.xyz' );

begin

for i in 1 .. v_names.count

loop

begin

dbms_utility.name_tokenize(name   => v_names(i),

a      => v_a,

b      => v_b,

c      => v_c,

dblink => v_dblink,

nextpos=> v_next );

dbms_output.put_line( 'name    ' || v_names(i) );

dbms_output.put_line( 'A       ' || v_a );

dbms_output.put_line( 'B       ' || v_b );

dbms_output.put_line( 'C       ' || v_c );

dbms_output.put_line( 'dblink  ' || v_dblink );

dbms_output.put_line( 'next    ' || v_next || ' ' || length(v_names(i)));

exception

when others then

dbms_output.put_line( 'name    ' || v_names(i) );

dbms_output.put_line( sqlerrm );

end;

end loop;

end;

GET_HASH_VALUE Function Compute a hash value for the given string.

Syntax

DBMS_UTILITY.GET_HASH_VALUE (

name      VARCHAR2,

base      NUMBER,

hash_size NUMBER)

RETURN NUMBER;

Code examples

begin

dbms_output.put_line ( dbms_utility.get_hash_value( to_char(1), 0, 1024 ) );

end;

DATA_BLOCK_ADDRESS_FILE Function Get the file number part of a data block address.

Syntax

DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE (

dba NUMBER)

RETURN NUMBER;

MAKE_DATA_BLOCK_ADDRESS Function Create a data block address given a file number and a block number.

Syntax

DBMS_UTILITY.MAKE_DATA_BLOCK_ADDRESS (

file  NUMBER,

block NUMBER)

RETURN NUMBER;

Code examples

SELECT dbms_utility.make_data_block_address(4, 6)

FROM dual;

DATA_BLOCK_ADDRESS_BLOCK Function Get the block number part of a data block address.

Syntax

DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK (

dba NUMBER)

RETURN NUMBER;

Code examples

SELECT file_name, file_id

FROM dba_data_files;

SELECT dbms_utility.data_block_address_file(16777222)

FROM dual;

Categories: DBMS_UTILITY Tags: DBMS_UTILITY

oracle dbms_utility.get_time,dbms_utility如何使用?相关推荐

  1. oracle游标声明中使用变量赋值,Oracle游标使用方法(游标里使用变量绑定)

    来源:http://www.jzxue.com/shujuku/oracle/200910/01-2839.html 游标(CURSOR)也叫光标,在关系数据库中经常使用,在PL/SQL程序中可以用C ...

  2. 转:Oracle中的日期和字符串互相转换

    TO_DATE格式(以时间:2007-11-02   13:45:25为例)            Year:              yy two digits 两位年               ...

  3. Oracle中TO_DATE格式

    Year:              yy two digits 两位年                显示值:07        yyy three digits 三位年               ...

  4. oracle显示当天日期函数,oracle日期函数

    oracle日期函数 1.日期时间间隔操作  当前时间减去7分钟的时间 select sysdate,sysdate - interval '7' MINUTE from dual 当 ...

  5. ORACLE告警日志文件

    告警日志介绍 告警日志文件是一类特殊的跟踪文件(trace file).告警日志文件命名一般为alert_<SID>.log,其中SID为ORACLE数据库实例名称.数据库告警日志是按时间 ...

  6. oracle之to_date函数

    日期格式参数 含义说明  D 一周中的星期几  DAY 天的名字,使用空格填充到9个字符  DD 月中的第几天    DDD 年中的第几天  DY 天的简写名  IW ISO标准的年中的第几周  IY ...

  7. [转]ORACLE日期时间函数大全

    本文转自:http://www.cnblogs.com/chuncn/archive/2009/04/29/1381282.html ORACLE日期时间函数大全 TO_DATE格式(以时间:2007 ...

  8. oracle日期处理(一)

    TO_DATE格式 Day: dd number 12 dy abbreviated fri day spelled out friday ddspth spelled out, ordinal tw ...

  9. forall oracle 游标,FORALL用法小结

    本文主要翻译.整理了ORACLE官方文档上有关FORALL的部份内容,不妥之处,还希望多和大家交流. 在发送语句到SQL引擎前,FORALL语句告知PL/SQL 引擎批挷定输入集合.尽管FORALL语 ...

  10. oracle sql比较时间大小,Oracle数据库中日期时间的操作比较和加减

    Oracle数据库中日期时间的操作比较和加减 Oracle关于时间/日期的操作 1.日期时间间隔操作 当前时间减去7分钟的时间 select sysdate,sysdate - interval '7 ...

最新文章

  1. (52 90) 简答 什么叫计算机网络,计算机网络期末复习试卷.doc
  2. 待研究金华的存储过程
  3. jquery----js/css 导入
  4. Python基础——PyCharm版本——第三章、数据类型和变量(超详细)
  5. 【OS学习笔记】四十 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----动态加载的用户程序/任务二代码
  6. linux升级gnome,linux – Gnome shell特权升级
  7. 【redis 学习系列08】Redis小功能大用处02 Pipeline、事务与Lua
  8. 除了写代码,还能如何晋升为高级工程师?
  9. N个例子让你彻底理解java接口回调
  10. Pycharm CPU占用100%
  11. sd卡 格式化 命令 linux,在Linux命令行上格式化SD卡、USB驱动器、闪存驱动器的方法...
  12. VS2010出现重复的代码项原因及解决方式
  13. 如何比较两个文本的相似度
  14. 删除字符串某一指定子字符串
  15. 10分钟上手pythonpandas_【译】10分钟学会Pandas
  16. 【JavaScript】亚马逊下载ABA表格数据,30秒完成
  17. 除了百度、搜狗搜索你还知道哪些好用的搜索引擎吗?
  18. 概率论与数理统计系列笔记之第四章——大数定理与中心极限定理
  19. 支付宝正式发布黑莓版客户端
  20. 最新版pycharm下载安装免费使用

热门文章

  1. CPU卡简介/CPU卡和非接触式IC卡的区别
  2. 计算机桌面的理解,电脑桌面的基础知识教程,教你认识电脑桌面
  3. Flutter学习笔记: Dart语言值之面向对象class
  4. 刘寅立matlab数值计算案例分析 pdf,《MATLAB数值计算案例分析》源代码
  5. 农民股神六万元博出千万身家
  6. 肿瘤微环境之免疫与代谢
  7. 80个让你笑爆肚皮的程序员段子,不好笑算我输!
  8. bzoj2429: [HAOI2006]聪明的猴子(最小生成树)
  9. 洛谷——P2504 [HAOI2006]聪明的猴子
  10. Android 面试中高级上