Oracle数据管理完整培训(整理)_第1页
Oracle数据管理完整培训(整理)_第2页
免费预览已结束,剩余12页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Oracle数据管理系统培训一、简要说明Oracle体系结构相当庞大,包括数据库服务器领域、应用服务器领域和应用开发领域的许多知 识,因此我们在本次培训过程中不可能也没有必要面面俱到,这次培训不想讲太多的理论性知识,仅 从实际应用角度出发,针对我们在实际开发过程中经常遇到的一些技术知识进行边讲解边演示。二、Oracle数据库管理系统简介Oracle是世界上最早的商品化的关系型的数据库管理系统之一,是数据库专业厂商Oracle公司的 核心产品,也是当今关系型数据库产品市场上应用最为广泛、功能强大、具有面向对象特点的数据库 系统。Oracle数据库的推出最早可达到上世纪70年代,从那以后,一直领导

2、着数据库发展的新潮流,融 汇先进的技术并预见性地领域了全球数据库技术的发展。据统计,Oracle在全球数据库市场的占有率 达33.3%,在关系型数据库市场上的拥有42.1%的市场份额,在Unix高端应用领域市场上占据66.2%的份额,现在,包括惠普、波音和通用电气等众多大型跨国企业都利用Oracle电子商务的套件来运行 自己的业务。作为一个通用的数据库管理系统,Oracle具有完整的数据库管理功能,包括存储海量数据、定义 和操纵数据、并发控制、安全性控制、完整性控制、故障恢复、与高级语言接口等功能。Oracle到9i版本后,支持各种分布式处理功能,特别是支持Internet处理,还支持面向对象

3、处理的 功能,支持类、方法和属性、空间数据等概念,使得Oracle产品逐渐成为了一种对象 关系型数据 库管理系统。Oracle发展到10g以后,采用一种叫网格计算的技术。这样用户和服务者都在网络上,对于服务提 供商来说,服务变的更为可靠,负载均衡更为灵活,具有无限的扩展能力。对于用户来说,他只需要 提出他的请求就可以了,无需知道是在哪个网上,哪个服务端在为他提供服务。具体来讲,Oracle 10G的网格计算包涵四个方面的内容:存储网格、数据库网格、应用程序网格和网格控件。三、Oracle体系的组成部分简介Oracle体系结构相当庞大,它是Oracle公司推出的针对电子商务应用的一整套解决方案,

4、整体由 三大体系组成。(一)数据服务器体系(Oracle Database)Oracle9i和10g的数据库服务器从版本上分企业版、标准版和个人版,共有以下18个组件。1.JServer Enterprise Edition企业版支持Java的Web Server2InterMedia互联网媒体服务3.Object Option目标功能4.Networking Kit网络包5Object for OLE6Advanced Replication Option7Distributed Option8Parallel Query Option9Sql*Plus10Workflow Enterpri

5、se Edition11Advanced backup & recovery12Advanced Queuing13Connection Pool1464 bit Option15ODBC Driver16OCI17Enterprise Manager18Enterprise Backup Utility目标高级复制功能分布式功能 并行查询功能查询工具工作流企业版高级备份恢复高级队列连接池64位功能ODBC驱动调用接口企业管理器企业备份工具二)应用服务器体系(Oracle Application Server)Oracle9i和10g的数据库服务器用于构建互联网应用,提供企业级的分布应

6、用解决方案,有以下 个组件。主要产品有:111Http/J2EE(Apache+)2Portal3OEM4Web & DB Cache5Form Service6Report Service7Discoverer Plus8Email9Internet Directory10Workflow11Application InterConnet ToolKit应用连接包 (三)开发工具套件(Oracle Developer)Apache HTTP服务器接口Oracle企业管理器Web和数据库缓冲区 表单服务报表服务 数据挖掘Email支持 互联网目录工作流Oracle的开发工具套件提供了以

7、下9个套件1Designer2Form Developer3Report Developer4JDeveloper5Portal设计器表单开发工具报表开发工具开发工具接口6Discoverer Administration Edition企业版数据挖掘器管理71 Licence Discoverer Disktop Edition1个用户的数据挖掘器8Warehouse Builder数据仓库建立器、Oracle的安装Oracle的安装一般有数据库服务器的安装、客户端的安装。一般情况下,我们只需安装一台Oracle数据库服务器, 用户端只需安装客户端连接服务器, 然后就可以在统一的服务器上建立

