oracle操作手册

上传人:仙*** 文档编号:89720004 上传时间:2022-05-13 格式:DOC 页数:53 大小:313.50KB
收藏 版权申诉 举报 下载
oracle操作手册_第1页
第1页 / 共53页
oracle操作手册_第2页
第2页 / 共53页
oracle操作手册_第3页
第3页 / 共53页
资源描述:

《oracle操作手册》由会员分享,可在线阅读,更多相关《oracle操作手册(53页珍藏版)》请在装配图网上搜索。

1、-DOC.NO. TIMESON-SM-2002-11-0001ANormal(公开)本地电信业务计费帐务系统ORACLE操作手册2002.11.05TIMESON*天辰科技*2000,2001,2002All Rights Reserved前言31.数据库的创立41.1.以下为ORACLE启动初始文件initora.ora41.2.以下是建库脚本52.数据库根本操作92.1.数据库的正常启动92.2.安装启动与非安装启动102.3.独占和共享启动102.4.约束启动102.5.强制启动112.6.数据库关闭11根本程序的编写11语言简介12简介163.解决RDBMS问题223.1.性能优化2

2、23.1.1.优化内存233.1.2.优化输入/输出253.1.3.优化排序273.1.4.优化索引建立273.2.备份和恢复273.2.1.备份提示283.3.Oracle 8 Server诊断特性29跟踪文件303.3.2.设置跟踪事件313.3.3.V$监视视图343.3.4.锁实用程序36错误分析和解决方案373.4.1.常见Oracle错误37内部错误453.4.3.优先权1/优先权2问题分类和诊断操作463.5.常见问题48前 言为了加强计费系统数据库的操作平安及更有效的管理计费系统数据库,编写该操作手册。在该手册假设有错误及遗漏的地方还望各位读者不吝指出与谅解。1. 数据库的创立

3、以下仅为数据库创立的样例脚本,在实际系统中应根据数据库设计要与系统实际配置而改变参数:1.1. 以下为ORACLE启动初始文件initora.ora*this sampale init file writen by wzy 2002/11/15 db_name = jfinstance_name = ora8*service_names = ora*db_files = 1024control_files = (/home/oracle/OraCtl/control01.ctl, /home/oracle/OraCtl/control02.ctl, /home/oracle/OraCtl/co

4、ntrol03.ctl)open_cursors = 100ma*_enabled_roles = 50db_file_multiblock_read_count = 8db_block_buffers = 4096shared_pool_size = 52428800large_pool_size = 78643200java_pool_size = 20971520log_checkpoint_interval = 10000log_checkpoint_timeout = 1800processes = 115parallel_ma*_servers = 5log_buffer = 32

5、768ma*_dump_file_size = 10240global_names = true*oracle_trace_collection_name = db_block_size = 16384*remote_login_passwordfile = e*clusive*os_authent_prefi* = job_queue_processes = 4job_queue_interval = 60open_links = 10*large_pool_size = 614400java_pool_size = 20971520distributed_transactions = 10

6、mts_dispatchers = (PROTOCOL=TCP)(PRE=oracle.aurora.server.SGiopServer)mts_dispatchers = (protocol=TCP)sort_area_size = 65536sort_area_retained_size = 65536* log_archive_start = true1.2. 以下是建库脚本*!/bin/shORACLE_SID=ora8e*port ORACLE_SIDsvrmgrlconnect internalstartup nomount pfile = $ORACLE_HOME/dbs/in

7、itora.oraCREATE DATABASE app1 controlfile reuse ma*datafiles 500 ma*instances 8 ma*logfiles 32 character set ZHS16GBK national character set ZHS16GBKDATAFILE /oradata/app1/system01.dbf SIZE 200Mlogfile group 1 (/opt/oracle/oradata/app1/app1_redo01.log, /oradata/app1/app1_redo01.log) SIZE 20M, group

