Oracle数据管理系统培训_第1页
Oracle数据管理系统培训_第2页
Oracle数据管理系统培训_第3页
Oracle数据管理系统培训_第4页
Oracle数据管理系统培训_第5页
免费预览已结束,剩余6页可下载查看

下载本文档

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

文档简介

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 Edition2 InterMedia3 Object Option4 Networking Kit5 Object for OLE企业版支持Java 的互联网媒体服务目标功能网络包目标Web Server6 Advanced Replication Option高级复制功能7 Distributed Option分布式功能8 Parallel Query Option并行查

5、询功能9 Sql*Plus查询工具10 Workflow Enterprise Edition工作流企业版11 Advanced backup & recovery高级备份恢复12 Advanced Queuing高级队列13 Connection Pool连接池14 64 bit Option64 位功能15 ODBC DriverODBC 驱动16 OCI调用接口17 Enterprise Manager企业管理器18 Enterprise Backup Utility企业备份工具(二)应用服务器体系( Oracle Application Server )Oracle9i 和 1

6、0g 的数据库服务器用于构建互联网应用,提供企业级的分布应用解决方案,有以下11个组件。主要产品有:1 Http/J2EE(Apache+)Apache HTTP 服务器2 Portal接口3 OEMOracle 企业管理器4 Web & DB CacheWeb 和数据库缓冲区5 Form Service表单服务6 Report Service报表服务7 Discoverer Plus数据挖掘8 EmailEmail 支持9 Internet Directory互联网目录10 Workflow工作流11 Application InterConnet ToolKit应用连接包(三)开发

7、工具套件( Oracle Developer )Oracle 的开发工具套件提供了以下9 个套件1 Designer设计器2 Form Developer表单开发工具3 Report Developer报表开发工具4 JDeveloper开发工具5 Portal接口6 Discoverer Administration Edition企业版数据挖掘器管理7 1 Licence Discoverer Disktop Edition1 个用户的数据挖掘器8 Warehouse Builder数据仓库建立器三、 Oracle 的安装Oracle 的安装一般有数据库服务器的安装、客户端的安装。一般情况

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

9、全局数据库名,而网络服务名一般是指SID 。比如说我们公司的数据库服务器的全局数据库服务名为:Oracle10、我们在本地针对船舶管理系统的SID 为ShipMis 。五、 Oracle 数据库结构介绍(一)逻辑结构Oracle 数据库按逻辑结构从大到小分有:数据库、表空间、逻辑对象(包括表、索引、视图、过程等 21 个)、数据段、数据区间、数据块。一个数据库服务器可有多个数据库;一个数据库可有多个表空间;一个表空间可以有多个表;一个表可以有多个数据段;一个数据段可以有多个数据区间;一个数据区间可以有多个数据块。(二)一些逻辑对象的介绍1过程:也就是存储过程对象。2程序包:程序包分别二个部分,

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

11、接其它节点的数据库服务器。5序列:它相当于在Oracle 中建立的表的自增长字段,数据表可以利用它做为字段。6同义词:在Oracle 中访问数据表的形式是“用户名.表名”,同义词可以用一个别名来代替它。比 如 说 我 们 定 义 一 个 同 义 词a指 向 表 : T_Component_Type_Parm , 那 么select*fromT_Component_Type_Parm 语句与 select * from a 的执行效果是一样的。六、表空间的建立为了提高数据库服务器管理和运行效率,Oracle 使用表空间这个虚似概念来管理逻辑对象,用户可以将不同的逻辑对象存放在不同的表空间下,可以

12、理解表空间就是Oracle 数据库的文件夹,用户建立的各种数据库对象应该存放在相应的表空间下,Oracle9i和 10g 数据库服务器安装完毕后,将自动建立以下几个默认表空间。分别是:1 CWMLITEOLAP2 DRSYS存放与工作空间设置相关信息3 EXAMPLE实例表空间,存放实例信息4 INDEX索引表空间,存放索引信息5 OEM_REPOSITORY6 SYSTEM系统表空间,存放管理信息7 TEMP临时表空间,存放临时表8 TOOLS工具表空间,存放工具软件所需要的数据库对象9 UNDOTBS回滚表空间,存放数据库恢复信息10 USERS用户表空间,存放用户私有信息我们建立一个用户

