内置包Oracle
信息中心答案2

信息技术类习题第二部分:征收应用系统建设与维护岗位习题答案选择题:1、ORACLE创建用户的命令正确的是( B )A、CREATE USER 用户名 IDENTIFIED 口令B、CREATE USER 用户名 IDENTIFIED BY 口令C、GRANT CONNECT ,RESOURCE TO 用户 OF 口令D、GRANT DBA TO 用户 BY 口令2、ORACLE 修改用户口令正确的是 ( C )A、ALTER USER 用户名 IDENTIFIED 口令B、ALTER USER 用户名 IDENTIFIED “口令”C、GRANT CNNECT TO 用户名 IDENTIFIED BY 口令D、GRANT CNNECT TO 用户名 IDENTIFIED “口令”3、ORACLE 给普通用户授权正确的是( A)A、GRANT CONNECT ,RESOURCE TO 用户B、GRANT DBA TO 用户 BY 口令C、GRANT CONNECT ,RESOURCE TO 用户 OF 口令D、GRANT DBA TO 用户口令4、出口退税审核系统V14.00前台ORACLE连接配置正确的是( A)A、ckts =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 71.16.16.161)(PORT = 1521)) )(CONNECT_DATA =(SERVICE_NAME = ckts)))B、ckts =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 71.16.16.47)(PORT = 1521)) )(CONNECT_DATA =(SERVICE_NAME = ckts)))C、ckts =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 71.16.16.46)(PORT = 1521)) )(CONNECT_DATA =(SERVICE_NAME = ckts)))D、ckts =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 71.16.16.161)(PORT = 1521)) )(CONNECT_DATA =(SERVICE_NAME = tssh)))5、创建ORACLE存储过程的语句正确的是 ( C)A、CREATE OR REPLACE PROCEDURE 存储过程名(变量名变量类型, ……)B、CREATE OR REPLACE FUNCTION 存储过程名(变量名变量类型, ……) ISC、CREATE OR REPLACE PROCEDURE 存储过程名(变量名变量类型, ……) ASD、CREATE OR REPLACE FUNCTION 存储过程名(变量名变量类型, ……)6、创建ORACLE函数的语句正确的是 ( D)A、CREATE OR REPLACE PROCEDURE 函数名(变量名变量类型, ……)B、CREATE OR REPLACE FUNCTION 函数名(变量名变量类型, ……)C、CREATE OR REPLACE PROCEDURE 函数名(变量名变量类型, ……) ASD、CREATE OR REPLACE FUNCTION 函数名(变量名变量类型, ……) IS7、定义ORACLE显示游标的语句正确的是 ( C)A、OPEN 游标名 IS SELECT 字段名,…… FROM 表名 WHERE 条件……B、CREATE 游标名 IS SELECT 字段名,…… INTO 表名FROM 表名 WHERE 条件……C、CREATE 游标名 IS SELECT 字段名,…… FROM 表名 WHERE 条件……D、LOOP 游标名 IS SELECT 字段名,…… FROM 表名 WHERE 条件……8、创建ORACLE数据库表的命令正确的是( B)A、CREATE TABLE 表名(列名数据类型,……,)B、CREATE TABLE 表名(列名数据类型,……)C、CREATE VIEW 表名(列名数据类型,……)D、CREATE VIEW 表名(列名数据类型,……,)9、创建ORACLE数据库视图的命令正确的是 ( C)A、CREATE TABLE 视图名(列名数据类型,……,)B、CREATE TABLE 视图名(列名数据类型,……)C、CREATE VIEW 视图名(列名数据类型,……)D、CREATE VIEW 视图名(列名数据类型,……,)10、截断ORACLE数据库表的命令正确的是( A )A、TRUNCATE TABLE 表名B、TRUNCATE FROM表名C、DELETE * FROM 表名D、DELETE FROM 表名11、ORAGLE数据库中SGA由(ABC)组成。
oracle的字符串类型

oracle的字符串类型Oracle的字符串类型有VARCHAR2、CHAR、CLOB和NCLOB等。
这些字符串类型在Oracle数据库中起着非常重要的作用,可以用于存储和处理各种类型的文本数据。
我们来介绍一下VARCHAR2类型。
VARCHAR2是一种可变长度的字符串类型,可以存储最多4000个字符。
它适用于存储变长的文本数据,比如用户的姓名、地址、描述等信息。
与之相对的是CHAR类型,它是一种定长的字符串类型,需要指定字符串的长度。
CHAR类型适用于存储长度固定的文本数据,比如国家代码、邮政编码等。
接下来,我们来介绍一下CLOB类型。
CLOB是一种用于存储大量文本数据的字符串类型,可以存储最多4GB的数据。
CLOB适用于存储较长的文本数据,比如文章内容、日志记录等。
与之类似的是NCLOB类型,它是用于存储Unicode字符集的大文本数据。
在Oracle中,我们可以使用字符串函数来处理字符串类型的数据。
比如,我们可以使用LENGTH函数来获取字符串的长度,使用SUBSTR函数来截取字符串的一部分,使用CONCAT函数来拼接多个字符串等。
这些字符串函数可以帮助我们对字符串数据进行各种操作和处理。
除了基本的字符串操作,Oracle还提供了一些高级的字符串处理功能。
比如,我们可以使用REGEXP_REPLACE函数来进行正则表达式替换,使用REGEXP_SUBSTR函数来进行正则表达式匹配等。
这些高级的字符串处理功能可以帮助我们更加灵活地处理字符串数据。
在实际应用中,我们经常需要对字符串进行排序和比较。
在Oracle 中,字符串的排序和比较是按照字符的ASCII码进行的。
如果我们需要按照特定的排序规则进行排序,可以使用NLS_SORT参数来指定排序规则。
另外,我们还可以使用NLS_COMP参数来指定字符串的比较规则,比如是否区分大小写、是否区分重音符号等。
除了基本的字符串操作和函数,Oracle还提供了一些用于处理字符串数据的内置包和类型。
oracle题库

ORACLE题库18,591.下列不属于ORACLE的逻辑结构的是(C)A.区B.段C.数据文件D.表空间2. 下面哪个用户不是ORACLE缺省安装后就存在的用户(A)A . SYSDBAB. SYSTEMC. SCOTTD. SYS3下面哪个操作会导致用户连接到ORACLE数据库,但不能创建表(A)A.授予了CONNECT的角色,但没有授予RESOURCE的角色B.没有授予用户系统管理员的角色C.数据库实例没有启动D.数据库监听没有启动4.( )函数通常用来计算累计排名,移动平均数和报表聚合。
A . 汇总B. 分析C 分组、D 单行5.带有(B)字句的SELECT语句可以在表的一行或多行放置排他锁。
A . FOR INSERTB. FOR UPDATEC. FOR DELETED. FOR REFRESH6.在Oracle中,你以SYSDBA登录,CUSTOMER表位于Mary用户方案中,下面哪条语句为数据库中的所有用户创建CUSTOMER表的同义词(B)。
A.CREATE PUBLIC SYNONYM cust ONmary.customer;B.CREATE PUBLIC SYNONYM cust FORmary.customer;C.CREATE SYNONYM cust ON mary.customerFOR PUBLIC;D.不能创建CUSTOMER的公用同义词。
E.7. 在Oracle中,当FETCH语句从游标获得数据时,下面叙述正确的是(C)。
A.游标打开B.游标关闭C.当前记录的数据加载到变量中D.创建变量保存当前记录的数据8. 在Oracle中,下面关于函数描述正确的是(AD)。
A.SYSDATE函数返回Oracle服务器的日期和时间B.ROUND数字函数按四舍五入原则返回指定十进制数最靠近的整数C.ADD_MONTHS日期函数返回指定两个月份天数的和D.SUBSTR函数从字符串指定的位置返回指定长度的子串9. 阅读下面的PL/SQL程序块:BEGININSERT INTO employee(salary,last_name,first_name) VALUES(35000,'Wang','Fred');SAVEPOINT save_a;INSERT INTO employee(salary,last_name,first_name) VALUES(40000,'Woo','David');SAVEPOINT save_b;DELETE FROM employee WHERE dept_no=10; SAVEPOINT save_c;INSERT INTO employee(salary,last_name,first_name) VALUES(25000,'Lee','Bert');ROLLBACK TO SAVEPOINT save_c;INSERT INTO employee(salary,last_name,first_name) VALUES(32000,'Chung','Mike');ROLLBACK TO SAVEPOINT save_b; COMMIT;END;运行上面的程序,哪两个更改永久保存到数据库(CD)。
db2与oracle差别

