oracle9i升级oracle10g

2023-11-18

author:skate
time:2009-09-11
网上看到一篇oracle9i升级oracle10g的文章,觉得不错.记录下来
你可以参考汪海的文章 http://wzwanghai.spaces.live.com ... 37AFBD116!355.entry
运用transport tablespace进行快速oracle版本升级(9i-10g)

大家可能都知道在进行oracle数据库版本升级的时候会有2种方式

1.通过dbua(database upgrade assistant)

2.exp/imp

通过dbua来升级的话由于不涉及到数据文件的改变,所以速度会比较快,但是如果dbua一旦在升级的过程中出现问题可能会导致原来的库不可用。

而通过exp/imp虽然对原来的库不会有影响,但是如果数据库比较大的话那么升级的时间将会是不可接受的(尤其对24*7)的应用来说。

针对这个问题,这次的2006 oracle openworld法国的amadeus公司提供了一个非常有创意的点子,就是利用dataguard和transport tablespace功能来实现最短时间内的安全升级。

首先让我们来了解一下amadeus公司



艾玛迪斯全球旅游分销系统公司(Amadeus Global Travel Distribution SA)是全球领先的旅游行业技术及分销供应商。1987年艾玛迪斯总部建立于西班牙马德里。在 Sophia Antipolis(法国尼斯附近)和美国波士顿设立有市场及开发部门。公司的数据中心位于德国慕尼黑附近的Erding。公司提供各种先进的旅游行业技术解决方案,至今已成为成长最快并被最广泛使用的全球分销系统(GDS)。

作为卓越的技术合作伙伴,艾玛迪斯把最先进的信息技术带入旅游行业,使众多的旅游供应商、休闲及商务旅游服务商从中获益。通过设立服务于当地市场的national marketing companies(NMCs),艾玛迪斯用其庞大的信息技术资源向全世界200个国家和地区提供优质的技术解决方案。

我们再来看一下跟它们的数据库相关的信息

他们的业务系统达到99.99%的可用率,每秒钟有30万次的数据库请求,每天有2亿8千万次transaction,这是一个相当大的数据库系统,如果用dbua或者exp/imp他们都不能接受升级的风险,于是他们的技术人员就想出了用dataguard和transport tablespace功能来实现最短时间内的安全升级。

具体的实现方法是这样的

1.先为主库建立一个dataguard数据库(可以在线做)

2.在dataguard库上安装10g软件(可以在线做)

3.整理一些不能通过transport tablespace搞定的东西,比如sequence,synonyms,grants......

4.停止主库这边所有write的应用,提供read的服务(写入停止,提供查询)

5.强制归档主库redo log并传到dataguard恢复(写入停止,提供查询)

6.利用transport tablespace来转换数据库版本,并创建sequencee,synonyms,grants等(写入停止,提供查询)。

7.验证新环境的过程,在验证过程中如果发现有问题,则可以切换会原来的系统(写入停止,提供查询)。

8.切换应用到10g数据库(提供服务)

amadeus在演习时做到10分钟内完成4,5,6,7并成功切换了系统,考虑到他们的数据库繁忙程度和数据库容量非常大,这真是一项伟大的成就。我们可以在以后的数据库版本的升级过程中借鉴他们的方法。



我们再从技术上验证一下transport tablespace可以运用在版本升级

在9i的库上创建一个test tablespace

create tablespace test
datafile '/opt/oracle/test.dbf' size 10m
extent management local autoallocate;

创建一张表在test表空间上

create table test1(a number) tablespace test;

insert into test1 values(1);
commit;

SQL 9i>select * from test1;

         A
----------
         1



把test表空间置为read only模式


alter tablespace test read only;

到处test tablespace的metadata

exp /'sys/sys as sysdba/'  transport_tablespace=y tablespaces=(TEST)  file=test.dmp log=test.log

传输dmp文件和数据文件(在amadeus的案例里面由于10g的库和9i的库在同一台机器上,所以避免了拷贝数据文件的时间,这也是整个方案的重点之一)到远程

scp test.dmp oracle@10.0.100.115:/opt/oracle/

scp /opt/oracle/test.dbf oracle@10.0.100.115:/opt/oracle/



在目标库上导入metadata数据

imp /'sys/sys as sysdba/' transport_tablespace=y tablespaces=(TEST) file='/opt/oracle/test.dmp' datafiles=

('/opt/oracle/test.dbf') tts_owners=test fromuser=test touser=test log=tts_i.log



查看test1表,发现数据一致


SQL 10G>select * from test1;

         A
----------
         1

把test表空间置为read write模式

alter tablespace test read write;

insert into test1 values(2);


SQL 10G>select * from test1;

         A
----------
         1
         2

一切正常,测试完毕



这个测试简单的模仿了transport tablespace升级数据库的可能性,当然在实际过程中我们要校验是否自包含表空间,是否需要创建sequence等,但是总体来说这种方案能提供最短时间内的数据库版本升级。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

oracle9i升级oracle10g 的相关文章