13、时如果不指定表空间,默认选择的表空间是USERS、临时表空间是 TEMP 。但一般情况最后是建立自己的表空间,以便单独进行管理。表空间的建立有如下两种方式:(一)使用企业管理器建立表空间(二)使用PLSQL 命令来建立表空间(1)建立create tablespace tablespacetest datafile 'd:oracleoradataoracle10tablespacestest01.dbf' size 10M, 'd:oracleoradataoracle10tablespacestest02.dbf' size 10M, 'd:orac

14、leoradataoracle10tablespacestest03.dbf' size 10M;(2)扩大现有表空间alter database Oracle10 tablespacetest ' d:oracleoradataoracle10tablespacestest01.dbf ' resize 20M; (3)删除表空间drop tablespace tablespacetest including contents七、用户的建立Oracle 中的用户就相当我们的业务数据库。我们建立数据库时需要指定用户名与口令。(一)企业管理器建立用户(二)使用PLSQL

15、命令来建立用户( 1)建立用户create user userTest identified by usertestdefault tablespace tablespacetesttemporary tablespace tempquota unlimited on tablespacetest ;( 2)删除用户drop user userTest cascade;八、 Oracle 中 Net 命令服务的配置我们在建立一个用户之后,可以针对此用户建立一个SID 实例名,可使用Oracle 的 Net Manager工具建立。九、 Oracle 中的角色与权限Oracle 提供了两种类型的

16、权限:系统权限和对象权限。(一)系统权限系统权限提供了在Oracle 数据库执行多种任务的能力,系统权限不能访问数据库内的表和视图。通常系统权限可以用来许可或者限制DDL 语句的执行, Oracle 中定义了系统权限多达120 多个,常用的系统权限有:1 CREATE SESSION允许用户在数据库上注册。2 CONNECT允许注册和创建常用的数据库,CONNECT 权限是一个预定义角色。3 RESOURCE传送 UNLIMITED TABLESPACE,也就是这种权限自动授权给用户。4 CREATE TABLE允许用户创建表。5 CREATE VIEW允许用户创建视图。6 CREATE SE

17、QUENCE允许用户创建序列。7 CREATE PROCEDURE允许用户创建过程,函数与包。8 CREATE TRIGGER允许用户在其所属的表创建触发器。9 CREATE SYNONYM允许用户创建专用的同义词。授予系统特权的语法:grant system_privilege to username with grant option去掉系统权限语句:revoke system_privilege from usename举例:grant create table,create view,create procedure,create trigger,create sequence,cre

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

19、语句:revoke object_privilege on object_name from username(三)角色管理Oracle 使用角色来限定各种用户的权力, 在系统中可以有许多用户, 各种用户有各种不同的角色,而角色拥有不同的权力。 有时与其赋一组权限给每一个用户, 不如先赋一定的权限给一个角色, 然后把这个角色赋给用户, 这样就可以实现动态的权限管理, 当一组用户的权限必须改变时, 只需改变角色的权限即可,而不用每个用户都一一改变权限。Oracle 中的角色有预定义角色和用户自定义角色。常见的预定义角色如:1 CONNECT登录数据库2 RESOURCE创建新对象(如表、视图等)

20、3 DBA执行数据库管理员的功能,如创建新用户4 EXP_FULL_DATABASE输出完整的数据库5 IMP_FULL_DATABASE输入完整的数据库6 SELECT_CATALOG_ROLE查看数据字典视图用户自定义的角色的创建必须具有管理权限。定义:CREATE ROLE rolename;为角色授予权限语句:GRANT CREATE TABLE TO rolename;删除角色:DROP ROLE rolename十、 Oracle 数据库的备份Oracle 中的备份方式可分两大类,一种是逻辑备份,另一种是物理备份。(一)逻辑备份逻辑备份就是我们常用的导入(Import )和导出备份

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

