oracel报 semmni为0的迁移和升级有哪些区别

Oracle数据库升级或数据迁移方法研究
作者:lcmlsj
字体:[ ] 类型:转载 时间:
本文详细论述了oracle数据库升级的升级前的准备、升级过程和升级后的测试与调整工作,并对各种升级方法在多种操作系统平台上作了测试。
一、数据库升级的必要性
数据库升级是数据库管理员经常要面对的问题,如果你的应用要使用新版本数据库的新特性;如果数据库运行负载过重,而通过软硬件调整又不能有根本性的改善;如果要更换操作系统平台;如果要增强数据库的安全性;还有一个原因是随着新版本数据库的出现与成熟,oracle停止了对旧版本数据库的技术支持,升级到高版本,可以继续获得oracle的支持,还可以利用新版本数据库的新特新,可以改善系统的性能,健壮性,可扩张性和可用性,等等,面对这些问题,需要通过数据库升级才得以解决。不过,如果你的系统运行稳定,没有大的性能瓶颈的话,还是不要轻易升级数据库,因为升级一个产品数据库会面临很多风险.
二、数据库升级或数据迁移情况分析
数据库升级或数据迁移会遇到多种情况,一般有以下几种情况:
1. 相同主机条件下,低版本数据库向高版本数据库的升级。
2. 数据库有了新的补丁级,需要安装新的补丁。
3. 更换了系统主机,如从windows更换为unix系统,数据库需要迁移。
4. 实现跨平台,跨数据库版本的迁移。
5. 32位数据库升级到64为数据库。
6. 标准版的数据库升级到企业版的数据库。
三、制定详细的数据库升级计划
数据库升级操作会面临巨大的风险,因此在数据库升级前制定详细而周密的升级和测试计划,反复验证与测试升级数据库的各个阶段非常必要,这样才能保证升级产品数据库的各个阶段可理解,可预测并能够成功。一般来说,数据库升级的测试计划应该包括以下几种测试类型:
1. 升级测试(Upgrade testing)
2. 最小化测试(Minimal testing)。
3. 功能测试(Functional testing)。
4. 集成测试(Integration testing)。
5. 性能测试(Performance testing)。
6. 容量与负载压力测试(Volume and load stress testing)。
7. 特定的升级前后的测试(Specific Pre-Upgrade and Post-Upgrade Tests)。
8. 制定升级前的备份方案。
9. 升级步骤的反复测试(test the upgrade process)。
10.升级后的数据库的测试(test the upgraded database)。
以上是数据库升级前需要考虑和测试的问题,具体可以参考oracle数据库提供的升级文档,在此对各种要求的测试过程不做详细讨论。
四、数据库升级准备
1.升级数据库前首先要熟悉新数据库的各种新特性,如:表空间、段的管理、参数的变化,内存的管理,数据库回闪特性,存储的管理,sql优化的改进等。
2.确定升级到新版本数据库的升级路径,升级到10gr2的路径取决于当前数据库的发行号(release number),很有可能不能从当前的数据库版本升级到最新版本,这种情况首先升级到一个中间版本,然后再升级到最终的版本。例如:当前版本是oracle9.1.0.1,首先升级到oracle9.1.0.4,然后再从oracle9.1.0.4升级到oracle10gr2。
下表列出了各种版本升级到oracle10gr2的路径:
3.选择升级方法。
4.选择oracle home目录。
5.做好数据库备份。
五、数据库升级的各种方法讨论
实现数据库升级可以选择多种方法,一般有:数据库升级助手(database upgrade assistant),手工的脚本升级,exp/imp(exdmp/imdmp)工具,表空间传输特性(transportable tablespace),table copy,实体化视图(material ized view)等技术,在升级前,首先确定升级路径,根据具体情况选择合适的升级方法,对升级过程的各个阶段进行测试。本文以军卫一号医院信息系统为例,涉及的数据库版本主要有oracle8i,oracle9i,oracle10gr2,操作系统平台主要有windows2000,oracle unbreakable linux as 4等,主要实现oracle8i,oracle9i向oracle10gr2的升级过程,oracle8i,oracle9i运行在windows2000上,oracle10gr2主要运行在windows2000,oracle unbreakable linux as 4两种平台,我使用以上各种方法对各种升级过程都做了测试。以下详细介绍这些方法的升级过程。
1、手工脚本升级
手工脚本升级在命令行运行一些sql脚本和工具,手工升级对升级过程提供了更多的控制,但是如果没有遵循严格的升级步骤,在升级过程中容易出错,它与dbua一样只能在相同的操作系统平台间跨数据库版本升级,对于不同的os平台不能使用,而且升级需要遵循严格的升级路径。
本测试从oracle9.2.0.1升级到oracle10.2.0.3,由于oracle9.2.0.1不能直接升级到oracle10.2.0.3,首先对oracle9.2.0.1安装补丁(补丁号p4_WINNT)升级到oracle9.2.0.4,然后oracle9.2.0.4再升级到oracle10.2.0.3。以下是升级的测试过程:
1.安装oracle 10g r2的软件。
2.打oracle 10g最新的补丁,我打的是升级到10.2.0.2(补丁号p02_WINNT)和10.2.0.3(补丁号p03_WINNT)的补丁,关于如何安装oracle补丁程序,需要认真阅读每个补丁程序提供的readme,按照readme的步骤进行安装。
3.运行Pre-Upgrade Information Tool.分析升级到10g前要做的一些操作,包括:
数据库版本、日志文件大小、 表空间大小、 服务器选项、 初始化参数(新增的,降级的,废弃的)、数据库组件 、sysaux表空间、 集群信息等分析。升级前要解决该脚本生成的各种问题。
启动要升级的DB,用SYSDBA运行10g的ORACLE_HOME/rdbms/admin下的utlu102i.sql,查看产生的日志.
SQL& SPOOL info.log
SQL& @utlu102i.sql
SQL& SPOOL OFF
copy oracle 9i的pfile(D:oracleora92databaseINITzhangye.ORA)到oracle 10g的pfile(D:oracle10gdatabaseINITzhangye.ORA),检查info.log,对oracle 10g的pfile修改.
4.运行Oracle Net Configuration Assistant,生成10g的listener.ora
5.rman备份DB.
6.stop所有oracle 9i的服务.
删除oracle 9i的服务. C:& ORADIM -DELETE -SID test
新建oracle 10g的服务 C:& ORADIM -NEW -SID orcl -MAXUSERS 10 -STAMODE AUTO -PFILE D:oracle10gdatabaseINITzhangye.ORA
7.UPGRADE选项启动DB. SQL& STARTUP UPGRADE
8.创建SYSAUX表空间CREATE TABLESPACE sysaux DATAFILE 'D:oracleoradatazhangyesysaux01.dbf'
SIZE 500M REUSE
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO
9.运行10g的ORACLE_HOME/rdbms/admin/catupgrd.sql,然后运行utlu102s.sql查看升级结果.
SQL& SPOOL upgrade.log
SQL& @catupgrd.sql
SQL& @utlu102s.sql
SQL& SPOOL OFF
检查upgrade.log,如果有错误,处理错误后再次运行catupgrd.sql.
10.重新启动DB,编译无效对象.
SQL& shutdown immediate
SQL& startup pfile=D:oracle10gdatabaseINITzhangye.ORA
SQL& @D:oracle10gRDBMSADMINutlrp.sql
编译后没有无效对象,升级完成。
SQL& SELECT count(*) FROM dba_objects WHERE status='INVALID';
2、数据库升级助手dbua:
dbua是一个图形工具,它自动化了以上手工升级的所有过程。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具查看: 2335|回复: 8
oracle11g做全库迁移时遇到的问题
论坛徽章:0
源数据库环境:Oracle Linux 6-64位;Oracel 11.2.0.3.0 - 64位
目标数据库环境:windows server 位;Oracel Version:11.2.0.10
源数据库操作步骤:
1.源数据库做全库(full=y)导出
[oracle@oramanager ~]$ sqlplus /as sysdba
SQL& create directory expdp as '/home/expdb';
SQL& grant read,write on direc
[oracle@oramanager ~]$ expdp system/oracle dumpfile=hts01.dmp full=y DIRECTORY=expdb
2.将成功导出数据库拷贝到目标计算机 c:\expdb\hts1.dmp
目标数据库操作步骤:
1.新建数据库hts1
2.导入hts01数据库
c:\ sqlplus / as sysdba
sql& create directory htsr1 as 'c:\expdb';
sql& grant read,write on directory hts1
c:\ impdp system/xxx directory=hts1 dumpfile=hts1.dmp logfile=hts1_.log table_exists_action=truncate
导入过程报错:
ORA-39083: 对象类型 TABLESPACE 创建失败, 出现错误:
ORA-02236: 文件名无效
ORA-39083: 对象类型 SEQUENCE 创建失败, 出现错误:
ORA-01917: 用户或角色 '' 不存在
ORA-39083: 对象类型 TYPE 创建失败, 出现错误:
ORA-01435: 用户不存在
不知道错误原因在哪里?请各位专家指点!
论坛徽章:300
版本不一致,先把目标库的版本升级成和源库一致再搞,
求职 : 认证徽章论坛徽章:9
一个是linux ,一个是windows的,表空间需要先创建吧
论坛徽章:0
water_chou 发表于
一个是linux ,一个是windows的,表空间需要先创建吧
11g全库导入时不是会自动创建表空间和用户吗?
求职 : 论坛徽章:4
导入时候,表空间不会自动创建,
此外,还要注意下,临时表空间的名字不一致也有可能导致创建用户失败
建议看下导入日志中,最开始的错误。
最开始报的错是后续报错的根源
论坛徽章:25
真没有搞过全库导出导入的迁移,膜拜。整库迁移为什么不用rman.
论坛徽章:156
最基本的要求:不同平台的话,如果目录不同,表空间要预先创建。
认证徽章论坛徽章:3
1、表空间提前创建,如果要从A表空间挪到B表空间,需要加参数remap_tablespace
2、数据泵版本问题,数据泵版本是向下兼容的
3、对象问题(用户),需要通过remap_schema解决
论坛徽章:0
apporacle 发表于
导入时候,表空间不会自动创建,
此外,还要注意下,临时表空间的名字不一致也有可能导致创建用户失败
这样解决的:
1.数据库版本同步;
2.创建了表空间和临时表空间;
3.通过schemas导入
itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号: 广播电视节目制作经营许可证:编号(京)字第1149号oracel update-学网-提供健康,养生,留学,移民,创业,汽车等信息
oracel update
update 表 set 字段1 = 值,字段2 = 值 where 字段3 = 值 一样的啊!!和sqlserver.into&test&values&(4,'赵六',56);创建触发器: create&or&replace&trigger&t_test &before&update& &nb... AFTER 触发器, 就是本表的更新已经结束了, 不能在通过 :NEW 修改自己这个表了。 要用 BEFORE 触发器 SQL& create or replace trigger t_tr1 2 before update on...hu0829说的对,oracle和sql server不同,是没有update from这种语法结构的。 在使用left jion时,on和where条件的区别如下: 1、 on条件是在生成临时表时使用的条件,它不管on中...update t2 set c=(select b from t1 where t1.a = t2.a) where exists(select 1 from t1 where t1.a = t2.a)update 8001 set b = ' ' where a = 1 and b = 0 ;oracle中update可以批量修改一列数据,而不是插入一列数据。如,目前test表中有两列数据。 现在要为表增加一个age字段,可用如下语句: alter&table&test&add&...update A set A.zch = (select zch from B where A.id=B.id and A.zch!=B.zch) where length(A.zch)=13update 表名 set 字段名=需要的值 where 字段=条件 where中的条件最好是主键,oracle自动给主键加索引,这样数据库大的时候能快的多。 建议你跟踪下你的语句,有时在SQL...
您可能还关注:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
大类导航: |关于ORACEL存储过程执行UPDATE的搜索推荐 -oracle-TryCatch
>> 相关推荐
关于的搜索推荐
目前系统的要求就是必须要用存储过程执行update语句 所以我把updatetableNameset(SETVALUE)where(CONDITION)中的SETVALUE和CONDITION拼好了,发给存储过程拼接SQL并执行
PROCEDUREUPDATETABLE( V_ERROUTNUMBER, v_cursorOUTt_cursor, SETVALUESINVARCHAR2, CONDITIONSINVARCHAR2 )IS cSQLVARCHAR2(8000);/*SQLセット用*/
BEGIN V_ERR:=0; cSQL:='UPDATEBOHT0011SET'; cSQL:=cSQL||SETVALUES; cSQL:=cSQL||'WHERE'; cSQL:=cSQL||CONDITIONS;
EXCEPTION WHENOTHERSTHEN V_ERR:=SQLCODE; ENDUPDATETABLE;
但是调用之后发现表没有更新,为啥?拼接的SQL没有问题
executeimmeidatecSQL; commit exception................
你只是组织了语句,没有执行。
soso没commit
没看见执行SQL的语句啊 executeimmeditecSQL;
可以执行了,但是报911错误 sql语句 UPDATEBOHT0011SETSHOHIN_CD1='00',SU=115,UPD_YMD=,UPD_TM=WHERETORIHIKI_KBN='021'ANDKAKUCHO_TORIHIKI_KBN='1'ANDHHT_ID='1001'ANDHHT_...
如何看oracel上的一个存储过程执行了多长时间了(或进度情况)?
------------
在SQL PLUS下SQL&SQL&执行存储过程
------------
如何看oracel上的一个存储过程执行了多长时间了(或进度情况)?
------------
在SQL PLUS下SQL&SQL&执行存储过程
------------
如何看oracel上的一个存储过程执行了多长时间了(或进度情况)?
------------
在SQL PLUS下SQL&SQL&执行存储过程
------------
关于SQL中通过链接服务器执行分布式事务过程时只能查询不能执行insert update delete等操作,请问如何解决此问题,谢谢!两台安装了SQL2005EXPRESS的服务器,远过...
这个怎么转了?ALTER
proc ShowFeteTime@tvid int,@NextfeteTime datetime outputas begindeclare @time datetime,@nowfetename varchar(50),@nexttime datetim...
/// &summary&
/// 执行存储过程,返回影响的行数
/// &/summary&
/// &param name="storedProcName"&存储过...
CREATEPROCEDUREECS_MIS_PREPARE_REQ(@batchIdINTEGER,@retcodeVARCHAR(6)OUTPUT)ASBEGINDECLARE@nowDateVARCHAR(8)SET@nowDate=convert(varchar(8),getDate(),1...
错误产生:只要先执行一个存储过程,再执行任何和数据库有关的都会出错。提示:'SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other un...
存储过程CREATE PROCEDURE sp_accordIntegral @fid int,@integral int,@msg int outputASdeclare @result intselect @result = integral from factory where fac...
select可以,delete或update就没响应了,是怎么回事,数据库被锁了?原来没问题的,就是在执行了一个存储过程超时后就这样了
------------
肯定是记录被加锁了...
设计如下:有两个表t1,t2。t1有两列:autoid,t2有两列:id,namet1中的autoid列(一方)和t2中的id列(多方)建立了一对多的级联删除关系(没有级联更新)。事实上au...
Update FN_nengliB aSet TLPower_BScope=(Select TLPower_BScope From FN_Temp12_GJ_getNL_IndiceWhere a.TypeID=b.BuildUnitID),TLPower_Total=(Select TLPower...
其实有个另外个程序也UPDATE 该表的行! 次数也很频繁! 所以TOP事件里排行第2就是 TX-LOW LOCK CONTENTS等待事件!存储过程里的UPDATE是非循环的,只更新一行数...
数据窗口在执行update()时,是执行对窗口中的数据执行insert方式,可以通过设置使其对数据进行update吗?我现在可以通过动态修改数据窗口的syntax属性,table(co...
"ORA-06550: line 1, column 7:\nPLS-00201: identifier 'DOTNOT.DOTNETPAGERECORDSCOUNT' must be declared\nORA-06550: line 1, column 7:\nPL/SQL: Sta...oracle迁移何时是执行迁移的最佳时机?
这是一个比较棘手的问题。
传统意义上来说,迁移和升级会安排在没有用户在线的时候进行。这样可以减少对大家 工作的影响,但也意味着管理员要在同事们享受下班、周末、假日、甚至休假 时,埋头进行迁移项目。其他需要考虑的事项包括:
• 本机工具需要停机。根据环境的大小,该过程可能耗时几个小时或几天。
• 改用新环境还需要进行测试,这需要额外占用几天、几周甚至几个月的时间,具 体取决于测试的规模和全面程度(请参阅第10页的“如何降低迁移或升级过程中 的风险”)。
• 除测试外,大部分升级和迁移工作都在周末进行,这样数据库管理员便可执行备 份,启动升级并及时使系统正常运行,以便用户在周一早晨能够正常工作。
QQ截图53.jpg (30.72 KB, 下载次数: 11)
15:54 上传
依赖电子商务的公司尤其如此,由于他们不允许存在停机时间,因此根本没有最佳迁移 时间。停机会中断业务并影响企业的利润。
借助现有的合适工具,您可以在独立于生产环境的临时系统中运行环境的副本,从而最 大限度提高可用性。最重要的是,您可以不再花费那么多夜晚、周末和假期时间来考虑 迁移和升级工作
上一篇:下一篇:
width:100%">
1. 2. 3. 4. 5. 6. 7. 8.
Copyright &
版权所有 All Rights Reserved.
Powered by

我要回帖

更多关于 oracel11g 客户端下载 的文章

 

随机推荐