随机推荐

  • openslide对.svs切成tile,并显示的记录

    仅作为记录 大佬请跳过 文章目录 直接上代码 参考 直接上代码 有 svs图和相应的python包 openslide matplotlib 后可直接运行 import openslide import matplotlib pyplot
  • 算法题记录【华为od】服务中心的最佳位置

    题目描述 思路分析 在我的理解就是查找均值 代码解析 let input1 2 input2 0 10 10 20 20 30 30 40 40 50 sum 0 res result let len input2 length input
  • 测试常见bug

    一 某公司发现 价值100元的商品 在该公司网上商城被以0 01元买走了很多 攻城狮们火速定位 问题原因很快被找到了 原来是购买商品接口的bug 该接口需要3个参数 商品id 商品单价 购买数量 而服务器根据接口传过来的商品单价 0 01元
  • 中国省份城市0-N编号

    1 中国省份0 N编号 上海 1 云南 2 内蒙古 3 北京 4 台湾 5 吉林 6 四川 7 天津 8 宁夏 9 安徽 10 山东 11 山西 12 广东 13 广西 14 新疆 15 江苏 16 江西 17 河北 18 河南 19 浙江
  • 热修复——Bugly让热修复变得如此简单

    一 简述 在上一篇 热修复 Tinker的集成与使用 中 根据Tinker官方Wiki集成了Tinker 但那仅仅只是本地集成 有一个重要的问题没有解决 那就是补丁从服务器下发到用户手机上 如果你团队中的后台开发人员实力够强 那么完全可以自
  • 蓝以中老师《高等代数》第01章:代数学的经典课题,笔记

    蓝以中老师 高等代数 第01章 代数学的经典课题 笔记 如下
  • vue 全局loading的思路和方法

    Vue 全局 loading 的实现思路一般是在 Vue 实例中添加一个 loading 组件 通过控制该组件的显示和隐藏来实现全局 loading 的效果 具体思路如下 创建一个全局的 Vue 组件 Loading 该组件用于显示 loa
  • 使用Aspect切面实现系统日志并存入数据库

    使用Aspect切面实现系统日志并存入数据库 1 pom xml中 加入Maven依赖
  • 标准C++库用法

    本文中提到的函数库有
  • JOIN与INNER JOIN区别

    一 指代不同 1 JOIN 用于根据两个或多个表中的列之间的关系 从这些表中查询数据 2 INNER JOIN 组合两个表中的记录 只要在公共字段之中有相符的值 二 特点不同 1 JOIN 每个主键的值都是唯一的 这样做的目的是在不重复每个
  • JS求任意字符串中出现最多的字符以及出现的次数

    随意定义一个字符串 var str 111iiiw2shhfel000 定义函数 function num str 定义一个空对象 因为这边要求出现最多次数 以及出现的字符 这边使用对象的方式再合适不过了 键值对的形式 var obj 求出
  • 在idea使用本地jetty

    参考 https www jetbrains com idea help run debug configuration jetty server html背景 web开发当中 我觉得服务层的代码尽量用单元测试来测 这样可减少启动web容器
  • HTTP代理编程:Python实用技巧与代码实例

    今天我要与大家分享一些关于HTTP代理编程的实用技巧和Python代码实例 作为一名HTTP代理产品供应商 希望通过这篇文章 帮助你们掌握一些高效且实用的编程技巧 提高开发和使用HTTP代理产品的能力 一 使用Python的requests
  • 小数转化为二进制

    小数转换为二进制方法 a 0 125 10 0 125 10 转化为二进制方法 取每次结果的小数乘以2得到b 取b的整数位 如果b为1 0结束计算得到结果 0 125 2 0 25 gt 取整数部分 0 0 25 2 0 5 gt 0 0
  • 【C#】.Net Framework框架下使用SQLike以及基本概念

    2023年 第32周 第2篇文章 给自己一个目标 然后坚持总会有收货 不信你试试 在C 的 NET Framework框架下 有很多轻量级数据库选择 比如 SQLike就是其中一款 一起来了解SQLike的简单使用吧 目录 一 轻量级数据库
  • 关于VUE 配置文件config详解内容

    const path require path module exports 区分打包环境与开发环境 process env NODE ENV production 打包环境 process env NODE ENV development
  • 【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解

    参考论文 Knowledge Distillation A Survey 1 前言 近年来 深度学习在学术界和工业界取得了巨大的成功 根本原因在于其可拓展性和编码大规模数据的能力 但是 深度学习的主要挑战在于 受限制于资源容量 深度神经模型
  • C++ 使用海康威视SDK将视频推流到rtmp服务器

    研究FFmpeg有两三年了 一直没写过这方面的文章 今天记一下 由于工作关系 需要将化工企业内部的视频发布到一个部署在公网的视频服务器 然后由相关人员浏览 由于是化工企业 企业严禁外部的机器直接访问视频网络 最多提供一个跳板机 因此 两年多
  • 干洗店小程序,洗鞋店小程序,互联网洗鞋店,企业干洗方案,干洗行业小程序,上门取衣小程序,预约干洗小程序,校园干洗店小程序,工厂干洗店小程序,干洗店小程序开发;

    干洗店小程序 洗鞋店小程序 互联网洗鞋店 企业干洗方案 干洗行业小程序 上门取衣小程序 预约干洗小程序 校园干洗店小程序 工厂干洗店小程序 干洗店小程序开发 微信干洗店小程序 一 核心功能介绍 1 支持上门取送 送货到店 寄存网点 智能衣柜
  • oracle9i升级oracle10g

    author skate time 2009 09 11 网上看到一篇oracle9i升级oracle10g的文章 觉得不错 记录下来 你可以参考汪海的文章 http wzwanghai spaces live com 37AFBD116