⑴ 求英文参考文献 关于java和oracle和短信网站平台介绍的 翻译后4000-5000字
MAXIMO是IBM公司的产品, MAXIMO以工单的创建、审批、执行、关闭为主线,合理、优化地安排相关的人、财、物资源,将传统的被动检修转变为积极主动的预防性维修,与实时数据采集系统集成,可以实现预测性维修。通过跟踪记录企业全过程的维护历史活动,将维修人员的个人知识转化为企业范围的智力资本。集成的工作流与业务流程配置功能,使得用户可以方便地进行系统的授权管理和应用的客户化改造工作。
在商业竞争日益激烈的今天,对于拥有高价值资产的企业来说,设备维护已不再局于成本范畴,更成为获取利润的战略工具。 MAXIMO系列产品使这个目标得以实现。
EAM(Enterprise Asset Management) 即企业资产维护管理系统, 它是面向资产 密集型 (Asset -intensive) 企业的企业信息化解决方案的总称,其前身称作 CMMS (Computerized Maintenance Management System)计算机维修管理系统, 主要适用于资产密集型企业对高价值固定资产的维护、保养、跟踪等信息管理。它以提高资产可利用率、降低企业运行维护成本为目标。以优化企业维修资源为核心,通过信息化手段,合理安排维修计划及相关资源与活动,从而提高企业的经济效益和企业的市场竞争力。
今天,EAM系统涵盖了维护、修理和运营所涉及的方方面面,从库存和采购到工作管理和建立设备模型,但这些仅是EAM系统的基本功能。EAM系统通过创建背后信息来提升维护技术,这些背后的信息在实施EAM之前并不存在,它是加速故障诊断和工作建立的知识基础。优秀的EAM系统的领先性在于其对复杂设备的建模能力,如从公路、管道、线路到产品流程。EAM系统提供任何工厂和服务领域所需的成熟技术,不受设备所处室内外位置的影响。它还通过连接终端用户和最有效的信息源支持简化运营工作,并且这些信息都是在系统中预先设置的。此外,一个端到端的电子商务解决方案可以最大程度降低目标实现的成本。
EAM系统以用户需要的所有工具开发和设置,用户无需编程,今天的EAM系统可以适合任何工厂的特定需要,无论工厂的规模大小。
它包括:设备管理、工单管理、预防性维护管理、资源管理、作业计划管理、安全管理、库存管理、采购管理、系统管理、应用设置、屏幕编辑等基本模块,以及工作流管理、决策分析等可选模块。
多年来,MAXIMO专注于企业资产维护领域,始终站在技术发展的前沿。90年代,它是第一个采用 Client/Server 结构的EAM软件供应商。如今,在风起云涌的互联网 应用大潮中,MAXIMO将它的产品置于Internet技术基础之上。它可以运行在多种常用的服务器硬件平台和网络操作系统( UNIX或 NT)上,支持Windows NT/95/98/2000 客户机环境。 MAXIMO适用领先的商业化关系型数据库,包括 Oracle和 Microsoft sql Server。
MAXIMO 的设计宗旨是:
提高工人工作的安全性和效率
减少停机时间
控制维护费用
降低零件库存和费用
提高采购效率
充分利用设备、设施、人力及其它资源
MAXIMO 是目前市场上最广泛使用的企业资产管理系统。针对不同行业, MRO 软件公司设计了相应的应用解决方案: MAXIMO for Facilities、 MAXIMO for Instry。
MyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。
目录
简介
分类
版本
使用
配置开发
项目发布
展开
编辑本段
简介
myeclipse6.6
MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。
编辑本段
分类
在结构上,MyEclipse的特征可以被分为7类:
1. JavaEE模型
2. WEB开发工具
3. EJB开发工具
4. 应用程序服务器的连接器
5. JavaEE项目部署服务
6. 数据库服务
7. MyEclipse整合帮助
对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。
简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错,MyEclipse6.0以前版本需先安装Eclipse。MyEclipse6.0以后版本安装时不需安装Eclipse。
编辑本段
Oracle公司是全球最大的信息管理软件及服务供应商,成立于1977年,总部位于美国加州 Redwood shore。2000财年(99年6月到2000年5月)营业额达101亿美元,再创Oracle公司销售额历史新高,比去年增长了13亿美元,盈利增长61%,达到21亿美元。Oracle公司现有员工超过三万六千人,服务遍及全球145个国家。Oracle公司拥有世界上唯一一个全面集成的电子商务套件Oracle Applications R11i,它能够自动化企业经营管理过程中的各个方面,深受用户的青睐,促使Oracle应用软件在2000财年第四季度的销售额达4.47亿美元,与SAP公司的同期应用软件销售额3.52亿美元相比,多出近1亿美元,这一事实表明,Oracle已经是世界最大的应用软件供应商。Oracle电子商务套件涵盖了企业经营管理过程中的方方面面,虽然它在不同的方面分别面对不同的竞争对手,而Oracle电子商务解决方案的核心优势就在于它的集成性和完整性,用户完全可以从Oracle公司获得任何所需要的应用功能,更重要的是,它们具有一致的基于Internet技术的应用体系结构,而如果用户想从其它厂商处获得Oracle电子商务所提供的完整功能,不仅需要从多家厂商分别购买不同的应用,而且需要另请咨询公司把这些不同的应用装配起来,还必须确保它们能够协同地工作。
先进的产品和高效率的企业运作,是Oracle公司利润得以继续增长的重要原因,一年前,Oracle公司确定了通过采用自身的Internet电子商务解决方案,实现每年节省10亿美元企业日常运作费用的目标,这一数据相当于将年度利润率提高10%。
编辑本段
基本信息
公司LOGO
公司类型: 上市公司 (NASDAQ: ORCL)
成立时间: 1977年
总部地点: 美国加州红木滩市
首席执行官: 劳伦斯·埃里森 Lawrence (Larry) J. Ellison,
口号: 信息驱动
产业: 数据库软件
企业资源计划
客户关系管理
年营业额 $117.99 亿美元 (2005年)
税前盈余 $40.22 亿美元 (2005年)
净利 $28.86 亿美元 (2005年)
市值
员工数 49,872 (2005年)
编辑本段
主要产品
服务器及工具(主要竞争对手:国际商用机器、微软)
甲骨文公司的主要产品目前分为两大类:
数据库服务器:2007年最新版本11G
应用服务器: Oracle Application Server
开发工具:Oracle JDeveloper,Oracle Designer,Oracle Developer,等等
Oracle公司总部
应用软件(主要竞争对手:德国SAP公司。)
企业资源计划(ERP)软件。已有10年以上的历史。2005年,并购了开发企业软件的仁科软件公司以增强在这方面的竞争力。
客户关系管理(CRM)软件。自1998年开始研发这种软件。2005年,并购了开发客户关系管理软件的希柏软件公司(Siebel)。
人力资源管理软件(HCM)。收购了仁科(PeopleSoft)软件。
编辑本段
应用产品
甲骨文公司服务器技术执行副总裁Chuck
Oracle应用产品包括财务、供应链、制造、项目管理、人力资源和市场与销售等150多个模块,荣获多项世界大奖,现已被全球近7600多家企业所采用。由于在电子商务方面的杰出表现,Oracle公司在美国Mongan Stanley公司最新公布的权威性全球企业1000强中,从去年的第122名一跃成为第13名,成为全球第二大独立软件公司和最大的电子商务解决方案供应商。目前, Amazon和Dell等全球十个最大的Internet电子商务网站、全球十个最大的B-to-B网站中的九个、93%的上市.COM公司、65家“财富全球100强”企业均不约而同地采用Oracle电子商务解决方案。四年前电子商务在全球范围内还仅处于萌芽状态时,Oracle公司便前瞻性地作出了从领先的数据库厂商向以Internet计算为基础的完整的电子商务解决方案供应商转型的战略部署。这一前瞻性战略为Oracle带来了巨大的利益,今天,Oracle能够领先于竞争对手提供包括平台产品、应用产品和完善的服务在内的先进的、完整的、集成的电子商务解决方案,可以无缝集成供应链管理(SCM)、企业资源管理(ERP)、客户资源管理(CRM)和企业商业智能(BI)和电子商务应用IP(Internet Pocurement)、Exchange、Portal-to-go等产品。Oracle从低端到高端的所有方案100%基于Internet应用体系结构,都可以通过Web安全、直接地访问,使企业能够通过Web完成包括报价、定单、支付、执行、服务等在内的企业业务过程的所有环节,帮助企业将现有业务内容快速转移到电子商务,迅速获得来自电子商务的高效益。
编辑本段
历史沿革
Oracle 数据库70年代 一间名为Ampex的软件公司,正为中央情报局设计一套名叫Oracle的数据库,Ellison是程序员之一。
甲骨文公司CEO拉里
1977年艾利森与女上司Robert Miner创立“软件开发实验室”(Software Development Labs),当时IBM发表“关系数据库”的论文,艾利森以此造出新数据库,名为甲骨文。
1978年公司迁往硅谷,更名为“关系式软件公司” (RSI),两年后,共有8名员工,年收入少于100万美金。最先提出“关系数据库”的IBM采用RSI的数据库。1982年再更名为甲骨文(Oracle)。
1984年三年内,先后进军加拿大、荷兰、英国、奥地利、日本、德国、瑞士、瑞典、澳大利亚、芬兰、法国、香港、挪威、西班牙。1986年上市时,年收入暴升至5500万美元,同年3月招股,集资3150万美元。
1987年年收入达到 1.31 亿美元,甲骨文一年后成为世界第四大软件公司。两年内再进军墨西哥、巴西、中国、塞浦路斯、马来西亚及新西兰。一年后,收入再升一倍至2.82亿美元。
1990年甲骨文两年内挥军进入智利、希腊、韩国、葡萄牙、土耳其、委内瑞拉、台湾、比利时、阿根廷、哥伦比亚、哥斯达黎加及菲律宾等地,但是当年甲骨文的业绩首次发生亏损,市值急跌80%,艾利森首次安排资深管理人员参与经营。
Oracle 数据库
1992年旗舰产品Oracle 7面世,使该公司业务重新步上轨道,年收入达到11.79亿美元。曾被视为甲骨文接班人、但后来被踼出局的Raymond Lane担任营运总监。
1995年艾利森宣布PC已死,把全数产品推向互联网发展,并另组“网络计算机公司”(Network Computer),销售“网络计算机”,最终被淘汰收场。
2000年科网接近尾声时,推出E-Business Suite,抢占应用产品市场,与昔日的生意伙伴构成严重利益冲突。同期微软及IBM数据技术提升,此后Oracle新增订单数目的占有率,在两年内下跌6.6%,业务倒退10%。
2003年敌意收购仁科软件公司,引起业界哄动。两公司的争议新闻层出不穷。同年美国司法部落案阻止甲骨文收购。 2009年4月20日,甲骨文公司宣布将以每股9.50美元,总计74亿美金收购太阳计算机系统公司。
编辑本段
起源
1970年的6月,IBM公司的研究员埃德加·考特 (Edgar Frank Codd) 在 Communications of ACM 上发表了那篇着名的《大型共享数据库数据的关系模型》(A Relational Model of Data for Large Shared Data Banks)的论文。这是数据库发展史上的一个转折。要知道,当时还是层次模型和网状模型的数据库产品在市场上占主要位置。从这篇论文开始,拉开了关系型数据库软件革命的序幕。
虽然早在1970年就诞生了关系模型理论,但是市场上迟迟不见关系型数据库管理软件的推出。主要原因是很多反对者认为关系型数据库速度太慢,比不上当时的层次式数据库。值得好笑的是,IBM虽然1973年就启动了System R的项目来研究关系型数据库的实际可行性,也没有及时推出这样的产品,因为当时IBM的的IMS(着名的层次型数据库)市场不错,如果推出关系型数据库,牵涉到IBM很多人的自身利益。再者,IBM庞大复杂的官僚机构处在决策上远不那么灵活。
美国 Oracle 公司总部一瞥
1977年6月,Larry Ellison与Bob Miner和Ed Oates在硅谷共同创办了一家名为软件开发实验室(Software Development Laboratories,SDL)的计算机公司(ORACLE公司的前身)。那个时候,32岁的Larry Ellison,这个读了三家大学都没能毕业的辍学生,还只是一个普通的软件工程师。公司创立之初,Miner是总裁,Oates为副总裁,而Ellison,因为一个合同的事情,还在另一家公司上班。没多久,第一位员工Bruce Scott(用过ORACLE数据库软件的人都知道有个Scott用户的吧?没错,就是这个Scott,至于Scott用户的密码Tiger,那是Scott养的猫的名字)加盟进来,在Miner和Oates有些厌倦了那种合同式的开发工作后,他们决定开发通用软件,不过们还不知道自己能开发出来什么样的产品。Oates最先看到了埃德加·考特的那篇着名的论文连同其他几篇相关的文章并推荐Ellison和Miner也阅读一下。Ellison和Miner预见到数据库软件的巨大潜力(跟着IBM走,没错),于是,SDL开始策划构建可商用的关系型数据库管理系统(RDBMS)。
很快他们就弄出来一个不太像样的产品,或者具体的说,更像一个Demo。根据Ellison和Miner他们在前一家公司从事的一个由中央情报局投资的项目代码,他们把这个产品命名为ORACLE。因为他们相信,ORACLE(字典里的解释有“神谕, 预言”之意)是一切智慧的源泉。1979年,SDL更名为关系软件有限公司(Relational Software,Inc.,RSI),毕竟“软件开发实验室”不太像一个大公司的名字。1983年,为了突出公司的核心产品,RSI再次更名为ORACLE。
编辑本段
发展历程
发布ORACLE产品
RSI在1979年的夏季发布了可用于DEC公司的PDP-11计算机上的商用ORACLE产品,这个数据库产品整合了比较完整的SQL实现,其中包括子查询、连接及其他特性。但不得不说,软件不是很稳定,并缺少事务处理这样的重要功能。出于市场策略,公司宣称这是该产品的第二版,但却是实际上的第一版。之所以被命名为第2版而不是第1版,是因为Ellison认为潜在的客户更愿意购买第2个版本,而不是初始版本。(虽然这样做有些不太诚实,还是要承认这是个十分高明的技巧。到现在还有一些公司把自己卖给客户的版本叫做1.0 ,学学1979年的ORACLE吧!)多年以后的今天,ORACLE公司声称是他们第一个提供了第一个SQL关系型数据库管理系统。
虽然软件不是很好,但是客户还是有的。美国中央情报局迫不及待的想买一套这样的软件来满足他们的需求。但在咨询了IBM公司之后发现IBM没有可以商用的产品,他们联系了RSI。于是RSI有了第一个客户。在当时,政府和军方的机构往往同时有几种计算机,而那时还没有什么“软件可移植”这样的说法,当然,也几乎没有具有这样的能力的应用软件。也就是说,给PDP-11开发的ORACLE数据库不能用在IBM主机和DEC的VAX上。很快用户就表现出来这样的需求:ORACLE能否同时在不同的操作系统上运行?这给RSI带来了新的挑战(主要是Miner和Scott)。70年代末期和80年代早期的软件一般都设计成在单一操作系统上运行,具有可移植能力的软件很少。
发布ORACLE第三版
1983年3月,RSI发布了ORACLE第三版。Miner和Scott历尽艰辛用C语言重新写就这一版本。要知道,C语言当时推出不久,用它来写ORACLE软件也是具有一定的风险的,但除此之外,别无他法。很快就证明了这样做是多么的正确:C编译器便宜而又有效,还有很好的移植性。从现在起,ORACLE产品有了一个关键的特性:[可移植性]。ORACLE第3版还推出了SQL语句和事务处理的“原子性”--SQL语句要么全部成功,要么全部失败,事务处理要么全部提交,要么全部回滚。ORACLE第3版还引入了非阻塞查询,使用存储在"Before Image File"中的数据来查询和回滚事务,从而避免了读锁定(read lock)的使用(虽然通过使用表级锁定限制了它的吞吐量)。同样是1983年,IBM发布了姗姗来迟的Database 2(DB2),但只可在MVS上使用。不管怎么说,ORACLE已经占取了先机。 在开发第三版还没有结束的时候,Scott离开了ORACLE。当时用C语言改写ORACLE的压力很大,无休止的软件调试终于让Scott不堪重负,选择了一走了之。把剩下的重担交给了Miner一个人。在出售了自己的%4的股票之后,Scott 后来创建了Gupta公司(现更名为Centura Software)和PointBase公司(提供百分之百纯Java嵌入式数据库),都是开发和数据库相关的产品。多年后有人问到他的%4的ORACLE股票的时候,Scott,这个曾经给ORACLE写出第一行代码的技术高手,也只能报以一笑了。如果能坚持下来,那是一笔几亿美金的财富。不过当时的Scott没有那么多的想法,他只是太累了。
可移植性
ORACLE最先将其软件移植到DEC VAX计算机上的VMS操作系统上。早在1979年公司就已经雇了一位DEC公司的技术高手Robot Brandt进行VAX上ORACLE的开发。开始的时候资金有限,只能到加州大学伯克利分校去蹭机器进行开发,后来好一些,但机器也是借来的。尽管困难重重,Brandt还是比较成功的完成了移植工作。随着VAX小型机的大量销售乃至供不应求,ORACLE软件也成为VAX上最受欢迎的程序。这一点要归功于Larry对市场的先知先觉。如果说,是IBM引领着ORACLE公司走上数据库的大船,那么DEC公司的VAX就是带着他们扬帆出海了。短短的几年之后,ORACLE数据库被移植到各种主要平台之上。ORACLE产品也一直因为有可移植性这个关键特性而被那些潜在的客户关注。
Oates这个时候因为婚姻趋于破裂而情绪沮丧,已经不能把精力全部放到公司上,不得不离开公司。几年后,他又重返公司,重新为ORACLE做出巨大的贡献,他许下诺言,在公司员工超过1万人的时候会再度离开。1999年,他完成了心愿。现在他正在纵情于音乐,自得其乐。
很长一段时间里,公司研发由Miner独力承担。Miner视金钱如无物,为人低调,和Ellison的锋芒必露形成鲜明的对比。在公司里,大家一致认为他是老好人,他也深受员工爱戴。Ellison是公司的大脑,Miner则当之无愧的成为公司的心脏。他是个沉默的英雄,正如Steve Jobs背后的Steve Wozniak一样。
⑵ 如何安装oracle数据库服务器
软件准备database和client(在参考文献里有下载链接)
2
打开database安装包,运行安装程序Setup.exe,系统将启动Oracle Universal Installer,然后进行先决条件检查。会出现如下图示:
3
之后,系统将打开如下界面:选择安装方法。
ORACLE提供了两种安装方法:基本安装(I)和高级安装(A)。从上面的图中我们可以看到两种安装方法的不同之处,Oracle默认是选择基本安装:
4
基本安装,当填好对应的各项之后,“下一步”按钮将由灰色恢复正常,如下图所示,这时点击下一步即可进行安装。
5
高级安装,选择“高级安装”,“下一步”按钮会恢复正常,点击下一步,
将出现如下的画面“选择安装类型”。安装类型共有4种,分别是企业版(E)、标准版(S)、个人版(P)和定制(C)。每种安装的不同之处,我们也可以从图片上看到。为了完整安装Oracle 10g,我们选择了定制,然后选择下一步。
6
出现“指定主目录详细信息”设置。这里我们可以输入或选择所安装产品的名称以及安装产品的完整路径。如下图所示,这里我们没有进行修改,直接下一步。
7
加载产品之后,将出现选择产品组件的画面,如下图所示,选择需要的组件之后,点击下一步。这里我们选择了几乎所有的组件
8
出来的画面为“产品的先决条件检查”步骤。当我们在第4步选择基本安装后,直接就可以跳到这个画面。
9
点击“下一步”,一会将出现“创建数据库”的画面,如下图,这里有三个选项,分别为创建数据库(C)、配置自动存储管理(ASM)(A)和仅安装数据库软件(S),这里我们选择了创建数据库(C),点击下一步。
10
Oracle MTS Recovery Service配置界面,如下图,下一步
11
最后检查安装清单,然后点击安装。
12
安装中的画面,系统将复制文件并进行配置。
13
配置助手,安装完成后系统会自动运行下面所示的配置程序。
14
紧接着系统出现如下的界面Oracle Net Configuration Assistant,选择“执行典型配置“后,系统将返回13步中所示的画面继续运行下面的配置程序。
15
Database Configuration Assistant界面,选择模版来创建数据库,这里会有11步操作:
16
步骤一:数据库模版,选择定制数据库,下一步
17
步骤二:数据库标识。填入全局数据库名(XXXX)和SID(XXXX)(默认为orcl),下一步
18
步骤三:管理选项,默认,下一步
19
步骤四:数据库身份证明。可以为系统中的帐户配置不同的口令,为方便起见,我这里选择了“所有帐户使用同一口令”,设置初始口令,然后点击下一步
20
步骤五:存储选项,默认,下一步。
步骤六:数据库文件所在位置。默认,下一步。
步骤七:恢复配置。默认,下一步
步骤八:数据库内容,默认,下一步
步骤九:初始化参数。包括内存、调整大小、字符集和连接模式等的修改。默认,下一步
步骤十:数据库存储。可以指定用于创建数据库的存储参数。该页允许查看和更改控制文件、表空间、数据文件、回退段和重做日志组。默认,下一步
步骤十一:创建选项。默认勾选创建数据库,然后点击完成。
这时系统会弹出一个确认框,点击“确定”即可开始数据库的创建过程。
创建过程如下:创建并启动Oracle实例,创建数据库文件,创建数据字典视图,添加Oracle JVM,添加Oracle Data Mining,添加Oracle Text,添加Oracle XML数据库,添加Oracle OLAP,添加Oracle Spatial,添加Oracle Label Security,添加EnterManager档案库,添加用于.NET的Oracle Database Extensions,最后创建数据库。
经过漫长的数据库创建过程之后,终于提示如下,表示数据库创建完成。
点击退出之后,系统将返回第13步继续执行Sql Plus的配置过程,这一步是自动执行的,不需要人工干预。之后系统将提示如下信息,表示数据库已经安装完成,至此,数据库安装完成,同时我们记录下最后画面中的信息,方便我们日后对数据库进行管理等操作。信息如下:
Enterprise Manager Database Control URL - (XXXX) : http://xxxx:1158/em
数据库配置文件已经安装到 C:\oracle\proct\10.2.0,同时其他选定的安装组件也已经安装到 C:\oracle\proct\10.2.0\db_1。
iSQL*Plus URL 为: http://xxxx:5560/isqlplus
iSQL*Plus DBA URL 为: http://xxxx:5560/isqlplus/dba
⑶ 求数据库方面的英文参考文献
www.foxweb.com去找一下它。翻译个说明文档就行了。
⑷ 哪里可以下载oracle的英文参考文献
官方网站就有
http://docs.oracle.com/cd/B19306_01/nav/portal_booklist.htm
⑸ 如何在windows系统上安装Oracle database数据库
现在Oracle数据库越来越流行,用户所占数量也日趋上升,所以学会Oracle数据库,这样对用其他数据库也会轻车熟路,那既然要学习Oracle数据库,就得先安装个Oracle数据库,但是有好多人不懂得安装,今天我就来介绍如何在windows系统上安装Oracle数据库。后续我还会介绍如何通过虚拟机上安装Linux系统,在Linux系统上安装Oracle数据库,请关注! 一台装有windows系统的电脑 数据库安装包(包括database和client) 1 软件准备database和client(在参考文献里有下载链接) 2 打开database安装包,运行安装程序Setup.exe,系统将启动Oracle Universal Installer,然后进行先决条件检查。会出现如下图示: 3 之后,系统将打开如下界面:选择安装方法。 ORACLE提供了两种安装方法:基本安装(I)和高级安装(A)。从上面的图中我们可以看到两种安装方法的不同之处,Oracle默认是选择基本安装: 4 基本安装,当填好对应的各项之后,“下一步”按钮将由灰色恢复正常,如下图所示,这时点击下一步即可进行安装。 5 高级安装,选择“高级安装”,“下一步”按钮会恢复正常,点击下一步, 将出现如下的画面“选择安装类型”。安装类型共有4种,分别是企业版(E)、标准版(S)、个人版(P)和定制(C)。每种安装的不同之处,我们也可以从图片上看到。为了完整安装Oracle 10g,我们选择了定制,然后选择下一步。 6 出现“指定主目录详细信息”设置。这里我们可以输入或选择所安装产品的名称以及安装产品的完整路径。如下图所示,这里我们没有进行修改,直接下一步。 7 加载产品之后,将出现选择产品组件的画面,如下图所示,选择需要的组件之后,点击下一步。这里我们选择了几乎所有的组件 8 出来的画面为“产品的先决条件检查”步骤。当我们在第4步选择基本安装后,直接就可以跳到这个画面。 9 点击“下一步”,一会将出现“创建数据库”的画面,如下图,这里有三个选项,分别为创建数据库(C)、配置自动存储管理(ASM)(A)和仅安装数据库软件(S),这里我们选择了创建数据库(C),点击下一步。 10 Oracle MTS Recovery Service配置界面,如下图,下一步 11 最后检查安装清单,然后点击安装。 12 安装中的画面,系统将复制文件并进行配置。 13 配置助手,安装完成后系统会自动运行下面所示的配置程序。 14 紧接着系统出现如下的界面Oracle Net Configuration Assistant,选择“执行典型配置“后,系统将返回13步中所示的画面继续运行下面的配置程序。 15 Database Configuration Assistant界面,选择模版来创建数据库,这里会有11步操作: 16 步骤一:数据库模版,选择定制数据库,下一步 17 步骤二:数据库标识。填入全局数据库名(XXXX)和SID(XXXX)(默认为orcl),下一步 18 步骤三:管理选项,默认,下一步 19 步骤四:数据库身份证明。可以为系统中的帐户配置不同的口令,为方便起见,我这里选择了“所有帐户使用同一口令”,设置初始口令,然后点击下一步 20 步骤五:存储选项,默认,下一步。 21 步骤六:数据库文件所在位置。默认,下一步。 22 步骤七:恢复配置。默认,下一步 23 步骤八:数据库内容,默认,下一步 24 步骤九:初始化参数。包括内存、调整大小、字符集和连接模式等的修改。默认,下一步 25 步骤十:数据库存储。可以指定用于创建数据库的存储参数。该页允许查看和更改控制文件、表空间、数据文件、回退段和重做日志组。默认,下一步 26 步骤十一:创建选项。默认勾选创建数据库,然后点击完成。
⑹ oracle数据库中有哪些字符集,字符集之间的子集和超集关系是怎么样的
理解ORACLE数据库字符集
一.引言
ORACLE数据库字符集,即Oracle全球化支持(Globalization Support),或即国家语言支持(NLS)其作用是用本国语言和格式来存储、处理和检索数据。利用全球化支持,ORACLE为用户提供自己熟悉的数据库母语环境,诸如日期格式、数字格式和存储序列等。Oracle可以支持多种语言及字符集,其中oracle8i支持48种语言、76个国家地域、229种字符集,而oracle9i则支持57种语言、88个国家地域、235种字符集。由于oracle字符集种类多,且在存储、检索、迁移oracle数据时多个环节与字符集的设置密切相关,因此在实际的应用中,数据库开发和管理人员经常会遇到有关oracle字符集方面的问题。本文通过以下几个方面阐述,对oracle字符集做简要分析
二.字符集基本知识
2.1字符集
实质就是按照一定的字符编码方案,对一组特定的符号,分别赋予不同数值编码的集合。Oracle数据库最早支持的编码方案是US7ASCII。
Oracle 的字符集命名遵循以下命名规则 :
即: <语言><比特位数><编码 >
比如: ZHS16GBK表示采用GBK编码格式、16位(两个字节)简体中文字符集
2.2字符编码方案
2.2.1 单字节编码
(1)单字节7位字符集,可以定义128个字符,最常用的字符集为 US7ASCII
(2)单字节8位字符集,可以定义256个字符,适合于欧洲大部分国家
例如:WE8ISO8859P1(西欧、8位、ISO标准8859P1编码 )
2.2.2 多字节编码
(1)变长多字节编码
某些字符用一个字节表示,其它字符用两个或多个字符表示,变长多字节编码常用于对亚洲语言的支持, 例如日语、汉语、印地语等
例如:AL32UTF8(其中AL代表ALL,指适用于所有语言)、 zhs16cgb231280
(2)定长多字节编码
每一个字符都使用固定长度字节的编码方案,目前oracle唯一支持的定长多字节编码是AF16UTF16,也是仅用于国家字符集
2.2.3 unicode 编码
Unicode 是一个涵盖了目前全世界使用的所有已知字符的单一编码方案,也就是说Unicode为每一个字符提供唯一的编码。UTF-16是unicode的16位编码方式,是一种定长多字节编码,用2个字节表示一个unicode字符,AF16UTF16是UTF-16编码字符集。
UTF-8 是unicode的8位编码方式,是一种变长多字节编码,这种编码可以用1、2、3个字节表示一个unicode字符,AL32UTF8,UTF8、UTFE是UTF-8编码字符集
2.3 字符集超级
当一种字符集(字符集A)的编码数值包含所有另一种字符集(字符集B)的编码数值,并且两种字符集相同编码数值代表相同的字符时,则字符集A是字符集B的超级,或称字符集B是字符集A的子集。
Oracle8i 和oracle9i官方文档资料中备有子集-超级对照表(subset-superset pairs),例如:WE8ISO8859P1是WE8MSWIN1252的子集。由于US7ASCII是最早的Oracle数据库编码格式,因此有许多字符集是US7ASCII的超集,例如WE8ISO8859P1、ZHS16CGB231280、ZHS16GBK都是US7ASCII的超集。
2.4 数据库字符集(oracle服务器端字符集)
数据库字符集在创建数据库时指定,在创建后通常不能更改。在创建数据库时,可以指定字符集(CHARACTER SET)和国家字符集(NATIONAL CHARACTER SET)。
2.4.1 字符集
(1) 用来存储CHAR, VARCHAR2, CLOB, LONG等类型数据
(2) 用来标示诸如表名、列名以及PL/SQL变量等
(3) 用来存储SQL和PL/SQL程序单元等
2.4.2 国家字符集:
(1) 用以存储NCHAR, NVARCHAR2, NCLOB等类型数据
(2) 国家字符集实质上是为oracle选择的附加字符集,主要作用是为了增强oracle的字符处理能力,因为NCHAR数据类型可以提供对亚洲使用定长多字节编码的支持,而数据库字符集则不能。国家字符集在oracle9i中进行了重新定义,只能在unicode编码中的AF16UTF16和UTF8中选择,默认值是 AF16UTF16
2.4.3查询字符集参数
可以查询以下数据字典或视图查看字符集设置情况
nls_database_parameters 、props$、 v$nls_parameters
查询结果中NLS_CHARACTERSET表示字符集,NLS_NCHAR_CHARACTERSET表示国家字符集
2.4.4 修改数据库字符集
按照上文所说,数据库字符集在创建后原则上不能更改。如果需要修改字符集,通常需要导出数据库数据,重建数据库,再导入数据库数据的方式来转换,或通过ALTER DATABASE CHARACTER SET语句修改字符集,但创建数据库后修改字符集是有限制的,只有新的字符集是当前字符集的超集时才能修改数据库字符集,例如UTF8是US7ASCII的超集,修改数据库字符集可使用ALTER DATABASE CHARACTER SET UTF8。
2.5 客户端字符集(NLS_LANG参数)
2.5.1 客户端字符集含义
客户端字符集定义了客户端字符数据的编码方式,任何发自或发往客户端的字符数据均使用客户端定义的字符集编码,客户端可以看作是能与数据库直接连接的各种应用,例如sqlplus,exp/imp等。客户端字符集是通过设置NLS_LANG参数来设定的。
2.5.2 NLS_LANG 参数格式
NLS_LANG=_.
Language: 显示oracle消息,校验,日期命名
Territory :指定默认日期、数字、货币等格式
Client character set :指定客户端将使用的字符集
例如: NLS_LANG=AMERICAN_AMERICA.US7ASCII
AMERICAN是语言,AMERICA是地区,US7ASCII是客户端字符集
2.5.3 客户端字符集设置方法
1)UNIX 环境
$NLS_LANG=“simplified chinese”_china.zhs16gbk
$export NLS_LANG
编辑oracle用户的profile文件
2)Windows 环境
编辑注册表
Regedit.exe---HKEY_LOCAL_MACHINE---SOFTWARE---ORACLE—HOME0
2.5.4 NLS 参数查询
Oracle 提供若干NLS参数定制数据库和用户机以适应本地格式,例如有NLS_LANGUAGE,NLS_DATE_FORMAT,NLS_CALENDER等,可以通过查询以下数据字典或v$视图查看。
NLS_DATABASE_PARAMETERS-- 显示数据库当前NLS参数取值,包括数据库字符集取值
NLS_SESSION_PARAMETERS-- 显示由NLS_LANG 设置的参数,或经过alter session 改变后的参数值(不包括由NLS_LANG 设置的客户端字符集)
NLS_INSTANCE_PARAMETE-- 显示由参数文件init.ora 定义的参数V$NLS_PARAMETERS--显示数据库当前NLS参数取值
2.5.5 修改NLS参数
使用下列方法可以修改NLS参数
(1)修改实例启动时使用的初始化参数文件
(2)修改环境变量 NLS_LANG
(3)使用ALTER SESSION语句,在oracle会话中修改
(4)使用某些SQL函数
NLS 作用优先级别:Sql function>alter session>环境变量或注册表>参数文件>数据库默认参数
三.导入/导出与字符集转换
3.1 EXP/IMP
Export 和 Import 是一对读写Oracle数据的工具。Export 将 Oracle 数据库中的数据输出到操作系统文件中, Import 把这些文件中的数据读到Oracle 数据库中,由于使用exp/imp进行数据迁移时,数据从源数据库到目标数据库的过程中有四个环节涉及到字符集,如果这四个环节的字符集不一致,将会发生字符集转换。
EXP
____________ _________________ _____________
|imp导入文件|<-><->
------------ ----------------- -------------
IMP
____________ _________________ _____________
|imp导入文件|->|环境变量NLS_LANG|->|数据库字符集|
------------ ----------------- -------------
四个字符集是
(1)源数据库字符集
(2)Export过程中用户会话字符集(通过NLS_LANG设定)
(3)Import过程中用户会话字符集(通过NLS_LANG设定)
(4)目标数据库字符集
3.2导出的转换过程
在Export过程中,如果源数据库字符集与Export用户会话字符集不一致,会发生字符集转换,并在导出文件的头部几个字节中存储Export用户会话字符集的ID号。在这个转换过程中可能发生数据的丢失。
例:如果源数据库使用ZHS16GBK,而Export用户会话字符集使用US7ASCII,由于ZHS16GBK是16位字符集,而US7ASCII是7位字符集,这个转换过程中,中文字符在US7ASCII中不能够找到对等的字符,所以所有中文字符都会丢失而变成“?? ”形式,这样转换后生成的Dmp文件已经发生了数据丢失。
因此如果想正确导出源数据库数据,则Export过程中用户会话字符集应等于源数据库字符集或是源数据库字符集的超集
3.3导入的转换过程
(1)确定导出数据库字符集环境
通过读取导出文件头,可以获得导出文件的字符集设置
(2)确定导入session的字符集,即导入Session使用的NLS_LANG环境变量
(3)IMP读取导出文件
读取导出文件字符集ID,和导入进程的NLS_LANG进行比较
(4)如果导出文件字符集和导入Session字符集相同,那么在这一步骤内就不需要转换,如果不同,就需要把数据转换为导入Session使用的字符集。可以看出,导入数据到数据库过程中发生两次字符集转换
第一次:导入文件字符集与导入Session使用的字符集之间的转换,如果这个转换过程不能正确完成,Import向目标数据库的导入过程也就不能完成。
第二次:导入Session字符集与数据库字符集之间的转换。
然而,oracle8i的这种转换只能在单字节字符集之间进行,oracle8i导入Session不支持多字节字符集之间的转换,因此为了避免第一次转换,导入Session使用的NLS_LANG与导出文件字符集相同,第二次转换(通过SQL*Net)支持任何两种字符集。以上情况在Oracle9i中略有不同
四.乱码问题
oracle在数据存储、迁移过程中经常发生字符乱码问题,归根到底是由于字符集使用不当引起。下面以使用客户端sqlplus向数据库插入数据和导入/导出(EXP/IMP)过程为例,说明乱码产生的原因。
4.1使用客户端sqlplus向数据库存储数据
这个过程存在3个字符集设置
(1)客户端应用字符集
(2)客户端NLS_LANG参数设置
(3)服务器端数据库字符集(Character Set)设置
客户端应用sqlplus中能够显示什么样的字符取决于客户端操作系统语言环境(客户端应用字符集),但在应用中录入这些字符后,这些字符能否在数据库中正常存储,还与另外两个字符集设置紧密相关,其中客户端NLS_LANG参数主要用于字符数据传输过程中的转换判断。常见的乱码大致有两种情形:
(1)汉字变成问号“?”;
当从字符集A 转换成字符集B时,如果转换字符之间不存在对应关系,NLS_LANG使用替代字符“?”替代无法映射的字符
(2)汉字变成未知字符(虽然有些是汉字,但与原字符含义不同)
转换存在对应关系,但字符集A 中的字符编码与字符集B 中的字符编码代表不同含义
4.2发生乱码原因
乱码产生是由于几个字符集之间转换不匹配造成,分以下几种情况:
(注:字符集之间如果不存在子集、超集对应关系时的情况不予考虑,因为这种情况下字符集之间转换必产生乱码)
1)服务器端数据库字符集与客户端应用字符集相同,与客户端NLS_LANG参数设置不同
如果客户端NLS_LANG字符集是其它两种字符集的子集,转换过程将出现乱码。
解决方法:将三种字符集设置成同一字符集,或NLS_LANG字符集是其它两种字符集的超集
2 )服务器端数据库字符集与客户端NLS_LANG参数设置相同,与客户端应用字符集不同
如果客户端应用字符集是其它两种字符集的超集时,转换过程将出现乱码,但对于单字节编码存储中文问题,可参看本文第5章节的分析
3 )客户端应用字符集、客户端NLS_LANG参数设置、服务器端数据库字符集互不相同
此种情况较为复杂,但三种字符集之间只要有不能转换的字符,则必产生乱码
4.3导入/导出过程出现乱码原因
这个过程存在4个字符集设置,在3.1章节中已分析
(1)源数据库字符集
(2)EXP过程中NLS_LANG参数
(3)IMP过程中NLS_LANG参数
(4)目标数据库字符集
出现乱码原因
1 )当源数据库字符集不等于EXP过程中NLS_LANG参数,且源数据库字符集是EXP过程中NLS_LANG的子集,才能保证导出文件正确,其他情况则导出文件字符乱码
2 )EXP过程中NLS_LANG字符集不等于IMP过程中NLS_LANG字符集,且EXP过程中NLS_LANG字符集是IMP过程中NLS_LANG字符集的子级, 才能保证第一次转换正常,否则第一次转换中出现乱码。
3 )如果第一次转换正常,IMP过程中NLS_LANG字符集是目标数据库字符集的子集或相同,才能保证第二次转换正常,否则则第二次转换中出现乱码
五.单字节编码存储中文问题
由于历史的原因,早期的oracle没有中文字符集(如oracle6、oracle7、oracle7.1),但有的用户从那时起就使用数据库了,并用US7ASCII字符集存储了中文,或是有的用户在创建数据库时,不考虑清楚,随意选择一个默认的字符集,如WE8ISO8859P1或US7ASCII,而这两个字符集都没有汉字编码,虽然有些时候选用这种字符集好象也能正常使用,但用这种字符集存储汉字信息从原则上说就是错误的,它会给数据库的使用与维护带来一系列的麻烦。
正常情况下,要将汉字存入数据库,数据库字符集必须支持中文,而将数据库字符集设置为US7ASCII等单字节字符集是不合适的。US7ASCII字符集只定义了128个符号,并不支持汉字。另外,如果在SQL*PLUS中能够输入中文,操作系统缺省应该是支持中文的,但如果在NLS_LANG中的字符集设置为US7ASCII,显然也是不正确的,它没有反映客户端的实际情况。但在实际应用中汉字显示却是正确的,这主要是因为Oracle检查数据库与客户端的字符集设置是同样的,那么数据在客户与数据库之间的存取过程中将不发生任何转换,但是这实际上导致了数据库标识的字符集与实际存入的内容是不相符的。而在SELECT的过程中,Oracle同样检查发现数据库与客户端的字符集设置是相同的,所以它也将存入的内容原封不动地传送到客户端,而客户端操作系统识别出这是汉字编码所以能够正确显示。
在这个例子中,数据库与客户端都没有设置成中文字符集,但却能正常显示中文,从应用的角度看好象没问题。然而这里面却存在着极大的隐患,比如在应用length或substr等字符串函数时,就可能得到意外的结果。
对于早期使用US7ASCII字符集数据库的数据迁移到oracle8i/9i中(使用zhs16gbk),由于原始数据已经按照US7ASCII格式存储,对于这种情况,可以通过使用Oracle8i的导出工具,设置导出字符集为US7ASCII,导出后使用UltraEdit等工具打开dmp文件,修改第二、三字符,修改 0001 为0354,这样就可以将US7ASCII字符集的数据正确导入到ZHS16GBK的数据库中。
六.结束语
为了避免在数据库迁移过程中由于字符集不同导致的数据损失,oracle提供了字符集扫描工具(character set scanner),通过这个工具我们可以测试在数据迁移过程中由于字符集转换可能带来的问题,然后根据测试结果,确定数据迁移过程中最佳字符集解决方案。
参考文献
[1]Biju Thomas , Bob Bryla 《oracle9i DBA基础I 学习指南》电子工业出版社 2002
⑺ Oracle利用数据泵如何让A电脑数据库客户端将B数据库服务器数据备份到C电脑,在线等,求答案,谢
写个脚本,分为两步:
使用 network_link 参数 背到 A 机
从A机 sftp 或者 scp 传到c机,可能需要建立用户等效性
例如:
#!/bin/bash
expdp system/oracle directory=mp mpfile=scott_test.dmp logfile=scott_log.dmp network_link='power1' schemas=scott ;
scpscott_test.dmp c:/你在c机的目录
############################
使用network_link 参数:
一:服务器端的数据导出到指定的客户端
1,修改客户端的TNSNAMES文件
POWER1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.111.13)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = power1)
)
)
2,创建dblink
SQL> CREATE PUBLIC DATABASE LINK "POWER1"
2 CONNECT TO scott
3 IDENTIFIED BY "Oracle"
4 USING 'POWER1';
Database link created.
SQL> select * from al@power1;
D
-
X
3,directory目录
SQL> set lines 170
SQL> col owner for a15
SQL> col directory_name for a60
SQL> col directory_name for a30
SQL> col DIRECTORY_PATH for a70
SQL> select * from dba_directories;
OWNER DIRECTORY_NAME DIRECTORY_PATH
--------------- ------------------------------ ----------------------------------------------------------------------
SYS DUMP /tmp
SYS TOAD_BDUMP_DIR /u01/app/oracle/diag/rdbms/orcl11g/orcl11g/trace
SYS XMLDIR /u01/app/oracle/proct/11.2/db_1/rdbms/xml
SYS DATA_PUMP_DIR /u01/app/oracle/admin/orcl11g/dpmp/
SYS ORACLE_OCM_CONFIG_DIR /u01/app/oracle/proct/11.2/db_1/ccr/state
如果不存在使用create directory创建再用grant授予用户权限
4,导数据
[oracle11g@rhel4 admin]$ expdp system/oracle directory=mp mpfile=scott_test.dmp logfile=scott_log.dmp network_link='power1' schemas=scott
Export: Release 11.2.0.3.0 - Proction on Tue Mar 26 18:22:28 2013
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Proction
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORA-31631: privileges are required
ORA-39149: cannot link privileged user to non-privileged user
grant这个命令要在源端数据库上面执行
SQL> GRANT exp_full_database TO scott;
Grant succeeded.
回到客户端上面
[oracle11g@rhel4 admin]$ expdp system/oracle directory=mp mpfile=scott_test.dmp logfile=scott_log.dmp network_link='power1' schemas=scott
参考文献:
http://www.linuxidc.com/Linux/2013-04/82115.htm
⑻ 如何在windows系统上安装Oracle数据库
软件准备database和client(在参考文献里有下载链接)
2
打开database安装包,运行安装程序Setup.exe,系统将启动Oracle Universal Installer,然后进行先决条件检查。会出现如下图示:
3
之后,系统将打开如下界面:选择安装方法。
ORACLE提供了两种安装方法:基本安装(I)和高级安装(A)。从上面的图中我们可以看到两种安装方法的不同之处,Oracle默认是选择基本安装:
4
基本安装,当填好对应的各项之后,“下一步”按钮将由灰色恢复正常,如下图所示,这时点击下一步即可进行安装。
5
高级安装,选择“高级安装”,“下一步”按钮会恢复正常,点击下一步,
将出现如下的画面“选择安装类型”。安装类型共有4种,分别是企业版(E)、标准版(S)、个人版(P)和定制(C)。每种安装的不同之处,我们也可以从图片上看到。为了完整安装Oracle 10g,我们选择了定制,然后选择下一步。
6
出现“指定主目录详细信息”设置。这里我们可以输入或选择所安装产品的名称以及安装产品的完整路径。如下图所示,这里我们没有进行修改,直接下一步。
7
加载产品之后,将出现选择产品组件的画面,如下图所示,选择需要的组件之后,点击下一步。这里我们选择了几乎所有的组件
8
出来的画面为“产品的先决条件检查”步骤。当我们在第4步选择基本安装后,直接就可以跳到这个画面。
9
点击“下一步”,一会将出现“创建数据库”的画面,如下图,这里有三个选项,分别为创建数据库(C)、配置自动存储管理(ASM)(A)和仅安装数据库软件(S),这里我们选择了创建数据库(C),点击下一步。
10
Oracle MTS Recovery Service配置界面,如下图,下一步
11
最后检查安装清单,然后点击安装。
12
安装中的画面,系统将复制文件并进行配置。
13
配置助手,安装完成后系统会自动运行下面所示的配置程序。
14
紧接着系统出现如下的界面Oracle Net Configuration Assistant,选择“执行典型配置“后,系统将返回13步中所示的画面继续运行下面的配置程序。
15
Database Configuration Assistant界面,选择模版来创建数据库,这里会有11步操作:
16
步骤一:数据库模版,选择定制数据库,下一步
17
步骤二:数据库标识。填入全局数据库名(XXXX)和SID(XXXX)(默认为orcl),下一步
18
步骤三:管理选项,默认,下一步
19
步骤四:数据库身份证明。可以为系统中的帐户配置不同的口令,为方便起见,我这里选择了“所有帐户使用同一口令”,设置初始口令,然后点击下一步
20
步骤五:存储选项,默认,下一步。
步骤六:数据库文件所在位置。默认,下一步。
步骤七:恢复配置。默认,下一步
步骤八:数据库内容,默认,下一步
步骤九:初始化参数。包括内存、调整大小、字符集和连接模式等的修改。默认,下一步
步骤十:数据库存储。可以指定用于创建数据库的存储参数。该页允许查看和更改控制文件、表空间、数据文件、回退段和重做日志组。默认,下一步
步骤十一:创建选项。默认勾选创建数据库,然后点击完成。
这时系统会弹出一个确认框,点击“确定”即可开始数据库的创建过程。
创建过程如下:创建并启动Oracle实例,创建数据库文件,创建数据字典视图,添加Oracle JVM,添加
Oracle Data Mining,添加Oracle Text,添加Oracle XML数据库,添加Oracle OLAP,添加
Oracle Spatial,添加Oracle Label Security,添加EnterManager档案库,添加用于.NET的
Oracle Database Extensions,最后创建数据库。
经过漫长的数据库创建过程之后,终于提示如下,表示数据库创建完成。
点击退出之后,系统将返回第13步继续执行Sql Plus的配置过程,这一步是自动执行的,不需要人工干预。之后系统将提示如下信息,表示数据库已经安装完成,至此,数据库安装完成,同时我们记录下最后画面中的信息,方便我们日后对数据库进行管理等操作。信息如下:
Enterprise Manager Database Control URL - (XXXX) : http://xxxx:1158/em
数据库配置文件已经安装到 C:\oracle\proct\10.2.0,同时其他选定的安装组件也已经安装到 C:\oracle\proct\10.2.0\db_1。
iSQL*Plus URL 为: http://xxxx:5560/isqlplus
iSQL*Plus DBA URL 为: http://xxxx:5560/isqlplus/dba
⑼ 求SQL数据库论文
ORACLE中SQL查询优化研究
摘 要 数据库性能问题一直是决策者及技术人员共同关注的焦点,影响数据库性能的一个重要因素就是SQL查询语句的低效率。论文首先分析了导致SQL查询语句性能低下的四个常见原因以及SQL调优的一般步骤,然后分别针对如何降低I/O操作、在查询语句中如何避免对查询结果的高成本操作以及在多表连接时如何提高查询效率进行了分析。
关键词 ORACLE;SQL;优化;连接
1 引言
随着网络应用不断发展,系统性能已越来越引起决策者的重视。影响系统性能的因素很多,低效的SQL语句就是其中一个不可忽视的重要原因。论文首先分析导致SQL性能低下的常见原因,然后分析SQL调优应遵循的一般步骤,最后从如何降低I/O、避免对查询结果的高成本操作和多表连接中如何提高SQL性能进行了研究。鉴于目前ORACLE在数据库市场上的主导地位,论文将只针对ORACLE进行讨论。
2 影响SQL性能的原因
影响SQL性能的因素很多,如初始化参数设置不合理、导入了不准确的系统及模式统计数据从而影响优化程序(CBO)的正确判断等,这些往往和DBA密切相关。纯粹从SQL语句出发,笔者认为影响SQL性能不外乎以下四个重要原因:
(1)在大记录集上进行高成本操作,如使用了引起排序的谓词等。
(2)过多的I/O操作(含物理I/O与逻辑I/O),最典型的就是未建立恰当的索引,导致对查询表进行全表扫描。
(3)处理了太多的无用记录,如在多表连接时过滤条件位置不当导致中间结果集包含了太多的无用记录。
(4)未充分利用数据库提供的功能,如查询的并行化处理等。
第(4)个原因处理起来相对简单。论文将针对前三个原因论述如何提高SQL查询语句的性能。
3 SQL优化的一般步骤
SQL优化一般需经过发现问题、分析问题、提出解决措施、应用措施、测试性能几个步骤,如图1所示。“发现问题就是解决问题的一半”,因此在SQL调优过程中,定位问题SQL是非常重要的一步,一般可借助于ORACLE自带的性能优化工具如STATSPACK、TKPROF、AUTOTRACE等辅助用户进行,同时还应该重视动态性能视图如V$SQL、V$MYSTAT、V$SYSSTAT等的研究。
图1 SQL优化的一般步骤
4 SQL语句的优化
4.1 优化排序操作
排序的成本十分高昂,当在查询语句中使用了引起结果集排序的谓词时,SQL性能必然受到影响。
4.1.1 排序过程分析
当待排序数据集不是太大时,服务器在内存(排序区)完成排序操作,如果排序需要更多的内存空间,服务器将进行如下处理:
(1) 将数据分成多个小的集合,对每一集合进行排序。
(2) 服务器向磁盘申请临时空间,将排好序的中间结果写入临时段,再对另外的集合进行排序。
(3) 在所有的集合均排好序后,服务器再将它们进行合并得到最终的结果,如果排序区尺寸太小,合并无法一次完成时,将分多次进行。
从上述分析可知,排序是一种十分昂贵的操作,它消耗大量的CPU时间和内存,触发磁盘分页和交换操作,因此只要有可能,我们就应该在SQL语句中尽量避免排序操作。
4.1.2 SQL中引起排序的操作
SQL查询语句中引起排序的操作大致有:ORDER BY 和GROUP BY 从句;DISTINCT修饰符;UNION、INTERSECT、MINUS集合操作符;多表连接时的排序合并连接(SORT MERGE JOIN)等。
4.1.3 如何避免排序
1)建立恰当的索引
对经常进行排序和连接操作的字段建立索引。在建立索引后,当服务器向这些字段发出排序请求时,将直接引用索引而不进行排序操作;当进行等值连接查询操作时,若建立连接的字段未建立索引,服务器进行的是排序合并连接(SORT MERGE JOIN),连接操作的过程如下:
对进行连接的两个或多个表分别进行全扫描;
对每一个表中的行集分别进行全排序;
合并排序结果。
如果建立连接的字段已建立索引,服务器进行嵌套循环连接(NESTED LOOP JOINS),该连接方式不需要任何排序,其过程如下:
对驱动表进行全表扫描;
对返回的每一行利用连接字段值实施索引惟一扫描;
利用从索引扫描中返回的ROWID值在从表中定位记录;
合并主、从表中的匹配记录。
因此,建立索引可避免多数排序操作。
2)用UNIION ALL替换UNION
UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。大部分应用中是不会产生重复记录的,最常见的是过程表与历史表UNION 。因此,采用UNION ALL操作符替代UNION,因为UNION ALL操作只是简单的将两个结果合并后就返回。
4.2 优化I/O
过多的I/O操作会占用CPU时间、消耗大量内存和占用过多的栓锁,因此有必要对SQL的I/O进行优化。优化I/O的最有效方式就是用索引扫描代替全表扫描。
4.2.1 应用基于函数的索引
基于函数的索引(FUNCTION BASED INDEX,简记为FBI)提供了索引计算列并在查询中使用这些索引的能力。FBI的实质是对查询所需中间结果进行预处理。如果一个FBI与查询语句中的内嵌函数完全匹配,CBO在生成查询计划时,将自动启用索引范围扫描(INDEX RANGE SCAN)替换全表扫描(FULL TABLE SCAN)。考察下面的代码段并用AUTOTRACE观察创建FBI前后执行计划的变化。
select * from emp where upper(ename)=’SCOTT’
创建FBI前,很明显是全表扫描。
Execution Plan
……
1 0 TABLE ACCESS (FULL) OF 'EMPLOYEES' (Cost=2 Card=1 Bytes=22)
idle>CREATE INDEX EMP_UPPER_FIRST_NAME ON EMPLOYEES(UPPER(FIRST_NAME));
索引已创建。
再次运行相同查询,
Execution Plan
……
1 0 TABLE ACCESS (BY INDEX ROWID) OF 'EMPLOYEES' (Cost=1 Card=1 Bytes=22)
2 1 INDEX (RANGE SCAN) OF 'EMP_UPPER_FIRST_NAME' (NON-UNIQUE) (Cost=1 Card=1)
这一简单的例子充分说明了FBI在SQL查询优化中的作用。FBI所用的函数可以是用户自己创建的函数,该函数越复杂,基于该函数创建FBI对SQL查询性能的优化作用越明显。
4.2.2 应用物化视图和查询重写
物化视图是一个预计算结果集,其中通常包含聚集与多表连接等复杂操作。数据库自动维护物化视图,且随用户的要求进行刷新。查询重写机制就是用数据库中的替代对象(如物化视图)将用户提交的查询重写为完全不同但功能等价的查询。查询重写对用户透明,用户完全按常规编写访问数据库的查询语句,优化程序(CBO)自动决定是否对用户提交的查询进行重写。查询重写是提高查询性能的一种非常有效的方法,尤其是在数据仓库环境中针对汇总、多表连接以及其它高成本的操作方面。
下面以一个非常简单的例子来演示物化视图和查询重写在优化SQL查询性能方面的作用。
select dept.deptno,dept.dname,count(*)
from emp,dept
where emp.deptno=dept.deptno
group by dept.deptno,dept.dname
查询计划及主要统计数据如下:
执行计划:
-----------------------------------------
……
2 1 HASH JOIN (Cost=5 Card=14 Bytes=224)
3 2 TABLE ACCESS (FULL) OF 'DEPT' (Cost=2 Card=4 Bytes=52)
4 2 TABLE ACCESS (FULL) OF 'EMP' (Cost=2 Card=14 Bytes=42)
主要统计数据:
-----------------------------------------
305 recursive calls
46 consistent gets
创建物化视图EMP_DEPT:
create materialized view emp_dept build immediate
refresh on demand
enable query rewrite
as
select dept.deptno,dept.dname,count(*)
from emp,dept
where emp.deptno=dept.deptno
group by dept.deptno,dept.dname
/
再次执行查询,执行计划及主要统计数据如下:
执行计划:
-------------------------------------
……
1 0 TABLE ACCESS (FULL) OF 'EMP_DEPT' (Cost=2 Card=327 Bytes=11445)
主要统计数据:
------------------------------------
79 recursive calls
28 consistent gets
可见,在建立物化视图之前,首先执行两个表的全表扫描,然后进行HASH连接,再进行分组排序和选择操作;而建立物化视图后,CBO自动将上述复杂操作转换为对物化视图EMP_DEPT的全扫描,相关的统计数据也有了很大的改善,递归调用(RECURSIVE CALLS)由305降到79,逻辑I/O(CONSISTENT GETS)由46降为28。
4.2.3 将频繁访问的小表读入CACHE
逻辑I/O总是快于物理I/O。如果数据库中存在被应用程序频繁访问的小表,可将这些表强行读入KEEP池,从而避免物理I/O的发生。
4.3 多表连接优化
最能体现查询复杂性的就是多表连接,多表连接操作往往要耗费大量的CPU时间和内存,因此多表连接查询性能优化往往是SQL优化的重点与难点。
4.3.1 消除外部连接
通过消除外部连接,不仅使得到的查询更易于读取,而且性能也经常可以得到改善。一般的思路是,有以下形式的查询:
SELECT …,OUTER_JOINED_TABLE.COLUMN
FROM SOME_TABLE,OUTER_JOINED_TO_TABLE
WHERE …=OUTER_JOINED_TO_TABLE(+)
可转换为如下形式的查询:
SELECT …,(SELECT COLUMN FROM OUTER_ JOINED_TO_TABLE WHERE …)FROM SOME_TABLE;
4.3.2 谓词前推,优化中间结果
多表连接的性能低下多数是因为连接操作与过滤操作的次序不合理,大多数用户在编写多表连接查询时,总是先进行连接操作再应用过滤条件,这导致服务器做了太多的无用功。针对这类问题,其优化思路就是尽可能将过滤谓词前推,使不符合条件的记录提前被筛选掉,只对符合条件的少数记录进行连接处理,这样可成倍的提高SQL查询效能。
标准连接查询如下:
Select a.prod_name,sum(b.sale_quant),
sum(c.sale_quant),sum(d.sale_quant)
From proct a,tele_sale b,online_sale c,store_sale d
Where a.prod_id=b.prod_id and a.prod_id=c.prod_id
and a.prod_id=d.prod_id And a.order_date>sysdate-90
Group by a.prod_id;
启用内嵌视图,且将条件a.order_date>sysdate-90前移,优化后代码如下:
Select a.prod_name,b.tele_sale_sum,c.online_sale_sum,d.store_sale_sum From proct a,
(select sum(sal_quant) tele_sale_sum from proct,tele_sale
Where proct.order_date>sysdate-90 and proct.prod_id =tele_sale.prod_id) b,
(select sum(sal_quant) online_sale_sum
from proct,tele_sale
Where proct.order_date>sysdate-90 and proct.prod_id =online_sale.prod_id) c,
(select sum(sal_quant) store_sale_sum
from proct,store_sale
Where proct.order_date>sysdate-90 and proct.prod_id =store_sale.prod_id) d,
Where a.prod_id=b.prod_id and
a.prod_id=c.prod_id and a.prod_id=d.prod_id;
5 结束语
SQL语言在数据库应用中占有非常重要的地位,其性能的优劣直接影响着整个信息系统的可用性。论文从影响SQL性能的最主要的三个方面入手,分析了如何优化SQL查询的I/O、避免高成本的排序操作和优化多表连接。需要强调的一点是,理解SQL语句所解决的问题比SQL调优本身更重要,因此SQL调优需要系统分析人员、开发人员和数据库管理员密切协作。
参考文献
[1]Thomas Kyte.Effective Oracle by Design:Design and Build High-performance Oracle Application[M],The McGral- Hill Companies,Inc,2003
[2]Kevin Loney,George Koch,Oracle 9i:The Complete Reference[M],The McGral-Hill Companies,Inc,2002
[3] Oracle9i SQL Reference release 2(9.2)[OL/M],2002.10. http://www.oracle.com/technology/
[4] Oracle9i Data Warehousing Guide release 2(9.2) [OL/M],2002.03. http://www.oracle.com/technology/
[5]Alexey Danchenkov,Donald Burleson,Oracle Tuning:The Definitive Reference[OL/M],Rampant Techpress,2006.
[6] Oracle9i Database Concepts release 2(9.2) [OL/M],2002.08. http://www.oracle.com/technology/
[7] Oracle9i supplied plsql packages and types reference release 2(9.2) [OL/M],2002.12. http://www.oracle.com/ technology/