ORACLE跨版本升级

跨版本升级(10.2.0.5升级到11.2.0.3)
10.2.0.5版本:ORACLE_BASE: /oracle/u01/app/oracle
ORACLE_HOME: /oracle/u01/app/oracle/product/10.2/db_1
11.2.0.3版本:ORACLE_BASE: /oracle/u02/app/oracle
ORACLE_HOME: /oracle/u02/app/oracle/product/10.2/db_1

描述:新装11g的软件,用新的软件来挂原来10g的库。

升级步骤:
1、升级前确认数据库已经完全备份,如果没做备份,则不要去做升级。
2、可行性问题,是否能够升级?升级的要求有哪些?应用程序是否支持新的版本?预迁移查看应用是否满足需求?
先看升级图,查看是否能升级,高于10.2.0.2才能直接升级到11gR2版本。
3、安装高版本的数据库到新的安装目录,本例中为/oracle/u02/app/oracle目录。
4、启动原来数据库,创建pfile文件a.txt,将该文件存放在/tmp下。
5、跑预升级脚本(建议脚本),11g版本跑ORACLE_HOME/rdbms/admin/utlu112i.sql脚本。 注:ORACLE_HOME为ORACLE软件的安装目录。
6、根据脚本建议修改/tmp/a.txt文件,修改表空间大小,清空回收站,收集统计信息。
7、关闭原来数据库相关的应用,关闭数据库。
8、用orcle用户拷贝低版本安装目录下ORACLE_BASE/admin文件夹到11g的ORACLE_BASE下。
9、修改oracle用户环境变量,将ORACLE_BASE和ORACLE_HOME修改到高版本安装目录下。
10、使用root用户修改/etc/oratab文件和/etc/oraInst.loc文件,将相关的路径修改为新版本的路径。
11、使用/tmp/a.txt参数文件启动数据库到升级模式,重建spfile文件,跑升级脚本升级数据库。升级完成后数据库自动关闭。
12、升级完成后重建oraInventory目录。
13、删除原来的软件安装目录。

