Oracle-数据库基础学习指南-初学者入门 (oracle闪回恢复数据)
在当今数字化时代,数据库已成为企业运营的关键要素。而Oracle数据库,作为全球领先的企业级数据库管理系统,更是备受推崇。本文将带您深入了解Oracle数据库的基础知识,帮助您从零开始构建自己的数据库知识体系。
什么是Oracle数据库?
Oracle数据库是一种关系数据库管理系统(RDBMS),它允许您存储、管理和检索数据。关系数据库将数据组织成表,表中的每个行都代表一条记录,而每列都代表记录中的一个属性。Oracle数据库以其可靠性、可扩展性和安全性而著称。
Oracle数据库架构
Oracle数据库架构主要包括以下组件:
- 数据库实例:这是数据库软件在计算机上运行的实例。每个实例都有自己的内存和后台进程。
- 数据库:这是逻辑数据存储单元,它包含表、索引和其他数据库对象。
- 表空间:这是数据库文件系统上的物理存储区域,它包含表和索引的数据文件。
- 表:这是存储数据的逻辑结构,它由行和列组成。
- 行:这是表中的单个数据记录。
- 列:这是表中数据的一个属性。
Oracle数据库术语
为了理解Oracle数据库,了解以下术语非常重要:
- 主键:表中唯一标识每条记录的列。
- 外键:它将一个表中的行与另一个表中的行相关联的列。
- 索引:这是用于快速查找数据的一种结构。
- 视图:这是从其他表或视图中创建的虚拟表。
- 触发器:这是当某些事件发生时自动执行的代码。
Oracle数据库优点
Oracle数据库提供以下优点:
- 可靠性:Oracle数据库以其极高的可靠性和稳定性而著称。
- 可扩展性:Oracle数据库可以随着您的业务需求进行扩展,从而支持从小型到大型数据库。
- 安全性:Oracle数据库提供了一系列安全功能,以保护您的数据免遭未经授权的访问。
- 性能:Oracle数据库经过优化,可以快速高效地处理大量数据。
- 丰富特性:Oracle数据库提供了一系列丰富的特性,包括高级分析、机器学习和空间数据支持。
Oracle数据库应用
Oracle数据库广泛用于各种应用,包括:
- 事务处理:Oracle数据库非常适合处理高吞吐量的事务。
- 数据仓库:Oracle数据库是构建大型数据仓库和分析系统的理想选择。
- 客户关系管理(CRM):Oracle数据库用于存储和管理客户数据。
- 企业资源规划(ERP):Oracle数据库用于管理财务、供应链和人力资源等业务流程。
- 云计算:Oracle数据库可以在云平台上部署,以提供灵活性和按需可扩展性。
结论
Oracle数据库是一种强大而可靠的数据库管理系统,可满足企业各种规模和复杂性的需求。通过了解Oracle数据库的基础知识,您可以开始构建自己的数据库知识体系,并利用Oracle数据库为您的业务带来优势。
oracle怎么学
oracle的体系太庞大了,对于初学者来说,难免会有些无从下手的感觉,什么都想学,结果什么都学不好,分享下自己的学习经验。 一、定位 oracle分两大块,一块是开发,一块是管理。 开发主要是写写存储过程、触发器什么的,还有就是用Oracle的Develop工具做form。 有点类似于程序员,需要有较强的逻辑思维和创造能力,个人觉得会比较辛苦,是青春饭J; 管理则需要对oracle数据库的原理有深刻的认识,有全局操纵的能力和紧密的思维,责任较大,因为一个小的失误就会down掉整个数据库,相对前者来说,后者更看重经验。 二:学习可以先直接挑本ORACLE入门看,类似ORACLE10G入门,ORACLE基础的书,不求完全懂,能看一点是一点,学习ORACLE是一个长期的过程,你在懂了一些后,再去看别的书,你会找到很多相同点,那时候就会有恍然大悟的感觉,一点点看就OK了。 多看网上视频教程、多上机实践练习相结合。 报培训班学习,可快速入门,主要是能获得很多实践经验。 CUUG很不错你可以了解下,CUUG官网上也有很多oracle资源,还有免费的网络授课。
Oracle数据库基本知识
![初学者入门](https://tyye.cn/zb_users/theme/tpure/style/images/lazyload.png)
Oracle数据库基本知识
Oracle target=_blank>
它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的适应高吞吐量的数据库解决方案。
介绍
ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。
Oracle数据库最新版本为OracleDatabase 12c。Oracle数据库12c引入了一个新的多承租方架构,使用该架构可轻松部署和管理数据库云。此外,一些创新特性可最大限度地提高资源使用率和灵活性,如Oracle Multitenant可快速整合多个数据库,而Automatic;
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并且文件中增加_LOGON_VERSION=12才有效。
正如CVE-2012-3137所描述Oracle为了防止第三方通过网络获取登录信息包。而对密码进行了加密处理。本部分只以oracle11.1密码如何破解为例进行说明。
在发起连接之后(oracle牵手完成),客户端和服务器经过协商确定要使用的验证协议。要完成这个任务,客户端首先向数据库发送一个包。包中包含客户端主要信息和所请求的加密方式。数据库确认加密方式有效后,发送一个确认服务包如下图所示:
在通过安全网络服务完成任何所要求的协议之后,数据库用户被O3logon(oracle验证方式) 进行验证,这个协议执行一个序列来向数据库证明客户端拥有密码。为了避免网络第三方截获到密码。首先客户端发送用户名到数据库来表明用户身份。数据库端根据加密协议,其中96位的作为数据库端密钥,20位的作为偏移量,它对每个连接都是不同的。一个典型的数据库端发给客户端的密钥如下:
AUTH_89FIGODKWASDF……………………
客户端根据加密算法向服务器端发送96位的客户端密钥和64位的密码密钥。服务器端计算客户端传入的密码密钥。如果计算后密码密文和数据库中存储的16位密码密文一致则验证通过。
根据这个过程可知上面TNS劫持包中取得的加密信息:AUTH_SESSKEY,AUTH_SESSKEY_CLIENT,AUTH_PASSWORD,AUTH_VFR_DATA这四个值是解密的关键。我们把他们按照SHA1,MD5,AES192进行一系列处理。最终通过数据字典碰撞得到密码明文。
下面这段网上公布的一段示例代码,这段代码与笔者的思路不完全相同,但也能大概地说明这个漏洞的攻击过程:
import hashlib
from import AES
def decrypt(session,salt,password):
pass_hash= 1(password+salt)
key =pass_() + \x00\x00\x00\x00
decryptor= (key,_CBC)
plain =(session)
returnplain
session_hex =EA2043CB8B46EC68BDC161F8CAC1E6F57F3EBC6435F541A8239B6DBA16EAABAE
salt_hex = A7193EECE
passwords = [test,password,oracle,demo]
for password in passwords:
session_id= decrypt(session_(hex),salt_(hex),password)
printDecrypted session_id for password %s is %s %(password,session_(hex))
ifsession_id[40:] == \x08\x08\x08\x08\x08\x08\x08\x08:
printPASSWORD IS %s % password
4、建议的预防措施
根据以上两段分析,我们可以有如下的预防措施:
(1)在条件许可的情况下,对Oracle进行补丁升级,对Oracle打cpuoc补丁;注意对于cpuoc补丁要求服务器端和应用服务器端同时升级,否则应用系统将无法访问Oracle;
(2)若无法对Oracle升级,要购买或安装具备虚拟补丁功能的数据库安全产品,防止对CVE-2012-3137和CVE-2012-1675的利用;
(3)建立足够强健的口令,不要使用8位以下密码,或者字典库中的口令。
;免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。