8、2 (/opt/oracle/oradata/app1/app1_redo02.log, /oradata/app1/app1_redo02.log) SIZE 20M, group 3 (/opt/oracle/oradata/app1/app1_redo03.log, /oradata/app1/app1_redo03.log) SIZE 20M;/opt/oracle/product/8.1.7/rdbms/admin/catalog.sql;CREATE ROLLBACK SEGMENT r0 TABLESPACE SYSTEMSTORAGE (INITIAL 128k NE*T 12

9、8k MINE*TENTS 2 MA*E*TENTS 20);ALTER ROLLBACK SEGMENT r0 ONLINE;REM * TABLESPACE FOR OEM_REPOSITORY *CREATE TABLESPACE OEM_REPOSITORY DATAFILE /oradata/app1/oemrep01.dbf SIZE 5M REUSE AUTOE*TEND ON NE*T 25M MA*SIZE 80MMINIMUM E*TENT 128kDEFAULT STORAGE ( INITIAL 128k NE*T 128k MINE*TENTS 1 MA*E*TENT

10、S UNLIMITED PCTINCREASE 0);REM * TABLESPACE FOR ROLLBACK *CREATE TABLESPACE RBS DATAFILE /oradata/app1/rbs01.dbf SIZE 200M REUSE DEFAULT STORAGE ( INITIAL 128k NE*T 128k MINE*TENTS 2 MA*E*TENTS UNLIMITED PCTINCREASE 0);REM * TABLESPACE FOR TEMPORARY *CREATE TABLESPACE TEMP DATAFILE /oradata/app1/tem

11、p01.dbf SIZE 200M REUSE DEFAULT STORAGE ( INITIAL 128k NE*T 128k MINE*TENTS 2 MA*E*TENTS UNLIMITED PCTINCREASE 0) TEMPORARY;REM * TABLESPACE FOR USER *CREATE TABLESPACE USERS DATAFILE /oradata/app1/users01.dbf SIZE 50M REUSE DEFAULT STORAGE ( INITIAL 128k NE*T 128k MINE*TENTS 1 MA*E*TENTS UNLIMITED

12、PCTINCREASE 0);REM * TABLESPACE FOR INDE* *CREATE TABLESPACE IND* DATAFILE /oradata/app1/ind*01.dbf SIZE 50M REUSE DEFAULT STORAGE ( INITIAL 128k NE*T 128k MINE*TENTS 1 MA*E*TENTS UNLIMITED PCTINCREASE 0);REM * Creating four rollback segments *add rollback segment to 20*CREATE ROLLBACK SEGMENT r01 T

13、ABLESPACE RBS STORAGE(INITIAL 128k NE*T 128k MINE*TENTS 2 MA*E*TENTS UNLIMITED optimal 4096K);CREATE ROLLBACK SEGMENT r02 TABLESPACE RBSSTORAGE(INITIAL 128k NE*T 128k MINE*TENTS 2 MA*E*TENTS UNLIMITED optimal 4096K);CREATE ROLLBACK SEGMENT r03 TABLESPACE RBSSTORAGE(INITIAL 128k NE*T 128k MINE*TENTS

14、2 MA*E*TENTS UNLIMITED optimal 4096K);CREATE ROLLBACK SEGMENT r04 TABLESPACE RBSSTORAGE(INITIAL 128k NE*T 128k MINE*TENTS 2 MA*E*TENTS UNLIMITED optimal 4096K);CREATE ROLLBACK SEGMENT r05 TABLESPACE RBSSTORAGE(INITIAL 128k NE*T 128k MINE*TENTS 2 MA*E*TENTS UNLIMITED optimal 4096K);CREATE ROLLBACK SE