8、自己的表空间 与用户。关于Oracle的安装在这里不详细介绍了,我们在这里需要注意两上概念:全局数据库名与数 据库标识符(SID)的区别。全局数据库名主要用于在分布式数据库系统中区分不同服务器上的数据库例程,比如在上海的例程可命名为Oracle.ShangHai,北京的为Oracle.BeiJing,这样即使数据库例程名相同,在分布式网络中 也能区分。数据库标识符(SID)主要用于区分同一台服务器上的不同数据库例程。前者为外部区分,后者为 内部区分。在网络配置管理中,服务名一般是指全局数据库名,而网络服务名一般是指S I D。比如说我们公司的数据库服务器的全局数据库服务名为:Oracle、我们

9、在本地针对船舶管理系统的SID为ShipMis。五、Oracle数据库结构介绍(一)逻辑结构Oracle数据库按逻辑结构从大到小分有:数据库、表空间、逻辑对象(包括表、索引、视图、过程等21个)、数据段、数据区间、数据块。一个数据库服务器可有多个数据库;一个数据库可有多个表空间;一个表空间可以有多个表;一 个表可以有多个数据段;一个数据段可以有多个数据区间;一个数据区间可以有多个数据块。(二)一些逻辑对象的介绍1过程:也就是存储过程对象。2程序包:程序包分别二个部分,一个是程序包,另一个是程序包体。程序包相当于Java中的接口定义,它是对一组存储过程进行定义,但并不对其进行实现。而程序包体则是

10、对程序包中定义的 过程进行具体实现。程序包与程序包体一一对应。程序包与过程的区别是:过程只能是一个单独的存 储过程,而程序包是一组存储过程的集合。我们可以使用程序包对存储过程进行分门别类地管理。比 如我们如果要对船舶管理系统进行后端开发的话,我们可以把针对PMS的所有过程放在一个PKG_PMS包下统一管理,而把备件物料的所有过程放在一个PKG_SPARE包下进行统一的管理。3簇:将一些互相关联的具有相同字段的数据表或索引集中存储的一种管理。4数据库链接:在分布式环境中链接其它节点的数据库服务器。5序列:它相当于在Oracle中建立的表的自增长字段,数据表可以利用它做为字段。6同义词:在Orac

11、le中访问数据表的形式是“用户名.表名”,同义词可以用一个别名来代替 它 。 比如 说我 们 定义 一个 同 义 词a指向 表 :T_Component_Type_Parm, 那 么select * from T_Component_Type_Parm语句与select* from a的执行效果是一样的。六、 表空间的建立为了提高数据库服务器管理和运行效率,Oracle使用表空间这个虚似概念来管理逻辑对象,用户 可以将不同的逻辑对象存放在不同的表空间下,可以理解表空间就是Oracle数据库的文件夹,用户建立的各种数据库对象应该存放在相应的表空间下,Oracle9i和10g数据库服务器安装完毕后

12、,将自动建立以下几个默认表空间。分别是:1CWMLITEOLAP2DRSYS存放与工作空间设置相关信息3EXAMPLE实例表空间,存放实例信息4INDEX索引表空间,存放索引信息5OEM_REPOSITORY6SYSTEM系统表空间,存放管理信息7TEMP临时表空间,存放临时表8TOOLS工具表空间,存放工具软件所需要的数据库对象9UNDOTBS回滚表空间,存放数据库恢复信息10USERS用户表空间,存放用户私有信息我们建立一个用户时如果不指定表空间,默认选择的表空间是USERS、临时表空间是TEMP。但一般情况最后是建立自己的表空间,以便单独进行管理。表空间的建立有如下两种方式:(一)使用企

