如何学习Oracle(共12篇)
如何学习Oracle 篇1
如何学习Oracle-给我的朋友们
很多朋友经常问起学习Oracle的方法,在这里我把写在《Oracle数据库性能优化》一书前面的话贴在这里,供大家参考,希望能对来这里的朋友有所帮助。
-----------------
经常有朋友会问,应该如何学习Oracle,怎样才能快速提高?我把自己的一点心得写在这里,供大家参考。
其实学习任何东西都是一样,没有太多的捷径可走,必须打好了坚实的基础,才有可以在进一步学习中得到快速提高。
王国维在他的《人间词话》中曾经概括了为学的三种境界,我在这里套用一下:
古今之成大事业、大学问者,罔不经过三种之境界。
“昨夜西风凋碧树。独上高楼,望尽天涯路。”此第一境界也。
“衣带渐宽终不悔,为伊消得人憔悴。”此第二境界也。
“众里寻他千百度,蓦然回首,那人却在灯火阑珊处。”此第三境界也。
学习Oracle,这也是你必须经历的三种境界。
第一层境界是说,学习的路是漫漫的,你必须做好充分的思想准备,如果半途而废还不如不要开始。
这里,注意一个“尽”字,在开始学习的过程中,你必须充分阅读Oracle的基础文档,概念手册、管理手册、备份恢复手册等(这些你都可以在http://tahiti.oracle.com 上找到);OCP认证的教材也值得仔细阅读。打好基础之后你才具备了进一步提升的能力,万丈高楼都是由地而起。
第二层境界是说,尽管经历挫折、打击、灰心、沮丧,也都要坚持不放弃,具备了基础知识之后,你可以对自己感兴趣或者工作中遇到的问题进行深入的思考,由浅入深从来都不是轻而易举的,甚至很多时候你会感到自己停滞不前了,但是不要动摇,学习及理解上的突破也需要时间。
第三次境界是说,经历了那么多努力以后,你会发现,那苦苦思考的问题,那百思不得其解的算法原理,原来答案就在手边,你的思路豁然开朗,宛如拨云见月。这个时候,学习对你来说,不再是个难题,也许是种享受,也许成为艺术。所以如果你想问我如何速成,那我是没有答案的。
不经一番寒彻骨,哪得梅花扑鼻香。
当然这三种境界在实际中也许是交叉的,在不断的学习中,不断有蓦然回首的收获。我自己在学习的过程中,经常是采用“由点及面法”。
当遇到一个问题后,一定是深入下去,穷究根本,这样你会发现,一个简单的问题也必定会带起一大片的知识点,如果你能对很多问题进行深入思考和研究,那么在深处,你会发现,这些面逐渐接合,慢慢的延伸到oracle的所有层面,逐渐的你就能融会贯通。这时候,你会主动的去尝试全面学习Oracle,扫除你的知识盲点,学习已经成为一种需要。
由实践触发的学习才最有针对性,才更能让你深入的理解书本上的知识,正所谓:
“纸上得来终觉浅,绝知此事要躬行”。实践的经验于我们是至为宝贵的。如果说有,那么这,就是我的捷径。
想想自己,经常是“每有所获,便欣然忘食”,兴趣才是我们最好的老师。
Oracle的优化是一门学问,也是一门艺术,理解透彻了,你会知道,优化不过是在各种条件之下做出的均衡与折中。
内存、外存;CPU、IO...对这一切你都需要有充分的认识和相当的了解,管理数据库所需要的知识并不单纯。
作为一个数据库管理人员,你需要做的就是能够根据自己的知识以及经验在各种复杂情况下做出快速正确的判断。当问题出现时,你需要知道使用怎样的手段发现问题的根本;找到问题之后,你需要运用你的知识找到解决问题的方法。
这当然并不容易,举重若轻还是举轻若重,取决于你具备怎样的基础以及经验积累。在网络上,Howard J.Rogers最近创造了一个新词组:Voodoo Tuning,用以形容那些没有及时更新自己的知识技能的所谓的Oracle技术专家。由于知识的陈旧或者理解的肤浅,他们提供的很多调整建议是错误的、容易使人误解的,甚至是荒诞的。他们提供的某些建议在有些情况下也许是正确的,如果你愿意回到Oracle5版或者6版的年代;但是这些建议在Oracle7.0,8.0 或者 Oracle8i以后往往是完全错误的。
后来基于类似问题触发了互联网内Oracle顶级高手的一系列深入讨论,TOM、Jonathan Lewis、HJR等人都参与其中,在我的网站上()上对这些内容及相关链接作了简要介绍,有兴趣的可以参考。
HJR给我们提了很好的一个提示:对你所需要调整的内容,你必须具有充分的认识,否则你做出的判断就有可能是错误的。
这也是我想给自己和大家的一个建议:学习和研究Oracle,严谨和认真必不可少。当然你还需要勤奋,我所熟悉的在Oracle领域有所成就的技术人员,他们共同的特点就是勤奋。
如果你觉得掌握的东西没有别人多,那么也许就是因为,你不如别人勤奋。
要是你觉得这一切过于复杂了,那我还有一句简单的话送给大家:不积跬步,无以至千里。学习正是在逐渐积累过程中的提高。
现在Itpub给我们提供了很好的交流场所,很多问题都可以在这里找到答案,互相讨论,互相学习。这是我们的幸运,我也因此非常感谢这个网络时代。
Itpub的第二本书即将出版,谨以此祝愿Itpub越来越好,也愿我们的书能给大家带来知识和帮助。
如何学习Oracle 篇2
关键词:oracle显式游标,隐式游标,绑定变量
做为一个应用系统维护人员, 和数据库打交道是必不可少的。当发现表中的数据有误时, 我们可以通过SQL语句去查询修改, 但是当我们要修改一批数据, 或者要对在前台增加某项处理功能的时候, 我们就要编写存储过程, 通过直接后台执行或前台功能调用的方法处理批量数据。企业级的数据库都是比较繁忙的, 所以如何编写高效健壮的ORACLE存储过程就摆在了维护人员的面前。
一、定义严格的数据类型
Oracle的表中对数据类型有严格的定义, 对于表中的列一般要定义:列的数据类型、列的最大长度和适当的精度、对于可接受值的约束。在存储过程中对于变量的定义没有以上的严格要求, 但是过程中的变量一般都对应表中的列值, 所以如果能够将两者关联定义对于过程健壮性是很好的保障。
1. 使用%TYPE和%ROWTYPE属性
存储过程中大多数的变量直接与数据表的列挂钩, %TYPE可以将这种关系在代码中清晰的体现出来。如下面二个变量的定义都存储tf_f_user_customer.cust_name:
V_custname varchar2 (200) ;
V_custname tf_f_user_customer.cust_name%type;
对于第一种定义, 如果表中的cust_name长度大于200个字符, 那么执行时就会报错, 需要重新修改V_custname的定义, 但是对于第二种定义, 由于变量和字段类型相关联, 所以能够存储到字段的值必然也能够存储到变量里, 且修改了字段的类型, 变量的类型也会随之更改, 不用人工再做调整, 减轻了维护的工作量。
和%TYPE类似的还有一个%ROWTYPE属性, 它是将一个记录型的变量和一个表的所有列关联。如定义:v_trade tf_b_trade%rowtype;这样我们可以不必一个一个的定义每一个字段, 可以将一个表中的一行记录取出后放到v_trade变量中统一处理, 这种方法对于存储过程的编写和后期的维护都是非常方便的。
2. 避免隐式数据类型转换
保证所有适当的变量都是强类型的可以获得性能上的好处, 虽然ORACLE在数据处理方面对于开发者的考虑是很周到的, 如果将字符串赋给数值型变量, ORACLE会尝试将其转换成数据并完成赋值操作, 但是为对系统资源的消耗是很大的。实验结果表明96%的执行时间消耗在了类型转换上。
二、显式游标和隐式游标
我们在编写存储过程的时候往往会用到显式游标, 显式游标我们可以完全控制, 且在一些教科书上都有一个结论:显式游标的性能是最好的。但是实验的结果表明, 隐式游标在代码上更简洁, 且在大多数的情况下性能等同于等价的显式游标, 甚至更强。
1. 单行的读取
我们在存储过程中使用SELECT INTO语句 (即隐式游标) 对单行数据进行读取, 有3种可能的结果: (1) 结果集中只含有一行, 且SELECT成功。 (2) 结果集中不包含任何行, 引发NO_DATA_FOUND异常。 (3) 结果集中含有两行或更多行, 引发TOO_MANY_ROW异常。
有些人可能认为了发现第三个错误, 该语句至少要执行两次, 然而可以编写显示游标, 控制代码只读取一次, 所以显式游标的性能更好。但是在ORACLE7.1以后的版本引入了预读的概念, 一次读取两行的数据, 所以NO_DA-TA_FOUND异常和TOO_MANY_ROW异常都是由单次读取决定, 且隐式游标编写更简洁, 可读性更好。实验表明, 单行读取的隐式游标要比显式游标效率提高20%。
2. 多行的读取
在FOR循环中使用隐式游标的语法来读取行集也是很有帮助的。可以在FOR循环中直接使用SQL语句, 这要做可以不需要扫描代码的声明部分来检查定义。
三、绑定变量
在oracle中, 对于一个提交的sql语句, 存在两种可选的解析过程, 一种叫做硬解析, 一种叫做软解析。不使用绑定变量, 对于执行频度非常高的sql, 每次都会进行硬解析, 这将带来很大的危害, 而使得oracle能够重复利用执行计划的方法就是采用绑定变量。绑定变量的实质就是用变量替代sql语句中的常量。通过绑定变量使得每次提交的sql语句都完全一样。
oracle学习心得 篇3
oracle分两大块,一块是开发,一块是管理。开发主要是写写存储过程、触发器什么的,还有就是用Oracle的Develop工具做form。有点类似于程序员,需要有较强的逻辑思维和创造能力,个人觉得会比较辛苦,是青春饭J;管理则需要对oracle数据库的原理有深刻的认识,有全局操纵的能力和紧密的思维,责任较大,因为一个小的失误就会down掉整个数据库,相对前者来说,后者更看重经验。
因为数据库管理的责任重大,很少公司愿意请一个刚刚接触oracle的人去管理数据库。对于刚刚毕业的年轻人来说,可以先选择做开发,有一定经验后转型,去做数据库的管理。当然,这个还是要看人个的实际情况来定。
二、学习方法
我的方法很简单,就是:看书、思考、写笔记、做实验、再思考、再写笔记
看完理论的东西,自己静下心来想想,多问自己几个为什么,然后把所学和所想的知识点做个笔记;在想不通或有疑问的时候,就做做实验,想想怎么会这样,同样的,把实验的结果记下来。思考和做实验是为了深入的了解这个知识点。而做笔记的过程,也是理清自己思路的过程。
学习的过程是使一个问题由模糊到清晰,再由清晰到模糊的过程。而每次的改变都代表着你又学到了一个新的知识点。
学习的过程也是从点到线,从线到网,从网到面的过程。当点变成线的时候,你会有总豁然开朗的感觉。当网到面的时候,你就是高手了
很多网友,特别是初学的人,一碰到问题就拿到论坛上来问,在问前,你有没有查过书,自己有没有研究过,有没有搜索一下论坛?这就叫思维惰性,没有钻研的学习态度,不管学什么东西,都不会成功的。
三、oracle的体系
oracle的体系很庞大,要学习它,首先要了解oracle的框架。在这里,简要的讲一下oracle的架构,让初学者对oracle有一个整体的认识。
1、物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成)
控制文件:包含维护和验证数据库完整性的必要信息、例如,控制文件用于识别数据文件和重做日志文件,一个数据库至少需要一个控制文件
数据文件:存储数据的文件
重做日志文件:含对数据库所做的更改记录,这样万一出现故障可以启用数据恢复。一个数据库至少需要两个重做日志文件
参数文件:定义Oracle 例程的特性,例如它包含调整SGA 中一些内存结构大小的参数
归档文件:是重做日志文件的脱机副本,这些副本可能对于从介质失败中进行恢复很必要。
密码文件:认证哪些用户有权限启动和关闭Oracle例程
2、逻辑结构(表空间、段、区、块)表空间:是数据库中的基本逻辑结构,一系列数据文件的集合。段:是对象在数据库中占用的空间
区:是为数据一次性预留的一个较大的存储空间
块:ORACLE最基本的存储单位,在建立数据库的时候指定
3、内存分配(SGA和PGA)
SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息, 它是在Oracle 服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。
PGA:包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA 正相反PGA 是只被一个进程使用的区域,PGA 在创建进程时分配在终止进程时回收
4、后台进程(数据写进程、日志写进程、系统监控、进程监控、检查点进程、归档进程、服务进程、用户进程)
数据写进程:负责将更改的数据从数据库缓冲区高速缓存写入数据文件
日志写进程:将重做日志缓冲区中的更改写入在线重做日志文件
系统监控:检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复进程监控:负责在一个Oracle 进程失败时清理资源
检查点进程:负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。
归档进程:在每次日志切换时把已满的日志组进行备份或归档
服务进程:用户进程服务。
用户进程:在客户端,负责将用户的SQL 语句传递给服务进程,并从服务器段拿回查询数据。
5、oracle例程:Oracle 例程由SGA 内存结构和用于管理数据库的后台进程组成。例程一次只能打开和使用一个数据库。
6、SCN(System Change Number):系统改变号,一个由系统内部维护的序列号。当系统需要更新的时候自动增加,他是系统中维持数据的一致性和顺序恢复的重要标志。
四、深入学习
管理:可以考OCP证书,对oracle先有一个系统的学习,然后看Oracle Concepts、oracle online document,对oracle的原理会有更深入的了解,同时可以开始进行一些专题的研究如:RMAN、RAS、STATSPACT、DATAGUARD、TUNING、BACKUP&RECOVER等等。
开发:对于想做Oracle开发的,在了解完Oracle基本的体系结构之后,可以重点关注PL/SQL及Oracle的开发工具这一部分。PL/SQL主要是包括怎么写SQL语句,怎么使用Oracle本身的函数,怎么写存储过程、存储函数、触发器等。Oracle的开发工具主要就是Oracle自己的Developer Suite(Oracle Forms Developer and Reports Developer这些),学会如何熟练使用这些工具。
如何调用Oracle存储过程 篇4
创建语句:create or replace procedure 存储过程名
如果没有or replace语句,则仅仅是新建一个存储过程,如果系统存在该存储过程,则会报错。Create or replace procedure 如果系统中没有此存储过程就新建一个,如果系统中有此存储过程则把原来删除掉,重新创建一个存储过程。
存储过程名定义:包括存储过程名和参数列表。参数名和参数类型。参数名不能重复, 参数传递方式:IN, OUT, IN OUT
IN 表示输入参数,按值传递方式。
OUT 表示输出参数,可以理解为按引用传递方式。可以作为存储过程的输出结果,供外部调用者使用。
IN OUT 即可作输入参数,也可作输出参数。
参数的数据类型只需要指明类型名即可,不需要指定宽度。
参数的宽度由外部调用者决定。
过程可以有参数,也可以没有参数
变量声明块:紧跟着的as (is )关键字,可以理解为pl/sql的declare关键字,用于声明变量。
变量声明块用于声明该存储过程需要用到的变量,它的作用域为该存储过程,
另外这里声明的变量必须指定宽度。遵循PL/SQL的变量声明规范。
过程语句块:从begin 关键字开始为过程的语句块。存储过程的具体逻辑在这里来实现。
异常处理块:关键字为exception ,为处理语句产生的异常。该部分为可选
结束块:由end关键字结果。
存储过程的参数传递方式
存储过程的参数传递有三种方式:IN,OUT,IN OUT .
IN 按值传递,并且它不允许在存储过程中被重新赋值。如果存储过程的参数没有指定存参数传递类型,默认为IN
例子:
创建:
CREATE OR REPLACE PROCEDURE P_1(S_NO INT)
AS
S_AGE INT;
BEGIN
SELECT SAGE INTO S_AGE FROM STU WHERE SNO=S_NO;
DBMS_OUTPUT.PUT_LINE(S_AGE);
END P_1;
调用:
EXEC P_1(1);
如何学习Oracle 篇5
IT策略中经常指出密码应该有最小的长度且应该包含大写字母、小字字母、数字和特殊字符的混合。
Oracle中应该避免将特殊字符@用于密码中,因为在Oracle中,@符号用来表明使用哪一台Oracle服务器。SQL *Plus连接语句的完整格式如下:
CONNECT username/password@alias
其中alias是一个Oracle Net别名,代表一个服务器、断口和实例名。
列表A显示了在密码中使用了@字符时,产生的错误:ORA-12154,“TNS:不能解析指定的连接标识符。”@符号被错误的用作Oracle Net别名,因为@之后的部分不是一个有效的别名从而产生错误。
列表 A
SQL>CREATE USER testuser1 IDENTIFIED BY “Cat”
2 DEFAULT TABLESPACE users
3 TEMPORARY TABLESPACE temp;
User created.
SQL>CREATE USER testuser2 IDENTIFIED BY “H@t”
2 DEFAULT TABLESPACE users
3 TEMPORARY TABLESPACE temp;
User created.
SQL>GRANT create session TO testuser1, testuser2;
Grant succeeded.
SQL>connect testuser1/cat
Connected.
SQL>connect testuser2/h@t
ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified
Warning: You are no longer connected to ORACLE.
SQL>connect testuser2/“h@t”
Connected.
SQL>
The workaround is to enclose the password in quotes, as shown in the listing.
这个问题在Oracle 10g第二版中也存在,
同时,值得注意的是testuser1使用密码“cat,”也可以成功登录,即使他的密码是“cat.”在下一个主要发行11g中,Oracle计划用一个更安全的密码算法取代原来的算法,新的算法允许密码中使用真正的大写字母和小写字母。同时@问题也不会再出现。
如何学习Oracle 篇6
Oracle 9i是当前业界内最为简单、完整、智能化的用于互联网上协作各种应用的软件基础架构。其实质上就是Oracle 9i Database、Application Server以及Developer Suite的完整集成。现如今, 随着软件逐渐成为一种托管服务, Oracle 9i以其在自身的高可靠性、高所伸缩性以及高智能化, 将会成为互联网上高质量电子商务服务实现的关键软件。Oracle 9i在8i的基础之上又增添了许多新的功能和特性, 这些功能和特性主要体现在以下几个方面上:其一, 实现连续的数据可用性。Oracle 9i极大程度地扩展了其在互联网数据库可用性方面的地位, 具体包括:全球领先的数据保护环境、联机数据演变、准确的数据库修复以及自我服务错误更正等功能;其二, 可伸缩性和性能。Oracle 9i不仅允许电子商务扩展到千万用户, 而且用户每小时都能完成数百万的事物处理。具体包括:可伸缩的绘画状态管理、电子商务优化等等;其三, 提供端到端的安全体系结构。Oracle 9i在8i的基础上继续为用户提供业界最为安全可靠的应用和部署平台, 其中主要包括三层安全、标准的PKI、深层数据库保护、改进后的企业用户安全、数据加密以及标签安全等等;其四, 基于电子商务应用的程序开发平台;其五, 先进的可管理性。主要采用的管理方法有, 自我管理数据、改进并简化的操作管理、精细化自动化的资源管理、管理工具和技巧以及端到端的系统管理解决方案。
2 Ora cle 9i数据库常见的资源问题
在Oracle 9i数据库运行的过程中, 经常会遇到一些资源瓶颈问题, 这些瓶颈现象大致可分为以下几种类型:其一, 内存瓶颈。主要是指当Oracle 9i数据库的运行进程需要较大的内存空间时, 其所需的内存空间超过系统能够为其提供的内存空间, 此时便会出现内存瓶颈现象, 一旦出现这种问题时, 便会对Oracle 9i数据库进程的正常运行造成影响;其二, CPU瓶颈。虽然在大多数的情况下, 都是由操作系统的内核来管理和分配有效的CPU给Oracle 9i数据库进行使用, 但有时仍旧会发生过多应用进程对CPU使用周期竞争的情况, 这一现象就是所谓的CPU瓶颈;其三, 磁盘I/O瓶颈。当系统内存的缓冲区空间有所不足时, 或是表空间及其相关文件在硬件上的分配不合理时, 便会造成Oracle 9i运行进程对磁盘I/O进行频繁地读写;其四, Oracle 9i资源瓶颈。对于上述的几种资源瓶颈, 一般都可采取多种有效地措施从不同的方面对其进行相应的调整, 然而, 当对Oracle 9i数据库的其中任何一个方面的资源进行调整后, 都有可能使其它方面的性能受到影响, 为此, 在Oracle 9i服务器进行性能优化调整时, 必须采取综合优化调整的策略, 这样才能保证Oracle 9i数据库的整体性能。
3 Ora cle 9i数据库的优化调整策略
3.1 服务器优化
在Oracle数据库中服务器无疑是整个系统的核心部分, 其性能优劣直接对影响整个系统的性能。为此, 在对Oracle 9i数据库性能进行优化调整时, 应先对整个服务器系统进行优化。具体方法如下:首先, 应采取相应的措施使Oracle服务器的使用资源达到最大化程度, 而且在运行的过程中尽可能不要同时启动太多的服务项目, 也不要使用磁盘加密功能, 占用磁盘的空间尽可能不要超过磁盘实际空间的70%, 并选择使用硬件RAID来替代软件RAID;其次, 增大计算机自身的内存, 并减少虚拟内存的使用。与此同时应为Oracle数据库服务器设置操作系统进程优先级, 哟此来确保所有的后台运作以及前台数据库服务器进程都能够具备同等的优先级。
3.1.1 内存分配的优化技术。
具体包括以下几个方面的优化: (1) 库高速缓存的优化。一般情况下, 库高速缓存中包含共享与私用SQL和PL/SQL区, 想要对其进行优化调整, 应当先了解其活动情况, 库缓冲区的活动统计信息通畅会保留在动态性能表$librarcache数据字典当中, 因此, 可对该表进行查询来了解库缓冲区的具体活动情况, 借此来决定如何对其进行优化调整, 进而达到提高系统效率的目的; (2) 字典高速缓存的优化。在数据字典缓冲区内主要包含与数据库有关的结构、用户以及实体信息等等。而数据字典的命中率, 对于整个系统的性能有着较大的影响。通常该缓冲区的使用情况记录都保存在动态性表中, 可对此进行查询后确定优化调整方法; (3) 日志缓冲区的优化。该区主要用于存储写入Redo日志前的数据库修改信息, 当requests与entries两者之间的比值大于1:5000时, 应增大该缓冲区。
3.1.2 采用分区技术对内存进行优化。
通过分区可以将较大的数据库对象分解成为独立且易于管理的较小段, 这有利于提高较大数据库对象的可用性, 而且还可进一步对数据存储及访问进行优化。
3.1.3 硬件优化。比较常用的方法是多CPU、多磁盘, 并采用容量较大的内存, 增强贷款的数据I/O能力。
3.2 调整磁盘I/O
磁盘I/O的瓶颈现象是较为容易识别的性能问题, 采用跨所有可用的磁盘均匀地平衡I/O能够有效地减少磁盘存取的时间, 对于一些较小的数据库以及不使用查询功能的数据库应确保不同的数据文件和表空间跨可用磁盘分布。
3.3 简化排序
应尽可能简化并避免对大型表中的数据进行重新排序, 若是可以通过索引能够以一定的次序自动产生输出时, 则优化器便可以避免这种排序情况发生。因此, 为避免不必要的排序, 应当正确增减索引。
摘要:随着计算机网络技术的不断发展, 其在各个领域中的应用也越来越广泛, 与此同时数据库也随之获得了广泛应用。在互联网上的诸多数据库当中, Oracle 9i数据库以其自身诸多的优点, 受到业界一直的好评和认可。然而, 在实际运行过程中, 经常会出现一些瓶颈问题, 从而影响了Oracle 9i数据库的运行。为此, 应采取相应的策略对Oracle 9i数据库的性能进行调整优化。首先对Oracle 9i数据库进行概述, 进而分析了Oracle 9i数据库常见的资源问题, 并在此基础上提出Oracle 9i数据库的优化调整策略。
关键词:Oracle 9i,数据库,优化调整,性能
参考文献
[1]张卓晖.TPC-C测试基准的研究扩展与Oracle 9i数据库性能调优[D].天津:南开大学, 2007 (5) .
[2]刘俊英, 陈军霞.Oracle 9i数据库中自动Undo表空间管理[J].河北科技大学学报, 2010 (5) .
[3]徐海.基于Oracle 9i的民航气象数据管理系统设计与实现[D].成都:四川大学, 2009 (5) .
[4]谭德宝.程学军.基于ArcSDE+Oracle 9i的防洪减灾综合数据库的构建及应用[J].武汉大学学报 (信息科学版) , 2009 (31) .
如何学习Oracle 篇7
系统环境使用的是ol5.8,采用oracle-validate-rpm来自动配置oracle的系统环境。
安装路径需要手工创建,在这里需要准备两个两个path($oracle_base)
ora11g:
创建 ORACLE 软件路径
mkdir -p /u01/app/oracle/product/11.2.0/db_1
chown oracle:dba -R /u01
chmod 744 –R /u01
设置oracle用户SHELL参数:
vi /home/oracle/.bash_profile
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME
ORACLE_SID=ora11g; export ORACLE_SID
ORACLE_TERM=vt100; export ORACLE_TERM
TNS_ADMIN=$ORACLE_HOME/network/admin;export TNS_ADMIN
NLS_LANG=american_america.zhs16gbk; export NLS_LANG
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib; export LD_LIBRARY_PATH
LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib ;export LIBPATH
ORA_DB=$ORACLE_HOME/dbs;export ORA_DB
CLASSPATH=$ORACLE_HOME/JRE/lib:$ORACLE_HOME/JRE/lib/rt.jar:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
PATH=$ORA_CRS_HOME/bin:$ORACLE_HOME/bin:$PATH; export PATH
可以使用同一个dba oinstall 组,
ora10:
user:oracle10g
useradd -d /home/oracle10g -u 54322 -g oinstall -G dba oracle10g
创建 ORACLE 软件路径:
mkdir -p /u02/app/oracle/product/10.2.0/db_1
chown oracle:dba -R /u02
chmod 744 –R /u02
设置oracle用户SHELL参数:
vi /home/oracle10g/.bash_profile
ORACLE_BASE=/u02/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME
ORACLE_SID=ora10g; export ORACLE_SID
ORACLE_TERM=vt100; export ORACLE_TERM
TNS_ADMIN=$ORACLE_HOME/network/admin;export TNS_ADMIN
NLS_LANG=american_america.zhs16gbk; export NLS_LANG
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib; export LD_LIBRARY_PATH
LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib ;export LIBPATH
ORA_DB=$ORACLE_HOME/dbs;export ORA_DB
CLASSPATH=$ORACLE_HOME/JRE/lib:$ORACLE_HOME/JRE/lib/rt.jar:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
PATH=$ORA_CRS_HOME/bin:$ORACLE_HOME/bin:$PATH; export PATH
安装中遇到的的问题及解决方法;
(a)
Oracle面试题库 篇8
A.UPDATE
B.EDIT
C.SELECT
D.ALTER TABLE
2.用SQLPLUS的_____命令可以查看表的结构信息,包括列的名称和数据类型
A DESCRIPTION
B DESC
C SHOW TABLE
D SHOW USER
3. Oracle的前端工具是 :
A SQL*PLUS
B C++
C PL/SQL
D JAVA
4. 在SQLPLUS中,如何运行SQL脚本程序
A /
B @脚本
C EXE 脚本
D 不能在SQLPLUS中直接运行脚本
5. 用命令将SQLPLUS缓冲区中的内容保存到文件中,使用下列哪种方法
A 将缓冲区的内容Ctrl+C,然后再Ctrl+V到文件中即可
B 使用SAVE命令参数是文件路径
C WRITE 方式,参数是文件路径
D Oracle会自动保存
6. 用来设置一行能够显示的字符长度的命令是
A SET LINESIZE
B SET LINE
C SET LINEBUFFER
D SET SIZELINE
7. 以下哪个命令用来设置查询显示结果的列宽
A SET COLUMN SIZE
B COLUMN 列 FORMAT 长度
C COLUMN 列 长度
D 长度 OF COLUMN
8. 如何判断数据库的时区?
解答:SELECT DBTIMEZONE FROM DUAL;
22. 解释GLOBAL_NAMES设为TRUE的用途
解答:GLOBAL_NAMES指明联接数据库的方式。如果这个参数设置为TRUE,在建立数据库链接时就必须用相同的名字连结远程数据库
9. 如何加密PL/SQL程序?
解答:WRAP
10. 解释FUNCTION,PROCEDURE和PACKAGE区别
解答:function 和procedure是PL/SQL代码的集合,通常为了完成一个任务。procedure 不需要返回任何值而function将返回一个值在另一方面,Package是为了完成一个商业功能的一组function和proceudre的集合
11. 解释TABLE Function的用途
解答:TABLE Function是通过PL/SQL逻辑返回一组纪录,用于普通的表/视图。他们也用于pipeline和ETL过程。
12. 举出3种可以收集three advisory statistics
解答:Buffer Cache Advice, Segment Level Statistics, Timed Statistics
13. Audit trace 存放在哪个oracle目录结构中?
解答:unix $ORACLE_HOME/rdbms/audit Windows the event viewer
14. 解释materialized views的作用
解答:Materialized views 用于减少那些汇总,集合和分组的信息的集合数量。它们通常适合于数据仓库和DSS系统。
15. 当用户进程出错,哪个后台进程负责清理它
解答: PMON
16. 哪个后台进程刷新materialized views?
解答:The Job Queue Processes.
17. 如何判断哪个session正在连结以及它们等待的资源?
解答:V$SESSION / V$SESSION_WAIT
18. 描述什么是 redo logs
解答:Redo Logs 是用于存放数据库数据改动状况的物理和逻辑结构。可以用来修复数据库.
19. 如何进行强制LOG SWITCH?
解答:ALTER SYSTEM SWITCH LOGFILE;
20. 举出两个判断DDL改动的方法?
Oracle实训总结 篇9
在这一周Oracle数据库管理与应用的实训的时间里,实训老师针对我们本学期的学习,有针对性地对我们进行了很有价值的实训工作,从最基础的字段类型,到一般的Oracle语句,如创建数据表、视图、存储过程、触发器等,给我们细心讲解,虽然Oracle数据库管理与应用的课已经学习了将近一学期,但对其简单的知识点运用的都不是很熟练,没能真正去融会贯通。
不过,经过为期一周的针对性实训,我学到了很多知识,把以前学的所有知识点都贯穿到一起,又温习了一遍,让我们能从真正意义上了解到Oracle数据库的用处。
ORACLE花园酒店笔试经验 篇10
夜了~~所以不打算多说了~简单回顾一下今天行程,因为~~今天算是到现在为止的另一番求职体验.
最初计划是去华师招聘会的~因为看中了两家公司,保利和新思维.
一切都准备好了,可惜东风转方向了...昨天下午小猫又跑来问我有没收到通知,我才知道ORACLE发邮件给我了,花园酒店宣讲加笔试.忙乱了一晚上,准备打印材料,查阅公司资料,查PAC EXAM...晚饭变成11点消夜...一直撑到1点多..倒床不起~ 早上6点45,突然自己就醒了...连闹钟也省了...梳洗后一边等小猫一边继续看公司资料(不过其实看来看去还是一样..等下解释...)
7点50去小猫宿舍等...臭小猫磨磨蹭蹭,过了8点才出门.车站堆满了人,无论是甲骨文还是华师,都要坐245,车又迟到了...等了半小时,刚决定回头打的,车就来了.刷...车门塞了起码50多人.好不容易挤上车.摇摇晃晃,9点07才到花园酒店...脚已经开始不行了...那对很烂的高跟鞋....
进去连身份证都没检我,找了个最靠右边的位置坐.9点24,宣讲开始. 睡得不够,差点听睡着了,硬撑着,眼皮快掉下来时就那起水杯喝(原因快睡着时拿水杯很容易掉...要抓紧点...就醒来了...)宣讲还OK, 就是那2个培训生分享那段2个人都赶时间的说,太急了,很多值得说的都没交代.QNA时大家问题太多延长了时间(其实有些人的问题好没水平...重复人家问过的也有,提之前宣讲强调过的问题也有...浪费机会...)本来准备了个问题,问关于对非IT专业学生的IT掌握程度的,有人问了类似的问题,作罢. 快12点才结束,然后说休息半个钟,门口一人一袋吃的.出去排队拿~一小袋饼干和西点(那个叉烧酥好难吃~饼干倒不错).厕所也得排长龙...然后在门口不远开吃,聊天,碰见晓华,碰见慧平,碰见慧琪,回座位时还碰见ADREAMS,吹了一下水.回座位时发现前面倒了一堆人,太困了吧~不想睡,怕闭了眼睛等下会更困,连忙翻进场时派的公司介绍(全英....),看了大半页,隔壁的女生搭讪(原来她广工的英文专业,发现她有个习惯,看到有纸就在上面涂鸦,画圈的...还写字~呵呵~看来她内心可能有点寂寞哦~)吹了一下就断了.继续看报.然后就12点45笔试时间了.听了一通纪律问题,要求等等,发卷.填信息,看例题.开始.
具体考了什么不全记得了,10部分,前7部分中文,有流程图推理,其实就跟SQL时学的那个什么IF..的那个形式一样,只是IF那里改成什么抽到红球抽到黑球之类.第一个还算可以,第2个就开始有点乱了,第3个图完全看不明白,飞了,第4个还是有点晕...做完剩5分钟,回头撞第3个图.好象是15分钟的题.然后停止,下一部分,顺序忘了,速算,3分钟10题(还是5分钟??).记得是用估算做得比较快,有些不会,代个数进去计...有一部分好象是数学推理,题型忘了...那个时候最容易忘事,完全投入混乱的计算当中...然后是做得最快的一部分...IT知识题...全蒙的...什么5 的什么叉树什么二进制是多少,胡乱填,做完了居然剩5分钟(那个监考很抵死,在我旁边的走道走来走去,可能很诧异我提前做完了,居然停在我身边不走了,隐约感受到他的奇异的眼神,估计他刚开始时以为碰到牛人了,结果仔细一看答卷,立刻明白是来白撞的,所以站了不够10秒就走了).另外还有判断题,给个表, 对照题目,看有没错字,号码数字等有没错.中文部分只记得这些了,然后是英文.先是语法题,巨简单,还给了10分钟,不够5分钟就完了,百无聊赖的等.然后是选反义词,好象有13个词...看得懂的只有3题...其他又继续蒙...又提前做完了.最后一部分阅读,挺长的.讲潮涨潮落的.有些题目答案不大清晰,找了很久都不SURE...然后就到时间了.先收题目,收完再收答卷.中间等的时候突然发现对错题有一题很奇怪的在5里画了圈(那里只可能有1和2 选,对和错),一瞄广工的发现那题也还是选1,2的,估计是选2时混乱了填了5去了,偷偷擦了改了.然后收答卷,走人.整个过程有点平淡,不过单是花园酒店估计也算是不错的`记忆了.反正它全国才招200人,其中100研发的,估计也轮不到我面试,经历了就罢了.
出来了以后迷迷糊糊跟小猫逛什么建设六马路,发现了上次那个意大利餐馆,那个广场原来叫宜安广场...然后发现找不了回去的公交,又硬撑着高跟鞋一扭一扭的走回花园酒店那头...等车,上车,还是没位子,继续站......(不过还好,车上的电视分散了我的痛苦,是在说海南的一个观音庙和九王庙的来历的,有趣)后来觉得有点不适想吐,怕是在摇晃的车子盯屏幕久了,放弃看电视.两头望.过了大金钟路才有位.到站,下车,快步回宿舍,脱掉鞋子.这段旅程终于告一段落了... 下星期天还会有一场笔试,给今天考不了的人备的.当然也提醒我们不能重复考,重复的只取最低分等等.
ORACLE之旅到此应该结束了.可惜去不了华师.听说很多人,逼爆,连新思维也很多人.回来到处问人家那边情况,为了3号有充足点的准备.希望有用吧~
Oracle 原厂标准服务内容 篇11
Oracle 标准服务(Oracle Premier Support), 为客户提供每周7 天,每天24 小时的服务,帮助客户解决安装及使用Oracle 软件产品时遇到的问题。
Oracle有经验丰富的技术工程师协助服务期内的客户解决在使用Oracle产品过程中所遇到的与Oracle产品相关的技术问题,以使客户的信息系统保持高可用性和高可靠性,最大供给限度地提高客户对Oracle技术投资的回报,并帮助客户达到客户的业务目标。产品支持服务包括通过Metalink随时检索Oracle全球知识库、技术文档库等的“全自助式”服务及通过Metalink和/或热线电话以远程、交互式的方式处理客户提交的服务请求(SR)。
产品升级服务提供给客户在服务期内获得Oracle产品升级版本、维护版本和补丁集的权利。
电话支持-800 810 0366
Oracle 中国公司在大连建立了全球响应支持中心。本地支持中心为客户在周一至周五(8:30-18:00)提供中文的电话服务。协助客户和Oracle全球支持中心工程师的沟通、监控关键SR的处理情况。x7 全球免费电话转接
客户在非本地工作时间或节假日拨打热线支持中心寻求技术协助时,Oracle技术支持中心的系统会自动将电话转接至海外该时间段内仍在运作的全球支持中心(英语服务),使客户的问题能不受任何时间的限制得以处理。
客户可以通过800免费电话,得到技术支持服务。
电子服务-Oracle Metalink
Oracle Metalink是Oracle支持服务面向全球Oracle客户提供的基于Web的电子技术服务。Oracle的技术专家队伍每时每刻都在维护及更新该网站的内容。
客户可以通过Metalink随时联机提交新的服务请求、查询现有SR的状态、更新SR及生成和查看SR的管理报告。还可以访问Oracle的全球知识库、交互式论坛。通过对Metalink进行定制可以使客户以更简便的方式寻找验证过的解决方案、下载补丁、查看技术及产品文档,或者定制各种技术信息,使其通过Email自动通知客户,从而使客户可以根据这些宝贵的信息自己动手解决所遇到问题,并在问题的解决过程中不断丰富及提高自己的经验和水平。
Oracle Metalink 包括:
* 24小时免费服务
> 对于服务期内的用户来说,使用基于WEB的支持服务是零花费的。随时多次使用Metalink服务,而不需要任何附加花费。另外,基于互连网的速度及可用情况,还根据自己的计划及需求选择合适的服务时间。
* 技术资料库
> 可以从这里获得到Oracle工程师已经确认的资料、热点文章、产品参照、安装帮助、白皮书、问题/方案等资料,将有助于客户更好的使用Oracle产品。
> 与在Oracle内部使用相同信息源(经过充分测试)分析、查找、解决问题。* 存取文件
> 直接从Oracle Metalink下传patch或patchset。而且不受时间限制,7*24随时恭候。* 个人头条
> 通过客户化Metalink账户,可以定义只需要的信息,并在自己的个人主页主动接受有关信息,如:patches、bugs、新文章等。
> 对于感兴趣的方面将及时收到警告,只收到最恰当的信息。
* 论坛
> 上传客户的问题以得到技术工程师及其他客户的帮助
> 与其它Oracle用户信息共享
* 产品生命周期
> 在线得到产品可用情况,警告,不支持信息
> 通过查找认证情况得到产品相互关系信息
> 通过时刻在线的帮助,在产品生命周期的管理上掌握主动
Oracle的网络会议工具
Oracle Web Conference or Oracle Collaborative Support(OWC or OCS), 是一个全面的、安全的、并被Oracle全球客户广泛使用的一个支持服务系统,通过网络会议的方式连接到客户的系统(即通过Internet上动态所建立的128bit的加密连接,远程连到客户的一台电脑上)。Oracle支持服务人员可以通过所连的客户的电脑来提供远程的监控、问题诊断以及在线解决问题。这种Oracle和客户间的安全连接使得双方能够共同工作、实时检查问题和选择正确的工具来解决问题,从而提高问题的解决效率。
OWC(OCS)是一种比通过Modem拨号方式或VPN连接方式更安全、更便捷的远程接入方式,其具有其它独特的功能,如:丰富的在线交流功能、双方屏幕互切功能等。
每次建立OWC(OCS)连接仅需简单的几个操作步骤!Oracle负责处理客户的SR的工程师会指导客户如何建立一个OWC/OCS的连接,包括提供每次建立新连接所用的不同会议号码。
软件版本升级&支持服务
在产品服务期内,客户可通过如下途径来获得所购买的Oracle产品的升级版本、维护版本、补丁。
* 联机下载
客户可以通过http://edelivery.oracle.com 进入 Oracle Electronic Delivery 站点。一旦登录,客户就可以搜索和下载最新的可用产品。
客户会在浏览器窗口看到下面二个链接:
*edelivery.oracle.com(进入产品下载)
常见问题(了解客户可能碰到的问题)
* 提交Metalink SR,申请产品CD光盘
申请物理版本更新,客户仅需登录http://metalink.oracle.com即可提交申请。具体步骤如下:
> 登录http://metalink.oracle.com
> 选择 “服务请求(Services Request)”
> 选择 “SR Create”
> 输入系统提示问题,如平台版本、客户服务号码、联系电话等
> 选择问题类型 “Version Upgrade Request”,回答相关问题
> 选择 “ 继续创建SR ”
> 根据提示,提供例如要求升级版本、发货地址等信息。
> 提交“SR”
注意,客户可能需要 7 个业务日才能收到物理软件。另外,metalink里面所有带 “ * ” 的内容必须填写。
另外,客户可通过Metalink上的帐号随时下载所需的维护版本(Patch Sets)、单个补丁(Interim Patch)。
Oracle终生支持政策(Lifetime support policy)
终生支持策略,可以让客户预先了解到自己的Oracle产品将会享有多长时间的支持服务。在新的终生支持政策下,客户只要持续拥有Oracle产品的许可,就可以随时获得专业技术人员的服务与支持。Oracle终生支持政策,让客户将产品的升级策略控制在自己手中。
标准服务(Premium Support)首次同时针对技术产品(Oracle数据库和Oracle
Fusion中间件)和应用产品(Oracle E-Business套件、PeopleSoft Enterprise、JD Edwards EnterpriseOne和JD Edwards World)提供为期5年的标准服务(Premium Support)期限。另外,针对某些特定的产品版本,客户还可以通过Oracle的延伸支持服务(Extended Support)选择将技术支持另外延长三年,并可以接受Oracle的持续支持服务(Sustaining Support)选择。
Oracle终生支持政策:从5年到永远
标准服务(Premium Support):最新业界支持标准
* 标准服务(Premium Support)
可以为客户的Oracle数据库、中间件和应用系统提供从发布之日起为期五年的维护和支持服务。
标准服务(Premium Support)的内容包括:
> 主要产品与技术版本升级
> 技术支持服务
> 软件更新、修订和安全预警
> 税制、法律法规的修订升级
> 升级脚本
> 新的第三方产品及版本认证服务
* 延伸支持服务(Extended Support)
随时保持客户竞争力,在需求出现的时候再行升级,随时为客户提供最新技术,这就是Oracle延伸支持服务(Extended Support)的目标所在。客户在支付一定费用的前提下将获得某些特定版本软件的额外三年的延伸支持。延伸支持服务
(Extended Support)的内容包括:
主要产品与技术版本升级
> 技术支持服务
> 软件更新、修订和安全预警
> 税制、法律法规的修订升级
> 升级脚本
延伸支持服务(Extended Support)不包括对新的第三方产品和版本的认证服务* 持续支持服务(Sustaining Support)
Oracle的持续支持服务(Sustaining Support)将让客户来把握自己的升级战略。客户只要持续拥有Oracle产品的许可,就可以享受相应的技术支持,包括支持工具和知识库的联机访问和专业技术人员的服务。持续支持服务(Sustaining Support)的内容包括:
> 主要产品与技术版本升级
> 技术支持服务
> MetaLink/Customer Connection访问
> 为客户解决方案提供已有的修订软件
持续支持服务(Sustaining Support)不包括如下服务内容:
> 最新软件更新、修订和安全预警
> 最新税制、法律法规的修订升级
> 新的第三方产品及版本认证服务
oracle数据库索引失效 篇12
今天一个同事突然问我索引为什么失效。说实在的,失效的原因有多种:
但是如果是同样的sql如果在之前能够使用到索引,那么现在使用不到索引,以下几种主要情况:
1. 随着表的增长,where条件出来的数据太多,大于15%,使得索引失效(会导致CBO计算走索引花费大于走全表)
2. 统计信息失效需要重新搜集统计信息
3. 索引本身失效需要重建索引
下面是一些不会使用到索引的原因
索引失效
1) 没有查询条件,或者查询条件没有建立索引
2) 在查询条件上没有使用引导列
3) 查询的数量是大表的大部分,应该是30%以上。
4) 索引本身失效
5) 查询条件使用函数在索引列上(见12)
6) 对小表查询
7) 提示不使用索引
8) 统计数据不真实
9) CBO计算走索引花费过大的情况。其实也包含了上面的情况,这里指的是表占有的block要比索引小。
10)隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误. 由于表的字段tu_mdn定义为varchar2(20),
但在查询时把该字段作为number类型以where条件传给Oracle,这样会导致索引失效.
错误的例子:select * from test where tu_mdn=13333333333;
正确的例子:select * from test where tu_mdn=‘13333333333‘;
11)对索引列进行运算导致索引失效,我所指的对索引列进行运算包括(+,-,*,/,! 等)
错误的例子:select * from test where id-1=9;
正确的例子:select * from test where id=10;
12)使用Oracle内部函数导致索引失效.对于这样情况应当创建基于函数的索引.
错误的例子:select * from test where round(id)=10;
说明,此时id的索引已经不起作用了 正确的例子:首先建立函数索引,
create index test_id_fbi_idx on test(round(id));
然后 select * from test where round(id)=10; 这时函数索引起作用了 1, 2,单独的>,<,(有时会用到,有时不会)
3,like “%_” 百分号在前.
4,表没分析.
5,单独引用复合索引里非第一位置的索引列.
6,字符型字段为数字时在where条件里不添加引号.
7,对索引列进行运算.需要建立函数索引.
8,not in ,not exist.
9,当变量采用的是times变量,而表的字段采用的是date变量时.或相反情况,
10, 索引失效。
11,基于cost成本分析(oracle因为走全表成本会更小):查询小表,或者返回值大概在10%以上
12,有时都考虑到了 但就是不走索引,drop了从建试试在
13,B-tree索引 is null不会走,is not null会走,位图索引 is null,is not null 都会走
14,联合索引 is not null 只要在建立的索引列(不分先后)都会走,
in null时 必须要和建立索引第一列一起使用,当建立索引第一位置条件是is null 时,
其他建立索引的列可以是is null(但必须在所有列 都满足is null的时候),
或者=一个值;当建立索引的第一位置是=一个值时,其他索引列可以是任何情况(包括is null =一个值),