15、GMENT r06 TABLESPACE RBSSTORAGE(INITIAL 128k NE*T 128k MINE*TENTS 2 MA*E*TENTS UNLIMITED optimal 4096K);CREATE ROLLBACK SEGMENT r07 TABLESPACE RBSSTORAGE(INITIAL 128k NE*T 128k MINE*TENTS 2 MA*E*TENTS UNLIMITED optimal 4096K);CREATE ROLLBACK SEGMENT r08 TABLESPACE RBSSTORAGE(INITIAL 128k NE*T 128k M

16、INE*TENTS 2 MA*E*TENTS UNLIMITED optimal 4096K);CREATE ROLLBACK SEGMENT r09 TABLESPACE RBSSTORAGE(INITIAL 128k NE*T 128k MINE*TENTS 2 MA*E*TENTS UNLIMITED optimal 4096K);CREATE ROLLBACK SEGMENT r10 TABLESPACE RBSSTORAGE(INITIAL 128k NE*T 128k MINE*TENTS 2 MA*E*TENTS UNLIMITED optimal 4096K);CREATE R

17、OLLBACK SEGMENT r11 TABLESPACE RBSSTORAGE(INITIAL 128k NE*T 128k MINE*TENTS 2 MA*E*TENTS UNLIMITED optimal 4096K);CREATE ROLLBACK SEGMENT r12 TABLESPACE RBSSTORAGE(INITIAL 128k NE*T 128k MINE*TENTS 2 MA*E*TENTS UNLIMITED optimal 4096K);CREATE ROLLBACK SEGMENT r13 TABLESPACE RBSSTORAGE(INITIAL 128k N

18、E*T 128k MINE*TENTS 2 MA*E*TENTS UNLIMITED optimal 4096K);CREATE ROLLBACK SEGMENT r14 TABLESPACE RBSSTORAGE(INITIAL 128k NE*T 128k MINE*TENTS 2 MA*E*TENTS UNLIMITED optimal 4096K);CREATE ROLLBACK SEGMENT r15 TABLESPACE RBSSTORAGE(INITIAL 128k NE*T 128k MINE*TENTS 2 MA*E*TENTS UNLIMITED optimal 4096K

19、);CREATE ROLLBACK SEGMENT r16 TABLESPACE RBSSTORAGE(INITIAL 128k NE*T 128k MINE*TENTS 2 MA*E*TENTS UNLIMITED optimal 4096K);CREATE ROLLBACK SEGMENT r17 TABLESPACE RBSSTORAGE(INITIAL 128k NE*T 128k MINE*TENTS 2 MA*E*TENTS UNLIMITED optimal 4096K);CREATE ROLLBACK SEGMENT r18 TABLESPACE RBSSTORAGE(INIT

20、IAL 128k NE*T 128k MINE*TENTS 2 MA*E*TENTS UNLIMITED optimal 4096K);CREATE ROLLBACK SEGMENT r19 TABLESPACE RBSSTORAGE(INITIAL 128k NE*T 128k MINE*TENTS 2 MA*E*TENTS UNLIMITED optimal 4096K);CREATE ROLLBACK SEGMENT r20 TABLESPACE RBSSTORAGE(INITIAL 128k NE*T 128k MINE*TENTS 2 MA*E*TENTS UNLIMITED opt

21、imal 4096K);ALTER ROLLBACK SEGMENT r01 ONLINE;ALTER ROLLBACK SEGMENT r02 ONLINE;ALTER ROLLBACK SEGMENT r03 ONLINE;ALTER ROLLBACK SEGMENT r04 ONLINE;ALTER ROLLBACK SEGMENT r05 ONLINE;ALTER ROLLBACK SEGMENT r06 ONLINE;ALTER ROLLBACK SEGMENT r07 ONLINE;ALTER ROLLBACK SEGMENT r08 ONLINE;ALTER ROLLBACK S

22、EGMENT r09 ONLINE;ALTER ROLLBACK SEGMENT r10 ONLINE;ALTER ROLLBACK SEGMENT r11 ONLINE;ALTER ROLLBACK SEGMENT r12 ONLINE;ALTER ROLLBACK SEGMENT r13 ONLINE;ALTER ROLLBACK SEGMENT r14 ONLINE;ALTER ROLLBACK SEGMENT r15 ONLINE;ALTER ROLLBACK SEGMENT r16 ONLINE;ALTER ROLLBACK SEGMENT r17 ONLINE;ALTER ROLL

