Oracle数据库迁移版本不兼容及sqlplus版本切换问题求助
迁移Oracle 11数据库时创建控制文件版本不兼容问题及解决
我正在将一台机器上基于Oracle 11创建的数据库迁移到另一台机器,尝试重建控制文件时遇到错误,提示数据库文件版本11.2.0.4.0与ORACLE版本10.2.0.0.0不兼容。
使用Oracle 10.2.0执行操作的日志
C:\WINDOWS\system32>C: C:\WINDOWS\system32>cd C:\oracle\product\10.2.0\db_1\BIN C:\oracle\product\10.2.0\db_1\BIN>set ORACLE_SID=LOVDTNAL C:\oracle\product\10.2.0\db_1\BIN>sqlplus /nolog SQL*Plus: Release 10.2.0.5.0 - Production on Tue Oct 11 17:43:23 2022 Copyright (c) 1982, 2010, Oracle. All Rights Reserved. SQL> conn sys/sys as sysdba Connected. SQL> startup nomount pfile=D:\oracle\admin\LOVDTNAL\pfile\init.ora SQL> CREATE CONTROLFILE REUSE DATABASE "LOVDTNAL" NORESETLOGS NOARCHIVELOG 2 MAXLOGFILES 16 3 MAXLOGMEMBERS 3 4 MAXDATAFILES 100 5 MAXINSTANCES 8 6 MAXLOGHISTORY 584 7 LOGFILE 8 GROUP 1 'D:\ORACLE\ORADATA\LOVDTNAL\REDO01.LOG' SIZE 50M, 9 GROUP 2 'D:\ORACLE\ORADATA\LOVDTNAL\REDO02.LOG' SIZE 50M, 10 GROUP 3 'D:\ORACLE\ORADATA\LOVDTNAL\REDO03.LOG' SIZE 50M 11 -- STANDBY LOGFILE 12 DATAFILE 13 'D:\oracle\oradata\LOVDTNAL\SYSTEM01.DBF', 14 'D:\oracle\oradata\LOVDTNAL\UNDOTBS01.DBF', 15 'D:\oracle\oradata\LOVDTNAL\SYSAUX01.DBF', 16 'D:\ORACLE\ORADATA\LOVDTNAL\USERS01.DBF', 17 'D:\oracle\oradata\LOVDTNAL\MAIN.DBF', 18 'D:\oracle\oradata\LOVDTNAL\INDEX.DBF', 19 'D:\oracle\oradata\LOVDTNAL\LOB.DBF', 20 'D:\oracle\oradata\LOVDTNAL\XDB.DBF' 21 CHARACTER SET CL8MSWIN1251; CREATE CONTROLFILE REUSE DATABASE "LOVDTNAL" NORESETLOGS NOARCHIVELOG * ERROR at line 1: ORA-01503: CREATE CONTROLFILE failed ORA-01130: database file version 11.2.0.4.0 incompatible with ORACLE version 10.2.0.0.0 ORA-01110: data file 1: 'D:\oracle\oradata\LOVDTNAL\SYSTEM01.DBF'
使用Oracle 11.2.0执行操作的日志
C:\WINDOWS\system32>C: C:\WINDOWS\system32>CD C:\oracle\product\11.2.0\dbhome_1\BIN C:\oracle\product\11.2.0\dbhome_1\BIN>set ORACLE_SID=LOVDTNAL C:\oracle\product\11.2.0\dbhome_1\BIN>sqlplus /nolog SQL*Plus: Release 11.2.0.4.0 Production on Tue Oct 11 17:39:41 2022 Copyright (c) 1982, 2013, Oracle. All rights reserved. SQL> conn sys/sys as sysdba Connected to an idle instance. SQL> startup nomount pfile=D:\oracle\admin\LOVDTNAL\pfile\init.ora ORACLE instance started. Total System Global Area 2147483648 bytes Fixed Size 2078928 bytes Variable Size 486541104 bytes Database Buffers 1644167168 bytes Redo Buffers 14696448 bytes SQL> CREATE CONTROLFILE REUSE DATABASE "LOVDTNAL" NORESETLOGS NOARCHIVELOG 2 MAXLOGFILES 16 3 MAXLOGMEMBERS 3 4 MAXDATAFILES 100 5 MAXINSTANCES 8 6 MAXLOGHISTORY 584 7 LOGFILE 8 GROUP 1 'D:\ORACLE\ORADATA\LOVDTNAL\REDO01.LOG' SIZE 50M, 9 GROUP 2 'D:\ORACLE\ORADATA\LOVDTNAL\REDO02.LOG' SIZE 50M, 10 GROUP 3 'D:\ORACLE\ORADATA\LOVDTNAL\REDO03.LOG' SIZE 50M 11 -- STANDBY LOGFILE 12 DATAFILE 13 'D:\oracle\oradata\LOVDTNAL\SYSTEM01.DBF', 14 'D:\oracle\oradata\LOVDTNAL\UNDOTBS01.DBF', 15 'D:\oracle\oradata\LOVDTNAL\SYSAUX01.DBF', 16 'D:\ORACLE\ORADATA\LOVDTNAL\USERS01.DBF', 17 'D:\oracle\oradata\LOVDTNAL\MAIN.DBF', 18 'D:\oracle\oradata\LOVDTNAL\INDEX.DBF', 19 'D:\oracle\oradata\LOVDTNAL\LOB.DBF', 20 'D:\oracle\oradata\LOVDTNAL\XDB.DBF' 21 CHARACTER SET CL8MSWIN1251; CREATE CONTROLFILE REUSE DATABASE "LOVDTNAL" NORESETLOGS NOARCHIVELOG * ERROR at line 1: ORA-01503: CREATE CONTROLFILE failed ORA-01130: database file version 11.2.0.4.0 incompatible with ORACLE version 10.2.0.0.0 ORA-01110: data file 1: 'D:\oracle\oradata\LOVDTNAL\SYSTEM01.DBF'
后续发现,即使进入Oracle 11.2.0的bin目录启动sqlplus,退出时仍显示版本为10.2.0。请问如何确保执行conn sys/sys as sysdba后,实际使用的是11.2.0版本的sqlplus?
解决方法
调整PATH环境变量顺序
Windows系统中,PATH里的目录顺序决定了执行程序的优先级。如果10g的bin目录排在11g前面,系统会优先调用10g的sqlplus:- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在系统变量的PATH列表中,将
C:\oracle\product\11.2.0\dbhome_1\BIN移动到C:\oracle\product\10.2.0\db_1\BIN之前 - 保存设置后,关闭所有已打开的CMD窗口,重新以管理员身份打开
直接指定11g sqlplus的绝对路径
绕过环境变量的影响,直接在CMD中执行11g sqlplus的完整路径:C:\WINDOWS\system32>set ORACLE_SID=LOVDTNAL C:\WINDOWS\system32>"C:\oracle\product\11.2.0\dbhome_1\BIN\sqlplus" /nolog启动后可以执行以下SQL确认版本:
SELECT * FROM v$version;该查询会返回当前连接的数据库实例版本以及sqlplus的版本信息。
临时指定ORACLE_HOME环境变量
在当前CMD会话中,先设置ORACLE_HOME为11g的路径,再启动sqlplus:C:\WINDOWS\system32>set ORACLE_HOME=C:\oracle\product\11.2.0\dbhome_1 C:\WINDOWS\system32>set ORACLE_SID=LOVDTNAL C:\WINDOWS\system32>sqlplus /nolog这种方式仅在当前CMD窗口生效,不会影响全局环境。
内容的提问来源于stack exchange,提问作者beginner
相关产品推荐
相关产品推荐

