版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DOC.NO.TIMESON-SM-2002-11-0001A
Normal
(公开)
本地电信业务计费帐务系统
ORACLE操作手册
Version1.0.0
2002.11.05
TIMESON
天辰科技©2000,2001,2002
AllRightsReserved
前言4
1.数据库的创建4
1.1.以下为ORACLE一动初始文件INITORA.ORA4
1.2.以下是建库脚本6
2.数据库基本操作11
2.1.数据库的正常启动11
2.2.安装启动与非安装启动12
2.3.独占和共享启动13
2.4.约束启动13
2.5.强制启动14
2.6.数据库关闭14
2.7.PL/SQL基本程序的编写15
2.7.1.SQL语言简介15
2.7.2.PL/SQL简介22
3.解决RDBMS问题32
31.性能优化32
3.1,1.优化存32
3.1.2.优化输入/输出36
3.1.3.优化排序40
3.1.4.优化索义建立40
3.2.备份和恢复40
3.2.1.备份提示41
3.3.ORACLE8SERVER诊断特性44
3.3.1.Oracle跟踪文件44
3.3.2.设置跟踪事件47
3.3.3.丫$监视视图52
3.3.4.锁实用程序54
3.4.ORACLE错误分析和解决方案56
3.4.1.常见Oracle错误56
3.4.2.ORACLE部错误71
3.4.3.优先权1/优先权2问题分类和诊断操作73
3.5.常见问题78
前,言
为了加强计费系统数据库的操作安全及更有效的管理计费系统数据库,
编写该操作手册。
在该手册若有错误及遗漏的地方还望各位读者不若指出与谅解。
L数据库的创建
以下仅为数据库创建的样例脚本,在实际系统中应根据数据库设计要与
系统实际配置而改变参数:
1.1.以下为ORACLE启动初始文件initora.ora
#thissampaleinitfilewritenbywzy2002/11/15
db_name="jfu
instance_name=ora8
#service_names=ora
#db_files=1024
control_files=("/home/orac1e/OraC11/contro101.ctl",
"/home/orac1e/OraCt1/contro102.ctl",
"/home/orac1e/OraCt1/contro103.ctl")
open_cursors=100
max_enab1ed_ro1es=50
db_file_multiblock_read_count=8
db_block_buffers=4096
shared_pool_size=52428800
large_pool_size=78643200
java_pool_size=20971520
log_checkpoint_interval=10000
1og_checkpoint_timeout=1800
processes=115
parallel_max_servers=5
log_buffer=32768
max_dump_fi1e_size=10240
global_names=true
#oracle_trace_collection_name='*"
db_block_size=16384
#remote_1ogin_passwordfile=exclusive
#os_authent_prefix=*'"
job_queue_processes=4
job_queue_interva1=60
open_links=10
#large_pool_size=614400
java_pool_size=20971520
distributed_transactions=10
mts_dispatchers
"(PROTOCOL二TCP)(PRE=oracle.aurora,server.SGiopServer)"
mts_dispatchers="(protoco1=TCP)"
?compatible=8.1.0
sort_area_size=65536
sort_area_retained_size=65536
#log_archive_start=true
1.2.以下是建库脚本
#!/bin/sh
ORACLE_SID=ora8
exportORACLE_SID
svrmgrl
connectinternal
startupnomountpfile=$ORACLE_HOME/dbs/initora.ora
CREATEDATABASE"appl"
controlfilereuse
maxdatafiles500
maxinstances8
maxlogfiles32
charactersetZHS16GBK
nationalcharactersetZHS16GBK
DATAFILE1/oradata/appl/systemOl.dbf1SIZE200M
logfilegroup1(*/opt/oracle/oradata/appl/appl_redo01.log',
*/oradata/appl/appl_redo01.log*)SIZE20M,
group2C/opt/oracle/oradata/appl/appl_redo02.log',
'/oradata/appl/appl_redo02.log")SIZE20M,
group3('/opt/oracle/oradata/appl/appl_redo03.log,
*/oradata/appl/appl_redo03.log)SIZE20M;
/opt/oracle/product/8.1.7/rdbms/admin/cata1og.sql;
CREATEROLLBACKSEGMENTrOTABLESPACESYSTEM
STORAGE(INITIAL128kNEXT128kMINEXTENTS2MAXEXTENTS20);
ALTERROLLBACKSEGMENTrOONLINE;
REM************TABLESPACEFOROEM_REPOSITORY***************
CREATETABLESPACEOEM.REPOSITORYDATAFILE*/oradata/appl/oemrepOl.dbf,SIZE5M
REUSE
AUTOEXTENDONNEXT25MMAXSIZE80M
MINIMUMEXTENT128k
DEFAULTSTORAGE(INITIAL128kNEXT128kMINEXTENTS1MAXEXTENTSUNLIMITED
PCTINCREASE0);
REM**************TABLESPACEFORROLLBACK※耕米秣**米*米料糕*米
CREATETABLESPACERBSDATAFILEF/oradata/appl/rbsOl.dbf'SIZE200MREUSE
DEFAULTSTORAGE(INITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITED
PCTINCREASE0);
REM**************TABLESPACEFORTEMPORARY/***************
CREATETABLESPACETEMPDATAFILE*/oradata/appl/tempO1.dbfJSIZE200MREUSE
DEFAULTSTORAGE(INITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITED
PCTINCREASE0)TEMPORARY;
REM科*林**标格*义*TABLESPACEFORUSER****次林*******林*****
CREATETABLESPACEUSERSDATAFILE,/oradata/appl/usersOl.dbf*SIZE50MREUSE
DEFAULTSTORAGE(INITIAL128kNEXT128kMINEXTENTS1MAXEXTENTSUNLIMITED
PCTINCREASE0);
REM**************TABLESPACEFORINDEX*********************
CREATETABLESPACEINDXDATAFILE*/oradata/appl/indxOl.dbf*SIZE50MREUSE
DEFAULTSTORAGE(INITIAL128kNEXT128kMINEXTENTS1MAXEXTENTSUNLIMITED
PCTINCREASE0);
REM****CreatingfourrolIbacksegments*****x********adclrollbacksegmentto
20***
CREATEROLLBACKSEGMENTrOlTABLESPACERBS
STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptima1
4096K);
CREATEROLLBACKSEGMENTr02TABLESPACERBS
STORAGE(INITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal
4096K);
CREATEROLLBACKSEGMENTr03TABLESPACERBS
STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal
4096K);
CREATEROLLBACKSEGMENTr04TABLESPACERBS
STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal
4096K);
CREATEROLLBACKSEGMENTr05TABLESPACERBS
STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal
4096K);
CREATEROLLBACKSEGMENTr06TABLESPACERBS
STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal
4096K);
CREATEROLLBACKSEGMENTr07TABLESPACERBS
STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal
4096K);
CREATEROLLBACKSEGMENTr08TABLESPACERBS
STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal
4096K);
CREATEROLLBACKSEGMENTr09TABLESPACERBS
STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal
4096K);
CREATEROLLBACKSEGMENTrlOTABLESPACERBS
STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal
4096K):
CREATEROLLBACKSEGMENTrllTABLESPACERBS
STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal
4096K);
CREATEROLLBACKSEGMENTrl2TABLESPACERBS
STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptima1
4096K);
CREATEROLLBACKSEGMENTrl3TABLESPACERBS
STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal
4096K);
CREATEROLLBACKSEGMENTrl4TABLESPACERBS
STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal
4096K);
CREATEROLLBACKSEGMENTrl5TABLESPACERBS
STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal
4096K);
CREATEROLLBACKSEGMENTrl6TABLESPACERBS
STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal
4096K);
CREATEROLLBACKSEGMENTrl7TABLESPACERBS
STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal
4096K);
CREATEROLLBACKSEGMENTrl8TABLESPACERBS
STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal
4096K);
CREATEROLLBACKSEGMENTrl9TABLESPACERBS
STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal
4096K);
CREATEROLLBACKSEGMENTr20TABLESPACERBS
STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal
4096K);
ALTERROLLBACKSEGMENTrOlONLINE;
ALTERROLLBACKSEGMENTr02ONLINE:
ALTERROLLBACKSEGMENTr03ONLINE;
ALTERROLLBACKSEGMENTr04ONLINE;
ALTERROLLBACKSEGMENTr05ONLINE;
ALTERROLLBACKSEGMENTr06ONLINE;
ALTERROLLBACKSEGMENTr07ONLINE;
ALTERROLLBACKSEGMENTr08ONLINE;
ALTERROLLBACKSEGMENTr09ONLINE;
ALTERROLLBACKSEGMENTrlOONLINE;
ALTERROLLBACKSEGMENTrllONLINE;
ALTERROLLBACKSEGMENTr12ONLINE;
ALTERROLLBACKSEGMENTrl3ONLINE;
ALTERROLLBACKSEGMENTrMONLINE;
ALTERROLLBACKSEGMENTrl5ONLINE;
ALTERROLLBACKSEGMENTrl6ONLINE;
ALTERROLLBACKSEGMENTrl7ONLINE;
ALTERROLLBACKSEGMENTr18ONLINE;
ALTERROLLBACKSEGMENTrl9ONLINE;
ALTERROLLBACKSEGMENTr20ONLINE;
ALTERROLLBACKSEGMENTrOOFFLINE;
REM称**SYSandSYSTEMusers****************
alterusersystemporarytablespaceTEMP;
alterusersystemtemporarytablespaceTEMP;
/opt/oracle/product/8.1.7/rdbms/admin/catproc.sql;
/opt/oracle/product/8.1.7/rdbms/admin/caths.sql;
/opt/oracle/product/8.1.7/rdbins/admin/otrcsvr.sql;
/opt/oracle/product/8.1.7/rdbms/admin/catexp.sql;
/opt/oracle/product/8.1.7/rdbins/adinin/catdbsyn.sql;
/opt/oracle/product/8.1.7/rdbms/admin/catdefer.sql;
/opt/oracle/product/8.1.7/rdbms/admin/catrep.sql;
/opt/oracle/product/8.1.7/rdbms/admin/dbmspool.sql;
/opt/oracle/product/8.1.7/rdbms/admin/catparr.sql;
/opt/oracle/product/8.1.7/rdbnis/admin/catblock.sql;
connectsystem/manager
/opt/oracle/product/8.1.7/sq1p1us/admin/pupbld.sql;
—createtheproduct_profileanduser_profile
—CATALOG.SQL,--加载数据库本身的数据字典视图
-CATPROC.SQL,-一加载PL/SQL使用的PACKAGE
-CATEXP.SQL-一加载EXPORT/IMPORT工具使用的数据字典
disconnect
spooloff
exit
在数据库建立完后,可用以下语句(也可以在建库脚本中直接增加)对对
tablespace增加数据文件:
ALTERTABLESPACE'*tablespace_nameMADDDATAFILE
,data_file_path/data_file_name'SIZE<thedatafilesizeyoudesigned><REUSE>
CAUTOEXTENDONNEXT{sizeyoudesignedtoexednd};>
2.数据库基本操作
2.1.数据库的正常启动
正常启动数据库的选项是normal,这也是数据启动的缺省选项。如果以
这种方式启动则将打开一个现场(现场:现场为一逻辑概念,是系统为数据
库打开提供的一系列的必需资源),并把数据库装入,然后打开数据库供用
户使用。具体操作如下:
1•先进入SVRMGR管理器
Ssvrmgr1
SVRMGR>
2•再联入inernal用户
$connectinternal
3•在用startup命令启动(若不在启动文件所在目录进入的SVRMGR或
启动文件名不是ORACLE缺省的文件名,则启动时应带启动目录与文
件名)
SVRMGR>startuppfile=<file-pathr/init-file>
2.2.安装启动与非安装启动
安装启动的选项是mount»表示只将数据库装入现场而不打开数据库;
非安装启动的选项是nomount,表示只建立数据库现场而不装入数据库,当
然也不打开数据库。
1•安装启动
SVRMGR>startup(pfile=<filepath/init-file>)mount
该方式启动数据库的的用途一般为:
>为数据文件更名;
>增加、删除或改名事物日志文件;
>使事物日志归档模式选项有效或失效;
>进行完整数据库的恢复操作
2•非安装启动
SVRMGR>startup{pfile=<filepath/init-file>}nomount
该方式启动数据库的用途一般为:
>创建一新的数据库
2.3.独占和共享启动
独占启动选项是exclusive,表示只允许一个例程使用该数据库;共享
启动的参数是shared,表示允许多个例程并行使用该数据库,即将数据库装
入多个现场。
1•共享启动
SVRMGR>startup{pfile=<filepath/init-file>}exclusive
2•独占启动
SVRMGR>startup{pfile=<filepath/init-file>}shared
2.4.约束启动
这种方式的选项是restrict»它启动数据库时装入并打开它,但此时的
数据库只能为有特殊权限的数据库管理员使用,一般用户不能联入数据库。
1•约束启动
SVRMGR>startup{pfile=<filepath/init-file>}restrict
一般来说当用户有createsession权限十可联入数据库,但对于restrict
方式启动的数据库只有restrictedsession系统权限用户才允许联入。
若在restrict方式下改变数据库运行方式,则可用altersystem命令,如
下:
SVRMGR>altersystemdisablerestrictedsession;
2.5.强制启动
在一些非正常情况下有可能在正常方式下启动数据库遇到麻烦,或在上次因
不能正常关闭数据库(如:用了参数abort)而导致不能正常启动数据库,则可
考虑使用强制启动数据库,其参数为:force.
1•强制启动
SVRMGR>startup{pfile=<filepath/init-file>}force;
此时,除非数据库有重大系统错误,一般情况下数据库可以起来。在应注意
的是用此方式启动的数据库会上次非正常关闭数据导致的非正常数据丢掉,数据
库房动后应及时的查看数据库的日志文件。
2.6.数据库关闭
1•正常关闭
SVRMGR>shutdownnormal;
这种方式下关闭数据库在关闭前检查所有的连接,并且发出命令后不允
许再有新的连接,在等所有用户断开连接后关闭数据库。在此方式下关
闭的数据库下次启动时不需要任何恢复过程。
2•立即关闭
SVRMGR>shutdournimmediate;
这种方式下关闭数据库并不等待用户断开连接,而是由系统断开与用户
的连接,然后关闭数据库。
3•异常关闭
SVRMGR>shutdownabort;
这种方式下关闭数据库系统不做任何的检查与回退操作而直接将数据库
现场撤消。
2.7.PL/SQL基本程序的编写
ORACLE提供功能了功能强大的第三代编程语言PL/SQL。在本小节主要介绍
基本的存储过程、存储函数及触发器的编写。
2.7.1.SQL语言简介
2.7.1.1.SQL概述
SQL是一种面向数据库的通用数据处理语言规,能完成以下几类功能:
提取查询数据,插入修改删除数据,生成修改和删除数据库对象,数据库安
全控制,数据库完整性及数据保护控制。
数据库对象包括表、视图、索引、同义词、族、触发器、函数、过程、
包、数据库链、快照等(表空间、回滚段、角色、用户)。数据库通过对表的
操作来管理存储在其中的数据。
2..SQL*PLUS界面
登录•输入SQLPLUS回车;输入正确的ORACLE用户名并回车;输入用
户口令并回车,显示提示符:SQL>
退出:输入EXIT即可。
2.7.1.1.2.命令的编辑与运行
>在命令提示符后输入SQL命令并运行,以分号结束输入;以斜杠结束
输入;以空行结束输入;
>利用SQL缓冲区进行PL/SQL块的编辑和运行;
>利用命令文件进行PL/SQL块的编辑和运行。
2.7.1,2.数据库查询
2..用SELECT语句从表中提取查询数据
SELECT的语法为:
SELECT[DISTINCT]{columnl,column2,…}FROMtablenameWHERE(conditions)CROUP
BY{conditions}ORDERBY(expressions}[ASC/DESC;;
说明:SELECT子句用于指定检索数据库的中哪些列,FROM子句用于指定从
哪一个表或视图中检索数据。
2.7.1.2.2.SELECT中的操作符及多表查询WHERE子句
WHERE子句中的条件可以是一个包含等号或不等号的条件表达式,也可以是
一个含有IN、NOTIN、BETWEEN、LIKE、ISNOTNULL等比较运算符的条件式,
还可以是由单一的条件表达通过逻辑运算符组合成复合条件。
2.7.1.2.3.ORDERBY子句
ORDERBY子句使得SQL在显示查询结果时将各返回行按顺序排列,返回行
的排列顺序由ORDERBY子句指定的表达式的值确定。
2..连接查询
利用SELECT语句进行数据库查询时,可以把多个表、视图的数据结合
起来,使得查询结果的每一行中包含来自多个表达式或视图的数据,这种操
作被称为连接查询。
连接查询的方法是在SELECT命令的FROM子句中指定两个或多个将被连
接查询的表或视图,并且在WHERE子句告诉ORACLE如何把多个表的数据进行
合并。根据WHERE子句中的条件表达式是等还是不等式,可以把连接查询分
为等式连接和不等式连接。
2.7.1.2.5.子查询
如果某一个SELECT命令(查询1)出现在另一个SQL命令(查询2)的一个
子句中,则称查询1是查询2的子查询。
2.7.1.3.基本数据类型
ORACEL支持下列部数据类型:
>VARCHAR2变长字符串,最长为2000字符。
NUMBER数值型。
>LONG变长字符数据,最长为2G字节。
>DATE日期型。
>RAW二进制数据,最长为255字节。
>LONGRAW变长二进制数据,最长为2G字节。
>ROWID二六进制串,表示表的行的唯一地址。
>CHAR定长字符数据,最长为255。
2.7.1.4.常用函数
一个函数类似于一个算符,它操作数据项,返回一个结果。函数在格式上
不同于算符,它个具有变元,可操作0个、一个、二个或多个变元,形式为:
函数名(变元,变元,…)
函数具有下列一般类形:
>单行函数
>分组函数
1单行函数对查询的表或视图的每一行返回一个结果行。它有数值函
数,字符函数,日期函数,转换函数等。
2•分组函数返回的结果是基于行组而不是单行,所以分组函数不同于单
行函数。在许多分组函数中可有下列选项:
DISTRNCT该选项使分组函数只考虑变元表达式中的不同值。
>ALL该选项使分组函数考虑全部值,包含全部重复。
全部分组函数(除COUNT(*)外)忽略空值。如果具有分组函数的查询,
没有返回行或只有空值(分组函数的变元取值的行),则分组函数返回空值。
2.7.1.5.数据操纵语言命令
数据库操纵语言(DML)命令用于查询和操纵模式对象中的数据,它不稳式
地提交当前事务。它包含UPDATE'INSERT、DELETE、EXPLAINPLAN、SELECT和
LOCKTABLE等命令。下面简单介绍一下:
DUPDATEtabler.ameSET)co1umn1=expressionl,co1umn2=expression2,…}WHERE
{conditions);
例如:
SQL>updateservsetstate=FOK'whereserv_id=l23456and
serv_seq_nbr=l;
UPDATE子句指明了要修改的数据库是EMP,并用WHERE子句限制了只
对名字(ENAME)为‘MARTIN'的职工的数据进行修改,SET子句则说明修
改的方式,即把‘MARTION'的工作名称(JOB)改为‘MARAGER,.
2)INSERTINTOtablename{colunml,column2,•••}VALUES
{expression!,expression2,…};
例如:
SQL>insertintobill,servselect*fromtrans.serv_bak;
3)DELETEFROMtablenameWHERE{conditions};
例如:
SQL>deletefromacct_item_area01whereacct_id=l23245and
account_date=>200110'andacct_item_type_id=11001;
DELETE命令删除一条记录,而且DELETE命令只能删除整行,而不能
删除某行中的部分数据.
4)事务控制语句
提交命令(COMMIT):可以使数据库的修改永久化.设置AUTOCOMMIT为允
许状态:SQL>SETAUTOCOMMITON;
回浪命令(ROLLBACK):消除上一个COMMIT命令后的所做的全部修改,使
得数据库的容恢复到上一个COMMIT执行后的状态.使用方法是:
2.7.1.6.创建表、视图、索引、同义词、用户
2.7.1.6.1.表
建立表主要指定义下列信息:
>列定义
>完整性约束
>表所在表空间
>存储特性
>可选择的聚集
>从一查询获得数据
语法如下:
CREATETABLEtablenameCcolumnldatatype[DEFAULTexpression][constraint],
columnldatatype[DEFAULTexpression][constraint],)
[STORAGE子句][其他子句…];
例如:
SQL>createtableserv(serv_idnumber(lO),serv_seq_nbrnumber(3))
2tablespacedata_bi11
3storage(initial10mnext5m);
2.7.1.6.2.视图
视图是一个逻辑表,它允许操作者从其它表或视图存取数据,视图本身
不包含数据。视图所基于的表称为基表。
引入视图有下列作用:
>提供附加的表安全级,限制存取基表的行或/和列集合。
>隐藏数据复杂性。
>为数据提供另一种观点。
>促使ORACLE的某些操作在包含视图的数据库上执行,而不在另一个数
据库上执行。
2.7.1.6.3.索引
索引是种数据库芯象。对于在表或聚集的索引列上的每一值将包含一项,为
行提供直接的快速存取。在下列情况ORACLE可利用索引改进性能:
>按指定的索引列的值查找行。
>按索引列的顺序存取表。
语法:
createindex<index_name>on<tab1e_name(co1umn1,co1umn2•••)>
[storage语句][其它语句];
例如:
SQL>createindexidx_serv_01onserv(srev_id,serv_seq_nbr)
2tablespacedata_bi1l_idx
3storage(initial5mnext5m);
2..同义词
同义词:为表、视图、序列、存储函数、包、快照或其它同义词的另一
个名字。使用同义词为了安全和方便。对一对象建立同义词可有下列好站:
>引用对象不需指出对象的持有者。
>引用对象不需指出它所位于的数据库。
>为对象提供另一个名字。
语法:
craetesynonym<synonym_name>for[user_namej.<table_anme>;
例如:
(假定在CALL用户下)
SQL>createsynonymservforbill.serv;
注意:在同义词建立后要授权
2..用户
语法:
CREATEUSERusernameIDENTIFIEDBYpassword;
例如:
SQL>createuserbi11identifiedbyjfxt;
2.7.2.PL/SQL简介
2.7.2.1.PL/SQL概述
PL/SQL是Oracle对SQL规的扩展,是一种块结构语言,即构成一个PL/SQL
程序的基本单位(过程、函数和无名块)是逻辑块,可包含任何数目的嵌套了快。
这种程序结构支持逐步求精方法解决问题。一个块(或子块)将逻辑上相关的说
明和语句组合在一起,其形式为:
DECLARE
-说明
BEGIN
一语句序列
EXCEPTION
一例外处理
END;
它有以下优点:
>支持SQL;
>生产率高;
>性能好;
>可称植性;
>与ORACLE集成.
2.7.2.2.PL/SQL体系结构
PL/SQL运行系统是种技术,不是一种独立产品,可认为这种技术是PL/SQL
块和子程序的一种机,它可接收任何有效的PL/SQL块或子程序。如图所示:
PL/SQL机
PL/SQL块过程性语句
PUSQL
执行器
►
SQL语句
PL/SQL机可执行过程性语句,而将SQL语句废送到ORACLE服务器上的SQL
语句执行器。在ORACLE预编译程序或OCI程序中可嵌入无名的PL/SQL块。如果
ORACLE具有PROCEDURAL选件,有名的PL/SQL块(子程序)可单独编译,永久
地存储在数据库中,准备执行。
2.7.2.3.PL/SQL基础
PL/SQL有一字符集、保留字、标点、数据类型、严密语法等,它与SQL有
相同表示,现重点介绍。
2.7.2.3.1.数据类型
如下表所示:
数据类型子类型
纯量数值BINARY.INTEGERNATURAL,POSITIVE
类型NUMBERDEC,DECIMAL,DOUBLE
PRECISION,PLOAT,INTEGER,INT,NUME
RIC,REAL,SMALLINT
字符CHARCHARACTER,STRING
VARCHAR2VARCIIAR
LONG
LONGRAW
RAW
RAWID
逻辑BODLEAN
日期DATE
组合记录RECORD
类型表TABLE
2.7.2.3.2.变量和常量
在PL/SQL程序中可将值存储在变量和常量中,当程序执行时,变量的值可
以改变,而常量的值不能改变。
2.7.2.3.3.程序块式结构
DECLARE
一变量说明部分
BEGIN
END;
2.7.2.3.4.控制语句
分支语句:
IFconditionTHEN
sequence_statements;
ENDIF;
IFconditionlTHEN
Sequence_statements1;
ELSE
Sequence_statements2;
ENDIF;
IFconditionlTHEN
Sequence_statementsl;
ELSIFcondition2THEN
Sequence_statements2;
ELSE
Sequence_statements(n+1);
ENDIF;
2.7.2.3.5.循环语句
LOOP
Statements;
IFconditionTHEN
EXIT;
ENDIF;
ENDLOOP;
WHILEconditionLOOP
Statements;
ENDLOOP;
FORcounterINlower_con..high_conI(data-cube)LOOP
Statements;
ENDLOOP;
2.7.2.3.6.子程序
2.7.2.3.6.1.存储过程
语法:
create[orreplace]procedure函数名(参数1,参数2)ISIAS
[局部变量说明]
BEGIN
执行语句;
END;
例:
以下为一简单的样例存储过程:
CREATEORREPLACEPROCEDURE
utl_analyze_prg(
iOnwrINVARCHAR2DEFAULTNULL,
该参数为需要统计的用户,缺省则为全部*/
iLevelINVARCHAR2DEFAULTNULL
/*参数iLeve1为统计,
其值为:1.fortable
2.forcolunis
3.foral1columNs
4.foral1indexedcolumns
5.foral1indcxes
IS
"该程序用来计算统计*/
/*注意:该程序应在8i及以上版本中运行*/
tOwnerVARCHAR2(30);一存储输入的用户名
t_LevelVARCH.AR2C30);一存储输入的统计参数
t_TaleNameVARCHAR2(30);一存储选取的表名
t_.\nalyzcStrVARCHAR2C300);一存储形成的分析语句
BEGIN
t.Owner:=UPPER(TRIM(iOwer));
t.LevelUPPERCLTRIM(RTRIM((iLeve1)));
—若揄人的用户名为空时则退出程序
IFt.OwnerISNULLTHEN
DBMS_OUTPUT.PUT_LINE('请输入要用户名,);
RETURN;
ENDIF;
—若揄人的iLevel不合法则退出程序
IFt_LevelNOTIN('FORTABLE','FORCOLUMS','FORALLCOLUMS,,
,FORALLINDEXEDCOLUMNS;FORALLINDEXES,)
THEN
DBMS_OUTPUT.PUTJINE('输入的第二参数不合法,);
RETURN;
ENDIF;
FORRecIN(SELECTFROMall.tablesWHEREowner=t_0wner)
LOOP
BEGIN
t_AnalyzeStr:=*analyzetable*11Rec.table_nanie|\'computestatistics'||
t_Level;
EXECUTEIMMEDIATEt.AnalyzeStr;
EXCEPTIONWHENOTHERSTHEN
ROLLBACK;
RAISE;
END;
ENDLOOP;
END:
2.7.2.3.6.2.存储函数
语法:
create[orreplace]function函数名(参数1*参数2)RETURN类型ISI
AS
[局部变量说明]
BEGIN
执行语句;
END;
CREATEORREPLACEFUNCTION
utl_analyze_prg(iOnwerINVARCI1AR2DEFAULTNULL,
/*该参数为需要统计的用户,缺省则为全部*/
iEstimatePercentINNUMBERDEFAULT100
/*该参数为需要估算统计的百分比*/
)
RETURNINTEGER
IS
/*该程序用来估算统计*/
/*注意:该程序应在8i及以上版本中运行*/
tOwnerVARCHAR2(30);一存储输入的用户名
t_PerNUMBERO);--存储拘人的估第统计的百分比参数
tTa1eNameVARCHAR2C30);一存储选取的表名
t_.\nalyzcStrVAECHAR2C300);一存储形成的分析语句
BEGIN
t_(hner:=UPPER(TRIM(iOw
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旋风除尘器课程设计致谢
- 杠杆一夹具设计课程设计
- 2024年树林资源开发与购买合作协议3篇
- 地火转移课程设计
- 2024年润滑油绿色包装与环保认证合作合同3篇
- 2024年停薪留职合同中的特殊工种保护与职业健康措施3篇
- 2024年福建省标准汽车租赁服务协议版B版
- 2024年版:艺人经纪合同
- 2024天津特色小镇建设项目土地承包租赁合同3篇
- 2024年海外房地产购置与租赁合同
- 旧厂房改造调研分析报告
- 职业规划样本
- 汉语拼音书写纸(打印版).
- NJRD系列软起动器出厂参数设置表
- 食堂食品定点采购询价记录表
- 黑龙江医药公司目录
- 2021-2022无锡市六年级数学上册期末试卷真题
- 销售合同风险与防范培训(共40页).ppt
- 情景剧《皇帝选妃》
- 2020年领导干部个人有关事项报告表
- 一年级童谣诵读计划
评论
0/150
提交评论