百度
360搜索
搜狗搜索

oracle基础,Oracle认证基本知识介绍详细介绍

本文目录一览: 学oracle需要什么基础?从哪学起?

oracle是用命令行来控制的,而且主要是在linux下使用的。
一是要熟悉linux系统,二是要熟悉Oracle的DBA操作命令。
Oracle的使用分为DBA(数据库管理)和开发。
Oracle的DBA本身对计算机语言没有什么要求的。开发就不一样了,要懂sql等等。

另外,你的笔记本的内存太小了,没法用得。
学习Oracle最好的是看Oracle公司出的专业书籍(有很多册),不过比较贵的,不过非常好的,比一般的书好不是一点半点的。
?

Oracle认证基本知识介绍

一、 oracle,仅次于微软的世界第二大软件公司
oracle虽然规模很大,但名声不像微软、ibm那样显赫,很多非计算机专业的在校学生不知道oracle是何物。但是如果你是一位想在毕业后进入it行业的学生,那么,你必须知道什么是oracle。
首先,oracle是一家软件公司。这家1977成立于加利福尼亚的软件公司是世界上第一个推出关系型数据管理系统(rdbms)的公司。现在,他们的rdbms被广泛应用于各种操作环境:windows nt、基于unix系统的小型机、ibm大型机以及一些专用硬件操作系统平台。事实上,oracle已经成为世界上最大的rdbms供应商,并且是世界上最主要的信息处理软件供应商。现在,oracle是仅次于微软公司的世界第二大软件公司,2000年的销售额为101亿美元。现在oracle在世界范围内大约聘用了4万3千多名专业技术人员,在美国本土有2万1千名。有趣的是,即使在美国本土,oracle的技术人员(主要是程序员)中有40%是印度人,中国人是第二多的,其次才是美国人。
然后,oracle是一个庞大的品牌系统。如前所述,oracle不仅在全球最先推出了rdbms,并且事实上掌握着这个市场的大部分份额,由于oracle 公司的rdbms都以oracle为名,所以,在某种程度上oracle己经成为了rdbms的代名词。而近几年来,oracle不断积极地扩展自己的业务,成功地开发了许多横向和纵向的产品,譬如oracle自己设计生产的oracle服务器,面对商业客户的商业交易系统(oracle exchange),oracle数据中心等等。同时,oracle还成功开发出了很多面对程序员的开发工具,譬如著名的designer/2000计算机辅助系统工程(case)工具和developer/2000开发包,这些工具作为“设计器”和“开发器”,有力地帮助了程序员的开发工作,也有力地提高了oracle的声誉。此外,oracle还开发了一系列面对不同对象的应用软件,它们被统称为oracle应用软件。这些软件使得oracle被广泛应用到各个领域,同时也为oracle带来滚滚财源。比较常见的oracle软件产品包括:
·oracle财务软件(oracle financial) ·oracle制造业软件(oracle manufacturing) ·oracle人力资源软件(oracle human resources) ·oracle自动控制软件(oracle automotive) ·oracle 商业交易系统(oracle exchange)
以及其他的应用软件。这些软件连同oraclerdbms使得oracle成为一个庞大的品牌系统,深入到了人们生产和生活的各个领域。
由于oracle拥有多年在各种行业下的多种解决方案,拥有基于不同客户环境的oracle rdmbs服务器工具及规模巨大的应用软件系统,而且,这个庞大的系统正在不同程度、不同层次地为各行各业所广泛应用。因此,能够熟练掌握这个系统的某些方面及适应这个系统的不断更新的专业工程师必然是各界急需的人才,有着良好的就业前景。事实上,oracle公司也认识到了这一点,这就是oracle认证专家——ocp(oracle certified professional)的由来。 二、oracle认证种类介绍
oracle认证专家——ocp,是由oracle公司授权国际考试认证中心对考生进行的资格认证。考生按考试标准要求参加几门课程的考试(一般为3—5门),在通过全部考试后,便可获得ocp的专家认证。
目前ocp认证考试分为:
database administrator:数据库管理员考试认证,简称dba。数据库管理员负责对数据库进行日常的管理、备份及数据库崩溃后的恢复问题。
database operator:数据库操作员认证考试,简称dbo。数据库操作员主要是基于windows nt的oracle 8数据库管理,能够熟练应用oem等工具完成对数据库的操作及日常的管理工作。
database developer:数据库开发员认证考试,简称dev。数据库开发员应能熟练掌握用developer/2000的工具建立各种forms应用程序,建立各种标准的以及自定义的报表。
java developer:java开发人员考试。
application consultant: oracle产品应用咨询顾问。
其中,oracle dba是最吃香,但也是最难考的一个认证。在oracle的官方网站上,对dba有以下说明:
oracle dba专家可以跟上如今日趋复杂的系统环境要求。最好的dba们都在幕后工作,他们小心地维护着系统,使得系统可以每天都平稳地运转,并且防止意外灾难的发生,譬如数据库崩溃或者成小时地宕机。这项艰巨的任务需要对oracle数据库的结构和运行方式有着广泛泛深入的了解,并且有丰富的实战经验。最好的dba可以在取得最佳运行状态及防止他们公司停止运行的突发事件中找到平衡。oracle dba认证考试就是提供一个证明该人可以胜任oracle dba这一职务的认证。本认证考试设计了5门独立的考试,使你可以利用良好的知识获得一个专家认证。
三、如何参加考试?
ocp认证的所有考试也是通过prometric公司组织的,具体的考试事宜请访问它的官方网站:
目前ocp每门考试的费用为125美元。 四、如何准备考试?
1、oracle公司推荐的官方准备途径
一般来讲,oracle的考试内容比较多,并且考题也很细,对动手能力要求很强。因此,为了有足够的把握,一定要提前充分准备,而且一定要注重动手实践。在oracle官方网站上推荐的通过认证的途径如下,可以进行参考。
oracle大学:oracle大学提供的教师引导及基于技术的训练(instructor-led training and technology- based training)是准备ocp认证的最好方式,这些课程将为你打下需要通过ocp认证的知识基础。你可以查阅一下课程表来选择理想的准备方式,你当地的oracle大学可以在这方面给你一些最好的建议。你可以访问oracle的网站,获得更多的信息。
自己准备:实战经验是加深你对oracle考试内容理解的最好方式。oracle建议你将理论学习拓展,在实际工作或是练习中使用新学到的技巧和知识来自学。
考试内容检查表:使用考试内容检查表(test content checklist)来确定你必须准备的所有题目。oracle会不断地更新考试内容检查表,所以请访问oracle网站 ,下载最新的考试指南。
其它考试工具:模拟考试题及自我测试软件可以帮助你更好地准备ocp认证考试。oracle和自我测试软件公司(self test software)联合出品了一些高质量的考试软件以帮助考生更好地准备ocp认证考试,这些软件可以通过 oracle 网站 定购。
事实上,绝大部分的大陆同学都是通过参加培训班来准备考试的,它们不仅辅导通过考试的知识,而且其他信息包括如何报名,考场上如何应考,都可以得到辅导。以上oracle官方的介绍只是一般地对你进行一下有关备考的初级教育,事实上,正像我们前面说过的,作为一个庞大的数据库系统,要想掌握好oracle(更不要说完全掌握了——我甚至怀疑是否有人真正完全掌握过oracle),从任何角度而言都不是一件易事。除非你有足够的决心和耐心,准备将oracle当作你的职业之路并致力于数据库技术的研究,你才有可能真正了解这个庞杂系统的精髓。以下的一些论述将有助于你对oracle有一个初步的了解。 2、oracle数据库技术基本知识
(1)oracle数据库涵盖了数据库技术的方方面面。
尽管关系型数据库从原理上来讲并不是很难,有一些数据库知识的人掌握这些原理并不会花很大的气力,而且,一般的关系型数据库软件,譬如 sql server,用起来并不复杂,但oracle绝对与众不同。作为有史以来最成功的关系型数据库软件,oracle的实现方式和管理维护手段非常丰富,它涉及到很多方面的细节技术。单从任何一个侧面来理解它,是难观其全貌的。要想真的精通它,没有两三年功夫是不行的。单是oracle的技术文档,就足够淹没你的! 具体说来,oracle技术包括以下几个主要方面:oracle系统结构和原理、oracle数据库的安装和配置、oracle数据库的管理、oracle的数据备份与恢复技术、oracle的性能调整、oracle的新产品特性(java支持、应用服务器、时间空间系列、文本服务等)、oracle的并行服务器技术、oracle的数据仓库技术、oracle的对象类型和对象一关系模型等技术……
毫不夸张地说,以上任何一个部分单独拿出来都是很大的题目!
(2)oracle技术发展快,技术的关联性大。
尽管oracle只是一个数据库系统,但在实际应用中,你不可能只面对数据库本身。譬如,你在做oracle数据库的网络管理,你将不可避免地遇到如何与网络通讯、防火墙的技术兼容的问题。同理,你在做其它方面的工作,也肯定有方方面面的技术关联问题需要解决。而且更要命的是,这些技术(包括oracle本身)发展速度都非常快,这就使得跟上它们的发展成为一件十分费劲的事情。
不过幸运的是,我们并不需要同时了解oracle的所有方面,oracle提供了很多应用方向,我们可以按照偏好,选择其中的一个方向,集中时间和精力,努力在这个方向做到有所成就还不是一件很难的事情。由于oracle目前已是世界上最主要的数据库供应商和第二大软件公司,oracle的数据库技术已经被广泛应用于各个领域,因而市场上对oracle人才的需求量是相当之大,获得ocp认证不愁找不到工作。而以后我们可以在工作中学以致用,再努力地钻研oracle数据库及相关技术。
3、入门者如何起步?
说了这么多,想必您可能已经有些心动,那么,面对oracle这样一个庞然大物,你也许会觉得无从下手。为此,我们有一些建议:
(1)找一本有关数据库原理的书,掌握关系数据库的基本原理——如果你没有学过这样的课程的话。
(2)阅读参考书并结合上机操作,掌握sql的一般原理及基本用法。
(3)至少买一本oracle入门级的参考书,并找到一台安装了oracle的某个版本(oracle7.3以上,最好是 oracle 8)计算机,建立起上机学习环境。
其中第三点尤其重要,因为没有实践经验,想通过oracle认证只是痴人说梦。或者如果你的预算比较充分,你可以选择参加培训。在选择培训班的时候一定要选择oracle授权的培训班,这样培训的质量才有保证,同时,在报名考试的时候还可以享受一定的折扣。
与其他很多考试不同,ocp并没有真正意义上的参考书,你要做的就是在上机中不断熟悉oracle的各种应用,书只是用来查阅和参考的。因为从根本上来讲,oracle数据库是一门实践性很强的技术,而oracle认证主要考的是动手能力。因此,没有实践经验,而只靠背学习资料是根本无法通过oracle认证考试的。以下是市面上常见的一些书,在此列出,希望能对大家有一些帮助。
初级的:《轻松掌握sql结构化查询语言》,《轻松掌握oracle数据库开发》,《oracle开发指南》,《oracle初学者指南》,《oracle8 pl/sql程序设计》。
高级的;《oracle服务器技术精粹》,《oracle8/8i开发使用手册》,《oracle8份与恢复手册》,《oracle8性能优化与管理手册》。 五、获得ocp认证的好处
在oracle的官方同站上,oracle公司详细列举了获得ocp认证的种种好处,虽然有自卖自夸之嫌,但总的来说还是很有道理的。大家不妨跟我们一起看看。
总的来说,it业对专家的要求很高,职业竞争压力很大。无论是新进入这个行业的人,还是此行业中的老手,都需要知道他们的那些技术背景能真正吸引到雇主的眼光。同时,雇主们也需要一个标准帮助他们挑选出那些技术上真正过硬的雇员。ocp认证就能够帮助it业界建立起面向特定职位的选择标准。ocp认证是一个有价值的、业界承认的标准,这个标准可以证明持证者的知识和能力水平。
oracle认证对技术专家的好处:ocp认证可以给你一个鲜明的优势。ocp认证可以表明你对某一职位及相关的oracle产品有着深刻的理解。成为一个ocp认证专家可以帮助你被更多的雇主注意到,并且增加你获得it业最具挑战性机遇的机会。ocp认证专家们证实了ocp认证的价值:97%的 ocp认为他们获益于ocp认证;89%的ocp认为获得认证后,他们在oracle专家的职位上更具信心;96%的ocp认为他们会建议职业学校(professional college,普遍存在于美国的一种职业教育方式)开相应的课程。
oracle认证对it雇主的好处:ocp认证同时可以帮助it业的人事经理在应聘者中挑选出符合挑战性职位的员工。对于那些每年把员工送去培训的公司,认证可以保证他们在培训上的钱没有白花--他们的员工获得了对于深入理解和必要的知识。公司也可以把认证和员工的职业发展联合起来,这样可以增强员工的忠诚度及他们在职业岗位上的表现。同时,雇用获得认证的专家可以直接提高公司的实力,国际数据公司(international data corporation)的一项研究显示了这一点。这项研究指出获得认证的专家比那些没有通过认证的平均每人每天多处理40%的支持电话;雇用认证专家的公司比那些没有雇用的公司宕机的时间少49%;对大多数公司的调查显示,在不到9个月内,认证专家为他们节约的费用就超过了他们送专家去培训并获得认证的费用。

