本文开头说明一下,产生此问题是由于迁移文件之前没有查看源oracle和目标oracle的版本而导致的,源:11.2.0.3.0 目标:11.2.0.1.0 ,只需要将源电脑上的时区文件拷贝到目标电脑后,再执行oracle提供的更新脚本即可,
1、时区文件一般在以下路径,一般是最新的那个,无法拷贝就网上搜索更新时区文件版本的SQL吧:
E:appAdministratorproduct11.2.0dbhome_1oracorezoneinfo imezlrg_14.dat
E:appAdministratorproduct11.2.0dbhome_1oracorezoneinfo imezone_14.dat
————————————————
过程概述:本次迁移的目标是将源数据库从迁移电脑迁移到另外一台电脑,环境都是windows的,并且都安装好了oracle的,于是我就毫不犹豫的使用了冷备的方式,采用以下步骤:
1、停止源数据库服务,将整个orcl和其他数据文件打包压缩打包
2、拷贝文件到目标电脑
3、停止目标电脑上的oracle服务和监听服务
4、将orcl和数据文件按照源路径解压
4、启动服务,然后开始cmd,打开数据库提示:ORA-00704、ORA-39700
如下:
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00704: bootstrap process failure
ORA-39700: database must be opened with UPGRADE option
进程 ID: 292
会话 ID: 191 序列号: 1
错误概述:说明需要运行这些数据字典脚本,主要原因是升级以后数据字典的一些基表的内容修改了
C:>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on 星期四 11月 28 16:06:03 2013
Copyright (c) 1982, 2011, Oracle. All rights reserved.
已连接到空闲例程。
--命令描述:使用更新模式启动
SQL> startup upgrade
ORACLE 例程已经启动。
Total System Global Area 860160000 bytes
Fixed Size 2260040 bytes
Variable Size 234881976 bytes
Database Buffers 616562688 bytes
Redo Buffers 6455296 bytes
数据库装载完毕。
数据库已经打开。
SQL>
直接执行是失败的,一直提示ora-01722 无效数字,就是要先拷贝时区文件,拷贝完后 再来执行,就搞定:
-- CATalog UPGraDe to the new release:
This script is to be used for upgrading an 8.1.7, 9.0.1, 9.2 or 10.1 database to the new release. This script provides a direct upgrade path from these releases to the new Oracle release.
SQL>@?/rdbms/admin/catupgrd.sql
---Creates data dictionary views.重新编译一下一些无效的对象
SQL>@?/rdbms/admin/utlrp.sql
SQL>shutdown immediate
SQL>startup
--查看时区文件版本,一般都是时区文件夹最新的那个,所以根据所需再看
SQL> col name format a30
SQL> col value$ format a10
SQL> select NAME, VALUE$ from SYS.PROPS$ where NAME like ('DST_%_TT_VERSION');
NAME VALUE$
------------------------------ ----------
DST_PRIMARY_TT_VERSION 14
DST_SECONDARY_TT_VERSION 0
————————————————