《Oracle数据管理完整培训 .docx》由会员分享,可在线阅读,更多相关《Oracle数据管理完整培训 .docx(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品名师归纳总结一、简要说明Oracle 数据治理系统培训可编辑资料 - - - 欢迎下载精品名师归纳总结Oracle 体系结构相当巨大,包括数据库服务器领域、应用服务器领域和应用开发领域的很多学问,因此我们在本次培训过程中不行能也没有必要面面俱到,这次培训不想讲太多的理论性学问,仅从实际应用角度动身,针对我们在实际开发过程中常常遇到的一些技术学问进行边讲解边演示。二、Oracle 数据库治理系统简介Oracle 是世界上最早的商品化的关系型的数据库治理系统之一,是数据库专业厂商Oracle 公司的核心产品,也是当今关系型数据库产品市场上应用最为广泛、功能强大、具有面对对象特点的数据库系统。O
2、racle 数据库的推出最早可达到上世纪70 岁月,从那以后,始终领导着数据库进展的新潮流,融汇先进的技术并预见性的领域了全球数据库技术的进展。据统计,Oracle 在全球数据库市场的占有率达 33.3% ,在关系型数据库市场上的拥有42.1% 的市场份额,在Unix 高端应用领域市场上占据66.2% 的份额,现在,包括惠普、波音和通用电气等众多大型跨国企业都利用Oracle 电子商务的套件来运行自己的业务。作为一个通用的数据库治理系统,Oracle 具有完整的数据库治理功能,包括储备海量数据、定义和操纵数据、并发掌握、安全性掌握、完整性掌握、故障复原、与高级语言接口等功能。Oracle 到
3、9i 版本后,支持各种分布式处理功能,特殊是支持Internet 处理,仍支持面对对象处理的功能,支持类、方法和属性、空间数据等概念,使得Oracle 产品逐步成为了一种对象 关系型数据库治理系统。Oracle 进展到 10g 以后,采纳一种叫网格运算的技术。这样用户和服务者都在网络上,对于服务供应商来说,服务变的更为牢靠,负载均衡更为敏捷,具有无限的扩展才能。对于用户来说,他只需要提出他的恳求就可以了,无需知道是在哪个网上,哪个服务端在为他供应服务。具体来讲,Oracle 10G 的网格运算包涵四个方面的内容:储备网格、数据库网格、应用程序网格和网格控件。三、Oracle 体系的组成部分简介
4、Oracle 体系结构相当巨大,它是Oracle 公司推出的针对电子商务应用的一整套解决方案,整体由三大体系组成。(一)数据服务器体系(Oracle Database )Oracle9i 和 10g 的数据库服务器从版本上分企业版、标准版和个人版,共有以下18 个组件。1. JServer Enterprise Edition企业版支持 Java的 Web Server2. InterMedia互联网媒体服务3. Object Option目标功能4. Networking Kit网络包可编辑资料 - - - 欢迎下载精品名师归纳总结5. Object for OLE目标6. Advanced
5、 Replication Option高级复制功能7. Distributed Option分布式功能8. Parallel Query Option并行查询功能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
6、. Enterprise Backup Utility企业备份工具(二)应用服务器体系(Oracle Application Server )Oracle9i 和 10g 的数据库服务器用于构建互联网应用,供应企业级的分布应用解决方案,有以下11个组件。主要产品有:1 Http/J2EEApache+Apache HTTP 服务器2 Portal接口3 OEMOracle 企业治理器4 Web & DB CacheWeb 和数据库缓冲区5 Form Service表单服务6 Report Service报表服务7 Discoverer Plus数据挖掘8 EmailEmail 支持9 Inte
7、rnet Directory互联网目录10 Workflow工作流11 Application InterConnet ToolKit应用连接包(三)开发工具套件(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、数据挖掘器8. Warehouse Builder数据仓库建立器三、Oracle 的安装Oracle 的安装一般有数据库服务器的安装、客户端的安装。一般情形下,我们只需安装一台Oracle数据库服务器,用户端只需安装客户端连接服务器,然后就可以在统一的服务器上建立自己的表空间 与用户。关于Oracle 的安装在这里不具体介绍了,我们在这里需要留意两上概念:全局数据库名与数据库标识符( SID )的区分。可编辑资料 - - - 欢迎下载精品名师归纳总结全局数据库名主要用于在分布式数据库系统中区分不同服务器上的数据库例程,比如在上海的例程可命名为 Oracle.ShangHai,北京的为 Orac
9、le.BeiJing ,这样即使数据库例程名相同,在分布式网络中也能区分。数据库标识符( SID )主要用于区分同一台服务器上的不同数据库例程。前者为外部区分,后者为内部区分。在网络配置治理中,服务名一般是指全局数据库名,而网络服务名一般是指SID 。比如说我们公司的数据库服务器的全局数据库服务名为:Oracle10、我们在本的针对船舶治理系统的SID 为ShipMis 。五、Oracle 数据库结构介绍(一)规律结构Oracle 数据库按规律结构从大到小分有:数据库、表空间、规律对象(包括表、索引、视图、过程等 21 个)、数据段、数据区间、数据块。一个数据库服务器可有多个数据库。一个数据库
10、可有多个表空间。一个表空间可以有多个表。一个表可以有多个数据段。一个数据段可以有多个数据区间。一个数据区间可以有多个数据块。(二)一些规律对象的介绍1. 过程:也就是储备过程对象。2. 程序包:程序包分别二个部分,一个是程序包,另一个是程序包体。程序包相当于Java 中的接口定义,它是对一组储备过程进行定义,但并不对其进行实现。而程序包体就是对程序包中定义的过程进行具体实现。程序包与程序包体一一对应。程序包与过程的区分是:过程只能是一个单独的储备过程,而程序包是一组储备过程的集合。我们可以使用程序包对储备过程进行分门别类的治理。比如我们假如要对船舶治理系统进行后端开发的话,我们可以把针对PMS
11、的全部过程放在一个PKG_PMS 包下统一治理,而把备件物料的全部过程放在一个PKG_SPARE 包下进行统一的治理。3. 簇:将一些相互关联的具有相同字段的数据表或索引集中储备的一种治理。4. 数据库链接:在分布式环境中链接其它节点的数据库服务器。5. 序列:它相当于在Oracle 中建立的表的自增长字段,数据表可以利用它做为字段。6. 同义词:在Oracle 中拜访数据表的形式是“用户名.表名”,同义词可以用一个别名来代替它 。 比 如 说 我 们 定 义 一 个 同 义 词 a 指 向 表 : T_Component_Type_Parm , 那 么 select *from T_Comp
12、onent_Type_Parm 语句与 select * from a 的执行成效是一样的。六、表空间的建立为了提高数据库服务器治理和运行效率,Oracle 使用表空间这个虚似概念来治理规律对象,用户可以将不同的规律对象存放在不同的表空间下,可以懂得表空间就是Oracle 数据库的文件夹,用户建立的各种数据库对象应当存放在相应的表空间下,Oracle9i 和 10g 数据库服务器安装完毕后,将自动可编辑资料 - - - 欢迎下载精品名师归纳总结建立以下几个默认表空间。分别是:1 CWMLITEOLAP2 DRSYS存放与工作空间设置相关信息3 EXAMPLE实例表空间,存放实例信息4 INDE
13、X索引表空间,存放索引信息5 OEM_REPOSITORY6 SYSTEM系统表空间,存放治理信息7. TEMP8. TOOLS暂时表空间,存放暂时表工具表空间,存放工具软件所需要的数据库对象9 UNDOTBS回滚表空间,存放数据库复原信息10 USERS用户表空间,存放用户私有信息我们建立一个用户时假如不指定表空间,默认挑选的表空间是USERS、暂时表空间是TEMP 。但一般情形最终是建立自己的表空间,以便单独进行治理。表空间的建立有如下两种方式:(一)使用企业治理器建立表空间(二)使用PLSQL 命令来建立表空间(1) 建立create tablespace tablespacetestd
14、atafile d:oracleoradataoracle10tablespacestest01.dbf size 10M, d:oracleoradataoracle10tablespacestest02.dbf size 10M, d:oracleoradataoracle10tablespacestest03.dbf size 10M 。(2) 扩大现有表空间alter database Oracle10 tablespacetest d:oracleoradataoracle10tablespacestest01.dbf resize 20M。(3) 删除表空间drop tablesp
15、ace tablespacetestincluding contents七、用户的建立Oracle 中的用户就相当我们的业务数据库。我们建立数据库时需要指定用户名与口令。(一)企业治理器建立用户(二)使用PLSQL 命令来建立用户( 1)建立用户create user userTest identified by usertest default tablespace tablespacetest temporary tablespace tempquota unlimited on tablespacetest 。( 2)删除用户drop user userTestcascade。八、Ora
16、cle 中 Net 命令服务的配置我们在建立一个用户之后,可以针对此用户建立一个SID 实例名,可使用Oracle 的 Net Manager工具建立。可编辑资料 - - - 欢迎下载精品名师归纳总结九、Oracle 中的角色与权限Oracle 供应了两种类型的权限:系统权限和对象权限。(一)系统权限系统权限供应了在Oracle 数据库执行多种任务的才能,系统权限不能拜访数据库内的表和视图。通常系统权限可以用来许可或者限制DDL 语句的执行, Oracle 中定义了系统权限多达120 多个, 常用的系统权限有:1 CREATE SESSION答应用户在数据库上注册。2 CONNECT答应注册和
17、创建常用的数据库,CONNECT权限是一个预定义角色。3. RESOURCE传送 UNLIMITEDTABLESPACE, 也就是这种权限自动授权给用户。4. CREATE TABLE答应用户创建表。5. CREATE VIEW答应用户创建视图。6. CREATE SEQUENCE答应用户创建序列。7. CREATE PROCEDURE答应用户创建过程,函数与包。8. CREATE TRIGGER答应用户在其所属的表创建触发器。9. CREATE SYNONYM答应用户创建专用的同义词。授予系统特权的语法:grant system_privilege to username withgrant
18、option去掉系统权限语句: revoke system_privilege from usename举例:grant create table,create view,create procedure,create trigger,create sequence,create session, select any dictionary,unlimited tablespace to userTest 。(二)对象权限对象权限用来指定拜访用户所属的数据类型。这个用户可以拥有多种对象如表,视图等。对象权限可以用来许可或阻挡DML语句的执行。常见的有SELECT 、 INSERT 、 UPDA
19、TE 、 DELETE 、EXECUTE (可以应用于PL/SQL 过程、函数、程序包以及其他可执行元素如Java类)授予对象权限的语法:grant object_privilege on object_name to usernamewith admin option取消对象权限的语句:revoke object_privilege on object_name from username(三)角色治理Oracle 使用角色来限定各种用户的权力,在系统中可以有很多用户,各种用户有各种不同的角色,而角色拥有不同的权力。有时与其赋一组权限给每一个用户,不如先赋肯定的权限给一个角色, 然后把这个角
20、色赋给用户,这样就可以实现动态的权限治理,当一组用户的权限必需转变时,只需转变角色的权限即可,而不用每个用户都一一转变权限。Oracle 中的角色有预定义角色和用户自定义角色。常见的预定义角色如:1. CONNECT登录数据库可编辑资料 - - - 欢迎下载精品名师归纳总结2. RESOURCE创建新对象(如表、视图等)3. DBA执行数据库治理员的功能,如创建新用户4. EXP_FULL_DATABASE输出完整的数据库5. IMP_FULL_DATABASE输入完整的数据库6. SELECT_CATALOG_ROLE查看数据字典视图用户自定义的角色的创建必需具有治理权限。定义: CREAT
21、E ROLE rolename 。为角色授予权限语句:GRANT CREATE TABLE TO rolename。 删除角色: DROP ROLE rolename十、Oracle 数据库的备份Oracle 中的备份方式可分两大类,一种是规律备份,另一种是物理备份。(一)规律备份规律备份就是我们常用的导入(Import )和导出备份( Export ),这种备份方式能够针对对象进行备份,能够跨平台实施备份操作并适移数据,使用这种备份时,数据库可以不关闭。这种备份一般用于有规律的日常备份。采纳这种方式我们可以进行表方式和用户方式的备份。Export 备份方式:1 C:exp shipmis/s
22、hipmisshipmis 。2数组缓冲区大小4096: 按回车。3导出文件 :EXPDAT.DMPd:shipmis.dmp。4 U 用户 ,或3T 表:2U5. 导出权限 yes/no:yes6. 导出表数据 yes/no:yes 7压缩区 yes/no:yes Import 复原方式1 C:Imp shipmis/shipmisshipmis 2导入文件 :EXPDAT.DMPC:shipmis.dmp3输入插入缓冲区大小(最小为819230720 )4只列出导入文件的内容yes/no:no回车 要导入内容必需挑选no 5由于对象已存在 ,忽视创建错误 yes/no:noyes6. 导入
23、权限 yes/no:yesyes7. 导入表数据 yes/no:yes 回车可编辑资料 - - - 欢迎下载精品名师归纳总结8. 导入整个导出文件 yes/no:noyes 最好选 yes(二)物理备份冷备份冷备份实质上是在关闭数据库的一种文件式的考贝备份。使数据库处于关闭状态时,把数据相关文件转移到安全的区域,当数据库遭到破坏,再从安全区域将备份的数据库相关文件拷贝回原先的位置。由于是在数据库不供应服务的关闭状态,所以称为冷备份。冷备份具有快速,便利,以及高效等特点。一次完整的冷备份步骤应当是:1关闭数据库( shutdown normal 或 shutdown abort )。 2复制数据
24、库相关文件利用操作系统命令拷贝数据库的全部的数据文件、日志文件、掌握文件、参数文件到一个安装区域。3重新启动数据库( startup )复原的时候,相对比较简洁了,我们停掉数据库,将文件拷贝回相应位置,重启数据库就可以了。(三)物理备份热备份热备份与冷备份的区域就是它是在归档模式下进行的,数据库仍处于打开和使用状态。当我们需要做一个精度比较高的备份,而且我们的数据库不行能停掉时,这时我们就需要归档方式下的备份, 就是热备份。热备份可以特别精确的备份表空间级和用户级的数据,由于它是依据归档日志的时间轴来备份复原的,理论上可以复原到前一个操作,甚至就是前一秒的操作。热备份相对比较复杂,对于硬件以及
25、操作人员的要求都比较高。在这里不做具体介绍。十一、表、视图、程序包、序列介绍(一)表create table tbequipid number,equipname nvarchar230 NOT NULL,constraint EQUIP_PK primary keyequipid,-主键constraint EQUIPNAME_UK uniqueequipname -唯独索引建表时把表中不同范畴的数据放在不同的表空间上以加快查询速度,这种情形一般在表数据量特殊大(上亿条记录)时使用。create table tb(id number partition by rangeid,partitio
26、n p1 values less than10 tablespace pt1, partition p2 values less than20 tablespace pt2)可编辑资料 - - - 欢迎下载精品名师归纳总结(二)视图在 Oracle 中有四种类型的视图:关系视图、内嵌视图、对象视图和物化视图。我们最常用的视图就是关系视图。建立关系视图的语法:create or replace view view_name as query删除视图语法: drop view view_name在查询中查询视图的语法:SELECTtext FROMuser_views WHEREview_name
27、=VIEW_NAME。VIEW_NAME必需大写。(三)程序包在 Oracle 中有四种类型的视图:关系视图、内嵌视图、对象视图和物化视图。我们最常用的视图就是关系视图。我们前边说过,程序包是过程的一种改进,它可以对储备过程进行分门别类的进行治理。建立程序包的语法为:1. 程序包定义create or replace package employee_pkg asprocedure print_enamep_empno in number 。-第一个储备过程接口procedure print_salp_empno in number 。-其次个储备过程接口end employee_pkg。2.
28、 程序包体的定义create or replace package body employee_pkg asprocedure print_enamep_empno number - 第一个过程的实现is begindbms_output.put_linep_empno 。end。procedure print_salp_empno number- 其次个过程的实现isl_res number 。beginl_res:=p_empno*p_empno 。dbms_output.put_linel_res 。end。end employee_pkg。3调用程序包: beginemployee_p
29、kg.print_ename100。employee_pkg.print_sal100。end。在 Oracle的 SQLPLUS中仍可以使用如下语法:可编辑资料 - - - 欢迎下载精品名师归纳总结executeemployee_pkg.print_ename100。execute employee_pkg.print_sal100。在应用系统中调用程序包:(1) NET中的调用如下:OleDbCommand Cmd = New OleDbCommandPKG.Procedure, con。Cmd.CommandType = CommandType.StoredProcedure 。Cmd.
30、Parameters.AddvarCaseName, OleDbType.VarChar.Value = cboAccidentName.Text。con.Open。Cmd.ExecuteNonQuery 。con.Close。(2) Java中的调用如下:Connection con=DriverManager.getConnection。Statement smt=con.createStatement。CallableStatement cst=con.prepareCallcall GetDataForYYT.,.,.,.。cst.setString1,txtFreightBill.g
31、etText。 / 设置输入参数cst.registerOutParameter2,java.sql.Types.INTEGER 。 /注册输出参数的 JDBC 类型cst.registerOutParameter3,java.sql.Types.DECIMAL,2。cst.registerOutParameter4,java.sql.Types.DECIMAL,2。cst.execute。txtSumPieces.setTextString.valueOfcst.getInt2 。 /把返回的值赋给文本框txtSumJWeight.setTextString.valueOfcst.getFl
32、oat3。txtLastResult.setTextString.valueOfcst.getFloat4。con.close。(四)序列我们在建立表时常常用自增长的方式为表指定主键,在SQL Server 中可以直接在建立字段时指定自增长类型。在Oracle 中的实现方式略有不同,Oracle 中要使用序列的方式来实现自增长。序列是Oracle 中的一个对象,我们需要建立一个序列对象,然后在每个表中用触发器的方式来实现自增长功能。原就上一个序列最好只针对一个表。触发器的写法如下:beginselect seq_name.nextval into :new.tbId from dual 。en
33、d。也可以不建触发器,在我们的SQL 语句中命名 seq_name.nextval 自动产生一个自增长值。十二、 PL/SQL简介PL/SQL 语言是标准 SQL 语言的一种扩展,它是Oracle 公司在继承标准SQL 语言基础上,又进行了相应的扩展从而更加适应Oracle 数据库治理的一种过程性语言。SQL 是结构化的通用查询语言的缩写,它是国际化标准组织(ISO)定义的一种通用查询语言, 很多数据库厂商都是在此基础上进而扩展了它们自己的语言,如Microsoft公司的Transaction-SQL ,Oracle 公司的 PL/SQL 等。(一) PL/SQL 结构块declare- 变量
34、声明部分 留意 ,任何变量声明都必需放在这部分可编辑资料 - - - 欢迎下载精品名师归纳总结begin- 主体语句部分exception- 反常处理部分end。在定义过程、程序包、函数和触发器时,不使用关键字DECLARE 。举例如下:Declarenum1number 。num2number 。num3number 。var1varchar2 20。var2varchar2 20。var3varchar2 20。beginnum1:=100。 num2:=10。 num3:=num1/num2。dbms_output.put_linenum3。var1:= Visual。var2:=Bas
35、ic。var3:=var1|var2。dbms_output.put_linevar3。exceptionwhen 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. n
36、umber 函数ABSn,SIN,COS,TAN,ASIN,ACOS,ATAN,CEILn,FLOORn,LNn,EXPn,LOGm,n,MODm,n,POWERm,n,ROUNDm,n,SIGNn,SQRTn,trunc函 数 , 载 取 函 数 , 载 去 小 数 部 分 , 如trunc25.59=25,trunc25.596,2=25.592. Date 函数( 1) add_monthsdate_value,number :算出一个日期的在增加或削减 指定月数后的日期。( 2) current_date:当前日期 current_timestamp ,localtimestamp ,
37、仍有 sysdate函数。( 3) extractdate_fieldfrom date_value:返回一个日期的间隔值 年月日时分秒date_field 取值有:YEAR,MONTH,DAY,HOUR,MINUTE,SECOND3. 字符函数( 1 ) initcapvalue :将一个字符串第一个字母转换成大写,其余的转换为小写,initcapvisual可编辑资料 - - - 欢迎下载精品名师归纳总结basic返回的是 Visual Basic ,而不是 Visual basic。( 2 ) instrvalue,search_string,start_position,occuren
38、ce :在一个字符串中找出另一个字符串从指定起始位置的第 occurence 次显现的位置, instrVisual Basic,Basic=8 。( 3) lengthvalue :返回一个字符串的长度。( 4) lowervalueuppervalue 。4. 格式转换函数( 1) to_char日期转换为字符 ,例:to_charsysdate,yyyy.mm.dd=2003.09.28( 2) to_char数值转换为字符 ,例:to_char49000,$99,999.99=$49,000.00( 3) to_date, 将字符转换为日期型数据留意 ,在此函数中 ,格式掩码是必需的
39、( 4) to_number, 将字符型数据转换为数值型(四)语法(1) IF.ELSE.ENDIF 条件语句的使用,如:declarel_num number:=&NUM。beginif l_num=1 thendbms_output.put_lineYou selected one 。elsif l_num=2 then dbms_output.put_lineYou selected two 。end。(2) loop end loop 循环,如:declarel_loops number:=0 。begindbms_output.put_lineBefore my loop。loopi
40、f l_loops10 then exit 。end if 。dbms_output.put_lineLooped|l_loops|times 。l_loops:=l_loops+1 。end loop 。dbms_output.put_lineAfter my loop。end。( 3) for.end loop 循环,如:declare beginfor idx in 1.10 loop dbms_output.put_lineidx 。end loop 。end。( 4) while 循环beginloops:=1 。while loops=10 loop dbms_output.put_lineloops 。可编辑资料 - - - 欢迎下载精品名师归纳总结loops:=loops+1 。end loop 。end。可编辑资料 - - - 欢迎下载