db2与oracle差别1:并发机制Oracle的默认隔离级是快照(Snapshot),写入事务可不能堵塞读取事务,读取事务能够猎取当前已提交值。
DB2默认是游标稳固性(Cursor Stability),写入事务会堵塞读取事务。
2: 数据类型数据库的核心是数据,类型不匹配或者语义的不同都会阻碍应用是否能够同时在两种数据库中运行。
Oracle支持一些非SQL标准的数据类型,例如VARCHAR2,这些是不被D B2支持的;另外,Oracle中的日期、时刻格式和DB2中相应类型在语义上不完全一致;最后Oracle的PL/SQL储备过程所支持的一些标量数据类型在DB2中需要被映射才能被识别。
如右:3: 隐式类型转换Oracle使用弱类型转换,而DB2使用强类型转换。
隐式类型转换能完成一种类型向另外一种类型的自动转换,关于不匹配的类型,假如数据类型能被合明白得释,比较或者赋值时能够执行隐式类型转换;强类型转换规则,意味着字符串和数字类型之间不能直截了当进行比较,除非显式转换。
4:SQL方言DB2传统上坚持对SQL标准的支持,但Oracle实现了专门多方言。
例如:CONNEC T BY 递归语句、(+)连接操作符、DUAL表、ROWNUM伪列、ROWID伪列、MINUS 操作符、SELECT INTO FOR UPDATE语句、TRUNCATE TABLE等。
假如要在DB2数据库上运行使用了上述方言的应用,就需要进行代码级别的翻译,工作量较大。
5:PL/SQL语言就储备过程和函数开发而言,DB2使用SQL PL语言来开发,Oracle使用PL/SQL 语言来开发。
SQL PL和PL/SQL差异庞大,这也是从Oracle到DB2转型最大的工作量所在。
6:内置包为了方便应用程序开发的需要,Oracle数据库提供了专门多内置包:DBMS_OUTPUT、DBMS_SQL、DBMS_ALERT、DBMS_PIPE、DBMS_JOB、DBMS_LOB、DBMS_UTI LITY、UTL_FILE、UTL_MAIL和UTL_SMTP等。
Oracle中文使用手册