具体实施:
1、查看数据库是否已经完全备份,如果未做备份,则不要做升级。
2、研究升级的可行性问题,确认以下问题。
数据库是否能够升级?
升级的要求有哪些?
应用程序是否支持新版本的数据库?
做预迁移查看应用是否能够满足需求。
查找资料(官方文档),查看能否升级,高于10.2.0.2的版本可以直接升级到11gR2版本。
以上问题确认可行后才可升级。
3、安装高版本的数据库到新的安装目录,本例中为/oracle/u02/app/oracle目录。
注:oracle11g的升级为全新安装,从低版本(9i或10g)升级到11g或者从11g低版本升级到11g高版本都是全新安装。
4、启动原来的数据库,创建pfile文件(/tmp/a.txt)。
注:pfile文件为数据库的参数文件,记录数据库的pga、sga、控制文件位置等信息。在启动数据库时用到。
此处创建pfile文件的目的是用新版本的数据库软件启动原来的数据库。
oracle用户登录系统,链接数据库。
sqlplus / as sysdba; 注:oracle用户执行此命令链接到数据库。
SQL> startup 注:启动数据库,如果数据库已经启动则会报错。
SQL> create pfile=‘/tmp/a.txt‘ from spfile; 注:创建新的参数文件/tmp/a.txt
5、跑预升级脚本(建议脚本),该脚本的作用是检查数据库升级时有哪些参数需要修改。
SQL> spool /tmp/test.txt 注:打开spool,将该命令之后执行的sql语句及结果存放在/tmp/test.txt文件中。
SQL> @/oracle/u02/app/oracle/product/10.2/db_1/rdbms/admin/utlu112i.sql
SQL> spool off;
6、查看/tmp/test.txt文件,根据提示修改/tmp/a.txt文件,修改表空间大小,清空回收站,收集统计信息。
修改/tmp/a.txt文件:
删除原实例名开头的所有行。
删除.background_dump_dest开头的行
删除
.user_dump_dest开头的行
删除.core_dump_dest开头的行
添加
.diagnostic_dest=‘/oracle/u02/app/oracle‘
按照/tmp/a.txt文件中的建议加大sga_target和pga_aggregate_target参数大小。
修改.compatible的值:.compatible=‘11.2.0.0.0‘
修改.audit_file_dest的路径:.audit_file_dest=‘/oracle/u02/app/oracle/admin/fsdb/adump‘
修改表空间的大小。
SQL> select file_name,tablespace_name,bytes/1024/1024 from dba_data_files; 查看各个表空间数据文件的大小。
SQL> select file_name,tablespace_name,bytes/1024/1024 from dba_temp_files; 查看temp表空间的数据文件大小。
SQL> alter database datafile ‘/oradata/fsdb/sysaux01.dbf‘ resize 500M; 修改sysaux表空间数据文件大小为500M。
SQL> alter database tempfile ‘/oradata/fsdb/temp01.dbf‘ resize 400M; 修改temp表空间数据文件大小为400M。
清空回收站:
SQL> purge dba_recyclebin;
SQL> purge user_recyclebin;
收集统计信息:
SQL> execute dbms_stats.gather_dictionary_stats;
具体修改为多大要根据/tmp/test.txt文件中的建议修改。
7、关闭应用,关闭原来的数据库。
SQL> shutdown immediate;
8、oracle用户复制oracle10g的ORACLE_BASE目录下的admin文件夹到11g下的ORACLE_BASE下。
cp -r /oracle/u01/app/oracle/admin /oracle/u02/app/oracle
9、oracle用户修改oracle用户的环境变量,将ORACLE_HOME和ORACLE_BASE修改到11g的安装目录下。
vi /home/oracle/.bash_profile 注:编辑oracle用户的环境变量
export ORACLE_BASE=/oracle/u02/app/oracle
export ORACLE_HOME=/oracle/u02/app/oracle/product/10.2/db_1 注:后面两行为修改后的内容
10、使用root用户修改/etc/oratab文件和/etc/oraInst.loc文件,将相关的路径修改为11g的路径。
vi /etc/oratab 注:修改/etc/oratab文件,该文件与oracle数据库是否开机启动相关。
fsdb:/oracle/u02/app/oracle/product/10.2/db_1:N 注:对该行做出修改,将路径改为11g的路径。
vi /etc/oraInst.loc 注:修改/etc/oraInst.loc文件,该文件控制oraInventory的存放路径。
inventory_loc=/oracle/u02/app/oracle/oraInventory 注:将oraInventory存放路径修改为11g的路径。
11、使用/tmp/a.txt参数文件启动数据库到升级模式,创建新的spfile文件,跑升级脚本。完成后数据库自动关闭。
oracle用户登录到空实例。 sqlplus / as sysdba
SQL> startup upgrade pfile=‘/tmp/a.txt‘; 注:使用/tmp/a.txt参数文件启动数据库到升级模式。
SQL> create spfile from pfile=‘/tmp/a.txt‘; 注:创建新的spfile文件,方便以后启动数据库。
SQL> @?/rdbms/admin/catupgrd.sql 注:执行升级脚本,完成数据库的升级。
12、重建oraInventory目录。
oracle用户到$ORACLE_HOME/oui/bin目录下,执行以下命令;
./runInstaller -slient -attachHome ORACLE_HOME="/oracle/u02/app/oracle/product/10.2/db_1" ORACLE_HOME_NAME="oracleHome";
注:ORACLE_HOME为11g软件的ORACLE_HOME,ORACLE_HOME_NAME可以任意指定,不会有什么影响。
执行完成后重启数据库,查看数据库版本,查看数据库是否正常。
13、确认正常无误后删除10g数据库的安装目录。

原文地址:http://blog.51cto.com/lyzbg/2090816

时间: 2024-10-30 03:52:28

ORACLE跨版本升级的相关文章

总结Fedora 22跨版本升级到Fedora 24方法

