`

ORACLE學習總[系統函數與包的使用]

阅读更多

1.十进制和十六进制转换
(oracle 8i以后)
select to_char(125,'XXXXX') from dual
-----------
7D
select to_char(125,'xxxxx') from dual
-----------
7d

select to_number('7D','XXXXX') from dual
-----------
125

2. ORACLE产生随机函数
DBMS_RANDOM.RANDOM

3、调度程序 DBMS_JOB

broken 中止一个任务调度
change 修改任务的属性
internal 改变间隔
submit 任务发送到任务队列中去
next_date 改变任务的运行时间
remove 删除一个任务
run 立即执行一个任务
submit 提交一个任务
user_export 任务说明
what 改变任务运行的程序
查询 
select * from user_job;
建立一存储过程
create or replace procedure log_proc as 
begin
insert into test(aa) values(sysdate);
commit;
end;
提交一个任务
declare 
job_num number;
begin
dbms_job.submit(job_num,'log_proc;',sysdate,sysdate+5/(24*60*60),false);
dbms_output.put_line('Job numer='||to_char(job_num));
end;
1> 上面程序从当前开始,间隔5秒执行一次。
2> 如果每天几点执行,可以写为(比如从2004-09-13开始执行,每天7点执行)
next_date => to_date('13-09-2004 07:00:00', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'trunc(sysdate)+(7+24)/24')
3> 如果是每个月几号开始执行。比如每月2号21点执行。
add_months(trunc(sysdate,'MONTH'),1) + 2-1 + 21/24

移走任务
begin
dbms_job.remove(1);
end;
中止任务
begin
dbms_job.broken(1,true);
end;
查询正在执行的job
select * from dba_jobs_running 
如果运行比较慢,加
select /*+ rule */* from dba_jobs_running
4.UTL_FILE包
在PL/SQL 3.3以上的版本中,UTL_FILE包允许用户通过PL/SQL读写操作系统文件。如下: 

DECALRE 
FILE_HANDLE UTL_FILE.FILE_TYPE; 
BEGIN 
FILE_HANDLE:=UTL_FILE.FOPEN('C:\','TEST.TXT','A'); 
UTL_FILE.PUT_LINE(FILE_HANDLE,'HELLO,IT iS A TEST TXT FILE'); 
UTL_FILE.FCLOSE(FILE_HANDLE); 
END;

比如:怎么样在Oracle中写操作系统文件,如写日志
可以利用utl_file包,但是,在此之前,要注意设置好Utl_file_dir初始化参数
/**************************************************************************
parameter:textContext in varchar2 日志内容
desc: ·写日志,把内容记到服务器指定目录下
·必须配置Utl_file_dir初始化参数,并保证日志路径与Utl_file_dir路径一致或者是其中一个
****************************************************************************/ 
CREATE OR REPLACE PROCEDURE sp_Write_log(text_context VARCHAR2)
IS
file_handle utl_file.file_type;
Write_content VARCHAR2(1024);
Write_file_name VARCHAR2(50);
BEGIN
--open file
write_file_name := 'db_alert.log';
file_handle := utl_file.fopen('/u01/logs',write_file_name,'a');
write_content := to_char(SYSDATE,'yyyy-mm-dd hh24:mi:ss')||'||'||text_context;
--write file
IF utl_file.is_open(file_handle) THEN
utl_file.put_line(file_handle,write_content);
END IF;
--close file
utl_file.fclose(file_handle);
EXCEPTION
WHEN OTHERS THEN
BEGIN
IF utl_file.is_open(file_handle) THEN
utl_file.fclose(file_handle);
END IF;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
END sp_Write_log;

5.SYS_CONTEXT的详细用法
select
SYS_CONTEXT('USERENV','TERMINAL') terminal,
SYS_CONTEXT('USERENV','LANGUAGE') language,
SYS_CONTEXT('USERENV','SESSIONID') sessionid,
SYS_CONTEXT('USERENV','INSTANCE') instance,
SYS_CONTEXT('USERENV','ENTRYID') entryid,
SYS_CONTEXT('USERENV','ISDBA') isdba,
SYS_CONTEXT('USERENV','NLS_TERRITORY') nls_territory,
SYS_CONTEXT('USERENV','NLS_CURRENCY') nls_currency,
SYS_CONTEXT('USERENV','NLS_CALENDAR') nls_calendar,
SYS_CONTEXT('USERENV','NLS_DATE_formAT') nls_date_format,
SYS_CONTEXT('USERENV','NLS_DATE_LANGUAGE') nls_date_language,
SYS_CONTEXT('USERENV','NLS_SORT') nls_sort,
SYS_CONTEXT('USERENV','CURRENT_USER') current_user,
SYS_CONTEXT('USERENV','CURRENT_USERID') current_userid,
SYS_CONTEXT('USERENV','SESSION_USER') session_user,
SYS_CONTEXT('USERENV','SESSION_USERID') session_userid,
SYS_CONTEXT('USERENV','PROXY_USER') proxy_user,
SYS_CONTEXT('USERENV','PROXY_USERID') proxy_userid,
SYS_CONTEXT('USERENV','DB_DOMAIN') db_domain,
SYS_CONTEXT('USERENV','DB_NAME') db_name,
SYS_CONTEXT('USERENV','HOST') host,
SYS_CONTEXT('USERENV','OS_USER') os_user,
SYS_CONTEXT('USERENV','EXTERNAL_NAME') external_name,
SYS_CONTEXT('USERENV','IP_ADDRESS') ip_address,
SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') network_protocol,
SYS_CONTEXT('USERENV','BG_JOB_ID') bg_job_id,
SYS_CONTEXT('USERENV','FG_JOB_ID') fg_job_id,
SYS_CONTEXT('USERENV','AUTHENTICATION_TYPE') authentication_type,
SYS_CONTEXT('USERENV','AUTHENTICATION_DATA') authentication_data
from dual

6.怎么样在过程中暂停指定时间
DBMS_LOCK包的sleep过程
如:dbms_lock.sleep(5);表示暂停5秒。

7.怎么在Oracle中发邮件
可以利用utl_smtp包发邮件,以下是一个发送简单邮件的例子程序
/****************************************************************************
parameter: Rcpter in varchar2 接收者邮箱
Mail_Content in Varchar2 邮件内容
desc: ·发送邮件到指定邮箱
·只能指定一个邮箱,如果需要发送到多个邮箱,需要另外的辅助程序
****************************************************************************/
CREATE OR REPLACE PROCEDURE sp_send_mail( rcpter IN VARCHAR2,
mail_content IN VARCHAR2)
IS 
conn utl_smtp.connection;

--write title
PROCEDURE send_header(NAME IN VARCHAR2, HEADER IN VARCHAR2) AS
BEGIN
utl_smtp.write_data(conn, NAME||': '|| HEADER||utl_tcp.CRLF);
END;

BEGIN
--opne connect
conn := utl_smtp.open_connection('smtp.com');
utl_smtp.helo(conn, 'oracle');
utl_smtp.mail(conn, 'oracle info');
utl_smtp.rcpt(conn, Rcpter);
utl_smtp.open_data(conn);
--write title
send_header('From', 'Oracle Database');
send_header('To', '"Recipient" ');
send_header('Subject', 'DB Info');
--write mail content
utl_smtp.write_data(conn, utl_tcp.crlf || mail_content);
--close connect 
utl_smtp.close_data(conn);
utl_smtp.quit(conn);
EXCEPTION
WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN
BEGIN
utl_smtp.quit(conn);
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
WHEN OTHERS THEN
NULL;
END sp_send_mail;

8.怎么样获取对象的DDL语句
第三方工具就不说了主要说一下9i以上版本的dbms_metadata
<1>获得单个对象的DDL语句
set heading off
set echo off
set feedback off
set pages off
set long 90000
select dbms_metadata.get_ddl('TABLE','TABLE_NAME','SCAME') from dual;
比如
select dbms_metadata.get_ddl('TABLE','CM_USER','AICBS') from dual;
<2>.如果获取整个用户的脚本,可以用如下语句
select dbms_metadata.get_ddl('TABLE',u.table_name) from user_tables u;
当然,如果是索引,则需要修改相关table到index
<3>.还有
dbms_metadata.get_xml()

loading...

分享到:
评论

相关推荐

    oracle 函数大全 参考函数 手册 速查 chm格式

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其强大的功能和灵活性使得它在企业级应用中占据了重要地位。本资源是一份Oracle函数大全的手册,包含丰富的参考函数和速查信息,以CHM(Microsoft Compiled ...

    oracle函数大全(CHM格式).rar

    Oracle数据库是世界上最广泛使用的数据库系统之一,以其强大的功能和稳定性著称。在Oracle数据库中,函数扮演着至关重要的角色,它们允许用户进行复杂的计算、数据处理和信息提取。"Oracle函数大全(CHM格式).rar...

    ORACLE函数大全与整理

    Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的功能和丰富的内置函数是其核心优势。"ORACLE函数大全与整理"这个资源集成了Oracle数据库中常用和不常用的各类函数,为Oracle应用开发者提供了详尽的参考。...

    Oracle字符相似度函数

    通过`Oracle字符相似度函数.png`这个图片文件,你可能能够更直观地了解这些函数的使用方法和示例,结合实际案例学习将更有助于理解和掌握这些功能。在实践中,不断试验和调整,才能更好地利用这些工具解决实际问题。

    Oracle资料 Oracle九阴真经 Oracle函数大全 Oracle错误码 Oracle参考手册 Oracle全套chm.7z

    本压缩包“Oracle资料 Oracle九阴真经 Oracle函数大全 Oracle错误码 Oracle参考手册 Oracle全套chm.7z”包含了丰富的Oracle学习资源,帮助用户深入理解并掌握Oracle的相关知识。 1. **Oracle九阴真经**:这是对...

    Oracle存储过程和函数(最详细包含emp 表实例操作,边看边操作)

    Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的功能和高效的数据管理能力深受企业青睐。在Oracle数据库中,存储过程和函数是重要的编程元素,用于执行复杂的数据库操作和业务逻辑。本篇文章将深入探讨这...

    oracle性能优化、函数大全、傻瓜問題

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其在企业级应用中占据着重要的地位。本文将深入探讨Oracle性能优化、函数大全、数据库技术以及一些常见的"傻瓜问题"。 一、Oracle性能优化 1. SQL优化:...

    Oracle函数手册.rar

    通过深入阅读"Oracle函数手册",不仅可以了解函数的基本用法,还能学习到如何结合这些函数解决实际问题,提升数据库管理与开发的技能。对于初学者来说,这是一个很好的起点,而对于经验丰富的开发者,这个手册也可以...

    ORACLE函数大全CHM

    这个“ORACLE函数大全”资源将详细介绍每个函数的语法、参数、返回值和使用示例,是学习和工作中不可或缺的工具。通过深入研究,你可以提高对Oracle数据库操作的理解和应用能力,提升开发和维护数据库的效率。记得...

    oracle函数大全(分类成9个word文档)

    总的来说,这个压缩包提供的Oracle函数大全对于数据库管理员、开发人员或学习者来说是一份宝贵的资源,它详尽地介绍了Oracle中各种类型的函数,帮助用户更好地理解和使用这些功能,提高工作效率。无论是日常的查询...

    oracle日期函数全面总结

    Oracle数据库系统中,日期函数是进行时间数据处理的关键工具,对于数据库管理员和开发人员来说,理解和熟练使用这些函数至关重要。本篇文章将全面总结Oracle中的日期函数,帮助你解决日常工作中遇到的各种日期处理...

    oracle sql内置函数大全

    在Oracle数据库系统中,内置函数分为多种类型,包括数值函数、字符串函数、日期时间函数、转换函数、数学函数、聚合函数等。下面将详细介绍这些函数类别及其常见用法。 1. **数值函数**: - `ABS()`:返回一个数的...

    oracle函数课件

    Oracle数据库是世界上最广泛使用的数据库管理系统之一,其强大的功能和丰富的内置函数使得数据处理变得高效而灵活。本课件“Oracle函数课件”是为初学者精心准备的学习资源,旨在帮助大家掌握Oracle数据库中的核心...

    Oracle内置函数大全.rar

    Oracle内置函数可以分为多种类型,包括算术函数、字符串函数、日期时间函数、转换函数、系统信息函数、控制结构函数等。这些函数在SQL查询、数据处理和存储过程编写中扮演着关键角色。 1. **算术函数**:例如`+`、`...

    oracle 110个常用函数.zip

    Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的内置函数,以帮助用户进行数据查询、处理和分析。在"Oracle 110个常用函数"这个资料中,我们很可能会找到一系列关于Oracle SQL函数的详细解释。这些...

    Oracle内建函数大全

    Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的功能和丰富的内置函数库是其核心优势之一。本文将深入探讨Oracle内建函数,旨在帮助用户更好地理解和利用这些功能来优化数据库操作。 1. **数学函数** -...

    oracle函数大全及知识点api

    Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的功能和丰富的函数集使得开发者能够处理复杂的查询和数据操作。本文将深入探讨Oracle函数大全及其API,同时也会涉及到错误代码查询,帮助你更好地理解和...

    oracle·10G函数大全

    Oracle 10g是一款历史悠久但仍然广泛使用的数据库管理系统,它提供了丰富的函数库,使得数据库管理和查询更为便捷高效。本文将深入探讨Oracle 10g中的关键函数,旨在为数据库管理员和开发人员提供全面的参考。 一、...

    oracle函数大全与存储过程语法-中文.rar

    Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的功能和灵活性主要体现在它的函数和存储过程上。本资源包“oracle函数大全与存储过程语法-中文.rar”涵盖了从Oracle 9i到10G版本的函数和存储过程的详细...

    Mysql+Oracle函数文档

    MySQL 和 Oracle 是两种广泛使用的数据库管理系统(DBMS),它们在数据存储、管理和处理方面具有各自的特点和优势。这里,我们主要探讨的是它们的函数用法,通过提供的文档资源——"MySQL_5.1_zh.chm" 和 "oracle...

Global site tag (gtag.js) - Google Analytics