23、BACK SEGMENT r18 ONLINE;ALTER ROLLBACK SEGMENT r19 ONLINE;ALTER ROLLBACK SEGMENT r20 ONLINE;ALTER ROLLBACK SEGMENT r0 OFFLINE;REM * SYS and SYSTEM users *alter user sys temporary tablespace TEMP;alter user system temporary tablespace TEMP;/opt/oracle/product/8.1.7/rdbms/admin/catproc.sql;/opt/oracle

24、/product/8.1.7/rdbms/admin/caths.sql;/opt/oracle/product/8.1.7/rdbms/admin/otrcsvr.sql;/opt/oracle/product/8.1.7/rdbms/admin/cate*p.sql;/opt/oracle/product/8.1.7/rdbms/admin/catdbsyn.sql; /opt/oracle/product/8.1.7/rdbms/admin/catdefer.sql;/opt/oracle/product/8.1.7/rdbms/admin/catrep.sql;/opt/oracle/

25、product/8.1.7/rdbms/admin/dbmspool.sql; /opt/oracle/product/8.1.7/rdbms/admin/catparr.sql; /opt/oracle/product/8.1.7/rdbms/admin/catblock.sql; connect system/manager/opt/oracle/product/8.1.7/sqlplus/admin/pupbld.sql;-create the product_profile and user_profile -CATALOG.SQL, -加载数据库本身的数据字典视图-CATPROC.S

26、QL, -加载PL/SQL使用的PACKAGE-CATE*P.SQL -加载E*PORT/IMPORT工具使用的数据字典disconnectspool offe*it在数据库建立完后,可用以下语句也可以在建库脚本中直接增加对对tablespace增加数据文件:ALTERTABLESPACE tablespace_name ADD DATAFILE data_file_path/data_file_name SIZE 2. 数据库根本操作2.1. 数据库的正常启动正常启动数据库的选项是normal,这也是数据启动的缺省选项。如果以这种方式启动则将翻开一个现场现场:现场为一逻辑概念,是系统为数据库

27、翻开提供的一系列的必需资源,并把数据库装入,然后翻开数据库供用户使用。具体操作如下:1 先进入SVRMGR管理器$svrmgrlSVRMGR2 再联入inernal用户$connect internal3 在用startup命令启动假设不在启动文件所在目录进入的SVRMGR或启动文件名不是ORACLE缺省的文件名,则启动时应带启动目录与文件名SVRMGRstartup pfile=2.2. 安装启动与非安装启动安装启动的选项是mount,表示只将数据库装入现场而不翻开数据库;非安装启动的选项是nomount,表示只建立数据库现场而不装入数据库,当然也不翻开数据库。1 安装启动SVRMGRsta

28、rtup pfile= mount该方式启动数据库的的用途一般为: 为数据文件更名; 增加、删除或改名事物日志文件; 使事物日志归档模式选项有效或失效; 进展完整数据库的恢复操作2 非安装启动SVRMGR startup pfile= nomount该方式启动数据库的用途一般为: 创立一新的数据库2.3. 独占和共享启动独占启动选项是e*clusive,表示只允许一个例程使用该数据库;共享启动的参数是shared,表示允许多个例程并行使用该数据库,即将数据库装入多个现场。1 共享启动SVRMGRstartup pfile= e*clusive2 独占启动SVRMGR startup pfile

29、= shared2.4. 约束启动这种方式的选项是restrict,它启动数据库时装入并翻开它,但此时的数据库只能为有特殊权限的数据库管理员使用,一般用户不能联入数据库。1 约束启动SVRMGR startup pfile= restrict一般来说当用户有create session权限十可联入数据库,但对于restrict方式启动的数据库只有restricted session系统权限用户才允许联入。假设在restrict方式下改变数据库运行方式,则可用alter system命令,如下:SVRMGRalter system disable restricted session;2.5.

