ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 数据库的升级和降级[转载wisdomone1 ]

数据库的升级和降级[转载wisdomone1 ]

原创 Linux操作系统 作者:anycall2010 时间:2008-06-27 18:13:59 0 删除 编辑

一、        ORACLE9I升级到10G(zt)

一、        ORACLE9I升级到10G的简要说明:
Win
下Oracle9208如何升级到Oracle10.2.0.1
1
、 关闭原9208数据库,执行一个完全冷备。

2
、 安装ORACLE10g,选择一个跟9208不同的Home,安装的时候选择不装数据库。
3
、 以SYSDBA身份登陆到SQLPLUS,执行:
Sql>spool upgrade.info
Sql>@ oracle10G_HOMErdbmsadminutlu102i.sql
Sql>spool off
注意屏幕的输出
4
、在Tablespace栏提示有些表空间需要额外的空间:
Autoextend Additional space required:165mb.
查询原原数据库的空间大小和剩余空间。
Sql>select tablespace_name,bytes from dba_data_files;
Sql>select tablespace_name,sum(bytes) from dba_free_space group by tablespace_name;
扩展提示需增加空间的表空间。
Sql>alter database tablespace system add datafile
‘d
racleoradatatestsystem02.dbf’ size 200m;
Sql>alter database datafile
‘d
racleoradatatestxdb01.dbf’ resize 50m’;
4
、 拷贝9i的initsid.ora文件到10gHomedatabase目录下。
运行菜单下的Database Upgrade Assistant,根据提示一步一步操作。如不能成功,则手工升级,依次执行以下顺序。
5
、 拷贝9i的密码文件pwdsid.ora到10gHomedatabase目录下。
6
、 拷贝9iHomenetworkadmin下的tnsname.ora、listerna.ora、sqlnet.ora到10GHomenetworkadmin目录。
7
、 根据upgrade.info的提示,修改10GHomedatabaseinitSid.ora参数文件。
8
、 关闭9I数据库
9
、 在命令行用cmd>oradim –delete –sid sid删除WINDOWS服务下的实例。
10
、 在命令行用cmd.>oradim –new –sid sid pfile=’path’建立新的实例。
11
、 停止原9i的listerner服务
12
、 用sysdba的身份登陆到sqlplus,以upgrade的方式启动数据库。
Startup upgrade
启动时提示LRM-00116: ‘D:ORACLELOGSDB后跟’=’出现语法错误
ORA-01078
:处理系统参数失败
根据提示,修改10GHomedatabaseinitsid.ora,将utl_file_dir=d raclelogs
注释掉。重新执行sql>startup upgrade成功。
13
、 创建sysaux表空间。
Sql>create tablespace sysaux
Datafile ‘d
racleoradatatestsysaux01.dbf’ size 500m
Extent management local
Segment space management auto
Online;
15
、@d racle10.2rdbmsadmincatupgrd.sql;(此过程在我电脑花费约1个半小时)。
16
、sql>shutdown immediate;
17
、
sql>startup
18
、
sql>@d racle10.2rdbmsadminutlrp.sql
To recompile any invalid application object
执行完毕后执行查询所有重新编译错误
Sql> select * from utl_recomp_errors;

19
、启动10G的listerner服务
测试,升级完毕。

二、        Oracle9i升级为10g及降级

DBUA 升级:
---------------------------------------------------------------------------------------
确保 /var/opt/oracle/oratab 中包括要升级的数据库

在dbua第二步选中该数据库

升级会要求增加sysaux表空间及数据文件

选择是否使用OEM管理,不选

默认安装后会重新编译无效对象

手工升级:

DBUA
升级
:
---------------------------------------------------------------------------------------
确保 /var/opt/oracle/oratab 中包括要升级的数据库

在dbua第二步选中该数据库

升级会要求增加sysaux表空间及数据文件

选择是否使用OEM管理,不选

默认安装后会重新编译无效对象


手工升级:
---------------------------------------------------------------------------------------
1.
设置环境变量
:
ORACLE_HOME
PATH
ORA_NLS10 --
好像不需要