OracleSQL性能优化调整的几点基础事项

1. 选择最有效率的表名顺序 SQL的解析器按照从右到左的顺序处理FROM子句中的表名, FROM子句中包含多个表的情况下,你必须选择记录 1. 选择最有效率的表名顺序SQL的解析器按照从右到左的顺序处理FROM子句中的表名, FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。例如:表 TAB1 16,384条记录 表 TAB2 1条记录选择TAB2作为基础表 (最好的方法):select count(*) from tab1,tab2 ----执行时间0.96秒选择TAB1作为基础表 (不佳的方法):select count(*) from tab2,tab1 ----执行时间26.09秒2. 3个以上的表连接查询如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表。例如:EMP表描述了LOCATION表和CATEGORY表的交集SELECT * FROM LOCATION L , CATEGORY C, EMP EWHERE E.EMP_NO BETWEEN 1000 AND 2000AND E.CAT_NO = C.CAT_NOAND E.LOCN = L.LOCN,

ORACLE实例和ORACLE数据库详解

导读:oracle数据库是一种大型数据库系统,一般应用于商业,政府部门,它的功能很强大,能够处理大批量的数据,在网络方面也用的非常多。不过,一般的中小型企业都比较喜欢用mysql, SQL server等数据库系统,它的操作很简单,功能也非常齐全。只是比较oracle数据库而言,在处理大量数据方面有些不如。一、ORACLE实例1、ORACLE 实例——包括内存结构与后台进程System Global Area(SGA) 和 Background Process 称为数据库的实例。2、ORACLE 数据库——物理操作系统文件的集合一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等)3、系统全局共享区System Global Area(SGA)System Global Area是一块巨大的共享内存区域,他被看做是Oracle数据库的一个大缓冲池,这里的数据可以被ORACLE的各个进程共用。其大小可以通过如下语句查看:SQL select * from v$sga;NAME VALUE-Fixed Size 39816Variable Size 259812784Database Buffers 1.049E+09Redo Buffers 327680更详细的信息可以参考V$sgastat、V$buffer_pool主要包括以下几个部分:a、 共享池(Shared pool)共享池是SGA中最关键的内存片段,特别是在性能和可伸缩性上。一个太小的共享池会扼杀性能,使系统停止,太大的共享池也会有同样的效果,将会消耗大量的CPU来管理这个共享池。不正确的使用共享池只会带来灾难。共享池主要又可以分为以下两个部分:SQL语句缓冲(Library Cache)当一个用户提交一个SQL语句,Oracle会将这句SQL进行分析(parse),这个过程类似于编译,会耗费相对较多的时间。在分析完这个SQL,Oracle会把他的分析结果给保存在Sharedpool的LibraryCache中,当数据库第二次执行该SQL时,Oracle自动跳过这个分析过程,从而减少了系统运行的时间。这也是为什么第一次运行的SQL比第二次运行的SQL要慢一点的原因。下面举例说明parse的时间SQL select count(*) fromscpass ;COUNT(*)--243Elapsed: 00:00:00.08这是在Share_pool 和Data buffer 都没有数据缓冲区的情况下所用的时间SQL alter system flush SHARED_POOL;System altered.清空Share_pool,保留Data bufferSQL select count(*) from scpass ;COUNT(*)--243Elapsed: 00:00:00.02SQL select count(*) from scpass ;COUNT(*)--243Elapsed: 00:00:00.00从两句SQL 的时间差上可以看出该SQL 的Parse 时间约为00:00:00.02对于保存在共享池中的SQL语句,可以从V$Sqltext、v$Sqlarea中查询到,对于编程者来说,要尽量提高语句的重用率,减少语句的分析时间。一个设计的差的应用程序可以毁掉整个数据库的Sharepool,提高SQL语句的重用率必须先养成良好的变成习惯,尽量使用Bind变量。数据字典缓冲区(Data Dictionary Cache)显而易见,数据字典缓冲区是ORACLE特地为数据字典准备的一块缓冲池,供ORACLE内部使用,没有什么可以说的。上文的内容相对来说还是很基础的,所以对于刚刚入门的初学者来说,学习初期,好好的研究一下本文中介绍的内容,相信对大家的入门学习会很有帮助的。