1.Oracle的使用1.1. SQLPLUS的命令初始化表的位置:set NLS_LANG=american_7ascii (设置编码才可以使用下面脚本)cd $ORACLE_HOME/rdbms cd demo summit2.sql*********************************我们目前使用的是oralce 9i 9201 版本select * from v$version;恢复练习表命令:sqlplus **/** @summit2.sql //shell要在这个文件的位置。
登陆oracle的命令:sqlplus 用户名/密码show user 显示当前登陆的身份.set pause onset pause off 分页显示.oracle中默认日期和字符是左对齐,数字是右对齐table or view does not exist ; 表或示图不存在edit 命令用于自动打开vi修改刚修执行过的sql的命令。
修改方法二:l 3 先定位到行 c /旧串/新串执行出错时,利用错误号来查错误:!oerr ora 942 (装完系统后会装一个oerr工具,用于通过错误号来查看错误的具体信息)想在sql中执行unix命令时,把所有的命令前加一个!就可以,或者host( 用于从sql从切换至unix环境中去)/*** 初次使用时注意 ****运行角本时的命令:先切换到unix环境下,cd $oracle_home cd sqlplus cd demo 下面有两个角本建表语句。
@demobld.sqlsqlplus nanjing/nanjing @demobid.sql 直接运行角本,后面跟当前目录或者是绝对路径保存刚才的sql语句:save 命令第二次保存时要替换之前的角本 save 文件名 replace把刚才保的sql重新放入 buffer中spool on 开启记录spool off 关闭记录spool 文件名此命令会把所有的操作存在某个文件中去常见缩写:nls national language support 国家语言支持1.2. SQL的结构|DDL 数据库定义|DML 数据库管理SQL――Commit rollback|DCL 数据库控制|grant+revoke 权限管理表分为:系统表(数据字典),用户表注:知道数据字典可以更便于使用数据库。
Oracle笔试题库附参考答案

Oracle笔试题库附参考答案1.下列不属于ORACLE的逻辑结构的是(C)1. 区2. 段3. 数据⽂件4. 表空间2. 下⾯哪个⽤户不是ORACLE缺省安装后就存在的⽤户(A)A . SYSDBAB. SYSTEMC. SCOTTD. SYS3 下⾯哪个操作会导致⽤户连接到ORACLE数据库,但不能创建表(A)1. 授予了CONNECT的⾓⾊,但没有授予RESOURCE的⾓⾊2. 没有授予⽤户系统管理员的⾓⾊3. 数据库实例没有启动4. 数据库监听没有启动1. ( )函数通常⽤来计算累计排名,移动平均数和报表聚合。
A . 汇总B. 分析C 分组、D 单⾏1. 带有(B)字句的SELECT语句可以在表的⼀⾏或多⾏放置排他锁。
A . FOR INSERTB. FOR UPDATEC. FOR DELETED. FOR REFRESH1. 在Oracle中,你以SYSDBA登录,CUSTOMER表位于Mary⽤户⽅案中,下⾯哪条语句为数据库中的所有⽤户创建CUSTOMER表的同义词(B)。
1. CREATE PUBLIC SYNONYM cust ON mary.customer;2. CREATE PUBLIC SYNONYM cust FOR mary.customer;3. CREATE SYNONYM cust ON mary.customer FOR PUBLIC;4. 不能创建CUSTOMER的公⽤同义词。
5.7. 在Oracle中,当FETCH语句从游标获得数据时,下⾯叙述正确的是(C)。
1. 游标打开2. 游标关闭3. 当前记录的数据加载到变量中4. 创建变量保存当前记录的数据8. 在Oracle中,下⾯关于函数描述正确的是(AD)。
1. SYSDATE函数返回Oracle服务器的⽇期和时间2. ROUND数字函数按四舍五⼊原则返回指定⼗进制数最靠近的整数3. ADD_MONTHS⽇期函数返回指定两个⽉份天数的和4. SUBSTR函数从字符串指定的位置返回指定长度的⼦串9. 阅读下⾯的PL/SQL程序块:BEGININSERT INTO employee(salary,last_name,first_name)VALUES(35000,’Wang’,'Fred’);SAVEPOINT save_a;INSERT INTO employee(salary,last_name,first_name)VALUES(40000,’Woo’,'David’);SAVEPOINT save_b;DELETE FROM employee WHERE dept_no=10;SAVEPOINT save_c;INSERT INTO employee(salary,last_name,first_name)VALUES(25000,’Lee’,'Bert’);ROLLBACK TO SAVEPOINT save_c;VALUES(32000,’Chung’,'Mike’);ROLLBACK TO SAVEPOINT save_b;COMMIT;END;运⾏上⾯的程序,哪两个更改永久保存到数据库(CD)。
Oracle测试题+答案

1) PL/SQL块中可以使用下列()命令。
(选择两项)a) TRUNCATEb) DELETEc) SA VEPOINTd) ALTER TABLE2) 授予sa用户在SCOTT.EMP表中SAL列的更新权限的语句是(B)〔选择一项〕a) GRANT CHANGE ON SCOTT.EMP TO SAb) GRANT UPDA TE ON SCOTT.EMP(SAL) TO SAc) GRANT UPDA TE (SAL) ON SCOTT.EMP TO SAd) GRANT MODIFY ON SCOTT.EMP(SAL) TO SA3) EMP表有14条记录,则语句SELECT ‘Aptech’FROM EMP 的执行结果是(C)〔选择一项〕a) Aptechb) 无输出c) 14行Aptechd) 编译出错4) PL/SQL块中哪几部分是可选的()〔选择二项〕a) Declareb) Beginc) Exceptiond) Constant5) 在创建序列的过程中,下列()选项指定序列在达到最大值或最小值后,将继续从头开始生成值。
(选择一项)a) Cycleb) Nocyclec) Cached) Nocache6) 同义词有以下()用途。
(选择三项)a) 简化SQL 语句b) 隐藏对象的名称和所有者c) 提供对对象的公共访问d) 显示对象的名称和所有者7) Oracle中用来释放锁的语句有()〔选择二项〕a) commitb) Drop lockc) rollbackd) unlock8) 关于类型定义Number(9,2)说法正确的有()〔选择一项〕a) 整数部分9位,小数部分2位,共11位b) 整数部分7位,小数部分2位,共9位c) 整数部分6位,小数点一位,小数部分2位,共9位d) 以上说法均不正确9) 下列哪种Lob类型用来存储数据库以外的操作系统文件()〔选择一项〕a) CLOBb) BLOBc) CFILEd) BFILE10) Oracle中的三种系统文件分别是()〔选择三项〕a) 数据文件b) 归档文件c) 日志文件d) 控制文件11) 下列哪项不是Oracle中常用的分区方法?()〔选择一项〕a) 范围分区b) 散列分区c) 列表分区d) 条件分区12) 查看Test中名称为P1的分区中的记录的查询语句为()〔选择一项〕a) Select * from Test Where PartitionName=’p1’b) Select * from Test(p1)c) Select * from Test Partition(p1);d) 以上均正确13) 创建序列时,若未指定Cycle选项,则当当前值大于MaxValue时将()〔选择一项〕a) 从MinValue重新开始循环b) 重复使用MaxValue 值c) 执行出错d) 使用随机值14) 下列哪项是创建索引组织表所必需的()〔选一项〕a) Primary Keyb) Order Byc) Group Byd) 以上均不是15) 若表的某字段值存在大量的重复,则基于该字段适合创建哪种索引?()〔选一项〕a) 标准索引b) 唯一索引c) 位图索引d) 分区索引16) 在PL/SQL块中定义一个名为PI值为3.14的Real型常量的语法是()〔选一项〕a) A.Pi Const Real=3.14;b) B.Pi Real Const =3.14;c) C.Constant Pi Real:=3.14d) D.Pi Constant Real:=3.1417) 22.当Select语句没有返回行时,将引发下列哪个异常?()[选择一项]a) A.No_rows_foundb) B.No_data_foundc) C.No_Data_rows_foundd) D.Invalid_Number18) Oracle中提供的两种游标是()〔选择二项〕a) A.隐式游标b) B.静态游标c) C.REF游标d) D.显式游标19) 若Emp表中有14条记录,则用户执行了以下操作,结果是:()〔选择一项〕Cursor mycur is Select * From emp;。
Oracleform_builder内置函数说明.

abort_query;停止查询的执行add_group_column(record group id或name,group column添加一个列至U—个记录组,Record group idn ame,colu mn type,colu mn width;add_group_row(record group id或name,row number;添加一个行至U—个记录组,record group id是oracle赋予这个组的唯一的名称,row number指定了这个行在组中位置.add」ist_eleme nt(list n ame or list id,list index,list lable,list value;添加一项到下拉列表框,list name是list 的名字,list index 是添加到列表框的索引,list label指定了放入列表中的数值串,list value包含了列表标识所对应的数据库的数值.add_parameter(list或name,parameter,parameter type,valu添加一个参数至U—个参数列表,参数列表是一个变量列表,这些变量将被伟给其他对象,list或name指定了这个列表的标识,parameter type参数类型包含两种可用数值:text_type是一串字符;data_paramete是一个指定已在form中定义的记录组的串.value是传给被调模块的实际数值.application_parameter促使oracle 显示Enter parameter values对话框。
关联了当前菜单form的参数按其数值被显示。
backgrou nd_me nu (1...10从背景菜单中显示一个菜单项bell;促使终址产生一个鸣叫(要有音响或耳机才能听以哦!block_menu;显示一个数值的列表,它包括有效块的名字和它们的序列号break;停止form的执行,显示调试器.注:只能在调试模式时call」nput;接受并执行功能键输入;checkbox_checked( name返回一个真或假的值表示检查框的状态check_record_uniquenes被on_check_unique触发器调用时,为检查主关键字的唯一性而被始化form过程.clear_block人当前的块中清除记录.clear_eol;从光标开始到些行结束清除文本项的值。
Oracle内置函数大全

Oracl e SQL 内置函数大全(一)整理时间[2005-10-14] 阅读次数[6224]导读:Oracle SQL 内置函数大全(一)Oracle SQL 内置函数大全(二)Oracle SQL 内置函数大全(三)________________________________________文字大小:【大】【中】【小】SQL中的单记录函数1.ASCII返回与指定的字符对应的十进制数;SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;A a ZERO SPACE--------- --------- --------- ---------65 97 48 322. 2.CHR给出整数,返回对应的字符;SQL> select chr(54740) zhao,chr(65) chr65 from dual;ZH C-- -赵A3. 3.CONCAT连接两个字符串;SQL> select concat('010-','88888888')||'转23' 高乾竞电话from dual; 高乾竞电话----------------010-********转234. 4.INITCAP返回字符串并将字符串的第一个字母变为大写;SQL> select initcap('smith') upp from dual;UPP-----Smith5. 5.INSTR(C1,C2,I,J)在一个字符串中搜索指定的字符,返回发现指定的字符的位置;C1 被搜索的字符串C2 希望搜索的字符串I 搜索的开始位置,默认为1J 出现的位置,默认为1(第一次?)SQL> select instr('oracle traning','ra',1,2) instring from dual;INSTRING---------96. 6.LENGTH返回字符串的长度;SQL> selectname,length(name),addr,length(addr),sal,length(to_char(sal))from .nchar_tst; NAME LENGTH(NAME) ADDR LENGTH(ADDR) SALLENGTH(TO_CHAR(SAL))------ ------------ ---------------- ------------ --------- --------------------高乾竞 3 北京市海锭区 6 9999.99 7。
Oracle期末考试复习题

oracle复习题一、填空题:1. Oracle EnterpriseManager是一个基于B/S的框架系统。
2.Oracle数据库的存储结构分为物理结构和逻辑结构。
3.在游标或者游标变量打开后还没有进行第一次提取时,%found属性为null。
4. 在oracle中已commit或rollback作为上一个事务的结束标志及下一个新事物开始的标志。
5. DML表示数据操作语言,主要的DML有SELECT,INSERT,UPDATE,DELETE. 6.索引的主要目标是提高访问的速度。
7.在Oracle database 10g 系统中,可以使用DBCA工具和CREATE DATEBASE命令两种方式创建数据库。
8. 命令Startup nomount只能启动数据库实例,但不能装载和打开数据库。
9.在输入URL进入Oracle Enterprice Manager Database Control 的时候,必须指出ip地址和端口号。
10.在登录Oracle Enterprice Manager Database Control时,连接身份有两种选择,分别为normal和sysdba。
二、选择题:1.当Oracle服务器启动时,下列哪种文件不是必须装入内存的()。
DA. 数据文件B. 控制文件C. 日志文件D. 归档日志文件2. 在Oracle中,当用户要执行SELECT语句时,下列哪个进程从磁盘获得用户需要的数据()。
BA.用户进程 B. 服务器进程 C. 日志写入进程(LGWR) D. 检查点进程(CKPT)3. 在Oracle数据库的逻辑结构中有以下组件:A 表空间;B 数据块;C 区;D段;这些组件从大到小依次是()。
BA. A→B→C→DB. A→D→C→BC. A→C→B→DD. D→A→C→B4. (B )可以从过程返回多个值。
A. 使用IN参数B. 使用OUT参数C. 使用指针D. 不能5.PL/SQL为内存耗尽时,预定义了(C )异常。
oracle内置取最大最小函数:greatest和least

oracle 内置取最大最小函数:greatest 和leastoracle 中取最大值最小值一般想到的就是组函数max 和min ,这也是我的第一想法,但是别忘了,max 和min 是用来取某个字段的最大最小值,并不是说如果你有几个数,然后你直接从它们中取出最大或者最小,由于我不知道greatest 和least 这两个函数,最后我实现的是通过case 去比较的,如果A 大于B 就取A ,否则取B ,现在就可以直接用greatest(A, B)来实现了。
1、coalescue返回表达式列表中第一个非空的值,列表必须都是相同类型,也可以是一个表的同一行、不同列的值进行比较。
1 2 3 4 5 6 7 8 9 10 11 SELECT coalesce(1,NULL,2)FROM dual; -- 返回1SELECT coalesce(NULL,2,1)FROM dual; -- 返回2SELECT coalesce(t.empno,t.mgr)FROM scott.emp t; -- 效果类似 NVL( t.empno, t.mgr )2、greatest返回表达式列表中最大值,列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。
当列表中有一个值为null ,那么就返回null ,这个地方需要注意,如果需要当值为null 的时候,可以考虑用nvl 转为0来进行比较。
1 2 3 4 5 6 7 8 9 10 SELECT greatest(1,3,2) FROM dual; -- 返回3SELECT greatest('A','B','C') FROM dual; -- 返回CSELECT greatest(NULL,'B',11 12 13 14 15 'C')FROM dual; -- 返回nullSELECT greatest(t.empno,t.mgr)FROM scott.emp t; -- 返回empno 和mgr 较大值3、least返回表达式列表中最小值,列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。
oracle12使用手册

oracle12使用手册Oracle 12 使用手册Oracle是一种广泛应用的关系型数据库管理系统(RDBMS),它提供了一种高效、可靠的数据存储和管理解决方案。
本文将向您介绍Oracle 12的使用手册,让您能够更好地了解和操作这个强大的数据库系统。
一、安装和配置Oracle 121. 下载Oracle 12c安装包,并解压缩到指定目录。
2. 执行安装程序,按照向导提示进行安装。
3. 配置数据库实例,包括设置监听器、初始化参数等。
4. 启动数据库实例,确保数据库能够正常运行。
二、创建和管理数据库1. 使用SQL*Plus或SQL Developer等工具登录数据库。
2. 创建数据库表空间,用于存储数据和索引。
3. 创建用户,并为其分配适当的权限。
4. 创建表、视图、索引等数据库对象。
5. 管理数据库对象的权限和存取控制。
6. 备份和恢复数据库,确保数据的安全性和可靠性。
三、数据查询与操作1. 使用SQL语言进行数据查询和操作。
2. 编写SQL查询语句,包括条件查询、排序、分组等。
3. 使用内置函数进行数据计算和转换。
4. 联接多个表进行复杂查询。
5. 插入、更新和删除数据。
6. 事务管理,确保数据的一致性和完整性。
四、PL/SQL编程1. 了解PL/SQL语言的基本语法和数据类型。
2. 编写存储过程、函数和触发器。
3. 使用游标进行数据检索和遍历。
4. 异常处理和事务控制。
5. 调用PL/SQL代码并进行测试。
五、性能优化和调试1. 了解Oracle的查询优化器和执行计划。
2. 使用索引和分区等技术提升查询性能。
3. 分析和优化SQL查询语句。
4. 监控和调优数据库的性能。
5. 诊断和解决数据库故障和性能问题。
六、高可用性和容灾备份1. 配置备份和恢复策略,确保数据的可靠性。
2. 实施数据复制和故障转移,提高系统的可用性。
3. 使用Oracle Data Guard实现数据库的容灾备份。
4. 备份和恢复数据库和表空间。
Oracle LogMiner概述

Oracle LogMiner概述使用LogMiner工具可以对重做日志文件或归档重做日志文件进行分析,以便DBA对数据库用户的操作进行审计,或者撤销数据库中已经执行过的、指定的操作。
此外,DBA 还能够通过分析日志文件来追踪某个用户的所有操作,或者追踪某个数据库对象的变更过程,并且由引生成统计信息。
LogMiner工具由一系列内置DBMS包和动态视图组成。
在使用LogMiner的过程中,主要用到以下两个DBMS包:●DBMS_LOGMNR_D 在这个包中包含提取数据字典信息和创建LogMiner字典文件所必需的过程,即DBMS_LOGMNR_D.BUILD()过程。
●DBMS_LOGMNR 在这个包中包含有初始化和运行LogMiner所必需的过程。
它有三个过程:用来添加/删除用于分析的日志文件的过程ADD_LOGFILE();用来开启日志分析,同时确定分析的时间/SCN号以及确认是否使用提取出来的数据字典信息的过程START_LOGMNR();用来终止分析会话、回收LogMiner所占用内存的过程END_LOGMNR()。
DBMS包是随Oracle服务器软件一同提供的另一种类型的实用工具。
在DBMS包中包含了许多PL/SQL过程,利用这些过程能够完成许多数据库操作。
组成LogMiner的包均位于SYS模式中。
与LogMiner相关的数据字典包括:●v$logmnr_dictionary 包含LogMiner可能使用的数据字典信息,因logmnr可以有多个字典文件,该视图用于显示这方面信息。
●v$logmnr_parameters 当前LogMiner所设定的参数信息。
●v$logmnr_logs 当前用于分析的日志列表。
●v$logmnr_contents 日志分析结果。
在Oracle 11g中,还需要安装LogMiner工具。
在数据库安装目录下的rdbms\admin子目录中,可以找到两个SQL脚本文件:dbmslm.sql和dbmslmd.sql。
oracle 指定范围的随机数

一、介绍随机数是在计算机科学和统计学中广泛应用的概念,它可以用来模拟实际情况中的随机事件,或者用于密码学和安全领域。
在数据库系统中,生成随机数同样是一个常见的需求,在Oracle数据库中,我们可以使用一些内置函数来生成指定范围的随机数。
本文将介绍在Oracle数据库中如何生成指定范围的随机数,并给出一些实际应用的例子。
二、生成指定范围的随机数在Oracle数据库中,我们可以使用DBMS_RANDOM包中的函数来生成随机数。
其中最常用的函数是DBMS_RANDOM.VALUE,它可以生成一个0到1之间的随机数。
假设我们需要生成一个指定范围内的随机整数,我们可以通过如下方式来实现:SELECT FLOOR(DBMS_RANDOM.VALUE(min_value, max_value + 1)) AS random_numberFROM dual;在上面的SQL语句中,我们使用FLOOR函数对DBMS_RANDOM.VALUE函数生成的随机数进行向下取整,然后通过设置min_value和max_value来指定随机数的范围。
这样就可以生成一个[min_value, max_value]范围内的随机整数。
三、实际应用1. 生成随机订单号在很多电商评台或者企业系统中,生成随机的订单号是一个常见的需求。
我们可以利用上面介绍的方法来生成一个指定长度的随机订单号。
假设我们要生成一个长度为8的订单号,我们可以按照如下方式来实现:SELECT LPAD(FLOOR(DBMS_RANDOM.VALUE(0, xxx)), 8, '0') AS order_numberFROM dual;在上面的SQL语句中,我们首先利用DBMS_RANDOM.VALUE 函数生成一个0到xxx之间的随机整数,然后使用LPAD函数来将其补齐到指定的长度。
这样就可以生成一个长度为8的随机订单号。
2. 抽奖活动在一些营销活动中,抽奖是一个非常常见的环节。
oracle中type类型

oracle中type类型摘要:I.引言- 介绍Oracle 数据库中的Type 类型- 说明Type 类型在数据库中的作用II.Type 类型的概念和分类- 什么是Type 类型- Type 类型的分类1.用户定义类型(User-Defined Types)2.内置类型(Built-In Types)III.用户定义类型- 用户定义类型的概念- 用户定义类型的创建和使用1.使用CREATE TYPE 语句创建类型2.使用TYPE 语句定义类型变量3.使用用户定义类型进行数据存储和操作IV.内置类型- 内置类型的概念- 内置类型的分类1.数字类型2.字符类型3.时间日期类型4.LOB(大型对象)类型5.其他类型V.Type 类型与数据库对象的关系- Type 类型如何与表、视图、索引等数据库对象关联- Type 类型在查询和操作数据库对象时的作用VI.Type 类型的应用案例- 案例1:使用用户定义类型存储复杂数据结构- 案例2:使用内置类型进行高效的数据查询和操作VII.结论- 总结Type 类型在Oracle 数据库中的重要性- 强调合理使用Type 类型对提高数据库性能和可维护性的作用正文:I.引言在Oracle 数据库中,Type 类型是一种用于存储和管理数据的特殊类型。
通过使用Type 类型,用户可以更灵活地进行数据存储和操作,提高数据库性能和可维护性。
本文将详细介绍Oracle 数据库中的Type 类型,包括其概念、分类、创建和使用方法,以及与数据库对象的关系和应用案例。
II.Type 类型的概念和分类首先,我们需要了解什么是Type 类型。
在Oracle 数据库中,Type 类型是一种用于存储和管理数据的抽象结构,它可以将不同类型的数据组合在一起,形成一个整体。
Type 类型可以提高数据存储的灵活性和可扩展性,同时便于进行数据查询和操作。
Type 类型主要分为两大类:用户定义类型(User-Defined Types)和内置类型(Built-In Types)。
(2024年)Oracle培训讲义

数据文件(Datafiles)
存储数据的物理文件,如表的数据和索引的数据。
控制文件(Controlfiles)
记录数据库的物理结构的文件,包括数据文件和日志文件的位置和名 称等信息。
重做日志文件(Redo Logfiles)
记录所有更改数据的操作,用于数据库恢复。
归档日志文件(Archived Redo…
云计算
Oracle数据库支持云计算环 境,可以为企业提供灵活、高
效的数据库服务。
大数据
Oracle数据库可以处理大规 模的数据集,支持实时分析和
数据挖掘。
物联网
Oracle数据库可以应用于物 联网领域,为智能设备提供数
据存储和分析服务。
6
02
Oracle数据库体系结 构
2024/3/26
7
物理存储结构
16
04
SQL基础与Oracle SQL增强功能
2024/3/26
17
SQL语言概述及基础语法
SQL语言概述
SQL(Structured Query Language,结构化查 询语言)是用于管理关系数据库的标准语言,包 括数据查询、数据定义、数据操纵和数据控制等 功能。
数据定义语言(DDL)
用于定义数据库对象,如CREATE、ALTER、 DROP等语句。
提高数据加载和处理的效率。
分区交换
利用分区技术将数据分段处理, 然后将结果合并,适用于大数据
量的ETL操作。
01
03
02 04
2024/3/26
并行处理
通过并行查询、并行DML和并行 DDL等操作来利用多个CPU和 I/O资源,加速大数据量的处理 速度。
[指南]Oracle内置角色connect与resource的权限
![[指南]Oracle内置角色connect与resource的权限](https://img.taocdn.com/s3/m/6c9e0d300622192e453610661ed9ad51f01d54f1.png)
Oracle内置角色connect与resource的权限.txt懂得放手的人找到轻松,懂得遗忘的人找到自由,懂得关怀的人找到幸福!女人的聪明在于能欣赏男人的聪明。
生活是灯,工作是油,若要灯亮,就要加油!相爱时,飞到天边都觉得踏实,因为有你的牵挂;分手后,坐在家里都觉得失重,因为没有了方向。
Oracle内置角色connect与resource的权限首先用一个命令赋予user用户connect角色和resource角色:grant connect,resource to user;运行成功后用户包括的权限:CONNECT角色: --是授予最终用户的典型权利,最基本的ALTER SESSION --修改会话CREATE CLUSTER --建立聚簇CREATE DATABASE LINK --建立数据库链接CREATE SEQUENCE --建立序列CREATE SESSION --建立会话CREATE SYNONYM --建立同义词CREATE VIEW --建立视图RESOURCE 角色: --是授予开发人员的CREATE CLUSTER --建立聚簇CREATE PROCEDURE --建立过程CREATE SEQUENCE --建立序列CREATE TABLE --建表CREATE TRIGGER --建立触发器CREATE TYPE --建立类型从dba_sys_privs里可以查到(注意这里必须以DBA角色登录):select grantee,privilege from dba_sys_privswhere grantee='RESOURCE' order by privilege;GRANTEE PRIVILEGE------------ ----------------------RESOURCE CREATE CLUSTERRESOURCE CREATE INDEXTYPERESOURCE CREATE OPERATORRESOURCE CREATE PROCEDURERESOURCE CREATE SEQUENCERESOURCE CREATE TABLERESOURCE CREATE TRIGGERRESOURCE CREATE TYPE=================================================一、何为角色?我在前面的篇幅中说明权限和用户。
PowerBuilder内置ORACLE数据库接口的使用方法

PowerBuilder内置ORACLE数据库接口的使用方法PowerBuilder(PB)和Oracle分别是前端开发工具和RDBMS的主流产品。
PB提供了两种与Oracle连接的接口:PowerSoft内置的数据库接口(Native Database Interface)和ODBC接口。
本文介绍使用PB6.0内置Oracle接口的方法,包括数据描述文件的设置、存储过程的调用和存储过程作为数据窗口数据源的操作方法等内容,使用的RDBMS的Oracle 7.3。
PowerBuilder与Oracle的连接假定已安装Oracle客户端应用程序。
可用Sqlplus或Tnsping等是否能连接到Oracle数据库,确定在配置文件中使用的数据库别名(Database Alias,又称服务器名,Server Name)。
如有疑问,可在Oracle客户端程序目录下tnsname.or a文件中找到。
另外保证搜索路径已包括应用程序的安装目录(如C:\ORAWIN95\BIN)。
进入PB的Database Profiles画笔,可看到所有已安装的数据库接口(PB6.0缺省安装的是Oracle 7. 3版的接口,如使用低版本的Oracle,需在安装时指定),选择“Oracle 7.3”,点击“New”按钮,进入Database Profile Setup对话框。
在“C onnection”页输入下列信息:Profile Name:为该Database Profile起一个有意义的名称;Server:@TNS:ServerName,其中ServerName为上述数据库别名(服务器名),如@TNS:ORA73;Login ID:Oracle数据库中实际的用户名,由于PB初次连接到数据库时要自动建立五个系统表(Powe rBuilder CatalogTable:PBCATTBL,PBCATCOL,PBCATEDT,PBCATFMT, PBCATVLD,存储表的扩展属性),因此第一个连接到Oracl e的用户必须具有建表、给PUBLIC角色授权等权限。
oracle系统包简介

oracle系统包简介包名称包头文件说明dbms_alert dbmsalrt.sql 异步处理数据库事件dbms_application_info dbmsutil.sql 注册当前运行的应用的名称(用于性能监控)dbms_aqadm dbmsaqad.sql 与高级队列选项一起使用dbms_ddl dbmsutil.sql 重新编译存储子程序和包,分析数据库对象dbms_debug dbmspb.sql PL/SQL调试器接口dbms_deffr dbmsdefr.sql 远程过程调用应用的用户接口dbms_describe dbmsdesc.sql 说明存储子程序的参数dbms_job dbmsjob.sql 按指定的时间或间隔执行用户定义的作业dbms_lock dbmslock.sql 管理数据库块dbms_output dbmsotpt.sql 将文本行写入内存、供以后提取和显示dbms_pipe dbmspipe.sql 通过内存“管道”在会话之间发送并接收数据dbms_profiler dbmspbp.sql 用于配置PL/SQL脚本以鉴别瓶颈问题dbms_refresh dbmssnap.sql 管理能够被同步刷新的快照组dbms_session dbmsutil.sql 程序执行alter session(改变会话)语句dbms_shared_pool dbmspool.sql 查看并管理共享池内容dbms_snapshot dbmssnap.sql 刷新,管理快照,并清除快照日志dbms_space dbmsutil.sql 获取段空间信息dbms_sql dbmssql.sql 执行动态SQL和PL/SQLdbms_system dbmsutil.sql 开/关给定会话的SQL追踪dbms_transaction dbmsutil.sql 管理SQL事务dbms_utility dbmsutil.sql 多种实用工具:对于一个给定的模式,重新编译存储子程序和包、分析数据库对象、格式化错误信息并调用堆栈用于显示、显示实例是否以并行服务器模式运行、以10毫秒间隔获取当前时间、决定数据库对象的全名、将一个PL/SQL表转换为一个使用逗号分割的字符串,获取数据版本/操作系统字符串utl_raw utlraw.sql RAW数据转化为字符串utl_file utlfile.sql 读/写基于ASCII字符的操作系统文件utl_http utlhttp.sql 从给定的URL得到HTML格式的主页dbms_lob dbmslob.sql 管理巨型对象一.dbms_output作用:用于输入和输出信息,使用过程PUT和PUT_LINES可以将信息发送到缓冲区,使用过程GET_LINE和GET_LINES可以显示缓冲区信息.详细如下:1.enable该过程用于激活对过程PUT,PUT_LINE,GET_LINE,GET_LINES的调用语法如下:dbms_output.enable(buffer_size in integer default 20000);2.disable该过程用于禁止对过程PUT,PUT_LINE,GET_LINE,GET_LINES的调用语法如下:dbms_output.disable;3.put和put_line过程put_line用于将一个完整行的信息写入到缓冲区中,过程put 则用地分块建立行信息, 当使用过程put_line时,会自动在行的尾部追加行结束符;当使用过程put时,需要使用过程 new_line追加行结束符.示例如下:set serverout onbegindbms_output.put_line('伟大的中华民族');dbms_output.put('中国');dbms_output.put(',伟大的祖国');dbms_output.new_line;end;/伟大的中华民族中国,伟大的祖国4.new_line该过程用于在行的尾部追加行结束符.当使用过程PUT时,必须调用NEW_LINE过程来结束行.5.get_line和get_lines过程get_line用于取得缓冲区的单行信息,过程get_lines用于取得缓冲区的多行信息.二.dbms_job作用:用于安排和管理作业队列,通过使用作业,可以使ORACLE数据库定期执行特定的任务.1.submit用于建立一个新作业.当建立作业时,需要给作业要执行的操作,作业的下次运行日期及运行时间间隔.语法如下:dbms_out.submit (job out binary_integer,what in varchar2,next_date in date default sysdate,interval in varchar2 default 'null',no_parse in boolean default false,instance in binary_integer default any_instance,force in boolean default false);注:job用于指定作业编号;what用于指定作业要执行的操作;next_date用于指定作业的下次运行日期;interval用于指定运行作业的时间间隔;no_parse用于指定是否解析与作业相关的过程;instance用于指定哪个例程可以运行作业;force用于指定是否强制运行与作业相关的例程.示例如下:var jobno numberbegindbms_job.submit(:jobno,'dbms_ddl.analyze_object(''table'',''scott'',''emp'',''compute'');',sysdate,'sysdate+1');commit;end;/2.remove删除作业队列中的特定作业示例如下:SQL>exec dbms_job.remove(1);3.change用于改变与作业相关的所有信息,包括作业操作,作业运行日期以及运行时间间隔等.示例如下:SQL>exec dbms_job.change(2,null,null,'sysdate+2');4.what用于改变作业要执行的操作示例如下:SQL>exec dbms_job.what(2,'dbms_stats.gather_table_stats->(''scott'',''emp'');');5.next_date用于改变作业的下次运行日期示例如下:SQL>exec dbms_job.next_date('2','sysdate+1');6.instance用于改变作业的例程示例如下:SQL>exec dbms_job.instance(2,1);7.interval用于改变作业的运行时间间隔示例如下:SQL>exec dbms_job.interval(2,'sysdate+1/24/60');8.broken用于设置作业的中断标识示例如下:SQL>exec dbms_job.broken(2,true,'sysdate+1');9.run用于运行已存在的作业示例如下:sql>exec dbms_job.run(1);三.dbms_pipe作用:用于在同一例程程的不同会话之间进行管道通信.注意,如果用户要执行包dbms_pipe中的过程和函数,则必须要为用户授权.sql>conn sys/oracle as sysdba;sql>grant execute on dbms_pipe to scott;1.create_pipe该函数用于建立公用管道或私有管道.如果将参数private设置为TRUE,则建立私有管道;如果设置为FALSE,则建立公用管道.示例如下:declarefalg int;beginflag:=dbms_pipe.create_pipe('public_pipe',8192,false);if flag=0 thendbms_output.put_line('建立公用管道成功');end if;end;/2.pack_message该过程用于将消息写入到本地消息缓冲区3.send_message该函数用于将本地消息缓冲区中的内容发送到管道4.receive_message该函数用于接收管道消息5.next_item_type该函数用于确定本地消息缓冲区下一项的数据类型,如果该函数返回0,则表示管道没有任何消息;如果返回6,则表示下一项的数据类型为number;如果返回9,则表示下一项的数据类型为varchar2;如果返回11,则表示下一项的数据类型为rowid;如果返回12,则表示下一项的数据类型为date;如果返回23,则表示下一项的数据类型为raw.6.unpack_message该过程用于将消息缓冲区的内容写入到变量中.7.remove_pipe该函数用于删除已经建立的管道8.purge该过程用于清除管道中的内容9.reset_buffer该过程用于复位管道缓冲区10.unique_session_name该函数用于为特定会话返回惟一的名称,并且名称的最长度为30字节.四.dbms_alert作用:用于生成并传递数据库预警信息.使用包DBMS_ALERT,则必须以SYS登陆,为该用户授予执行权限.sql>conn sys/oracle as sysdbasql>grant execute on dbms_alert to scott;1.register用于注册预警事件示例如下:sql>exec dbms_alter.register('alter1');2.remove用于删除会话不需要的预警事件.3.removeall用于删除当前会话所有已注册的预警事件语法如下:dbms_alter.removeall;4.set_defaults用于设置检测预警事件的时间间隔,默认时间间隔为5秒5.signal用于指定预警事件所对应的预警消息.6.waitany用于等待当前会话的任何预警事件,并且在预警事件发生时输出相应信息.在执行该过程之前,会隐含地发出COMMIT.语法如下:dbms_alter.waitany (name out varchar2,message out varchar2,status out integer,timeout in number default maxwait);注:status用于返回状态值,返回0表示发生了预警事件,返回1表示超时;timeout用于设置预警事件的超时时间.7.waitone用于等待当前会话的特定预警事件,并且在发生预警事件时输出预警消息.语法同上五.dbms_transaction作用:用于在过程,函数,和包中执行SQL事务处理语句.1.read_only用于开始只读事务,其作用与SQL语句SET TRANSACTION READ ONLY完全相同2.read_write用于开始读写事务,------------------------------------WRITE-------3.advise_rollback用于建议回退远程数据库的分布式事务4.advise_nothing用于建议远程数据库的分布式事务不进行任何处理5.advise_commit用于建议提交远程数据库的分布式事务/doc/a29907379.htmler_rollback_segment用于指定事务所要使用的回滚段/doc/a29907379.htmlmit_comment用于在提交事务时指定注释./doc/a29907379.htmlmit_force用于强制提交分布式事务./doc/a29907379.htmlmit用于提交当前事务10.savepoint用于设置保存点11.rollback用于回退当前事务12.rollback_savepoint用于回退到保存点13.rollback_force用于强制回退分布式事务14.begin_discrete_transaction用于开始独立事务模式15.purge_mixed用于清除分布式事务的混合事务结果16.purge_lost_db_entry用于清除本地数据库所记载的远程事务入口,该事务入口操作因为远程数据库问题未能在远程数据库完成.17.local_transaction_id用于返回当前事务的事务标识号18.step_id用于返回排序DML事务的惟一正整数六.dbms_session作用:提供了使用PL/SQL实现ALTER SESSION命令,SET ROLE命令和其他会话信息的方法.1.set_identifier用于设置会话的客户ID号2.set_context用于设置应用上下文属性3.clear_context用于清除应用上下文的属性设置4.clear_identifier用于删除会话的set_client_id.5.set_role用于激活或禁止会话角色6.set_sql_trace用于激活或禁止当前会话的SQL跟踪语法如下:dbms_session.set_sql_trace(sql_strace boolean);7.set_nls用于设置NLS特征语法如下:dbms_session.set_nls(param varchar2,value varchar2);8.close_database_link用于关闭已经打开的数据库链9.reset_package用于复位当前会话的所有包,并且会释放包状态10.modify_package_state用于修改当前会话的PL/SQL程序单元的状态语法如下:dbms_session.modify_package_state(action_flags in pls_integer);11.unique_session_id用于返回当前会话的惟一ID标识符12.is_role_enabled用于确定当前会话是否激活了特定角色.语法如下:dbms_session.is_role_enabled(rolename varchar2)return boolean;13.is_session_alive用于确定特定会话是否处于活动状态.14.set_close_cached_open_cursors用于打开或关闭close_cached_open_cursors15.free_unused_user_meory用于在执行了大内在操作(超过100K)之后回收未用内存16.set_context设置应用上下文属性的值17.list_context用于返回当前会话原命名空间和上下文列表18.swith_current_consumer_group用于改变当前会话的资源使用组七.dbms_rowid作用:用于在PL/SQL程序和SQL语句中取得行标识符的信息并建立ROWID,通过该包可以取得行所在的文件号,行所在文件的数据块号,行所在数据块的行号,以及数据库对象号等消息.1.rowid_create建立ROWID语法如下:dbms_rowid.rowid_create (rowid_type in number,object_number in number,relative_fno in n umber,block_number in number,row_number in number)return rowid;注:rowid_type用于指定ROWID类型(0:受限ROWID,1:扩展ROWID);object_number用于指定数据对象号;relative_fno用于指定相对文件号;block_number用于指定在文件中的数据块号;row_number用于指定在数据块中的行号.2.rowid_info用于取得特定ROWID的详细信息.3.rowid_type用于返回特定ROWID的类型4.rowid_object用于取得特定ROWID所对应的数据对象号5.rowid_relative_fno用于取得特定ROWID所对应的相对文件号6.rowid_block_number用于返回特定ROWID在数据文件中所对应的数据块号.7.rowid_row_number用于返回特定ROWID在数据块中所对应的行号.8.rowid_to_obsolute_fno用于返回特定ROWID所对应的绝对文件号9.rowid_to_extended用于将受限rowid转变为扩展rowid10.rowid_to_restricted用于将扩展rowid转换为受限rowid11.rowid_verify检查是否可以将受限rowid转变为扩展rowid八.dbms_rls作用:只适用于Oracle Enterprise Edition,它用于实现精细访问控制,并且精细访问控制是通过在SQL语句中动态增加谓词(WHERE子句)来实现的.通过使用ORACLE的精细访问控制特征,可以使不同数据库用户在执行相同SQL语句时操作同一张表上的不同数据.九.dbms_ddl作用:提供了在PL/SQL块中执行DDL语句的方法,并且也提供了一些DDL的特殊管理方法.十.dbms_shared_pool作用:提供了对共享池的一些过程和函数访问,它使用户可以显示共享池中的对象尺寸,绑定对象到共享池,清除绑定到共享池的对象.为了使用该包,必须运行dbmspool.sql脚本来建立该包.十一.dbms_random作用:提供了内置的随机数生成器,可以用于快速生成随机数.十二.dbms_logmnr作用:通过使用包DBMS_LOGMNR和DBMS_LOGMNR_D,可以分析重做日志和归档日志所记载的事务变化,最终确定误操作(例如DROP TABLE)的时间,跟踪用户事务操作,跟踪并还原表的DML操作.十三.dbms_flashback作用:用于激活或禁止会话的flashback特征,为了使得普通用户可以使用该包,必须要将执行该包的权限授予这些用户.十四.dbms_obfuscation_toolkit作用:用于加密和解密数据,另外还可以生成密码检验和.通过加密输入数据,可以防止黑客或其他用户窃取私有数据;而通过结合使用加密和密码检验和,可以防止黑客破坏初加密的数据.当使用该包加密数据时,要求被加密数据的长度必须为8字节的整数倍.当使用DES算法加密数据时,密钥长度不能低于8字节;当使用DES3算法加密数据时,密钥长度不能低于16字节.十五.dbms_space作用:用于分析段增长和空间的需求十六.dbms_space_admin作用:提供了局部管理表空间的功能十七.dbms_tts作用:用于检查表空间集合是否是自包含的,并在执行了检查之后,将违反自包含规则的信息写入到临时表TRANSPORT_SET_VIOLATIONS 中.十八.dbms_repair作用:用于检测,修复在表和索引上的损坏数据块.十九.dbms_resource_manager作用:用于维护资源计划,资源使用组和资源计划指令;包dbms_resource_manager_privs用于维护与资源管理相关的权限.二十.dbms_stats作用:用于搜集,查看,修改数据库对象的优化统计信息.二十一.utl_file作用:用于读写OS文件.使用该包访问OS文件时,必须要为OS目录建立相应的DIRECTORY对象..当用户要访问特定目录下的文件时,必须要具有读写DIRECTORY对象的权限.在使用UTL_FILE包之前,应首先建立DIRECTORY对象.二十二.utl_inaddr作用:用于取得局域网或Internet环境中的主机名和IP地址.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
内置程序包
Oracle提供了许多内置程序包,它们用于扩展数据库的功能。
在开发应用程序时,可以利
用这些程序包。
数据库用户SYS拥有Oracle提供的所有程序包。
它们被定义为公有同义词,
并将执行权限授予了PUBLIC用户组,任何用户都可以访问它们。
Oracle提供的程序包的部分列表见表8.1。
续表
下面简单介绍几个常用的内置程序包。
8.2.1 DBMS_OUTPUT
DBMS—OUTPUT程序包允许显示PL/SQL块和子程序的输出结果,这样便于测试和调试它们。
PUT和PUT_LINE过程将信息输出到SGA中的缓冲区。
通过调用过程GET_LINE或通过 SET
SERVEROUTPUT ON,可以显示缓冲区中的信息。
默认缓冲区大小是2000字节。
最小值是2000,最大值是1,000,000。
DBMS一OUTPUT包
有以下常用过程。
ENABLE
ENABLE过程用来启用对PUT、PUT_ LINE和NEW_LINE等过程的调用,它只有一个输入参数,
即缓冲区大小(BUFFER_SIZE)。
缓冲区大小的输入值用于设置默认缓存的信息量。
调用
ENABLE将清除任何已废弃会话中缓存的数据。
DISABLE
DISABLE没有输入和输出。
DISABLE用于禁用对PUT、PUT_LINE和NEW_LINE的所有调用。
调用DISABLE过程还可清除缓冲区中的任何剩余信息。
PUT
PUT有一个输入参数,此参数被重载以接受VARCHAR2、NUMBER和DATE值。
PUT用于在缓冲
区中存储一条信息。
TO_CHAR将使用默认格式设置格式化这些项。
PUT_ LINE
PUT_ LINE有一个输入参数,此参数被重载以接受VARCHAR2、NUMBER和DATE值。
如果这些
值是要混合使用,则必须显式使用TO_CHAR函数。
PUT_LINE过程用于将一条信息存储在缓
冲区中,后接一个行结束标记。
NEW_LINE
NEW_LINE没有参数。
它用于向缓冲区中添加换行符。
换行符充当行结束标记。
对 PUT_LINE
或NEW_LINE的每次调用都将产生一行。
例13演示了DBMS_OUTPUT包的用法。
例13:
例13的输出结果如下所示。
8.2.2DBIVIS_LOB
DBMS_LOB程序包包含用于处理大型对象的过程和函数。
在Oracle中,LOB分为以下几种类
型:BLOB(二进制大对象)、CLOB(字符大对象)和BFILE(外部存储的二进制文件——
只读)。
大部分LOB操作由此程序包提供。
DBMS_ LOB包有如下的一些过程和函数。
APPEND:此过程用于将在src_lob参数中指定的BLOB或CLOB追加到在dest_lob参数中指定的BLOB或CLOB。
COPY:此过程用于从指定的偏移值开始将源BLOB或CLOB复制到目标CLOB或BLOB。
ERASE:此过程用于删除lob_loc指定的BLOB或CLOB中从指定偏移量(offset)处开始的指定量(amount)的部分。
GETLENGTH:此函数返回指定的BLOB、CLOB或BFILE的长度,并使用适合于该类型的单位。
INSTR:此函数从LOB数据中查找子串。
READ: 此过程从LOB数据中读取指定长度数据到缓冲区。
SUBSTR: 此函数从LOB数据中取子串。
WRITE: 此过程用于将指定数量的数据写入LOB。
以下是一些专门操作BFILE的过程和函数。
FILEOPEN: 此过程用于打开BFILE类型文件以进行读取。
FILEGETNAME: 此过程用于接受文件定位器值并返回文件目录别名和文件名。
FILECLOSE: 此过程用于关闭指定的BFILE。
FILEISOPEN: 此函数用于判断BFILE文件是否已打开。
DBMS_LOB程序的使用请参见第5章例4和例7。
8.2.3 DBMS_XMLQUERY
DBMS_XMLQUERY包用于将查询结果转换为XML格式。
例14演示了DBMS_XMLQUERY和DBMS_LOB包的用法。
例 14.
例14声明了一个CLOB数据类型的result变量,以及VARCHAR2类型的xmlstr和line两个变量。
其中,getXml函数用于将查询结果转换为XML格式,SUBSTR函数检索子字符串,32767值指定要从CLOB数据类型读取的最大字节数。
检索到的字符串存储在xmlstr变量中。
LOOP块循环执行,每次从xmlstr中读取一行。
INSTR函数返回一个字符串在另一个字符串中首次出现的位置。
在此,该函数返回换行符在字符串中的位置,直到遇到下一行。
8.2.4 DBMS RANDOM
DBMS_ RANDOM包可以用来生成随机数,该包的RANDOM函数返回一个8位的随机整数,该整
数的正负也是随机的。
例15所示代码产生10个l到100的随机整数。
例15:
8.2.5 UTL_FILE
UTL_FILE包用于从PL/SQL程序中读写操作系统文本文件,如XML文件。
UTL_FILE包对文
件的读写过程与编程语言(如C语言)的流操作类似,一般的过程是打开、读或写、关闭。
UTL_FILE包要求文件所在位置是基于Oracle的DIRECTORY对象指定的目录,不能直接使用
文件的绝对路径。
要使用UTL_ FILE包必须先将创建目录对象与操作系统的目录关联起来。
创建目录对象需要
有相关的权限,以SYSTEM用户执行如下命令。
例16首先创建了目录对象TEST_DIR关联到服务器上的C: DEVELOP文件夹,在使用此目录
对象之前必须保证操作系统中已存在此文件夹。
然后,将操作此目录对象的权限授予SCOTT
用户。
以SCOTT用户执行以下的命令。
例17通过UTL_FILE将DBMS_XMLQUERY包的查询结果保存到文件中。
例17:
例18演示了如何从XML文件中读取文本。
例18:
SQL> CREATE DIRECTORY TEST DIR AS 'C:\DEVELOP';
soL> GRANT READv WRITE ON DIRECTORY TEST DIR TO SCOTT;
上述代码的输出结果如下所示。
总结
触发器是当用户执行特定操作时自动执行的存储过程。
触发器由触发器语句、触发器限制和触发器操作3部分组成。
Oracle中的触发器分为行级触发器、语句级触发器、INSTEAD OF触发器、模式触发器和数据库级触发器5种类型。
INSTEAD OF触发器只能应用于视图。
内置程序包存储在数据库中,用于扩展数据库的功能。
DBMS_OUTPUT程序包允许用户从程序包、触发器和存储过程中输出信息。
DBMS_LOB程序包用于操作BLOB、CLOB和BFILE等数据类型。