这几天将测试系统从32位升级为64位,过几天可能要将产品系统升级为64位.升级前后的平台都是x86结构的.所以过程比较简单
1、shutdown 32位平台数据库,tar所有的数据文件,redo日志文件,控制文件,参数文件.
2、将准备的文件copy到64位服务器相应的目录.
3、在64位机器上设置如下环境变量
export ORACLE_SID= ...
export ORACLE_HOME= ...
准备需要的目录(bdump、adump、create、pfile...)
4、在64位平台上修改传过来的参数文件,一些关键的参数必须修改
bdump、udump、adump、control_files等,
5、提取tar中的文件到相应的目录
6、在64位平台用修改后的参数文件启动数据库
export ORACLE_SID=TEST
startup nomount pfile = ’’.
如果新的目录结构跟以前有所不同,需要重新创建控制文件,我这里重新创建了控制文件,在32位平台上用 alter database backup controlfile to tarace.
备份控制文件到trace,从trace文件中提取控制文件创建脚本,修改相应的路径准备在新的平台上
重新创建控制文件,如果目录结构完全一样,可以跳过这一步
CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 (’/u01/oracle/product/oradata/TEST/onlinelog/redo1_1.log’) SIZE 100M,
GROUP 2 (’/u01/oracle/product/oradata/TEST/onlinelog/redo2_1.log’) SIZE 100M,
GROUP 3 (’/u01/oracle/product/oradata/TEST/onlinelog/redo3_1.log’) SIZE 100M
DATAFILE
’/u01/oracle/product/oradata/TEST/datafile/system01.dbf’,
’/u01/oracle/product/oradata/TEST/datafile/undotbs1.dbf’,
’/u01/oracle/product/oradata/TEST/datafile/sysaux.dbf’,
’/u01/oracle/product/oradata/TEST/datafile/user.dbf’,
’/u01/oracle/product/oradata/TEST/datafile/shared.dbf’
CHARACTER SET AL32UTF8.
ALTER DATABASE OPEN.
7、临时文件是没有包括在控制文件中的,所以必须通过以下命令为临时表空间添加临时文件
ALTER TABLESPACE TEMP ADD TEMPFILE ........
8、shutdown 64位数据库,并
startup upgrade
@?/rdbms/admin/utlirp.sql
执行这个脚本的目的是修改32位的字长为64位
执行完之后运行
@?/rdbms/admin/utprp.sql
重新编译INVALID对象
9、在utlrp.sql的过程可能会提示
<>ORA-06544: PL/SQL: internal error, arguments: [56319], [], [], [], [], [], [], []<>
在alert.log文件中会记录很多
ORA-07445: exception encountered: core dump [_intel_fast_memcpy.A() 10] [SIGSEGV] <>
32位数据库中安装了OLAP组件,在64位系统上必须将以前32位的OLAP删除并重新创建64位OLAP。
相关文章
Oracle数据库( )的使用方法
在Oracle中使用EXP进行逻辑备份
Oracle数据库启动方式大全
oracle10g系统从32位升级为64位的方法
在触发器中获取SQL语句的方法
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