13、业管理器建立表空间(二)使用PLSQL命令来建立表空间(1)建立createtablespacetablespacetestdatafiled:oracleoradataoracle10tablespacestest01.dbfsize10M,d:oracleoradataoracle10tablespacestest02.dbfsize10M,d:oracleoradataoracle10tablespacestest03.dbf size 10M。(2)扩大现有表空间alter database Oracle10 tablespacetest d:oracleoradataoracle10

14、tablespacestest01.dbf resize 20M。(3)删除表空间drop tablespace tablespacetestincluding contents七、 用户的建立Oracle中的用户就相当我们的业务数据库。我们建立数据库时需要指定用户名与口令。(一)企业管理器建立用户(二)使用PLSQL命令来建立用户(1)建立用户create user userTest identified by usertest default tablespace tablespacetest temporary tablespace tempquota unlimited on tabl

15、espacetest;(2)删除用户drop user userTestcascade;八、Oracle中Net命令服务的配置我们在建立一个用户之后,可以针对此用户建立一个 工具建立。SID实例名,可使用Oracle的Net Manager1CONNECT登录数据库九、Oracle中的角色与权限Oracle提供了两种类型的权限:系统权限和对象权限。(一)系统权限系统权限提供了在Oracle数据库执行多种任务的能力,系统权限不能访问数据库内的表和视图。通常系统权限可以用来许可或者限制DDL语句的执行,Oracle中定义了系统权限多达120多个,允许用户在数据库上注册。允许注册和创建常用的数据库,

16、CONNECT权限是一个预定义角传送UNLIMITED TABLESPACE,也就是这种权限自动授权给7CREATE PROCEDURE允许用户创建过程,函数与包。8CREATE TRIGGER允许用户在其所属的表创建触发器。9CREATE SYNONYM允许用户创建专用的同义词。授予系统特权的语法:grant system_privilege to username withgrantoption去掉系统权限语句:revoke system_privilege from usename举例:grant create table,create view,create procedure,cre

17、ate trigger,create sequence,create session, select anydictionary,unlimited tablespace to userTest。(二)对象权限对象权限用来指定访问用户所属的数据类型。这个用户可以拥有多种对象如表,视图等。对象权限可以用来许可或阻止DML语句的执行。常见的有SELECT、INSERT、UPDATE、DELETE、EXECUTE(可以应用于PL/SQL过程、函数、程序包以及其他可执行元素如Java类)授予对象权限的语法:grant object_privilege on object_name to usernam

18、ewith admin option取消对象权限的语句:revoke object_privilege on object_name from username(三)角色管理Oracle使用角色来限定各种用户的权力,在系统中可以有许多用户,各种用户有各种不同的角 色,而角色拥有不同的权力。有时与其赋一组权限给每一个用户,不如先赋一定的权限给一个角色, 然后把这个角色赋给用户,这样就可以实现动态的权限管理,当一组用户的权限必须改变时,只需改 变角色的权限即可,而不用每个用户都一一改变权限。Oracle中的角色有预定义角色和用户自定义角色。常见的预定义角色如:12CREATE SESSIONCON

19、NECT色。3RESOURCE用户。4CREATE TABLE5CREATE VIEW允许用户创建表。 允许用户创建视图。6CREATE SEQUENCE允许用户创建序列。常用的系统权限有:2RESOURCE创建新对象(如表、视图等)用户自定义的角色的创建必须具有管理权限。定义:CREATE ROLE rolename;为角色授予权限语句:GRANT CREATE TABLE TO rolename;删除角色:DROP ROLE rolename十、Oracle数据库的备份Oracle中的备份方式可分两大类,一种是逻辑备份,另一种是物理备份。(一)逻辑备份逻辑备份就是我们常用的导入(Impor

20、t)和导出备份(Export),这种备份方式能够针对对象进行备份,能够跨平台实施备份操作并适移数据,使用这种备份时,数据库可以不关闭。这种备份一般 用于有规律的日常备份。采用这种方式我们可以进行表方式和用户方式的备份。Export备份方式:1C:exp shipmis/shipmisshipmis。2数组缓冲区大小4096:按回车。3导出文件:EXPDAT.DMPd:shipmis.dmp。4. U(用户),或T(表):(2)U5导出权限(yes/no):yes6.导出表数据(yes/no):yes)7.压缩区(yes/no):yes)Import恢复方式1. C:Imp shipmis/sh