30、强制启动在一些非正常情况下有可能在正常方式下启动数据库遇到麻烦,或在上次因不能正常关闭数据库如:用了参数abort而导致不能正常启动数据库,则可考虑使用强制启动数据库,其参数为:force.1 强制启动SVRMGR startup pfile= force;此时,除非数据库有重大系统错误,一般情况下数据库可以起来。在应注意的是用此方式启动的数据库会上次非正常关闭数据导致的非正常数据丢掉,数据库启动后应及时的查看数据库的日志文件。2.6. 数据库关闭1 正常关闭SVRMGRshutdown normal;这种方式下关闭数据库在关闭前检查所有的连接,并且发出命令后不允许再有新的连接,在等所有用户断

31、开连接后关闭数据库。在此方式下关闭的数据库下次启动时不需要任何恢复过程。2 立即关闭SVRMGRshutdown immediate;这种方式下关闭数据库并不等待用户断开连接,而是由系统断开与用户的连接,然后关闭数据库。3 异常关闭SVRMGRshutdown abort;这种方式下关闭数据库系统不做任何的检查与回退操作而直接将数据库现场撤消。 2.7. PL/SQL根本程序的编写ORACLE提供功能了功能强大的第三代编程语言PL/SQL。在本小节主要介绍根本的存储过程、存储函数及触发器的编写。2.7.1. SQL语言简介2.7.1.1. SQL概述SQL是一种面向数据库的通用数据处理语言规*

32、,能完成以下几类功能:提取查询数据,插入修改删除数据,生成修改和删除数据库对象,数据库平安控制,数据库完整性及数据保护控制。数据库对象包括表、视图、索引、同义词、簇、触发器、函数、过程、包、数据库链、快照等表空间、回滚段、角色、用户。数据库通过对表的操作来管理存储在其中的数据。2.7.1.1.1. SQL*PLUS界面登录:输入SQLPLUS回车;输入正确的ORACLE用户名并回车;输入用户口令并回车,显示提示符:SQL退出:输入E*IT即可。2.7.1.1.2. 命令的编辑与运行 在命令提示符后输入SQL命令并运行,以分号完毕输入;以斜杠完毕输入;以空行完毕输入; 利用SQL缓冲区进展PL/

33、SQL块的编辑和运行; 利用命令文件进展PL/SQL块的编辑和运行。2.7.1.2. 数据库查询2.7.1.2.1. 用SELECT语句从表中提取查询数据SELECT 的语法为:SELECT DISTINCT column1,column2, FROM tablename WHERE conditions GROUP BY conditions ORDER BY e*pressions ASC/DESC;说明:SELECT子句用于指定检索数据库的中哪些列,FROM子句用于指定从哪一个表或视图中检索数据。2.7.1.2.2. SELECT中的操作符及多表查询WHERE子句WHERE子句中的条件可

34、以是一个包含等号或不等号的条件表达式,也可以是一个含有IN、NOT IN、BETWEEN、LIKE、IS NOT NULL等比较运算符的条件式,还可以是由单一的条件表达通过逻辑运算符组合成复合条件。2.7.1.2.3. ORDER BY 子句ORDER BY 子句使得SQL在显示查询结果时将各返回行按顺序排列,返回行的排列顺序由ORDER BY 子句指定的表达式的值确定。2.7.1.2.4. 连接查询利用SELECT语句进展数据库查询时,可以把多个表、视图的数据结合起来,使得查询结果的每一行中包含来自多个表达式或视图的数据,这种操作被称为连接查询。连接查询的方法是在SELECT命令的FROM子

35、句中指定两个或多个将被连接查询的表或视图,并且在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字节。 LONG RAW 变长二进制数据

36、,最长为2G字节。 ROWID 二六进制串,表示表的行的唯一地址。 CHAR 定长字符数据,最长为255。2.7.1.4. 常用函数一个函数类似于一个算符,它操作数据项,返回一个结果。函数在格式上不同于算符,它个具有变元,可操作0个、一个、二个或多个变元,形式为:函数名变元,变元,函数具有以下一般类形: 单行函数 分组函数1 单行函数对查询的表或视图的每一行返回一个结果行。它有数值函数,字符函数,日期函数,转换函数等。2 分组函数返回的结果是基于行组而不是单行,所以分组函数不同于单行函数。在许多分组函数中可有以下选项: DISTRNCT 该选项使分组函数只考虑变元表达式中的不同值。 ALL该选

