第1页第一章Oracle基本知识与SQL*PLUS环境一.上机目的1.熟悉Oracle的基本知识。2.熟悉Oracle的命令操作环境SQL*PLUS。3.熟悉并掌握一些SQL*PLUS命令。二.预备知识1.Oracle数据库管理系统的简介1979年,硅谷的一个小公司推出了Oracle,这是第一个与数据访问语言SQL结合的关系数据库。今天,Oracle公司已是世界上数据库管理系统及相关产品的最大供应商。发布于1985年的Oracle第5版,是第一个真正的客户/服务器数据库系统。Oracle8以及Oracle8i是Oracle公司的最新产品。2.Oracle8服务器Oracle8服务器是一个精致的信息管理环境。它是一个大量数据的储藏所,并给用户提供对这些数据的快速访问。Oracle8服务器允许应用系统之间共享数据。信息存放在一个地方并由许多应用系统来使用。Oracle8服务器可运行在Sun系列以及WindowsNT上。Oracle8服务器运行在很多不同的计算机上,支持下列配置:基于主机的配置用户直接连到存放数据库的同一计算机上。客户机/服务器结构用户通过网络从他们的个人计算机(客户机)上访问数据库,数据库驻留在一个分离的计算机(服务器)上。分布式处理用户访问存放在不止一台计算机上的数据库。数据库分散在不止一台机器上,用户并不需要了解他们存放的数据的实际存放位置。Web计算能从基于Internet的应用程序访问数据。3.PersonalOracle从1995年处开始,Oracle推出了在Dos和MicrosoftWindows环境下的个人计算机产品。运行PersonalOracle需要如下的配置:386以上的中央处理单元(CPU),推荐486或奔腾。最小60MB磁盘空间。处理器速度不低于40MHZ,66MHZ以上更好。最少16MB的扩充内存。MicrosoftWindows95或者NT.本书主要以PersonalOracle为主进行说明。第2页4.Oracle产品5.SQL,SQL*Plus和PL/SQLSQL是一种能够访问关系数据库(包括Oracle数据库)的语言。它能够用在每一个Oracle工具中。SQL*Plus是一个SQL和PL/SQL都能用的Oracle产品,并且也有自己的命令语言。PL/SQL是为了编写应用程序和操作数据的Oracle过程化语言,包含着SQL命令的子集,它适用于每个CDE产品。6.Oracle数据库系统的体系结构Oracle数据库系统是具有管理Oracle数据库功能的计算机软件系统。每一个运行的Oracle数据库与一个Oracle实例(instance)相联系。一个Oracle实例是存取和控制一数据库的软件机制。每一次在数据库服务器上启动一数据库时,称为系统全局区(systemglobalarea)的一内存区(简称SGA)被分配,有一个或多个Oracle进程被起动。该SGA和Oracle进程的结合称为一个Oracle数据库实例。一个实例的SGA和进程为管理数据库数据、为该数据库一个或多个用户服务而工作。在Oracle系统中,首先是实例启动,然后由实例装配(mount)一个数据库。1)进程结构进程(process)是操作系统中的一种机制,它可执行一系列的操作步骤。在有些操作系统中使用作业(JOB)或任务(TASK)的术语。一个进程通常有它自己的专用存储区。Oracle进程的体系结构设计使性能最大。Oracle实例有两种类:单进程实例和多进程实例。CDE工具OracleReportsOracleGraphicsOracleFormsOracleBookOracleServerSQL和PL/SQLOracleCardOracleCaseSQL*PLUSPro*OracleTextRetrieval其它产品图1-1Oracle产品第3页单进程Oracle(又称单用户Oracle)是一个数据库系统,一个进程执行全部Oracle代码。由于Oracle部分和客户应用程序不能分别以进程执行,所以Oracle的代码和用户数据库应用是单个进程执行,其结构如图1-2所示。在单进程环境下的Oracle实例,仅允许一个用户存取。例如在MS-DOS上运行Oracle。多进程Oracle实例(又称多用户Oracle)使用多个进程来执行Oracle的不同部分,对于每一个连接的用户都有一个进程,如图1-3所示。在多进程系统中,进程分为两类:用户进程和Oracle进程。当一用户运行一应用程序,如Pro*c程序或一个Oracle工具(如SQL*Plus),为用户运行的应用建立一个用户进程。Oracle进程又分为两类:服务器进程(serverprocess)和后台进程(backgroundprocess),服务器进程用于处理连接到该实例的用户进程的请求。当应用和Oracle是在同一台机器上运行,而不再通过网络,一般将用户进程和它相应的服务器进程组合成单个进程,可降低系统开销。然而,当应用和Oracle运行在不同的机器上时,用户进程经一个分离服务器进程Oracle通信。它执行下列任务:对应用所发出的SQL语句进行语法分析和执行。从磁盘(数据文件中)读入必要的数据块到SGA的共享数据库缓冲区(该块不在缓冲区时)。将结果返回给应用程序处理。系统为了使性能最好和协调多个用户,在多进程系统中使用一些附加进程,称为后台进程。在许多操作系统中,后台进程是在实例启动时自动地建立。一个Oracle实例可以有许多后台进程,但它们不是一直存在。后台进程的名字为:DBWR数据库写入程序LGWR日志写入程序CKPT检查点SMON系统监控PMON进程监控SGAOracleServer数据库应用图1-2单进程Oracle实例用户进程用户进程用户进程用户进程SGARECOPMONSMONDBWRLGWRARCH…图1-3多进程Oracle实例第4页ARCH归档RECO恢复LCKn封锁Dnnn调度进程Snnn服务器2)内存结构Oracle在内存存储下列信息:执行的程序代码。连接的会话信息(包括当前不活动的)。程序执行期间所需要数据(如查询的当前状态)。Oracle进程间通信和共享的信息(如封锁信息)。存储在外存储上的缓冲信息。Oracle具有下列基本的内存结构:软件代码区系统全局区(SGA),包括数据库缓冲存储区、日志缓冲区和共享池程序全局区(PGA),包括栈区和数据区。排序区(sortarea)。7.SQL*Plus命令SQL*Plus有许多命令,表1-1只是列举了一部分常用的供读者参考。表1-1常用SQL*Plus命令SQL*Plus命令缩写意义APPENDtextAtext把字符串增加到当前行的末尾CHANGE/old/new/C/old/new/把当前行的旧字符串替换成新字符串CHANGE/text/C/text/把当前行中字符串删除CLEARBUFFERCLBUFF从SQL缓冲区中删除所有行DEL删除当前行INPUTI插入许多行INPUTtextItext插入一个包含text字符串的行LISTL显示SQL缓冲区的所有行LISTnLn显示SQL缓冲区中的一行到n行LISTmnLmnSQL缓冲区中的从第m行显示到第n行RUNR显示并运行在缓冲区中的当前SQL命令SAVEfilename把SQL缓冲区中的内容保存到以filename为名字的文件中,默认路径为orawin\binGETfilename把以filename为名字的文件内容调入SQL缓冲区中STARTfilename@filename运行以前保存的命令文件EDfilename用默认的编辑器编辑保存的文件内容EXIT退出SQL*PlusRUNFORMfilename从SQL*Plus中运行一个OracleForms应用程序SPOOLfilename写所有的后面的命令或者输出到一个已经命名的文件中。假脱机输入输出文件的后缀为.LISSPO[OL]OFF|OUTOFF关闭假脱机输入输出文件;OUT改变假脱机输入输出,送文件到打印机上第5页DESCRIBEtablenameDESCtablename显示任何数据库表的数据结构HELP击活Oracle内部的帮助部件HOSTcommand在SQL*Plus中击活一个操作系统命令CONNECTuserid/passwordCONNuserid/password在当前的登录下,击活其它的Oracle用户PROMPTtext当运行一个命令文件时,显示文本三.上机内容1.SQL*Plus的启动当读者登录到操作系统后,你有三种方法启动SQL*Plus。1)SQLPLUS读者将看到如下的信息:SQL*Plus:Version3.1.1ProductiononMonOct41993Copyright(C)1992,OracleCorporation,California,USA.Allrightsreserved.EnterUsername:输入你的用户名字并按回车。SQL*Plus将提示:EnterPassword:输入你的密码并按回车。那么,读者将看到SQL*Plus的提示符:SQL例如:SQLPLUSSQL*Plus:Version3.1.1ProductiononMonOct41993Copyright(C)1992,OracleCorporation,California,USA.Allrightsreserved.EnterUsername:scottEnterPassword:tigerSQL2)SQLPLUSUsername再提示你输入密码。例如:SQLPLUSscottEnterPassword:tigerSQL*Plus:Version3.1.1ProductiononMonOct41993Copyright(C)1992,OracleCorporation,California,USA.Allrightsreserved.SQL3)SQLPLUSusername/password例如:SQLPLUSscott/tigerSQL*Plus:Version3.1.1ProductiononMonOct41993第6页Copyright(C)1992,OracleCorporation,California,USA.Allrightsreserved.SQL4)退出SQL*PlusSQLEXITSQL*Plus显示Oracle版本之后显示操作系统提示符。2.SQL命令SQL命令包括数据定义语言(如Create、Alter等)和数据操作语言(SelectInsertUpdateDelete等),这些都可在SQL*Plus中使用。如:SQLSELECTEMPNO,ENAME,JOB,SAL2FROMEMPWHERESAL2500;3.SQL*Plus命令1)列出缓冲区的内容:SQLLISTSQL*Plus显示当前缓冲区中的命令:1SELECTEMPNO,ENAME,JOB,SAL2FROMEMPWHERESAL2500;2)编辑当前行如果上面的例子错误的输入为:SQLSELECTEPNO,ENAME,JOB,SAL2FROMEMPWHERESAL2500;在屏幕上显示:SELECTEPNO,ENAME,JOB,SAL*ERRORatline1:ORA-0904:invalidcolumnname分析错误可以发现EMPNO错为EPNO。则用CHANGE命令修改编辑当前行。如:SQLCHANE/EPNO/EMPNO修改的行在屏幕上显示:1*SELECTEMPNO,ENAME,JOB,SAL再用RUN命令运行当前命令。SQLRUNSQL*PLUS列出其命令然后运行它。1SELECTEMPNO,ENAME,JOB,SAL2FROMEMPWHERESAL2500;3)增加一行在当前行之后插入一新行,使用INPUT命令。例如对上面例子增加第3行到该SQL命令中。形式如下:SQL