LD_LIBRARY_PATH

2.
拷贝pfile,spfile,pwdfile到10g的dbs目录下
startup upgrade

3.
创建SYSAUX表空间:
CREATE TABLESPACE sysaux DATAFILE '/oracle/oradata2/upgrade/sysaux01.dbf'
SIZE 500M REUSE
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO

4. spool upgrade.log
@?/rdbms/admin/catupgrd
spool off

5.
通过下面脚本查看升级结果
:
@?/rdbms/admin/utlu102s.sql

6.
编译无效对象
:
@?/rdbms/admin/utlrp


降级
:
---------------------------------------------------------------------------------------
可以从10.2.0降到
9.2
1.
确保compatible参数为
9.2.0.0.0
2. startup downgrade

3. spool downgrade.log
@?/rdbms/admin/dwgrd
spool off
shutdown immeidate

4.
设置相关的环境变量,设置到9i的目录
:
ORACLE_HOME
PATH
LD_LIBRARY_PATH

5. startup migrate
spool reload.log
@?/rdbms/admin/catrelod
spool off

6.
重新编译无效对象
:
@?/rdbms/admin/utlrp

 

三、        Oracle升级(10.1.0.3->10.1.0.5)  
今天做了10.1.0.3升级到10.1.0.5的升级测试,感觉挺简单的!期间参考了readme文档.推荐大家多使用Oracle提供的官方文档,嘿嘿,以下是具体步骤:
一 准备并安装升级包软件
1 升级准备
 1>从http://metalink.oracle.com上下载相应升级软件包
 2>设置环境变量:$ORACLE_HOME=oracle_home
                 $ORACLE_SID=sid
                 $export ORACLE_HOME ORACLE_SID
2
关闭数据库(
normal/immediate)
 1>如果是RAC,则在所有的节点上关闭实例
$ORACLE_HOME/bin/srvctl stop database -d db_name
 2>如果是ASM,先关闭所有ASM支持的数据库再关闭ASM实例
$ORACLE_HOME/bin/srvctl stop asm -n node $ORACLE_HOME/bin/srvctl stop nodeapps -n node
3
关闭所有的进程、监听以及CSS(Oracle Cluster Synchronization Service) deamon守护进程as root 用户

 #/etc/init.d/init.cssd stop
4
备份数据库系统

5
更新安装(交互式和非交互式:interactively or noninteractively)
  1>
交互模式(interactively)
    1)
用oracle账号登陆

    2)$ DISPLAY=local_host:0.0 ; export DISPLAY
    3)
进入patch产品目录:$./runInstaller
    4)
如果已经将环境变量设置好,则Oracle更新包自动会找到更新来路

   
 directory_path/stage/products.xml
      RAC
适用语法
:$ ./runInstaller -updateNodeList "CLUSTER_NODES=node2, node1, node3" -local ORACLE_HOME=oracle_home_path
  2>
非交互模式
(Noninteractively)
    1)
用oracle账号登陆

    2)
编辑好response_file
    3)$./runInstaller -silent -responseFile response_file
二 升级数据库

upgrading Release10.1 to 10.1.0.5
Preupgrade:
1 check system tablespace size
  ensure that there is at least 10MB of free space allocated to system tablespace
2 check xdb tablespace size
  for rac,ensure that there is at lease 50MB of free space allocated to xdb tablespace
3 set shared_pool_size and jave_pool_size initialization parameters
  1>start the database
    SQL>startup
  2>ensure db uses pfile
    SQL>show parameter pfile;
  3>determine the current values of these parameters
    SQL>show parameter shared_pool_size
    SQL>show parameter java_pool_size
    SQL>ALTER SYSTEM SET SHARED_POOL_SIZE='150M' SCOPE=spfile;  --if necessary,at least 150MB
    SQL>ALTER SYSTEM SET JAVA_POOL_SIZE='150M' SCOPE=spfile;  --if necessary,at least 150MB
    SQL>shutdown immediate
upgrade:
1 login as oracle software owner user
2 For RAC installations, start node applications on each node of the cluster as follows:
  $ srvctl start nodeapps -n nodename