37、项使分组函数考虑全部值,包含全部重复。全局部组函数除COUNT*外忽略空值。如果具有分组函数的查询,没有返回行或只有空值分组函数的变元取值的行,则分组函数返回空值。2.7.1.5. 数据操纵语言命令数据库操纵语言DML命令用于查询和操纵模式对象中的数据,它不隐式地提交当前事务。它包含UPDATE、INSERT、DELETE、E*PLAIN PLAN、SELECT和LOCK TABLE 等命令。下面简单介绍一下:1)UPDATE tablename SET column1=e*pression1,column2=e*pression2, WHERE conditions;例如:SQL updat

38、e serv set state=F0K where serv_id=123456 and serv_seq_nbr=1;UPDATE子句指明了要修改的数据库是EMP,并用WHERE子句限制了只对名字(ENAME)为MARTIN的职工的数据进展修改,SET子句则说明修改的方式,即把MARTION的工作名称(JOB)改为MARAGER.2)INSERT INTO tablename column1,column2, VALUES e*pression1,e*pression2,;例如:SQL insert into bill.serv select * from trans.serv_bak;3

39、)DELETE FROM tablename WHERE conditions;例如:SQL delete from acct_item_area01 where acct_id=123245 and account_date=200110 and acct_item_type_id = 11001;DELETE命令删除一条记录,而且DELETE命令只能删除整行,而不能删除*行中的局部数据.4)事务控制语句提交命令(MIT):可以使数据库的修改永久化.设置AUTOMIT为允许状态:SQL SET AUTOMIT ON;回滚命令(ROLLBACK):消除上一个MIT命令后的所做的全部修改,使得数