(总结)Fedora 22跨版本升级到Fedora 24方法   最近测试一套比较新的开源ERP,对系统软件版本要求很新,CentOS7也没这么新的开发包,也不喜欢编译安装(洁癖).想起了Fedora来,之前有台测试机Fedora22,就想把它更新到最新的Fedora24.该版本glibc 更新到2.23,GCC编译器更新到6.1了,够新!折腾了下,跨版本升级成功.注意:此操作只合适开发和测试环境,不能在生产环境这样折腾.Fedora是新技术试验场,不合适用于生产环境的. 一.使用 DNF 插件

Oracle 跨库 查询 复制表数据

在目前绝大部分数据库有分布式查询的需要.下面简单的介绍如何在oracle中配置实现跨库访问. 比如现在有2个数据库服务器,安装了2个数据库.数据库server A和B.现在来实现在A库中访问B的数据库. 第一步.配置A服务器端的tnsnames.ora文件(TNSNAMES.ORA Network Configuration File),该文件存放的位置为: $ORACLE_HOME/network/admin/tnsnames.ora 需要在该文件中增加对B库的配置项,格式如下 ZBCDB3

Debian跨版本升级

相对于某些重量级linux发行版而言,同样是通过网络跨版本升级,Debian的升级过程总要显得轻快很多.不会因为要下载数量惊人的软件包并安装而把升级时间拉得很长,也不用担心中途某些程序崩溃退出导致升级失败系统损坏,只需备份重要文件就可以开始了.整个过程不会超过3条命令,顺利完成后新系统即可直接投入使用.网络跨版本升级也是官方推荐的升级方法,大家可以放心试水. 首先把当前系统的软件升级到最新. $ sudo aptitude update && sudo aptitude upgrade 然

OpenShift跨版本升级

官方的in-place upgrade直接在线升级,但问题是只能一个一个版本的升无法做到跨版本升级,如果一次跨越多个版本,并且集群规模比较大的化,就需要花费很长的时间了. 实际生产过程中因为是分布式环境,所以机器量一般都比较大,官方升级模式有一个好处就是始终能够对外提供服务. 问题是连续升级的时间消耗比较长,而且容易出问题.而这篇文章的方法是,直接安装新的集群模式,同时将原有的旧节点覆盖成新的版本. 1.原有集群备份 基于每个project备份 先列一下有啥东西 [[email protecte

Oracle 跨库 查询 复制表数据 分布式查询

方法一: 在眼下绝大部分数据库有分布式查询的须要.以下简单的介绍怎样在oracle中配置实现跨库訪问. 比方如今有2个数据库服务器,安装了2个数据库.数据库server A和B.如今来实如今A库中訪问B的数据库. 第一步.配置Aserver端的tnsnames.ora文件(TNSNAMES.ORA Network Configuration File),该文件存放的位置为: $ORACLE_HOME/network/admin/tnsnames.ora 加入例如以下行,当中DBLINK为连接名(

Oracle跨库复制表结构

1.首先建立远程连接 create public database link LINK_SJPSconnect to system identified by manager using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.20)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = GZZL)))'; 2.复制表结构 Create global

[Oracle]跨DBLINK的数据库缓存问题15783452141

客户问到跨DBLINK,结合本地表和远端表的时候,数据在哪一边 的 Data Buffer 缓存. 测试的结果是:本地表在本地缓存,远端表在远端缓存. ####Testcase-0929-10 本地数据库:     远端数据库:TABXXX           TABYYY =============本地数据库: conn user003/user003 create table TABXXX(id integer, val varchar2(3)); insert into TABXXX va

Oracle跨库操作实现

跨库操作是指从当前数据库中查询其他数据库的数据. 创建语句如下: create [public] database link linkName connect to username identified by “*” using ‘romoteHost’; 语句解释: public: 为可选项,如果为public,则当前实例下所有schema都可用,如果没有public,则是由当前创建的schema可用. linkName: 自定义链接的名称. username: 目标用户的用户名. *: 特

oracle 跨库访问

创建DBLINK的方法: 1. create public database link dblink connect to totalplant identified by totalplant using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = LOCALHOST)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = prd.gdc) ) )'; 语法解释: