随着信息技术的不断发展,数据库管理系统也变得越来越重要。数据库作为现代企业信息化的基础,已经成为必要的IT基础设施,为企业的业务运营提供了全方位、高效率的解决方案。而Oracle数据库作为市场领先的关系型数据库管理系统,具有高可用性、高性能和高安全性等诸多优点,是企业常用的数据库管理系统之一。本文将深入浅出的介绍Oracle数据库架构设计指南,为读者带来一份实用的参考,帮助理解和设计Oracle数据库结构。
一、Oracle数据库概述
Oracle数据库是一种关系型数据库管理系统,由Oracle公司开发,可管理大规模数据。该数据库支持大多数操作系统,包括UNIX、Linux和Windows等。Oracle数据库的主要特点包括高安全性、高可用性、高性能、可伸缩性和易于管理等。Oracle数据库可安装在单台服务器上,也可以分布式部署在多台服务器上,以满足不同规模企业的需求。
二、Oracle数据库架构设计指南
Oracle数据库架构是数据库的基础架构,支持数据的存储、访问、维护和管理。正确的架构设计可以提高数据库性能和稳定性,降低运维成本。以下是Oracle数据库架构设计的指南:
1. 数据库实例
数据库实例是Oracle数据库的核心,包含了数据库的所有进程和内存结构。实例由多个进程组成,其中包括系统进程和用户进程,用于管理和控制数据库的各个方面。数据库实例包括内存结构和文件结构两部分。
内存结构包括SGA和PGA,其中SGA(System Global Area)用于存储数据库的共享数据和内存缓存,例如数据块缓存、重做日志缓存等;PGA(Process Global Area)用于存储会话和进程相关的数据。
文件结构包括控制文件、数据文件、重做日志文件和归档日志文件。控制文件存储数据库的结构信息,例如数据文件和重做日志文件等的位置、大小和状态等;数据文件存储数据库的实际数据,例如表、索引和视图等;重做日志文件用于存储数据库的操作信息,例如DML和DDL语句等;归档日志文件用于存储重做日志文件的备份,支持故障恢复和数据备份等。
2. 数据库对象
数据库对象是构成数据库的基本元素,包括表、索引、视图、存储过程、触发器等。数据库对象可以分为两类,一类是系统对象,由Oracle数据库自动创建和维护,例如数据库的元数据和内部对象;另一类是用户对象,由应用程序或用户创建和维护,例如表和视图等。
正确的数据库对象设计可以提高查询效率、降低存储空间和维护成本。例如,合理的表设计应该遵循范式规则、优化索引和分区等;合理的视图设计应该尽量简化查询语句和减少逻辑计算等。
3. 存储管理
存储管理是数据库管理的核心,包括分区、压缩和表空间等。分区是将大表按照特定的规则划分成小表,以提高查询效率和减少存储空间。压缩是对表和索引进行数据压缩,以减少存储空间和提高查询效率。表空间是存储数据和对象的物理空间,包括数据文件、重做日志文件和归档日志文件等。
4. 数据库安全
数据库安全是保证数据库和数据安全的关键,包括身份验证、授权和审计等。身份验证是通过用户名和密码验证用户的身份信息,以控制用户的访问权限。授权是赋予用户权限,以控制用户访问对象的能力。审计是记录用户行为和操作信息,以追踪敏感数据的访问和操作。
三、Oracle数据库的优点
Oracle数据库具有以下优点:
1. 高可用性
Oracle数据库提供了多种高可用性解决方案,例如数据保护、实时备份和基于网络的冗余等。数据保护可以策略性的备份和恢复数据,以保证数据的可靠性;实时备份可以实时备份数据和日志文件,以满足灾难恢复的需求;基于网络的冗余可以在多个节点之间自动切换,以满足业务的连续性需求。
2. 高性能
Oracle数据库提供了高速缓存、多线程、计算优化和网络优化等技术,以提高数据库的性能。高速缓存可以有效利用内存缓存数据,以减少磁盘I/O的访问;多线程可以提高并发性能,以提高更新和查询的效率;计算优化可以优化查询语句和索引,以提高查询效率;网络优化可以优化网络通信,以提高数据库的响应速度。
3. 易于管理
Oracle数据库提供了易于管理的工具和界面,例如Enterprise Manager和Grid Control。这些工具可以实现自动管理、资源规划和性能监控,以降低运维成本和提高生产效率。
四、Oracle数据库的局限性
Oracle数据库也有一些局限性,例如:
1. 昂贵的许可证
Oracle数据库的许可证费用较高,对于中小企业来说可能不太适合。此外,Oracle数据库的高端功能可能需要额外的许可证费用。
2. 复杂的设置
Oracle数据库的设置和配置比较复杂,需要专业的管理员进行管理和维护。此外,Oracle数据库的高级功能可能需要专业培训或顾问服务。
3. 高要求的硬件
Oracle数据库对硬件的要求较高,需要大内存、多CPU和高速磁盘等硬件,以保证数据库的性能和可用性。
五、
Oracle数据库作为市场领先的关系型数据库管理系统,具有许多优点和一些局限性。正确的数据库架构设计可以提高数据库性能和稳定性,降低运维成本。此外,合理的存储管理和数据安全策略可以提高数据的保护和安全性。因此,在使用Oracle数据库时,需要深入理解Oracle数据库的具体特点和局限性,以充分发挥数据库的优点,实现企业的信息化建设。
相关问题拓展阅读:
如何合理创建Oracle数据库索引的3个要求
如何合理创建Oracle数据库索引的3个要求:
在Oracle数据库中,创建索引虽然比较简单。但是要合理的创建索引则比较困难了。笔者认为,在创建索引时要做到三个适当,即在适当的表上、适当的列上创建适当数量的索引。虽然这可以通过一句话来概括优化的索引的基本准则,但是要做到这一点的话,需要数据库管理员做出很大的努力。具体的来说,要做到这个三个适当有如下几个要求。
一、 根据表的大小来创建索引。
虽然给表创建索引,可以提高查询的效率。但是数据库管理员需要注意的是,索引也需要一定的开销的。为此并不是说给所有的表都创建索引,那么就可以提高数据库的性能。这个认识是错误的。恰恰相反,如果不管三七二十一,给所有的表都创建了索引,那么其反而会给数据库的性能造成负面的影响。因为此时滥用索引的开销可能已经远远大于由此带来的性能方面的收益。所以笔者认为,数据库管理员首先需要做到,为合适的表来建立索引,而不是为所有的表建立索引。
一般来说,不需要为比较小的表创建索引。如在一个ERP系统的数据库中,department表用来存储企业部门的信息。一般企业的部分也就十几个,最多不会超过一百个。这100条记录对于人来说,可能算是比较多了。但是对于计算机来说,这给他塞塞牙缝都还不够。所以,对类似的小表没有必要建立索引。因为即使建立了索引,其性能也不会得到很大的改善。相反索引建立的开销,如维护成本等等,要比这个要大。也就是说,付出的要比得到的多,显然违反常理。
另外,就是对于超大的表,也不一定要建立索引。有些表虽然比较大,记录数量非常的多。但是此时为这个表建立索引并一定的合适。如系统中有一张表,其主要用来保存数据库中的一些变更信息。往往这些信息只给数据库管理员使用。此时为这张表建立索引的话,反而不合适。因为这张表很少用到,只有在出问题的时候才需要查看。其次其即使查看,需要查询的纪录也不会很多,可能就是最近一周的更新记录等等。对于对于一些超大的表,建立索引有时候往往不能够达到预计的效果。而且在打表上建立索引,其索引的开销要比普通的表大的多。那么到底是否给大表建立索引呢?笔者认为,主要是看两个方面的内容。首先是需要关注一下,在这张大表中经常需要查询的记录数量。一般来说,如果经常需要查询的数据不超过10%到15%的话,那就没有必要为其建立索引的必要。因为此时建立索引的开销可能要比性能的改善大的多。这个比例只是一个经验的数据。如果数据库管理员需要得出一个比较精确的结论,那么就需要进行测试分析。即数据库管理员需要测试一下全表扫描的时间,看看其是否比建立索引后的查询时间要长或者短。如果是长的话,则说明有建立索引的必要。但是如果没有的话,则说明还是全表扫描速度来的快。此时也就没有必要建立索引了。
总之,在考虑是否该为表建立索引时,一般来说小表没有建立索引的必要。而对于打表的话,则需要进行实际情况实际分析。简单一点的,可以根据大致的比率来确定。如果要精确一点的,则可以进行全表扫描性能分析,以判断建立索引后是否真的如预期那样改善了数据库性能。
二、 根据列的特征来创建索引。
列的特点不同,索引创建的效果也不同。数据库管理员需要了解为哪些列创建索引可以起到事倍功半的效果。同时也需要了解为哪些列创建索引反而起到的是事倍功半的效果。这有利于他们了解到底给为怎么样的字段建立索引。
根据笔者的经验,往往为如下特征的列创建索引能够起到比较明显的效果。如对于一些重复内容比较少的列,特别是对于那些定义了唯一约束的列。在这些列上建立索引,往往可以起到非常不错的效果。如对于一些null值的列与非Null值的列混合情况下,如果用户需要经常查询所有的非Null值记录的列,则更好为其设置索引。如果经常需要多表连接查询,在用与连接的列上设置索引可以达到事半功倍的效果。
可见,索引设置的是否恰当,不仅跟数据库设计架构有关,而且还跟企业的经济业务相关。为此,对于一些套装软件,虽然一开始数据库管理员已经做了索引的优化工作。但是随着后来经济数据的增加,这个索引的效果会越来越打折扣。这主要是因为记录的表化影响到了索引优化的效果。所以笔者建议各位数据库管理员,即使采用的是大牌软件公司的套装软件,也需要隔一段时间,如一年,对数据库的索引进行优化。该去掉的去掉,该调整的调整,以提高数据库的性能。
如在数据库中有一张表是用来保存用户信息的。其中有个字段身份证号码,这是一个唯一的字段。在数据库设计时,给这个字段创建了索引。但是当这个数据库投入使用之后,用户不怎么输入用户的身份证号码。而且平时也基本不按这个号码来进行查询。当记录月来月多时,这个身份证号码上的索引字段不但不能够改善数据库的查询性能,反而成了鸡肋。对于这些有很多NULL值的列,而且不会经常查询所有的非NULL值记录的列,数据库管理员要下决心,即使清除这些列上的索引。
所以说索引的优化与调整是一个动态的过程,并不是说数据库设计好之后就不需要经过调整。数据库管理员往往需要根据记录的变化情况,来进行适当的变更。以提高索引的效果。
三、 在一个表上创建多少索引合适?
虽然说,在表上创建索引的数量没有限制,但是决不是越多越好。也就是说,在创建索引这项事情上,1+1〉2往往不成立。有时候,创建索引越多,其可能会得到适得其反的效果。那么在一个表上,到底给创建多少索引合适呢?这个没有一个明确的标准。而是需要数据库管理员根据实际的用途以及数据库中记录的情况,来进行判断。
通常来说,表的索引越多,其查询的速度也就越快。但是,表的更新速度则会降低。这主要是因为表的更新(如往表中插入一条记录)速度,反而随着索引的增加而增加。这主要是因为,在更新记录的同时需要更新相关的索引信息。为此,到底在表中创建多少索引合适,就需要在这个更新速度与查询速度之间取得一个均衡点。如对于一些数据仓库或者决策型数据库系统,其主要用来进行查询。相关的记录往往是在数据库初始化的时候倒入。此时,设置的索引多一点,可以提高数据库的查询性能。同时因为记录不怎么更新,所以索引比较多的情况下,也不会影响到更新的速度。即使在起初的时候需要导入大量的数据,此时也可以先将索引禁用掉。等到数据导入完毕后,再启用索引。可以通过这种方式来减少索引对数据更新的影响。相反,如果那些表中经常需要更新记录,如一些事务型的应用系统,数据更新操作是家常便饭的事情。此时如果在一张表中建立过多的索引,则会影响到更新的速度。由于更新操作比较频繁,所以对其的负面影响,要比查询效率提升要大的多。此时就需要限制索引的数量,只在一些必要的字段上建立索引。
笔者在平时数据库优化时,往往会根据这些表的用途来为列设置索引。可以查询相关的动态视图,看看对于这张表的操作,是更新操作(包括更新、删除、插入等等)占的比例大,还是查询操作占的比例大。当过多的索引已经影响到更新操作的速度时,则数据库管理员就需要先禁用某些索引,以提高数据库的性能。
总之,在适当的表、适当的列上建立适当的索引。这一句话包含的意思有很多,以上内容只是一部分内容。俗话说,师傅领进门,修行靠自身。笔者在这里指能够点到为止。一些具体的索引优化内容还是需要各位读者在日常工作中去体会与总结
Oracle OCP是什么啊?
OCP全称为Oracle认证数据库专家,是Oracle公司的Oracle数据库 DBA认证课程,目前Oracle全世界的数据库市场份额在50%以上,在中国的客户更有中国移动、中国电信、阿里巴巴、腾讯等中国绝大多数的大型企业。这些企业都将是Oracle认证数据库专家的雇主,更重要的是OCP是开启Oracle所有产品线的钥匙,Oracle还有ERP、中间件等更多的高端产品,都可以从OCP开始学习和熟悉。一个OCP工程师不仅仅可以从事DBA,还可以进一步进行学习成为ERP实施、中间件管理、BI(商业智能)等企业更高薪酬的IT类专家。 OCP教学目标: 核心课程包括Oracle10g构架介绍、Oracle10g数据库基本操作与设置、创建数据库应用、数据库安全管理、数据库备份与恢复、性能优化与调整等。 ◆掌握SQL语言,了解 SQL/PL语言 ◆掌握建立Oracle应用的方法 ◆掌握Oracle10g的体系结构核心原理 ◆掌握Oracle10g数据库架构设计 ◆掌握Oracle10g数据库安全配置和管理 ◆掌握Oracle10g数据库逻辑和物理备份恢复方法 ◆掌握Oracle10g数据库的出错调试技术 ◆掌握Oracle10g数据库的RMAN恢复技术 Oracle 10g OCP官方课程列表: Oracle Database 10g: SQL Fundamentals Oracle Database 10g: Administration Workshop I Oracle Database 10g: Administration Workshop II Oracle 考试 以下是考OCA的认证条件 (以下是OCA的两门考试科目) 现在OCA认证版本已经升级到10g考试科目为: Oracle Database 10g: SQL Fundamentals 考试代码:1Z0-047 考试费用:$125 Oracle Database 10g: Administration Workshop I 考试代码:1Z0-042 考试费用:$125 要获得OCA证书,只需要在Pearson vue考试中心通过考试就可以获得Oracle公司发放的OCA认证。考试费用为$125每门。 以下是考OCP的认证条件 (以下是OCP的考试科目) 现在OCP认证版本已经升级到10g考试科目为: Oracle Database 10g: Administration Workshop II 考试代码:1Z0-043 考试费用:$125 要获得Oracle10g OCP认证, 要求在OCP考试前必须参加一门Oracle大学的原厂课程培训, 即Oracle Database 10g: Administration Workshop I 或Oracle Database 10g: Administration Workshop II中的任何一门课程。否则将不能得到OCP10g的证书。誉天OCP入门课程为 007,047是针对有基础的ORACLE在职人员。 OCP 10g 考试科目: 1Z0-042
安装和配置 Oracle Database 10g
监控和维护 Oracle Database 10g,并排除 Oracle Database 10g 中的故障
为 Oracle Database 10g 配置 Oracle Net Services;Oracle Database 10g 的备份和恢复;在Oracle
Database 10g 中创建和管理用户账户
1Z0-043
使用 RMAN 创建和管理备份集和映像副本,将数据库恢复到过去某一时刻的状态
使用 Oracle 闪回技术恢复数据库;检测块损坏情况并采取相应的措施修复损坏的块
使用各种数据库 Advisor 来监控和提高数据库的性能;使用资源管理器来控制数据库资源的使用情况;
使用调度程序来简化管理任务;提高监听程序的安全性;
复查数据库日志文件以便进行诊断;为数据库和单独的会话自定义基于语言的行为
1Z0-047
介绍ORACLE编程环境和SQL、PL/SQL;编写基本的SQL SELECT语句;
数据的限制和排序;单行功能;从多个数据库显示数据;
使用组合函数整合数据;子查询;用iSQL*Plus产生可读的输出;
数据管理;表的生成与管理;包含限制条件;生成视图;
生成其他数据库对象;控制用户的访问定义和描述垃圾收集,
安全性和Java虚拟机 (JVM);句的基本语法;
书写格式以及一些基本的运算,如算术运算、字符串连接等。
随着时间推移,OCP认证将逐步升级到11g版本,虽然Oracle公司没有规定OCP证书的有效期,但是随着Oracle版本的不断升级,升级考试就尤为重要。 预计在2023年后证书会升级到11g版本,现在11g考试科目为: Oracle Database 11g: SQL Fundamentals 考试代码: 1Z0-057 考试费用:$125 Oracle Database 11g: Administration Workshop I 考试代码: 1Z0-052 考试费用:$125 Oracle Database 11g: Administration Workshop II 考试代码:1Z0-053 考试费用:$125 已经拥有9i或10g认证的只需参加一门升级考试即可获得最新版本的OCP证书。 9i升级10g的考试是 1Z0-040 考试费用:$g升级11g的考试是 1Z0-050 考试费用:$125 ORACLE认证体系与课程 Oracle 10g认证体系结构图: 认证种类 需要参加培训的相关课程 考试代码
OCA Oracle Database 10g: Administration Workshop I 042
OCA/或 Oracle Database 10g: SQL Fundamentals
Oracle Database 10g: Program with PL/SQL
Oracle Database 10g: Advanced PL/SQL
Oracle Database 10g: SQL Tuning Workshop Oracle Database: SQL Certified Expert
007
OCP Oracle Database 10g: SQL Fundamentals
Oracle Database 10g: Administration Workshop I
Oracle Database 10g: Administration Workshop II 007
042
043
OCM OCP related courses and plus,
Oracle Database 10g: SQL Tuning Workshop
Oracle Database 10g: Security
Enterprise DBA Part 1B: Backup and Recovery
Oracle Database 10g: Data Guard Administration
Oracle Database 10g: RAC for Administrators
Oracle Database 10g: Implement Streams Oracle Database 10g Administrator
Certified Master Exam
Oracle授权培训考试中心年最新ORACLE官方授权培训考试中心查询网址;参见ORACLE官网或者扩展阅读 考试:由各个授权考试中心处理在普尔文授权考场考试。 OCA考试:在VUE/普尔文考试中心考试。 OCP考试:在Oracle授权考场考试。 OCM考试:在北京上海Oracle大学考试。
编辑本段OCP认证课程大纲
课程大纲: 一、 Oracle Database 10g: SQL Fundamentals Oracle数据库10g SQL语言基础 select、DML、DDL语法及技巧 ”表”结构:(select * from (select * from emp)); select 结构及注意事项(select 1,’a’,ename from emp)运行过程 排序,distinct 单行函数(工作中常用技巧及案例) 子查选(关联子查询 和 非关联子查询 运行原理和区别;优化) 表连接(四种类型),外连接 not in | not exists | 等值链接 区别及抉择 聚合函数(运行过程) -聚合函数和外连接使用时的注意事项 -分组 -组筛选+子查询 综合:讨论下面SQL执行顺序,为真正看懂执行计划做好准备 教学目标:让学员熟练掌握select、dml、ddl,掌握select、dml、ddl各种语句的内部处理流程,为以后的sql调优打下坚实的基础。 二、Oracle Database 10g: Administration Workshop I Oracle10g 数据库体系结构(I) 1. 在Linux平台安装Oracle Database 10g 数据库软件 确定系统需求 使用Optimal Flexible Architecture (OFA) 配置Shell环境变量 设置Linux内核参数 使用Oracle Universal Installer 安装软件 Oracle对Linux发布版的认证 2. 创建Oracle 数据库 Oracle 数据库的体系结构 例程体系结构 使用管理框架 使用Database Creation Assistant(DBCA)创建数据库 配置数据库 撤消数据库 管理模板 3. 数据库界面 使用SQL *Plus和iSQL *Plus访问数据库 使用结构化查询语言(SQL) 使用过程语言/结构化查询语言(PL/SQL) 使用Oracle C++ 调用接口(OCCI) 4. 控制数据库 启动和停止iSQL *Plus 启动和停止Enterprise Manager Database Control 启动和停止Oracle Listener 启动和关闭数据库 处理参数文件 5. 存储结构 定义表空间和数据文件的用途 创建表空间 管理表空间 获取表空间信息 使用EM来查看表空间视图 使用Oracle Managed Files (OMF) 创建和管理表空间 6.管理用户 创建和管理数据库用户账户 创建和管理角色 创建和引用特权 控制用户对资源的使用 7. 管理模式对象 创建和修改表 定义约束条件 查看表属性 查看表内容 创建索引和视图 8. 管理数据 通过SQL语句来处理数据 使用Data Pump导入 使用Data Pump导出 使用SQL Loader装入数据 9. PL/SQL 识别PL/SQL(Procedural Language SQL)对象 了解触发器和触发事件 影响PL/SQL 性能的配置选项 10. Oracle 数据库安全 应用最少权限原则 管理默认用户账户 实施标准口令保护功能 跟踪数据库活动 11.Oracle网络服务 (Oracle Net Services) 使用Database Control创建附加的监听器 使用Oracle Net Manager 创建和配置监听程序 使用监听程序控制实用程序来控制Oracle Net Listener 使用Oracle Net Manager 配置客户及中间层连接 使用TNSPING 测试Oracle Net 的连接性 Oracle Nat服务 创建Oracle Net 名称解析方法 12. Oracle Shared Server 了解何时使用Oracle 共享服务器 配置 Oracle Shared Server 监控 Oracle Shared Server Oracle Shared Server体系结构 13. 性能监控 排除无效和不可用的对象中的故障 收集优化程序统计数据 查看性能标准 对性能问题做出反应 14. 前瞻性维护 设置警告和重要预警阈值 收集和使用基准指标 优化和诊断Advisor 自动数据库诊断监控程序(ADDM) 管理自动工作量资料档案库 15.撤消管理 监控和管理撤消 配置撤消保留 保障撤消保留 使用Undo Advisor 撤消表空间大小 16. 监控和解决锁冲突 检测和解决锁冲突 管理死锁 处理事务与锁之间的关系 Oracle数据库的内锁模式
ocp全称Oracle Certified Professional,是Oracle数据库管理员的中级认证,也是DBA行业最普遍的入门级证书。更高级别的则是ocm,中国13亿人,目前只有几百个ocm,你想想含金量多大。西南地区的话,推荐去重庆江北Oracle看看,挺不错的。
这个是oracle的认证,按等级依次分为OCA,OCP,OCM
OCA——认证专员
OCP——认证专家
OCM——认证大师
OCP认证可以表明你对某一职位及相关的Oracle产品有着深刻的理解。成为一个OCP认证专家可以帮助你被更多的雇主注意到,并且增加你获得IT业更具挑战性机遇的机会
OCP是开启Oracle所有产品线的钥匙,Oracle还有ERP、中间件等更多的高端产品,都可以从OCP开始学习和熟悉。一个OCP认证工程师不仅仅可以从事DBA,还可以进一步进行学习成为ERP实施、中间件管理、BI(商业智能)等企业更高薪酬的IT类专家。
更多问题可以到东方瑞通网站上了解
oracle证书上分为三类:OCA证书、OCP证书、OCM证书
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数据库漏洞分析:无需用户名和密码进入你的数据库
一般性的数据库漏洞,都是在成功连接或登录数据库后实现入侵;本文介绍两个在2023年暴露的Oracle漏洞,通过这两种漏洞的结合,可以在不掌握用户名/密码的情况下入侵Oracle,从而完成对数据的窃取或者破坏。这两个漏洞就是CVE和CVE。
引言
国内外很多重要的系统都采用Oracle作为数据存储的数据库;在Oracle中存储着企业或大量敏感的信息,在金钱或政治的诱导下,内外部黑客会想法利用管理、网络、主机或数据库的自身漏洞尝试入侵到数据库中,以达到自身的目的。
本文的作者通过对Oracle俩种漏洞的组合研究,设计了一套在不掌握用户名/密码的方式入侵到Oracle中;这种方法,比传统的需要登录到数据库中的入侵方法,具有更大的安全隐患和破坏性。
本文希望通过对这两个漏洞和攻击方法的介绍,能够引起相关人员的重视,完善对数据库安全的措施。
1、概要介绍
本文提供的方法是基于漏洞CVE和CVE对oracle数据库的攻击测试的方法。
CVE漏洞是Oracle允许攻击者在不提供用户名/密码的’情况下,向远程“TNS Listener”组件处理的数据投毒的漏洞。攻击者可利用此漏洞将数据库服务器的合法“TNS Listener”组件中的数据转向到攻击者控制的系统,导致控制远程组件的数据库实例,造成组件和合法数据库之间的中间人攻击、会话劫持或拒绝服务攻击。
CVE漏洞是Oracle Database 10g/11g身份验证协议实现中存在一个设计缺陷,攻击者无需认证即可远程获取数据库用户密码哈希相关数据,从而可以离线暴力破解用户密码,进一步控制数据库系统。
我们通过如下的步骤和过程可以实现对Oracle的入侵:
(1)利用CVE进行TNS劫持,在监听下利用远程注册,注册同名数据库实例;
(2)新登陆的用户,在TNS的负载均衡策略下,有可能流量登录到伪造的监听服务上;
(3)该监听服务对用户的登陆过程进行监控,并将相关数据流量转发到真实的数据库上;
(4)利用CVE获得通讯过程中的认证相关信息;
(5)对认证相关信息进行离线的暴力破解,获得登陆的密码;
(6)试用破解的用户名/密码登陆Oracle,完成对Oracle中数据的访问;
2、通过CVE进行TNS劫持
该漏洞存在于Oracle的所有版本,并且Oracle至今仅是发布了警告性通知,并未提供解决方案。
要想利用CVE漏洞做TNS劫持,首先需要了解TNS机制。如下图所示oracle 通过在本地解析网络服务名到目标主机IP地址,服务端口号,目标数据库名,把这些信息发送到oracle服务器端监听程序,最后再由监听程序递送DBMS。
其中关键点在于监听会按照目标数据库名递送到名称正确的数据库。那么如果一个监听下有2个同名数据库。监听将自动按照负载均衡把这次访问发送到负载低的数据库上,进行连接访问。数据库注册到监听的方法就决定了,能否同时注册同名数据库在同一个监听下。注册方式分为本地注册和远程注册,通过修改参数可以调整为远程注册。
下面是一段可用的TNS劫持的过程:
.在劫持机上创建一个和目标数据库实例同名的数据库实例。
.在劫持机上修改 tnsnames.ora 文件
添加
listener_name=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=目标机器IP)(PORT=目标机器端口)))
.在劫持机上用SQL*Plus 顺序执行下面步骤。
.$ sqlplus / as sysdba
. SQL> ALTER SYSTEM SETREMOTE_LISTENER=’LISTENER_NAME’;
. SQL> ALTER SYSTEM REGISTER;
.多个客户端,向数据库发起登录。会劫持到一部分客户端的登录信息。
最终达到效果如下图所示:
按照猜想同一个监听下有2个同名实例。客户端访问监听,监听按照客户端中的数据库名信息分配数据库,由于监听下有2个同名数据库,客户端链接很可能会被分配到劫持者的数据库实例下,再通过配置劫持者的本地监听把客户端请求指回原数据库。结构图如下:
测试客户端链接196次。目标数据库实例获得113次,劫持数据库实例获得83次基本满足负载均衡的假设。(注上面实例是local server 下面实例是 remote server)
通过以上方式我们可以截获约一半左右客户端发送到服务器的合法链接。其中获得了服务器IP、端口号、数据库位置、实例名、登录用户名等一系列明文信息和4组密文信息(AUTH_SESSKEY,AUTH_SESSKEY_CLIENT,AUTH_PASSWORD,AUTH_VFR_DATA)。
3、通过CVE进行密码破解
CVE受影响的数据库版本有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所描述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() + ‘x00x00x00x00’
decryptor= AES.new(key,AES.MODE_CBC)
plain =decryptor.decrypt(session)
returnplain
session_hex =’EA2023CB8B46EC68BDC161F8CA170363C1E6F57F3EBC6435F541A8239B6DBA16EAABAE78767′
salt_hex = ‘A7193E546377EC56639E’
passwords =
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 == ‘x08x08x08x08x08x08x08x08’:
print’PASSWORD IS “%s”‘ % password
break
4、建议的预防措施
根据以上两段分析,我们可以有如下的预防措施:
(1)在条件许可的情况下,对Oracle进行补丁升级,对Oracle打cpuoct补丁;注意对于cpuoct补丁要求服务器端和应用服务器端同时升级,否则应用系统将无法访问Oracle;
(2)若无法对Oracle升级,要购买或安装具备虚拟补丁功能的数据库安全产品,防止对CVE和CVE的利用;
(3)建立足够强健的口令,不要使用8位以下密码,或者字典库中的口令。
oracle数据库架构设计的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于oracle数据库架构设计,深入浅出Oracle数据库架构设计指南,如何合理创建Oracle数据库索引的3个要求,Oracle OCP是什么啊?,Oracle数据库基本知识的信息别忘了在本站进行查找喔。
来源地址:深入浅出Oracle数据库架构设计指南 (oracle数据库架构设计)
转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:www.88531.cn资享网,谢谢!^^