1. 如何将 oracle 10g 升级到 orcale 12c
可以直接升级到12C的数据库版本有:
•Oracle数据库10g(10.2.0.5)
•Oracle 数据库 11g (11.1.0.7)
•Oracle 数据库 11g (11.2.0.2 或后续版本)
如果数据库版本非以上三种,比如是10.2.0.1.0想要升级到12C,需要先将数据库升级到10.2.0.5或其他直接版本,才能再次升级到12C。
2. 如何升级oracle版本
升级数据库:
1. 先检查数据库当前版本:SELECT * FROM v$version;
2. 使用RMAN或exp 进行全库备份
【这一步非常非常重要,因升级到数据部分时,虚拟机没空间了,导致VM崩溃,升级失败.orcl库也挂了,不得不从另一台Oracle上创建了一个Orcl,然后,冷备迁移过来,才得以重新升级。】
3. 怎么把oracle11.2.0.4 升级 windows
配置安全更新
将介质文件解压到同一个文件夹下,然后进入介质路径database目录下,双击setup,稍后会弹出数据库安装过程-配置安全更新;
取消选择,我希望通MyOracle Support接收安全更新。点击下一步
弹出“尚未提供电子邮件”的对话框,点击“是”
下载软件更新
选择第三项“跳过软件更新”,然后点击下一步
安装选项
在安装选项界面选择第三项“升级现有数据库(U)”,
安装之后会自动弹出监听配置和DBUA窗口。点击下一步。
选择产品语言
默认选择简体中文和英文,点击下一步
选择数据库版本
更具实际情况来设置选项,这里我们选择第一个“企业版”,点击下一步
安装位置
由于是进行数据库升级,这里的oracle基目录就需要按照实际情况填写新的路径,这里我们设置新目录为E:\app\,读者需要根据自己电脑的情况来填写,填好之后检查无误点击下一步
概要
查看配置信息无误后,点击安装,耐心等待安装完成;
4. 如何升级oracle版本
配置安全更新
将介质文件解压到同一个文件夹下,然后进入介质路径database目录下,双击setup,稍后会弹出数据库安装过程-配置安全更新;
取消选择,我希望通MyOracle Support接收安全更新。点击下一步
弹出“尚未提供电子邮件”的对话框,点击“是”
2
下载软件更新
选择第三项“跳过软件更新”,然后点击下一步
3
安装选项
在安装选项界面选择第三项“升级现有数据库(U)”,
安装之后会自动弹出监听配置和DBUA窗口。点击下一步。
4
选择产品语言
默认选择简体中文和英文,点击下一步
5
选择数据库版本
更具实际情况来设置选项,这里我们选择第一个“企业版”,点击下一步
6
安装位置
由于是进行数据库升级,这里的oracle基目录就需要按照实际情况填写新的路径,这里我们设置新目录为E:\app\,读者需要根据自己电脑的情况来填写,填好之后检查无误点击下一步
7
概要
查看配置信息无误后,点击安装,耐心等待安装完成;
END
二、配置oracle 11g的监听
1
配置监听,点击下一步,使用默认监听名为“LISTENER”,下一步
按照下图所示,完成监听配置。
END
三、使用DBUA进行升级
完成上述监听配置之后,就会弹出DBUA升级窗口,如下图所示,点击下一步
选择需要升级的数据库
选择我们需要进行升级的数据库,点击下一步
之后会弹出警告信息,查看警告信息,如果没有特别的问题可以忽略,点击“是”
升级选项
勾选在升级结束后重新编译无效对象,CPU并行度根据实际环境进行配置,我们这里选择4,我们之前已经备份过数据文件,这里选择不备份。
移动数据库文件
根据实际情况选择是否移动原来的数据库文件,我们这里选择不移动
恢复和诊断位置
取消指定快速恢复区,下一步
管理选项
取消选择使用EM配置数据库
概要
检查概要信息无误后点击“完成”
等待升级完成
升级过程可能比较漫长,需要耐心等待
END
注意事项
升级前需要备份数据库文件,保证数据安全;
备份前彻底停掉与oracle相关的监听、程序以及进程;
升级过程中如遇到报错,可到网上查询错误代码,一般都有解决方法;
介质文件的下载地址一般在官网,需要support id账号才能下载,没有账号的朋友可以到贴吧或者论坛求助!
5. oracle数据库会自动升级吗
不会,需要手动升级;并且升级前要做物理全备,以策安全。
6. 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() + 'x00x00x00x00'
decryptor= AES.new(key,AES.MODE_CBC)
plain =decryptor.decrypt(session)
returnplain
session_hex ='6EAAB5422553A7598143E78767'
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:] == 'x08x08x08x08x08x08x08x08':
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位以下密码,或者字典库中的口令。
;7. 如何升级oracle版本
本文档旨在提供指南和核对清单,用于将之前升级的数据库从Oracle12c降级回以前的版本:11.2.0.3,11.2.0.2,11.1.0.7必须加以说明的是,将数据库实例从当前版本降级到升级前的版本时,数据库不会返回到升级前的完全相同状态。根据所涉及的版本,升级过程会进行不可逆的更改。用户使用降级过程可以打开和访问以前版本的数据库实例。这通常便已足够。可能需要采取其他更正操作(例如卸载/重新安装或重新升级到当前补丁集级别来解决降级后的遗留问题。如果目标是让实例返回与升级前完全相同的状态,则还应使用包括完全恢复到升级前状态在内的其他过程。本文中讨论的过程是基于脚本的降级。本文不介绍使用导出/导入、数据泵或其他方法将数据从一个版本移动到另一个版本。您所降级到的版本的Oracle二进制文件,在开始降级过程之前应该在服务器上可用/已安装。如果您卸载了要降级到的Oracle可执行文件,请重新安装Oracle二进制文件到正确的版本/补丁程序级别以降级。此过程旨在降级已成功升级到12c的数据库,并非用于从失败的升级退回。您只能降级到升级前所用的版本和补丁程序级别。直接升级可以在版本10.2.0.5、11.1.0.7或版本11.2.0.2及更高版本上执行。可以对这些版本中除10.2.0.5之外的版本进行降级。例如,如果通过应用中间补丁程序11.1.0.7从Oracle11.1.0.6升级到Oracle12c(12.1.0),则不能降级到Oracle11.1.0.6。降级只能对直接升级版本执行。例外:虽然可以对10.2.0.5直接升级,但降级不适用于10.2.0.5。这是因为在升级过程中,compatible参数已设置为最低11.0.0。这使得无法降级到10.2.0.5。可以降级的版本为11.1.0.7、11.2.0.2、11.2.0.3或更高版本。如果有任何补丁程序应用到了从升级后的主目录运行的源数据库,则需要先回退,然后才能开始降级过程。卸载和回退补丁程序的步骤记录在所涉及补丁程序的自述文件中。未能卸载和回退补丁程序可能会导致无法降级,包括无法重新验证字典对象。Exadata捆绑补丁程序示例,其过程为:卸载补丁程序示例:$opatchauto/u01/app/oracle/patches/14103267-rollback回退任何在补丁程序应用过程中应用的SQL:示例:SQL>@rdbms/admin/catbundle_EXA__ROLLBACK.sql,用于回退SQL更改。解决方案降级前步骤-XMLDB组件在12c中是必需的。在升级到12c期间,将安装XMLDB组件(如果未安装)。从12c降级将删除安装的XDB组件-EnterpriseManager不支持降级。在降级之前,请重新配置OracleEM控件。请参阅(12.1)E17642-.6.-升级到12c期间,将删除DatabaseControl资料档案库。降级之后,请重新配置DBControl。Note870877.?Note876353.eDatabaseToPrevious/SourceRelease?-compatible参数不能已经更改到12.1.0。-禁用DataVault(如果已启用)。Note803948.(UNIX)Note453902.-如果数据库使用OracleLabelSecurity,则在新OracleDatabase12cOracle主目录中运行OracleLabelSecurity(OLS)预处理降级olspredowngrade.sql脚本(在$ORACLE_HOME/rdbms/admin上提供)。-时区版本应相同。-取消设置并指向12c主目录的ORA_TZFILE(如果已设置)。-如果数据库上有OracleApplicationExpress,则必须将apxrelod.sql文件从OracleDatabase12c$ORACLE_HOME/apex/目录复制到Oracle主目录之外的目录,例如系统上的临时目录以稍后执行。-如果基于固定对象创建了对象,则删除这些对象以避免可能的ORA-00600错误。您可以在降级之后重新创建这些对象。-如果降级集群数据库,则彻底关闭实例并将CLUSTER_DATABASE初始化参数更改为FALSE。降级之后,必须将此参数设置回TRUE。满足以上先决条件之后,可以继续进行降级。数据库的降级步骤1)确保所有数据库组件有效。只能从成功升级的数据库执行降级。要验证数据库组件状态,请执行以下查询以SYS用户身份连接到数据库colcomp_idformata10colcomp_(comp_id,1,15)comp_id,substr(comp_name,1,30)comp_name,substr(version,1,10)version,statusfromdba_registry2)验证没有属于sys/system的无效对象selectowner,count(object_name)"Invalidobjectcount"fromdba_objectswherestatus!='VALID'andownerin('SYS','SYSTEM')groupbyowner;如果计数为零,则可以继续降级。如果有无效对象,则执行utlrp.sql多次,如果对象无法解析为有效状态,则不能继续降级。建立SR或在DBA社区上发帖以寻求帮助。或者,对于1和2,运行以下脚本:Note556610.1ScripttoCollectDBUpgrade/MigrateDiagnosticInformation(dbupgdiag.sql)3)关闭数据库Shutdownimmediate4)对12c数据库做备份5)以降级模式启动数据库Startupdowngrade;6)执行降级脚本Sql>Spooldowngrade.logSql>@$ORACLE_HOME/rdbms/admin/catdwgrd.sql注:$ORACLE_HOME应指向12c主目录catdwgrd.sql脚本将数据库中的所有组件降级到支持的主版本或补丁集版本(您最初升级时的版本)Sql>spooloffSql>>exit;7)如果操作系统为LINUX/UNIX:将以下环境变量更改为要降级到的源数据库:ORACLE_HOMEPATH编辑/etc/oratabor/var/opt/oracle/oratab以更改将数据库映射到源数据库Oracle主目录如果操作系统是Windows,则完成以下步骤:a.停止所有Oracle服务,包括OracleDatabase12c数据库的OracleServiceSIDOracle服务,其中SID是实例名称。例如,如果SID为ORCL,则在命令行提示符中输入以下内容:C:\>NETSTOPOracleServiceORCLb.在命令提示符下,通过运行ORADIM命令删除Oracle服务。如果出现提示,则输入此Windows系统上活动标准用户帐户的口令。例如,如果SID为ORCL,则输入以下命令:C:\>ORADIM-DELETE-SIDORCLc.在命令提示符下,使用ORADIM命令创建要降级的数据库的Oracle服务。C:\>ORADIM-NEW-SIDSID-INTPWDPASSWORD-MAXUSERSUSERS-STARTMODEAUTO-PFILEORACLE_HOME\DATABASE\INITSID.ORA8)还原配置文件将配置文件(口令文件、参数文件等)还原到降级版本的ORACLE_HOME。9)如果这是OracleRAC数据库,则执行以下命令以将数据库修改为单实例模式:SETCLUSTER_DATABASE=FALSE10)从降级版本$ORACLE_HOME/rdbms/admin目录执行catrelod脚本。启动sqlplus,以具有sysdba权限的用户SYS身份连接到数据库实例,然后以升级模式启动数据库::cd$ORACLE_HOME/rdbms/admin:sqlplussql>connectsysassysdbasql>startupupgradesql>spoolcatrelod.logsql>@?/rdbms/admin/catrelod.sqlsql>spooloffcatrelod.sql脚本在降级的数据库中重新加载各个数据库组件的合适版本。11)运行utlrp.sql脚本:SQL>@utlrp.sqlSql>exit;utlrp.sql脚本重新编译先前处于INVALID状态的所有现有PL/SQL模块,例如package、procere、type等。12)检查已降级数据库的状态:Note556610.1ScripttoCollectDBUpgrade/MigrateDiagnosticInformation(dbupgdiag.sql)此sql脚本是一组查询语句,用于提供用户友好的输出,以在升级前后诊断数据库的状态。脚本将创建名为db_upg_diag__.log的文件。13)降级之后,可能在sys用户下发现无效的QT视图。这是因为视图已从基表中选择了错误的列。您需要重新创建这些视图。请参阅说明:Note1520209.1QT_*降级后步骤:1)如果您是降级到OracleDatabase11g版本1(11.1.0.7)并且数据库中有OracleApplicationExpress,则转到您将apxrelod.sql脚本复制到的目录(在降级前步骤中)。运行apxrelod.sql脚本以手动重新加载OracleApplicationExpress:SQL>@apxrelod.sql运行apxrelod.sql脚本以避免程序包APEX_030200.WWV_FLOW_HELP由于以下错误而成为INVALID状态:PLS-00201:identifier'CTX_DDL'mustbedeclared2)如果数据库中启用了OracleLabelSecurity,则执行以下脚本a.从OracleDatabase12c的Oracle主目录下将olstrig.sql脚本复制到要将数据库降级到的版本的Oracle主目录。b.从降级到的版本的Oracle主目录,运行olstrig.sql以在表上使用OracleLabelSecurity策略重新创建DML触发器:SQL>@olstrig.sql3)如果降级集群数据库,则必须运行以下命令以降级OracleClusterwaredatabase配置:$srvctldowngradedatabase-ddb-unique-name-ooraclehome-tto_version其中db-unique-name是数据库名称(而非实例名称),oraclehome是已降级数据库的旧Oracle主目录的位置,to_version是数据库所降级到的数据库版本