22、t 恢复方式1 C:>Imp shipmis/shipmisshipmis2导入文件 :EXPDAT.DMP>C:shipmis.dmp3输入插入缓冲区大小(最小为8192>30720 )>4只列出导入文件的内容(yes/no):no>回车 (要导入内容必须选择no)5由于对象已存在,忽略创建错误(yes/no):no>yes6导入权限 (yes/no):yes>yes7导入表数据(yes/no):yes> 回车8导入整个导出文件(yes/no):no>yes( 最好选 yes)(二)物理备份冷备份冷备份实质上是在关闭数据库的一种文件式的考

23、贝备份。使数据库处于关闭状态时,把数据相关文件转移到安全的区域,当数据库遭到破坏, 再从安全区域将备份的数据库相关文件拷贝回原来的位置。由于是在数据库不提供服务的关闭状态,所以称为冷备份。冷备份具有快速,方便,以及高效等特点。一次完整的冷备份步骤应该是:1关闭数据库(shutdown normal 或 shutdown abort );2复制数据库相关文件利用操作系统命令拷贝数据库的所有的数据文件、日志文件、控制文件、参数文件到一个安装区域。3重新启动数据库(startup )恢复的时候, 相对比较简单了,我们停掉数据库,将文件拷贝回相应位置,重启数据库就可以了。(三)物理备份热备份热备份与冷

24、备份的区域就是它是在归档模式下进行的,数据库仍处于打开和使用状态。当我们需要做一个精度比较高的备份,而且我们的数据库不可能停掉时,这时我们就需要归档方式下的备份,就是热备份。 热备份可以非常精确的备份表空间级和用户级的数据,由于它是根据归档日志的时间轴来备份恢复的,理论上可以恢复到前一个操作,甚至就是前一秒的操作。热备份相对比较复杂,对于硬件以及操作人员的要求都比较高。在这里不做详细介绍。十一、表、视图、程序包、序列介绍(一)表create table tb(equipid number,equipname nvarchar2(30) NOT NULL,constraint EQUIP_PK

25、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,partition p2 values less than(20) tablespace pt2))(二)视图在 Oracle 中有四种类型的视图:

26、关系视图、内嵌视图、对象视图和物化视图。我们最常用的视图就是关系视图。建立关系视图的语法: 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 中有四种类型的视图:关系视图、内嵌视图、对象视图和物化视图。我们最常用的视图就是关系视图。我们前边说过,程序包是过程的一种改进,它可以对存储过程进行分门别类地进行管

27、理。建立程序包的语法为: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_pkgasprocedure print_ename(p_empno number)isbegindbms_output.put_line(p

28、_empno);end;-第一个过程的实现procedure print_sal(p_empno number)is-第二个过程的实现l_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中还可以使用如下语法:execute employee_pkg.print_ename(100);ex

29、ecute employee_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.ExecuteNonQuery

30、();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.INTEGER); /注册输出参数的

31、 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.getFloat(4)

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

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

34、、程序包、函数和触发器时,不使用关键字DECLARE 。举例如下:Declarenum1number;num2number;num3number;var1varchar2 ( 20);var2varchar2 ( 20);var3varchar2 ( 20);beginnum1:=100;num2:=10;num3:=num1/num2;dbms_output.put_line(num3);var1:='Visual'var2:=' Basic'var3:=var1 | var2;dbms_output.put_line(var3);exceptionwhen

35、others thendbms_output.put_line('错误 ');end;(二)运算符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,

36、TAN,ASIN,ACOS,ATAN,CEIL(n),FLOOR(n),LN(n),EXP(n),LOG(m,n),MOD(m,n),POWER(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 from date_value) :返回一个日期的间隔值 ( 年月日时分秒 )date_field 取值有 :YEAR,MONTH,DAY,HOUR,MINUTE,SECOND3字符函数( 1)initcap(value) :将一个字符串第一个字母转换成大写, 其余的转换为小写, initcap('visual b

温馨提示

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

评论

0/150

提交评论