3 If you are using ASM, start the ASM instance.
  For single-instance installations, start the listener as follows:
  $lsnrctl start
4 execute script
  SQL> STARTUP UPGRADE
  SQL> SPOOL patch.log
  SQL> @?/rdbms/admin/catpatch.sql   --You may wait for a long time!
  SQL> SPOOL OFF
If necessary, rerun the catpatch.sql script. after correcting any problems.
5 recompile db object
  SQL>select count(*) from dba_objects where status='INVALID';
  SQL>shutdown immediate
  SQL>startup
  SQL>@?/rdbms/admin/utlrp.sql
  SQL>select count(*) from dba_objects where status='INVALID';
  
6 if you are using RMAN catalog,enter the following command
  $rman catalog username/password@alias
  RMAN>upgrade catalog;
  OF curse,U can upgrade other object,like OCCI and so on.

四、        介绍几种库升级方案

第一种方案(用升级程序:dbua):

适合: 这种方案适宜于数据量比较大,适用大版本之间的升级,也可以用在支持直接升级的数据库版本


方法: 例如用这种方案在原来的数据库的机器上安装10g的软件,但不安装10g的数据库.安装完10g的软件后,运行10g的数据库升级助手实用程序dbua,然后通过此升级向导完成9ig到10g的升级过程.升级过程中, dbua会自动的将一些数据库的配置更改成适合10g的环境,如数据库参数设置,内存配置,sql,pl/sql引擎等和数据库管理,操作相关的软件的版本也会自动升级到10g;此方法有一定风险,建议在升级之前要备份数据库

优点: (1)对于数据规模比较大的数据库而言,用这种方法升级是最快速的. (2) 保留原有数据库的物理结构(如数据文件,重做日志文件)和逻辑结构(表空间,用户,系统权限设置等),无需重新规划数据库.

缺点: 这种方案存在一定的风险.虽然,10g的数据库升级助手实用程序dbua总体而言比较稳定,但是万一升级失败的话,原来的数据库就有可能使用不了,某些功能丢失,或运行不正常.所以在正式升级之前一定要先在测试库上先演练一下升级的所有过程,确认无误后才能在生产库上执行升级


dbua
支持直接升级的数据库版本
:

l oracle 8
版本8.0.6


l oracle 8i
版本
8.1.7

l oracle 9i
版本9.0.1

l oracle 9i
版本9.2.0


第二种方案(用导入/导出工具:imp/exp、或
exp/imp transport tablespace):

适合: 这种方案适合数据量不是很大,中小规模的数据库升级,建议适用于大版本之间的升级,如8i升级到9i,9i升级到10g;也可以用到支持可直接安装的小版本,如果有的话,呵呵


方法: 先把旧的数据库的数据导出来(建议按“用户方案”导出,不用SYS用户导出,因为新的大版本数据库要多些内容,如果用SYS导入的话容易报错),然后新安装10g软件和新建一个10g的数据库,建立好逻辑结构(用户、表空间、DBLINK、系统权限等)和物理结构(各数据文件等),然后将旧库的dump文件导入至新库;注意在新库用户赋予权限的时候(针对升级到10g),其中connect resource 不包括建立视图的权限

优点: (1)用这种方法最大的优点是安全. 我们新建一个10g的数据库并导入旧库的数据以后可能保留原来的数据库,直到应用系统在新的数据库运行无误后才删去原有的数据库.如果有问题,还可以切换回原来的数据库,升级的风险非常小.

(2)
可以优化数据库结构.如果原来的数据库结构不好,如很多用户的数据存储在system表空间,或者是表空间碎片比较多,通过导出再导入到一个数库后,这些数据库的结构能够得到优化
.

缺点:(1)升级的时间可能相对会长一些,因为导入导出的速度并不是很快 (2)因为得新建一个数据库,所以得重新规划数据库的结构,如数据文件,表空间等
.

(3)因为要建新库,可能会增加一些硬件投资



第三种方案(升级包)