21、ipmisshipmis2.导入文件:EXPDAT.DMPC:shipmis.dmp3.输入插入缓冲区大小(最小为819230720)4.只列出导入文件的内容(yes/no):no回车(要导入内容必须选择no)5.由于对象已存在,忽略创建错误(yes/no):noyes3DBA执行数据库管理员的功能,如创建新用户4EXP_FULL_DATABASE输出完整的数据库5IMP_FULL_DATABASE输入完整的数据库6SELECT_CATALOG_ROLE查看数据字典视图2RESOURCE创建新对象(如表、视图等)6.导入权限(yes/no):yesyes7.导入表数据(yes/no):yes回

22、车8导入整个导出文件(yes/no):noyes(最好选yes)(二)物理备份冷备份 冷备份实质上是在关闭数据库的一种文件式的考贝备份。使数据库处于关闭状态时,把数据相关 文件转移到安全的区域,当数据库遭到破坏,再从安全区域将备份的数据库相关文件拷贝回原来的位 置。由于是在数据库不提供服务的关闭状态,所以称为冷备份。冷备份具有快速,方便,以及高效等 特点。一次完整的冷备份步骤应该是:1关闭数据库(shutdown normal或shutdown abort);2复制数据库相关文件 利用操作系统命令拷贝数据库的所有的数据文件、日志文件、控制文件、参数文件到一个安装区 域。3重新启动数据库(sta

23、rtup) 恢复的时候,相对比较简单了,我们停掉数据库,将文件拷贝回相应位置,重启数据库就可以 了。(三)物理备份热备份 热备份与冷备份的区域就是它是在归档模式下进行的,数据库仍处于打开和使用状态。当我们需 要做一个精度比较高的备份,而且我们的数据库不可能停掉时,这时我们就需要归档方式下的备份, 就是热备份。热备份可以非常精确的备份表空间级和用户级的数据,由于它是根据归档日志的时间轴 来备份恢复的,理论上可以恢复到前一个操作,甚至就是前一秒的操作。热备份相对比较复杂,对于 硬件以及操作人员的要求都比较高。在这里不做详细介绍。十一、表、视图、程序包、序列介绍(一)表create table tb