40、据库的内容恢复到上一个MIT执行后的状态.使用方法是:2.7.1.6. 创立表、视图、索引、同义词、用户2.7.1.6.1. 表建立表主要指定义以下信息: 列定义 完整性约束 表所在表空间 存储特性 可选择的聚集 从一查询获得数据语法如下:CREATE TABLE tablename(column1 datatype DEFAULT e*pression constraint, column1 datatype DEFAULT e*pression constraint,)STORAGE子句 其他子句;例如:SQL create table serv (serv_id number(10),s

41、erv_seq_nbr number(3)2 tablespace data_bill3 storage (initial 10m ne*t 5m);2.7.1.6.2. 视图视图是一个逻辑表,它允许操作者从其它表或视图存取数据,视图本身不包含数据。视图所基于的表称为基表。引入视图有以下作用: 提供附加的表平安级,限制存取基表的行或/和列集合。 隐藏数据复杂性。 为数据提供另一种观点。 促使ORACLE的*些操作在包含视图的数据库上执行,而不在另一个数据库上执行。2.7.1.6.3. 索引索引是种数据库对象。对于在表或聚集的索引列上的每一值将包含一项,为行提供直接的快速存取。在以下情况ORAC

42、LE可利用索引改进性能: 按指定的索引列的值查找行。 按索引列的顺序存取表。语法:create inde* on storage语句 其它语句;例如:SQL create inde* id*_serv_01 on serv(srev_id,serv_seq_nbr)2 tablespace data_bill_id*3 storage (initial 5m ne*t 5m);2.7.1.6.4. 同义词同义词:为表、视图、序列、存储函数、包、快照或其它同义词的另一个名字。使用同义词为了平安和方便。对一对象建立同义词可有以下好处: 引用对象不需指出对象的持有者。 引用对象不需指出它所位于的数据

43、库。 为对象提供另一个名字。 语法: craete synonym for user_name.; 例如:假定在CALL用户下 SQL create synonym serv for bill.serv; 注意:在同义词建立后要授权2.7.1.6.5. 用户语法:CREATE USER username IDENTIFIED BY password;例如:SQL create user bill identified by jf*t;2.7.2. PL/SQL简介2.7.2.1. PL/SQL概述PL/SQL是Oracle对SQL规*的扩展,是一种块构造语言,即构成一个PL/SQL程序的根本单

44、位过程、函数和无名块是逻辑块,可包含任何数目的嵌套了快。这种程序构造支持逐步求精方法解决问题。一个块或子块将逻辑上相关的说明和语句组合在一起,其形式为:DECLARE-说明BEGIN-语句序列E*CEPTION-例外处理END;它有以下优点: 支持SQL; 生产率高; 性能好; 可称植性; 与ORACLE集成.2.7.2.2. PL/SQL体系构造PL/SQL运行系统是种技术,不是一种独立产品,可认为这种技术是PL/SQL块和子程序的一种机,它可接收任何有效的PL/SQL块或子程序。如下列图: PL/SQL机 PL/SQL块过程性语句执行器PL/SQL块SQL语句PL/SQL机可执行过程性语句

45、,而将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,POSITIVENUMBERDEC,DECIMAL,DOUBLE PRECISION,PLOAT,INTEGER,I

46、NT,NUMERIC,REAL,SMALLINT字符CHARCHARACTER,STRINGVARCHAR2VARCHARLONGLONG RAWRAWRAWID逻辑BOOLEAN日期DATE组合类型记录RECORD表TABLE2.7.2.3.2. 变量和常量在PL/SQL程序中可将值存储在变量和常量中,当程序执行时,变量的值可以改变,而常量的值不能改变。2.7.2.3.3. 程序块式构造DECLARE-变量说明局部BEGINEND;2.7.2.3.4. 控制语句分支语句:IF condition THENsequence_statements;END IF;IF condition1 THE

47、NSequence_statements1;ELSESequence_statements2;END IF;IF condition1 THENSequence_statements1;ELSIF condition2 THENSequence_statements2;ELSESequence_statements(n+1);END IF;2.7.2.3.5. 循环语句LOOPStatements;IF condition THENE*IT;END IF;END LOOP;WHILE condition LOOPStatements;END LOOP;FOR counter IN lower_

48、con.high_con|(data-cube) LOOPStatements;END LOOP;2.7.2.3.6. 子程序2.7.2.3.6.1. 存储过程语法:create or replace procedure 函数名(参数1,参数2) IS | AS局部变量说明BEGIN执行语句;END;例:以下为一简单的样例存储过程:CREATE OR REPLACE PROCEDURE utl_analyze_prg(iOnwer IN VARCHAR2 DEFAULT NULL,/*该参数为需要统计的用户,缺省则为全部*/ iLevel IN VARCHAR2 DEFAULT NULL /*

49、参数iLevel为统计,其值为:1.for table2.for colums3.for all columNs4.for all inde*ed columns5.for all inde*es*/) IS/*该程序用来计算统计*/ /*注意:该程序应在8i及以上版本中运行*/tOwnerVARCHAR2(30); -存储 输入的用户名t_LevelVARCHAR2(30); -存储输入的统计参数t_TaleNameVARCHAR2(30); -存储选取的表名t_AnalyzeStrVARCHAR2(300);-存储形成的分析语句BEGINt_Owner:= UPPER(TRIM(iOwer

50、);t_Level := UPPER(LTRIM(RTRIM(iLevel);-假设输入的用户名为空时则退出程序IF t_Owner IS NULL THENDBMS_OUTPUT.PUT_LINE(请输入要用户名);RETURN;END IF;-假设输入的iLevel不合法则退出程序IF t_Level NOT IN (FOR TABLE,FOR COLUMS,FOR ALL COLUMS, FOR ALL INDE*ED COLUMNS,FOR ALL INDE*ES)THENDBMS_OUTPUT.PUT_LINE(输入的第二参数不合法);RETURN;END IF;FOR Rec IN

51、 (SELECT table_name FROM all_tables WHERE owner=t_Owner)LOOPBEGINt_AnalyzeStr := analyze table |Rec.table_name| pute statistics |t_Level;E*ECUTE IMMEDIATE t_AnalyzeStr;E*CEPTION WHEN OTHERS THENROLLBACK;RAISE;END;END LOOP;END;2.7.2.3.6.2. 存储函数语法:create or replace function 函数名(参数1,参数2) RETURN 类型 IS |

52、 AS局部变量说明BEGIN执行语句;END;例:CREATE OR REPLACE FUNCTION utl_analyze_prg(iOnwer IN VARCHAR2 DEFAULT NULL,/*该参数为需要统计的用户,缺省则为全部*/ iEstimatePercent IN NUMBER DEFAULT 100/*该参数为需要估算统计的百分比*/) RETURN INTEGERIS/*该程序用来估算统计*/ /*注意:该程序应在8i及以上版本中运行*/tOwnerVARCHAR2(30); -存储 输入的用户名t_PerNUMBER(3); -存储输入的估算统计的百分比参数t_Tal

53、eNameVARCHAR2(30); -存储选取的表名t_AnalyzeStrVARCHAR2(300);-存储形成的分析语句BEGINt_Owner:= UPPER(TRIM(iOwer);-t_Per := UPPER(LTRIM(RTRIM(iLevel);-假设输入的用户名为空时则退出程序IF t_Owner IS NULL THENDBMS_OUTPUT.PUT_LINE(请输入要用户名);RETURN -1;END IF;- 假设输入的估算统计百分比参数不正确则退出IF t_Per NOT BETWEEN 1 AND 100 THENDBMS_OUTPUT.PUT_LINE(输入的

54、估算统计百分比参数不正确);RETURN -2;END IF;FOR Rec IN (SELECT table_name FROM all_tables WHERE owner=t_Owner)LOOPBEGINt_AnalyzeStr := analyze table |Rec.table_name| estimate statistics |sample |to_char(t_Per)| percent ;E*ECUTE IMMEDIATE t_AnalyzeStr;E*CEPTION WHEN OTHERS THENROLLBACK;RETURN -3;END;END LOOP; RET

55、URN 0END;2.7.2.3.6.3. 触发器语法:create or replace trigger 触发器名参数1,参数2 after|before update|delete|insert on 表名 for each rowbegin语句序列;end;例:以下为一简单的触发器程序。写触发器需要注意的是:在触发器中不能有MIT或ROLLBACK等事务操作语句。CREATE OR REPLACE TRIGGER tr_servAFTER UPDATE OR DELETE OR INSERT ON serv FOR EACH ROWBEGINIF UPDATING(STATE) THEN

56、INSERT INTO serv_history(serv_id,serv_seq_nbr,state,state_date)VALUES (:OLD.serv_id,:OLD.serv_seq_nbr,:OLD.state_date);END IF;IF deleting THENINSERT INTO serv_history(serv_id,serv_seq_nbr,state_date,fi*ed_address, serv_type_id,billing_type_id,state,cust_id)VALUES (:OLD.serv_id,:OLD.serv_seq_nbr,:OLD

57、.state_date,:OLD.fi*ed_address,:OLD.serv_type_id,:OLD.billing_type_id,:OLD.state,:OLD.cusr_id);END IF;IF ISNERTING THENINSERT INTO serv_history(serv_id,serv_seq_nbr,state_date,fi*ed_address, serv_type_id,billing_type_id,state,cust_id)VALUES (:NEW.serv_id,:NEW.serv_seq_nbr,:NEW.state_date,:NEW.fi*ed_

58、address, :NEW.serv_type_id,:NEW.billing_type_id,:NEW.state,:NEW.cusr_id);END IF;END;3. 解决RDBMS问题Oracle 8 Server是O r a c l e软件中商业事务解决方案的核心。本章讲解Oracle 8性能优化和诊断特性的技术和技巧,重点讨论O r a c l e错误解决方案,包括内部错误,最后一节FA Q,是从O S S接收的实时支持中汇编出来的。3.1. 性能优化Oracle RDBMS优化是一项要反复进展的工作,要消耗大量的时间和财力。下面介绍的是一些根本的优化提示和技术这对一般的D B A会很有帮助。尽管优化既昂贵又费时,应用程序在设

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!