Oracle之SQL基础篇

错误用法:to_char(create_time)>’20220101’

正确用法:create_time>to_date(‘20220101’,’yyyymmdd’)+0.999

说明:create_time为date类型,如果create_time字段有索引,加了函数就会用不到索引。

比如,status为char(1),就不要写成status=1,而是status=’1’。否则后续若status字典值扩展了,用了字母,sql就会报错。

declare

i integer:=500;

begin

while i>0 loop

delete from oper_log t where t.create_time
<to_date('20220228','yyyymmdd') rownum<="10000;

commit;

i := i-1;

end loop;

end;

declare

i integer:=200;

mindate varchar2(8) :='20211001';

maxdate varchar2(8) :='20211231';

currdate varchar2(8) := mindate;

阅读更多 >>>  怎么在U盘中运行Linux系统

begin

while currdate <= maxdate loop

insert into bak_oper_log

select * from oper_log t where t.create_time

delete from oper_log t where t.create_time

commit;

currdate := to_char(to_date(currdate,'yyyymmdd')+1,'yyyymmdd');

end loop;

end;

ORACLE中有哪些数据类型

1、Oracle数据库的核心是表,表中的列使用到的常见数据类型如下:对应NUMBER类型的示例:对于日期类型,可以使用sysdate内置函数可以获取当前的系统日期和时间,返回DATE类型,用systimestamp函数可以返回当前日期、时间和时区。
2、Oracle数据库提供了专为浮点数的两种数值数据类型:BINARY_FLOATBINARY_FLOAT是32位、单精度浮点数字数据类型。可以支持至少6位精度,每个BINARY_FLOAT的值需要5个字节,包括长度字节。
3、Oracle本身是没有的这些数据类型的,但是integer是sql标准,所以也兼容的,如下,在oracle中是可以执行的。
4、number类型就是包括了所有的数字类型。可以是integer也可以是numericOracle数据类型之numberoracle的number类型是oracle的内置类型之一,是oracle的最基础数值数据类型。