适合:库数据量大小均可,建议适用于小版本之间的升级

方法:下载相应的升级包,按照安装说明安装即可,建议安装 前要备份好数据库

优点:不需要重新建立数据库,保留数据库原有的模型,逻辑结构和物理结构缺点:需要按照相应的安装说明来升级,源升级包资料需要另外下载,对于某些版本的升级安装说明比较繁琐

五、Oracle 8i升级Oracle 10G
                            O
racle 8.1.7.4升级Oracle 10.2
    Oracle
提供了升级工具让用户可以将Database从低版本升级到更高的版本,8i可以直接升级到10G,但 8i必须是8.1.7.4(含)以上的版本,8.1.7.0是不被支持的.Oracle提供了两种升级方法,用向导升级和手工升级,以下分别介绍本人升级的过程
.

一.    向导升级


1.      
首先,应该备份8i 数据库(但然,你也可以选择不备份)

2.      
安装Oracle 10G在和8i不同的Home下,选择不要创建数据库


3.      
以SysDBA的身份,登入到8i数据库,

SQL>Spool info.log

SQL>@ORACLE_HOME/rdbms/admin/utlu102i.sql

SQL>Spool off

4.      
查看 info.log,按照LOG上的提示,将RBS修改到符合要求,其它警告可以不去修改,在Upgrade的过程中系统会提示,点确定会由升级程序修改
.

5.      
在开始找到Oracle菜单的数据库升级工具,点击运行


6.      
根据向导提示升级(因为之前已经备份,升级时选择已经备份,不再需要升级程序帮你备份),在确认窗口,要选择确定,继续,是等肯定按钮以完成升级动作.

如果你的初始化参数正确,一般情况会顺利结束升级动作,如果过程中出现错误,就要将DB复原,用手动升级了.我在升级一台数据库时曾遇到Ora-00064错误而终至升级
.

二,手动升级


  1.
首先,应该备份8i 数据库(但然,你也可以选择不备份)

   2.
安装Oracle 10G在和8i不同的Home下,选择不要创建数据库


   3.
以SysDBA的身份,登入到8i数据库,

SQL>Spool info.log

SQL>@ORACLE_HOME/rdbms/admin/utlu102i.sql

SQL>Spool  off

4.        Copy 8i
的初始化参数文件到 10G Home正确的位置


5.        Copy
密码文件到 10G Home正确的位置

6.        
根据info.log的提示,修改10G下的初始化参数文件,info.log会建议哪些参数修改为哪个值,那些参数已经不再需要,请删除之,那些参数是新的,需要增加,请按照建议修改

7.        
根据info.log修改redo log, Datafile, Rbs等的大小

8.        Shutdown 8i
数据库

9.        
停止原数据库的服务

10.   
用oradim删除 Sid

11.   
用你修改过的参数文件建立新的数据库实例
(oradim)

12.   
以SysDBA的身份进入Sqlplus,将数据库启动到upgrade状态


SQL>startup upgrade

   
我在启动时遇到Ora-00064的错误,修改初始化参数文件,修改过数个参数后重新运行成功,因此不知到是那个参数起了效果,大家可以试一下.

13.    Create tablespace SySaux

CREATE TABLESPACE sysaux DATAFILE 'sysaux01.dbf'

         SIZE 500M REUSE

         EXTENT MANAGEMENT LOCAL

         SEGMENT SPACE MANAGEMENT AUTO

         ONLINE;

14.    SQL>@C
racleproduct10.2.0db_1RDBMSADMINcatupgrd.sql

15.    SQL>@C
racleproduct10.2.0db_1RDBMSADMINutlu102s.sql

16.    SQL>shutdown immediate

17.    SQL>startup

18.    SQL>@C
racleproduct10.2.0db_1RDBMSADMINolstrig.sql

19.    SQL>@C
racleproduct10.2.0db_1RDBMSADMINutlrp.sql

20.   
停止8i的监听器服务

21.   
创建 10G的监听器服务

升级完成

 

 

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8334342/viewspace-366157/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-06-24

  • 博文量
    182
  • 访问量
    610294