24、(equipid number,equipname nvarchar2(30) NOT NULL,constraint EQUIP_PK primary key(equipid),-主键constraint EQUIPNAME_UK unique(equipname) -唯一索引)建表时把表中不同范围的数据放在不同的表空间上以加快查询速度,这种情况一般在表数据量特别 大(上亿条记录)时使用。create table tb(id number partition by range(id),(partition p1 values less than(10) tablespace pt1,part

25、ition p2 values less than(20) tablespace pt2)(二)视图在Oracle中有四种类型的视图:关系视图、内嵌视图、对象视图和物化视图。我们最常用的视 图就是关系视图。建立关系视图的语法:create or replace view view_name as query删除视图语法:drop view view_name在查询中查询视图的语法:SELECT text FROM user_views WHERE view_name=VIEW_NAME VIEW_NAME必须大写。(三)程序包在Oracle中有四种类型的视图:关系视图、内嵌视图、对象视图和物化

26、视图。我们最常用的视 图就是关系视图。我们前边说过,程序包是过程的一种改进,它可以对存储过程进行分门别类地进行管理。 建立程序包的语法为:1程序包定义create or replace package employee_pkgasprocedure print_ename(p_empno in number);procedure print_sal(p_empno in number);end employee_pkg;2程序包体的定义create or replace package body employee_pkg asprocedure print_ename(p_empno numb

27、er) -第一个过程的实现is begindbms_output.put_line(p_empno)。cedure print_sal(p_empno number) -第二个过程的实现isl_res number。beginl_res:=p_empno*p_empno。dbms_output.put_line(l_res)。end。end employee_pkg。3调用程序包:beginemployee_pkg.print_ename(100) employee_pkg.print_sal(100)end。在Oracle的SQLPLUS还 可 以 使 用 如 下 语 法 :e

28、xecute employee_pkg.print_ename(100)。executeemployee_pkg.print_sal(100)。在应用系统中调用程序包:(1) NET中的调用如下:OleDbCommand Cmd = New OleDbCommand(PKG .Procedure, con)。Cmd.CommandType =CommandType.StoredProcedure。Cmd.Parameters.Add(varCaseName, OleDbType.VarChar).Value = cboAccidentName.Text。con.Open()。Cmd.Execu

29、teNonQuery()。con.Close()。(2) Java中的调用如下:Connection con=DriverManager.getConnection()。Statement smt=con.createStatement()。-第一个存储过程接口-第二个存储过程接口CallableStatement cst=con.prepareCall(call GetDataForYYT(?,?,?,?)。cst.setString(1,txtFreightBill.getText()。/设置输入参数cst.registerOutParameter(2,java.sql.Types.INT

30、EGER)。/注册输出参数的JDBC类型cst.registerOutParameter(3,java.sql.Types.DECIMAL,2)。cst.registerOutParameter(4,java.sql.Types.DECIMAL,2)。cst.execute()。txtSumPieces.setText(String.valueOf(cst.getInt(2)。/把返回的值赋给文本框txtSumJWeight.setText(String.valueOf(cst.getFloat(3)。txtLastResult.setText(String.valueOf(cst.getFl

31、oat(4)。con.close()。(四)序列我们在建立表时经常用自增长的方式为表指定主键,在SQL Server中可以直接在建立字段时指定自增长类型。在Oracle中的实现方式略有不同,Oracle中要使用序列的方式来实现自增长。序列是Oracle中的一个对象,我们需要建立一个序列对象,然后在每个表中用触发器的方式来实现自增长功 能。原则上一个序列最好只针对一个表。触发器的写法如下:beginselect seq_name.nextval into :new.tbId from dual。end。 也可以不建触发器,在我们的SQL语句中命名seq_name.nextval自动产生一个自增长

32、值。十二、PL/SQL简介PL/SQL语言是标准SQL语言的一种扩展,它是Oracle公司在继承标准SQL语言基础上,又进行了相应的扩展从而更加适应Oracle数据库管理的一种过程性语言。SQL是结构化的通用查询语言的缩写,它是国际化标准组织(ISO)定义的一种通用查询语言,许多数据库厂商都是在此基础上进而扩展了它们自己的语言,如Microsoft公司的Transaction-SQL,Oracle公司的PL/SQL等。(一)PL/SQL结构块declare-变量声明部分(注意,任何变量声明都必须放在这部分)begin-主体语句部分exception-异常处理部分end。举例如下:Declare

33、num1number。num2number。num3number。1算术运算符:+、-、*、/、*(求幂,如10*5=10的5次方)2.关系运算符:=、!=(或者)、=、=、LIKE(通配符是%和_)、BETWEEN、IN、IS NULL3.逻辑运算符:NOT、AND、OR(x=1 OR x=2 OR x=3或用x in(1,2,3)表达式代替,从而使 用代码更容易阅读)4.连接运算符:|三)内置函数1. number函数ABS(n),SIN,COS,TAN,ASIN,ACOS,ATAN,CEIL(n),FLOOR(n),LN(n),EXP(n),LOG(m,n),MOD(m,n),POWER

34、(m,n),ROUND(m,n),SIGN(n),SQRT(n),trunc函 数,载 取 函 数,载 去 小 数 部 分,如trunc(25.59)=25,trunc(25.596,2)=25.592. Date函数(1)add_months(date_value,number):算出一个日期的在增加(或减少)指定月数后的日期。(2)current_date:当前日期(current_timestamp,localtimestamp),还有sysdate函数。(3)extract(date_field fromdate_value):返回一个日期的间隔值(年月曰时分秒)date_field取值有:YEAR,MONTH,DAY,HOUR,MINUTE,SECOND3.字符函数(1)initcap(value):将一个字符串第一个字母转换成大写,其余的转换为小写,initcap(visual在定义过程、程序包、函数和触发器时,不使用关键字DECLARE。var1var2var3 beginnum1:=100。num2:=10。num3:=num1/num2。dbms_output.put_line(num3)var1:= Visual var2:= var3

温馨提示

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

评论

0/150

提交评论