Oracle面试题(基础篇)

Oracle面试题(基础篇)
  Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。以下是关于Oracle面试题(基础篇),希望大家认真阅读!

  1. Oracle跟SQL Server 2005的区别?
  宏观上:
  1). 最大的区别在于平台,oracle可以运行在不同的平台上,sql server只能运行在windows平台上,由于windows平台的稳定性和安全性影响了sql server的稳定性和安全性
  2). oracle使用的脚本语言为PL-SQL,而sql server使用的脚本为T-SQL
  微观上: 从数据类型,数据库的结构等等回答
  2. 如何使用Oracle的游标?
  1). oracle中的游标分为显示游标和隐式游标
  2). 显示游标是用cursor...is命令定义的游标,它可以对查询语句(select)返回的多条记录进行处理;隐式游标是在执行插入 (insert)、删除(delete)、修改(update)和返回单条记录的查询(select)语句时由PL/SQL自动定义的。
  3). 显式游标的操作:打开游标、操作游标、关闭游标;PL/SQL隐式地打开SQL游标,并在它内部处理SQL语句,然后关闭它
  3. Oracle中function和procedure的区别?
  1). 可以理解函数是存储过程的一种
  2). 函数可以没有参数,但是一定需要一个返回值,存储过程可以没有参数,不需要返回值
  3). 函数return返回值没有返回参数模式,存储过程通过out参数返回值, 如果需要返回多个参数则建议使用存储过程
  4). 在sql数据操纵语句中只能调用函数而不能调用存储过程
  4. Oracle的导入导出有几种方式,有何区别?
  1). 使用oracle工具 exp/imp
  2). 使用plsql相关工具
  方法1. 导入/导出的是二进制的数据, 2.plsql导入/导出的是sql语句的文本文件
  5. Oracle中有哪几种文件?
  数据文件(一般后缀为.dbf或者.ora),日志文件(后缀名.log),控制文件(后缀名为.ctl)
  6. 怎样优化Oracle数据库,有几种方式?
  个人理解,数据库性能最关键的因素在于IO,因为操作内存是快速的,但是读写磁盘是速度很慢的,优化数据库最关键的问题在于减少磁盘的IO,就个人理解应该分为物理的和逻辑的优化, 物理的是指oracle产品本身的一些优化,逻辑优化是指应用程序级别的优化
  物理优化的一些原则:
  1). Oracle的运行环境(网络,硬件等)
  2). 使用合适的优化器
  3). 合理配置oracle实例参数
  4). 建立合适的索引(减少IO)
  5). 将索引数据和表数据分开在不同的表空间上(降低IO冲突)
  6). 建立表分区,将数据分别存储在不同的分区上(以空间换取时间,减少IO)
  逻辑上优化:
  1). 可以对表进行逻辑分割,如中国移动用户表,可以根据手机尾数分成10个表,这样对性能会有一定的作用
  2). Sql语句使用占位符语句,并且开发时候必须按照规定编写sql语句(如全部大写,全部小写等)oracle解析语句后会放置到共享池中
  如: select * from Emp where name=? 这个语句只会在共享池中有一条,而如果是字符串的话,那就根据不同名字存在不同的语句,所以占位符效率较好
  3). 数据库不仅仅是一个存储数据的地方,同样是一个编程的地方,一些耗时的操作,可以通过存储过程等在用户较少的情况下执行,从而错开系统使用的高峰时间,提高数据库性能
  4). 尽量不使用*号,如select * from Emp,因为要转化为具体的列名是要查数据字典,比较耗时
  5). 选择有效的表名
  对于多表连接查询,可能oracle的优化器并不会优化到这个程度, oracle 中多表查询是根据FROM字句从右到左的数据进行的,那么最好右边的表(也就是基础表)选择数据较少的表,这样排序更快速,如果有link表(多对多中间表),那么将link表放最右边作为基础表,在默认情况下oracle会自动优化,但是如果配置了优化器的情况下,可能不会自动优化,所以平时最好能按照这个方式编写sql
  6). Where字句 规则
  Oracle 中Where字句时从右往左处理的,表之间的连接写在其他条件之前,能过滤掉非常多的数据的条件,放在where的末尾, 另外!=符号比较的列将不使用索引,列经过了计算(如变大写等)不会使用索引(需要建立起函数), is null、is not null等优化器不会使用索引
  7). 使用Exits Not Exits 替代 In Not in
  8). 合理使用事务,合理设置事务隔离性
  数据库的数据操作比较消耗数据库资源的,尽量使用批量处理,以降低事务操作次数
  7. Oracle中字符串用什么符号链接?
  Oracle中使用 || 这个符号连接字符串 如 ‘abc’ || ‘d’
  8. Oracle分区是怎样优化数据库的`?
  Oracle的分区可以分为:列表分区、范围分区、散列分区、复合分区。
  1). 增强可用性:如果表的一个分区由于系统故障而不能使用,表的其余好的分区仍可以使用;
  2). 减少关闭时间:如果系统故障只影响表的一部份分区,那么只有这部份分区需要修复,可能比整个大表修复花的时间更少;
  3). 维护轻松:如果需要得建表,独产管理每个公区比管理单个大表要轻松得多;
  4). 均衡I/O:可以把表的不同分区分配到不同的磁盘来平衡I/O改善性能;
  5). 改善性能:对大表的查询、增加、修改等操作可以分解到表的不同分区来并行执行,可使运行速度更快
  6). 分区对用户透明,最终用户感觉不到分区的存在。
  9. Oracle是怎样分页的?
  Oracle中使用rownum来进行分页, 这个是效率最好的分页方法,hibernate也是使用rownum来进行oralce分页的
  select * from
  ( select rownum r,a from tabName where rownum <= 20 )
  where r > 10
  10. Oralce怎样存储文件,能够存储哪些文件?
  Oracle 能存储 clob、nclob、 blob、 bfile
  Clob 可变长度的字符型数据,也就是其他数据库中提到的文本型数据类型
  Nclob 可变字符类型的数据,不过其存储的是Unicode字符集的字符数据
  Blob 可变长度的二进制数据
  Bfile 数据库外面存储的可变二进制数据
  11. Oracle中使用了索引的列,对该列进行where条件查询、分组、排序、使用聚集函数,哪些用到了索引?
  均会使用索引, 值得注意的是复合索引(如在列A和列B上建立的索引)可能会有不同情况
  12. 数据库怎样实现每隔30分钟备份一次?
  通过操作系统的定时任务调用脚本导出数据库
  13. Oracle中where条件查询和排序的性能比较?
  Order by使用索引的条件极为严格,只有满足如下情况才可以使用索引,
  1). order by中的列必须包含相同的索引并且索引顺序和排序顺序一致
  2). 不能有null值的列
  所以排序的性能往往并不高,所以建议尽量避免order by
  14. 解释冷备份和热备份的不同点以及各自的优点?
  冷备份发生在数据库已经正常关闭的情况下,将关键性文件拷贝到另外位置的一种说法
  热备份是在数据库运行的情况下,采用归档方式备份数据的方法
  冷备的优缺点:
  1).是非常快速的备份方法(只需拷贝文件)
  2).容易归档(简单拷贝即可)
  3).容易恢复到某个时间点上(只需将文件再拷贝回去)
  4).能与归档方法相结合,作数据库“最新状态”的恢复。
  5).低度维护,高度安全。
  冷备份不足:
  1).单独使用时,只能提供到“某一时间点上”的恢复。
  2).在实施备份的全过程中,数据库必须要作备份而不能作其它工作。也就是说,在冷备份过程中,数据库必须是关闭状态。
  3).若磁盘空间有限,只能拷贝到磁带等其它外部存储设备上,速度会很慢。
  4).不能按表或按用户恢复。
  热备的优缺点
  1).可在表空间或数据文件级备份,备份时间短。
  2).备份时数据库仍可使用。
  3).可达到秒级恢复(恢复到某一时间点上)。
  4).可对几乎所有数据库实体作恢复。
  5).恢复是快速的,在大多数情况下在数据库仍工作时恢复。
  热备份的不足是:
  1).不能出错,否则后果严重。
  2).若热备份不成功,所得结果不可用于时间点的恢复。
  3).因难于维护,所以要特别仔细小心,不允许“以失败而告终”。
  15. 解释data block , extent 和 segment的区别?
  data block 数据块,是oracle最小的逻辑单位,通常oracle从磁盘读写的就是块
  extent 区,是由若干个相邻的block组成
  segment段,是有一组区组成
  tablespace表空间,数据库中数据逻辑存储的地方,一个tablespace可以包含多个数据文件
;

阅读更多 >>>  linux单板是什么

如何自学oracle数据库

你想学oracle干嘛用,oracle数据库可是大型数据库,不说一般,就是中型企业也支付不起一年几千万的使用费。初学者可以先学mysql数据库。
mysql和oracle一样都支持sql语法,都是关系型数据库。不同的是存储过程不一样,权限管理不一样。mysql现在是中小型企业的主流。你可以考虑一下。
你可以想想一个oracle数据库工程师的要求,即使你达到了,企业也不敢用年轻人。所以先主要已mysql入手。
最好买一本适合初学者的书,买别的书估计初学者看不懂。再结合网上的教程,资料。
如何纯粹是为了好玩,那就随心所欲吧。首先学习什么是关系型数据库,关系型数据库的特点和数据是如何查询的这些都有助于你今后对数据库的理解。作为一个能写出高效的sql语句的程序员来说这个必须要理解。
然后学习sql语句,sql语句主要是对表的操作。查询,删除,修改,添加等操作。
然后再学习触发器,存储过程,视图,控制器。
学到这里就有一定的基础了,接下来可以选择学习方向,你可以深入学习数据库权限管理,你可以学习更多的数据库函数来写出高效的sql语句。

Oracle中通过命令行实现定时操作详解

  Oracle中通过命令行实现定时操作详解 Oracle中通过命令行实现定时操作详解 Oracle基础
  众所周知 一般操作系统会提供定时执行任务的方法 例如 Unix平台上提供了让系统定时执行任务的命令Crontab 但是 对于某些需求 例如 一些对数据库表的操作 最为典型的是证券交易所每日收盘后的结算 它涉及大量的数据库表操作 如果仍然利用操作系统去定时执行 不仅需要大量的编程工作 而且还会出现用户不一致等运行错误 甚至导致程序无法执行
  一 分析问题
  事实上 对于以上需求 我们可以利用数据库本身拥有的功能Job Queue(任务队列管理器)去实现 任务队列管理器允许用户提前调度和安排某一任务 使其能在指定的时间点或时间段内自动执行一次或多次 由于任务在数据库中被执行 所以执行效率很高
  任务队列管理器允许我们定制任务的执行时间 并提供了灵活的处理方式 还可以通过配置 安排任务在系统用户访问量少的时段内执行 极大地提高了工作效率 例如 对于数据库日常的备份 更新 删除和复制等耗时长 重复性强的工作 我们就可以利用任务队列管理器去自动执行以减少工作量

  目前 拥有此项功能的数据库有许多 最有代表性的是SQL Server Oracle 等 但是 要让任务队列管理器工作 还需要我们加以配置才能实现 SQL Server的功能配置是在一个图形化界面(GUI)中实现的 非常简单 利用OEM客户端管理工具 Oracle的配置也可以在一个图形界面中完成 然而大多数的用户更习惯于命令行的方式去操纵数据库 本文介绍如何通过命令行实现这种配置
  二 实现步骤
   .确保Oracle的工作模式允许启动任务队列管理器
  Oracle定时执行 Job Queue 的后台程序是SNP进程 而要启动SNP进程 首先要确保整个系统的模式是可以启动SNP进程的 这需要以DBA的身份去执行如下命令
  svrmgrl> alter system enable restricted session;   或sql> alter system disenable restricted session;
  利用如上命令更改系统的会话方式为disenable restricted 为SNP的启动创造条件
   .确保Oracle的系统已经配置了任务队列管理器的启动参数
  SNP的启动参数位于Oracle的初始化文件中 该文件放在$ORACLE_HOME/dbs路径下 如果Oracle的SID是myora 的话 则初始化文件就是initmyora ora 在文件中对SNP启动参数的描述部分如下
  job_queue_process=n   job_queue_interval=N
  第一行定义SNP进程的启动个数为n 系统缺省值为 正常定义范围为 ~ 根据任务的多少 可以配置不同的数值
  第二行定义系统每隔N秒唤醒该进程一次 系统缺省值为 秒 正常范围为 ~ 秒 事实上 该进程执行完当前任务后 就进入睡眠状态 睡眠一段时间后 由系统的总控负责将其唤醒
  如果该文件中没有上面两行 请按照如上配置添加 配置完成后 需要重新启动数据库 使其生效 注意 如果任务要求执行的间隔很短的话 N的配置也要相应地小一点
   .将任务加入到数据库的任务队列中
  调用Oracle的dbms_job包中的存储过程 将任务加入到任务队列中
  dbms_job submit( job out binary_integer   what       in   archar   next_date     in   date   interval     in   varchar   no_parse     in   boolean)
  其中
  ●job 输出变量 是此任务在任务队列中的编号
  ●what 执行的任务的名称及其输入参数
  ●next_date 任务执行的时间
  ●interval 任务执行的时间间隔 下面详细讨论一下dbms_job submit中的参数interval 严格地讲 interval是指上一次执行结束到下一次开始执行的时间间隔 当interval设置为null时 该job执行结束后 就被从队列中删除 假如我们需要该job周期性地执行 则要用 sysdate+m 表示
  将任务加入到任务队列之前 要确定执行任务的数据库用户 若用户是scott 则需要确保该用户拥有执行包dbms_job的权限 若没有 需要以DBA的身份将权利授予scott用户
  svrmgrl> grant execute on dbms_job to scott;
   .将要执行的任务写成存储过程或其他的数据库可执行的pl/sql程序段
  例如 我们已经建立了一个存储过程 其名称为my_job 在sql/plus中以scott用户身份登录 执行如下命令
  sql> variable n number;   sql> begin   dbms_job submit(:n my_job; sysdate    sysdate+ / );   mit;   end;   /
  系统提示执行成功
  Sql> print :n;
  系统打印此任务的编号 例如结果为
  如上 我们创建了一个每隔 分钟执行一次的任务号为 的任务 可以通过Oracle提供的数据字典user_jobs察看该任务的执行情况
  sql> select job next_date next_sec failures broken from user_jobs;
  执行结果如下
  job next_date next_sec failures broken / / : : N
  这表示任务号为 的任务 下一次将在 / / : : 执行 此任务的执行失败记录为 次 注意 当执行job出现错误时 Oracle将其记录在日志里 失败次数每次自动加 当执行失败次数达到 时 Oracle就将该job标志为broken 此后 Oracle不再继续执行它 直到用户调用过程dbms_job broken 重新设置为not broken 或强制调用dbms_job run来重新执行它
lishixinzhi/Article/program/Oracle/201311/17096

Oracle数据库基本知识

Oracle数据库基本知识
  Oracle Database,又名OracleRDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。本文为大家分享的是Oracle数据库的基本知识,希望对大家有所帮助!

  它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的适应高吞吐量的数据库解决方案。
  介绍
  ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。
  Oracle数据库最新版本为OracleDatabase 12c。Oracle数据库12c引入了一个新的多承租方架构,使用该架构可轻松部署和管理数据库云。此外,一些创新特性可最大限度地提高资源使用率和灵活性,如Oracle Multitenant可快速整合多个数据库,而Automatic Data Optimization和Heat Map能以更高的密度压缩数据和对数据分层。这些独一无二的技术进步再加上在可用性、安全性和大数据支持方面的主要增强,使得Oracle数据库12c 成为私有云和公有云部署的理想平台。
  就业前景
  从就业与择业的角度来讲,计算机相关专业的大学生从事oracle方面的技术是职业发展中的最佳选择。
  其一、就业面广:ORACLE帮助拓展技术人员择业的广度,全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的工程师岗位,大学生在校期间兴趣广泛,每个人兴趣特长各异,不论你想进入金融行业还是电信行业或者政府机构,ORACLE都能够在你的职业发展中给你最强有力的支撑,成为你最贴身的金饭碗。
  其二、技术层次深:如果期望进入IT服务或者产品公司,Oracle技术能够帮助提高就业的深度。Oracle技术已经成为全球每个IT公司必选的软件技术之一,熟练掌握Oracle技术能够为从业人员带来技术应用上的优势,同时为IT技术的深入应用起到非常关键的作用。掌握 Oracle技术,是IT从业人员了解全面信息化整体解决方案的基础。
  其三、职业方向多:Oracle数据库管理方向、Oracle开发及系统架构方向、Oracle数据建模数据仓库等方向。
  Oracle数据库漏洞分析:无需用户名和密码进入你的数据库
  一般性的数据库漏洞,都是在成功连接或登录数据库后实现入侵;本文介绍两个在2012年暴露的Oracle漏洞,通过这两种漏洞的结合,可以在不掌握用户名/密码的情况下入侵Oracle,从而完成对数据的窃取或者破坏。这两个漏洞就是CVE-2012-1675和CVE-2012-3137。
  引言
  国内外很多重要的系统都采用Oracle作为数据存储的数据库;在Oracle中存储着企业或政府大量敏感的信息,在金钱或政治的诱导下,内外部黑客会想法利用管理、网络、主机或数据库的自身漏洞尝试入侵到数据库中,以达到自身的目的。
  本文的作者通过对Oracle俩种漏洞的组合研究,设计了一套在不掌握用户名/密码的方式入侵到Oracle中;这种方法,比传统的需要登录到数据库中的入侵方法,具有更大的安全隐患和破坏性。
  本文希望通过对这两个漏洞和攻击方法的介绍,能够引起相关人员的重视,完善对数据库安全的措施。
  1、概要介绍
  本文提供的方法是基于漏洞CVE-2012-1675和CVE-2012-3137对oracle数据库的攻击测试的方法。
  CVE-2012-1675漏洞是Oracle允许攻击者在不提供用户名/密码的'情况下,向远程“TNS Listener”组件处理的数据投毒的漏洞。攻击者可利用此漏洞将数据库服务器的合法“TNS Listener”组件中的数据转向到攻击者控制的系统,导致控制远程组件的数据库实例,造成组件和合法数据库之间的中间人攻击、会话劫持或拒绝服务攻击。
  CVE-2012-3137漏洞是Oracle Database 10g/11g身份验证协议实现中存在一个设计缺陷,攻击者无需认证即可远程获取数据库用户密码哈希相关数据,从而可以离线暴力破解用户密码,进一步控制数据库系统。
  我们通过如下的步骤和过程可以实现对Oracle的入侵:
  (1)利用CVE-2012-1675进行TNS劫持,在监听下利用远程注册,注册同名数据库实例;
  (2)新登陆的用户,在TNS的负载均衡策略下,有可能流量登录到伪造的监听服务上;
  (3)该监听服务对用户的登陆过程进行监控,并将相关数据流量转发到真实的数据库上;
  (4)利用CVE-2012-3137获得通讯过程中的认证相关信息;
  (5)对认证相关信息进行离线的暴力破解,获得登陆的密码;
  (6)试用破解的用户名/密码登陆Oracle,完成对Oracle中数据的访问;
  2、通过CVE-2012-1675进行TNS劫持
  该漏洞存在于Oracle的所有版本,并且Oracle至今仅是发布了警告性通知,并未提供解决方案。
  要想利用CVE-2012-1675漏洞做TNS劫持,首先需要了解TNS机制。如下图所示oracle 通过在本地解析网络服务名到目标主机IP地址,服务端口号,目标数据库名,把这些信息发送到oracle服务器端监听程序,最后再由监听程序递送DBMS。
  其中关键点在于监听会按照目标数据库名递送到名称正确的数据库。那么如果一个监听下有2个同名数据库。监听将自动按照负载均衡把这次访问发送到负载低的数据库上,进行连接访问。数据库注册到监听的方法就决定了,能否同时注册同名数据库在同一个监听下。注册方式分为本地注册和远程注册,通过修改参数可以调整为远程注册。
  下面是一段可用的TNS劫持的过程:
  1.在劫持机上创建一个和目标数据库实例同名的数据库实例。
  2.在劫持机上修改 tnsnames.ora 文件
  添加
  listener_name=
  (DESCRIPTION=
  (ADDRESS=(PROTOCOL=tcp)(HOST=目标机器IP)(PORT=目标机器端口)))
  3.在劫持机上用SQL*Plus 顺序执行下面步骤。
  1.$ sqlplus / as sysdba
  2. SQL> ALTER SYSTEM SETREMOTE_LISTENER='LISTENER_NAME';
  3. SQL> ALTER SYSTEM REGISTER;
  4.多个客户端,向数据库发起登录。会劫持到一部分客户端的登录信息。
  最终达到效果如下图所示:
  按照猜想同一个监听下有2个同名实例。客户端访问监听,监听按照客户端中的数据库名信息分配数据库,由于监听下有2个同名数据库,客户端链接很可能会被分配到劫持者的数据库实例下,再通过配置劫持者的本地监听把客户端请求指回原数据库。结构图如下:
  测试客户端链接196次。目标数据库实例获得113次,劫持数据库实例获得83次基本满足负载均衡的假设。(注上面实例是local server 下面实例是 remote server)
  通过以上方式我们可以截获约一半左右客户端发送到服务器的合法链接。其中获得了服务器IP、端口号、数据库位置、实例名、登录用户名等一系列明文信息和4组密文信息(AUTH_SESSKEY,AUTH_SESSKEY_CLIENT,AUTH_PASSWORD,AUTH_VFR_DATA)。
  3、通过CVE-2012-3137进行密码破解
  CVE-2012-3137受影响的数据库版本有11.2.0.3,11.2.0.2,11.1.0.7,有使用了SHA-1加密算法的10.2.0.5和10.2.0.4,还有使用了SHA-1的10.2.0.3(运行在z/OS下)版本。
  虽然这个漏洞在11.2.0.3中已经解决,但是仅仅数据库客户端和服务器都升级到11.2.0.3并且sqlnet.ora文件中增加SQLNET.ALLOWED_LOGON_VERSION=12才有效。
  正如CVE-2012-3137所描述Oracle为了防止第三方通过网络获取登录信息包。而对密码进行了加密处理。本部分只以oracle11.1密码如何破解为例进行说明。
  在发起连接之后(oracle牵手完成),客户端和服务器经过协商确定要使用的验证协议。要完成这个任务,客户端首先向数据库发送一个包。包中包含客户端主要信息和所请求的加密方式。数据库确认加密方式有效后,发送一个确认服务包如下图所示:
  在通过安全网络服务完成任何所要求的协议之后,数据库用户被O3logon(oracle验证方式) 进行验证,这个协议执行一个序列来向数据库证明客户端拥有密码。为了避免网络第三方截获到密码。首先客户端发送用户名到数据库来表明用户身份。数据库端根据加密协议,其中96位的作为数据库端密钥,20位的作为偏移量,它对每个连接都是不同的。一个典型的数据库端发给客户端的密钥如下:
  AUTH_SESSKEY.....COCDD89FIGODKWASDF……………………
  客户端根据加密算法向服务器端发送96位的客户端密钥和64位的密码密钥。服务器端计算客户端传入的密码密钥。如果计算后密码密文和数据库中存储的16位密码密文一致则验证通过。
  根据这个过程可知上面TNS劫持包中取得的加密信息:AUTH_SESSKEY,AUTH_SESSKEY_CLIENT,AUTH_PASSWORD,AUTH_VFR_DATA这四个值是解密的关键。我们把他们按照SHA1,MD5,AES192进行一系列处理。最终通过数据字典碰撞得到密码明文。
  下面这段网上公布的一段示例代码,这段代码与笔者的思路不完全相同,但也能大概地说明这个漏洞的攻击过程:
  import hashlib
  from Crypto.Cipher import AES
  def decrypt(session,salt,password):
  pass_hash= hashlib.sha1(password+salt)
  key =pass_hash.digest() + '\x00\x00\x00\x00'
  decryptor= AES.new(key,AES.MODE_CBC)
  plain =decryptor.decrypt(session)
  returnplain
  session_hex ='EA2043CB8B46E3864311C68BDC161F8CA170363C1E6F57F3EBC6435F541A8239B6DBA16EAAB5422553A7598143E78767'
  salt_hex = 'A7193E546377EC56639E'
  passwords = ['test','password',''oracle','demo']
  for password in passwords:
  session_id= decrypt(session_hex.decode('hex'),salt_hex.decode('hex'),password)
  print'Decrypted session_id for password "%s" is %s' %(password,session_id.encode('hex'))
  ifsession_id[40:] == '\x08\x08\x08\x08\x08\x08\x08\x08':
  print'PASSWORD IS "%s"' % password
  break
  4、建议的预防措施
  根据以上两段分析,我们可以有如下的预防措施:
  (1)在条件许可的情况下,对Oracle进行补丁升级,对Oracle打cpuoct2012-1515893补丁;注意对于cpuoct2012-1515893补丁要求服务器端和应用服务器端同时升级,否则应用系统将无法访问Oracle;
  (2)若无法对Oracle升级,要购买或安装具备虚拟补丁功能的数据库安全产品,防止对CVE-2012-3137和CVE-2012-1675的利用;
  (3)建立足够强健的口令,不要使用8位以下密码,或者字典库中的口令。
;

阅读更多 >>>  linux驱动开发,嵌入式linux驱动要学哪些

网站数据信息

"oracle基础,Oracle认证基本知识介绍"浏览人数已经达到20次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:oracle基础,Oracle认证基本知识介绍的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!