oracle 8i升级 11G改字符集

以下内容经过测试,均可使用!

服务器A:Oracle8i,字符集:AMERICAN_AMERICA.US7ASCII,注册表nls_lang:AMERICAN_AMERICA.US7ASCII.
服务器B:Oracle11g,字符集:SIMPLIFIED CHINESE_CHINA.ZHS16GBK,注册表nls_lang:SIMPLIFIED CHINESE_CHINA.ZHS16GBK.
现在A进行exp,将导出的dmp文件用ultraEdit修改03 00 01为03 03 54,
再在B上对此dmp进行imp
EXP SYSTEM/*****@DBSERVER OWNER=(comm) FILE=D:\EXPDB.DMP LOG=D:\EXPDB.LOG GRANTS=Y BUFFER=100000000
IMP SYSTEM/*****@orcl fromuser =(comm) touser=(comm) file=D:\expdb.dmp log=D:\impdb.log ignore=y commit=y buffer=100000000
 


ORACLE 8.1.7.0.0升级ORACLE10G 10.2.0.4全攻略----EXP/IMP方式。客户端停用9个小时。


一、晚上断开服务器网线。
二、停止所有的ORACLE服务后,对数据库进行冷备。
三、备份原来服务器上应该备份的东西。
四、重启所有的ORACLE服务,先查看所有的用户永久表空间是否是USERS表空间,临时表空间是否是TSP_TEMP。若不是修改。先执行全库导出:
EXP SYSTEM/***@DBSERVER FULL=Y GRANTS=Y FILE=E:\FULL.DMP LOG=E:\FULL.LOG 
然后执行EXP用户模式导出DMP文件。导出语句如下:
EXP SYSTEM/GUANLI@DBSERVER OWNER=(所有者1,所有者2…) FILE=F:\EXPDB.DMP LOG=F:\EXPDB.LOG GRANTS=Y BUFFER=100000000
导出完成后,将导出的文件拷贝到移动硬盘上。
五、导出的同时,在新服务器上安装2003SERVER 64位系统。安装驱动后,安装域管理控制器。OFFICE办公软件及其它常用软件。在域管理控制器里创建用户。

六、在新服务器上安装ORACLE10G 64位数据库,安装主目录D盘,全局数据库名DB2,SID为ORCL,字符集US7ASCII(原来的字符集),当然你可以选择ZHS16GBK(导入前用工具修改DMP文件).选择企业版安装,选择定制安装,选择专用服务器模式,设置控制文件和联机日志文件的大小(指定联机日志大小为30M,或者默认)及增加联机日志文件组合适数量,设置并发连接.安装好后,将注册表里的字符集也改成US7ASCII。
七、安装ORACLE 10.2.0.4补丁。升级步骤如下:
windows平台下10gr2升级至最新的patchset4,简单记录一下升级过程:
1.下载补丁包并解压
2.检查环境变量,停止相关服务,包括OracleService(注意是停止服务,不是仅把库shutdown就可以了的),
Listner,ASM(如果用了的话),RAC节点等等
3.备份数据库,冷备热备均可,但必须是完全备份。推荐冷备,一旦有问题恢复也快。
4.安装补丁包:
执行setup,按照提示点击下一步(如果升级程序默认指定的路径信息不准确的话注意修正)
升级过程中多了一个Oracle Configuration Manager

不启用,直接下一步,然后安装,

安装完成之后,点击退出,软件升级结束。
5.下面升级数据库
为了省事儿,这里我们选择通过界面方式进行数据库的升级,执行DBUA,基本不需要过多操作,
直点下一步就是,不过注意在第三步的地方如果开了归档,最好选择升级期间关闭归档功能,
避免不必要的磁盘空间占用。

这个过程会比较长,耐心等候就是,如果一切顺利,你就能看到这个界面了

6.升级完成,开个sqlplus连接进去看看
SQL> select *from v$version;
BANNER
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for 32-bit Windows: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 – Production
八、用CTSP.SQL脚本创建表空间。创建前确定脚本指定的表空间大小是否大于实际的表空间大小。然后用COWNER.SQL脚本创建所有者。然后再用CROLE.SQL脚本创建角色。
九、进入WEB企业管理器,重新设置临时表空间TSP_TEMP为默认临时表空间,USERS表空间为系统默认的永久表空间。设置回滚表空间、系统表空间等扩展属性、表空间大小等。确保临时表空间足够大小。
十、设置SGA和PGA自动管理,SGA设置3G内存,PGA设置2G内存。
十一、将8I上导出的DMP文件及其它文件拷贝至新服务器相应的位置。执行IMP导入。导入语句:
imp system/***@dbserver fromuser =(所有者1,所有者2…) 
touser=(所有者1,所有者2…) file=f:\expdb.dmp log=f:\impdb.log ignore=y commit=y buffer=100000000
十二、执行全库导入,为了导入客户端软件用户。导入语句:
IMP SYSTEM/***@DBSERVER FILE=F:\FULL.DMP FULL= Y LOG=F:\FULLIMP.LOG IGNORE=Y COMMIT=Y BUFFER=100000000.(由于8I和10G的巨大差异,全库导入2分钟就结束,目的是导入客户端登陆软件的用户。当然你也可以用提取8I里的创建用户的SQL语句创建)
十三、在8I服务器PB里执行生成创建同义词语句。语句如下:
SELECT 'CREATE PUBLIC SYNONYM '||synonym_name||' FOR '||table_owner||'.'||table_name||';' FROM DBA_SYNONYMS WHERE table_owner IN(所有者1,所有者2…)
AND owner='PUBLIC';
以上语句生成后,将结果保存为TYC.TXT文本文件。
十四、在10G新服务器里,SYSTEM用户下执行TYC.TXT创建公共同义词。
十五、编译无效的对象。在SQLPLUS里执行utlrp.SQL脚本,编译成功后,进入WEB企业管理器查看过程、触发器、视图等对象状态是否有效。
十六、将数据库设置成归档方式.
SQLPLUS /NOLOG
CONNECT SYS/guanli@dbserver as sysdba
SHUTDOWN IMMEDIATE
STARTUP MOUNT
ALTER DATABASE ARCHIVELOG
ALTER DATABASE OPEN 
ALTER system archive log start 
ARCHIVE LOG LIST 
十七、机房客户端测试。

此方法也可以安全升级ORACLE11G.我应经全面测试,并投入生产服务器使用。

从Oracle817导入到Oracle10.2.0.4过程中发生的错误及解决办法

[日期:2012-10-06] 来源:Linux社区  作者:jinqibingl [字体:大 中 小]

 
1、错误1:RBS和TEMP表空间无法创建。

IMP-00017: following statement failed with Oracle error 1119:
 "CREATE TABLESPACE "RBS" DATAFILE  'D:\ORACLE\ORADATA\ORCL\RBS01.DBF' SIZE 5"
 "45259520      AUTOEXTEND ON NEXT 5242880  MAXSIZE 16383M DEFAULT  STORAGE("
 "INITIAL 524288 NEXT 524288 MINEXTENTS 8 MAXEXTENTS 4096 PCTINCREASE 50) ONL"
 "INE PERMANENT "
IMP-00003: ORACLE error 1119 encountered
ORA-01119: error in creating database file 'D:\ORACLE\ORADATA\ORCL\RBS01.DBF'
ORA-27040: file create error, unable to create file
OSD-04002: unable to open file
O/S-Error: (OS 3) 系统找不到指定的路径。
IMP-00017: following statement failed with ORACLE error 12913:
 "CREATE TABLESPACE "TEMP" DATAFILE  'D:\ORACLE\ORADATA\ORCL\TEMP01.DBF' SIZE"
 " 127270912      AUTOEXTEND ON NEXT 655360  MAXSIZE 16383M DEFAULT  STORAGE"
 "(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0)"
 " ONLINE TEMPORARY "
IMP-00003: ORACLE error 12913 encountered
ORA-12913: Cannot create dictionary managed tablespace

RBS是oracle817的回滚段表空间,里面没有数据,到了10g,回滚段的办法已经改变了,使用的是UNDOTBS1表空间,已经创建,所以放弃。

TEMP是oracle817的临时表空间,也没有数据,而且10g的临时表空间不再使用字典管理模式,而是采用本地管理模式,这个过时了,所以放弃。

2、错误2:
IMP-00017: following statement failed with ORACLE error 3249:
 "CREATE TABLESPACE "TOOLS" DATAFILE  'D:\ORACLE\ORADATA\ORCL\TOOLS01.DBF' SI"
 "ZE 18481152      AUTOEXTEND ON NEXT 327680  MAXSIZE 16383M DEFAULT  STORAG"
 "E(INITIAL 32768 NEXT 32768 MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0) ONLI"
 "NE PERMANENT "
IMP-00003: ORACLE error 3249 encountered
ORA-03249: Uniform. size for auto segment space managed tablespace should have atleast 5 blocks
TOOLS是oracle817的工具表空间,主要是管理用户SYSTEM的默认表空间,在oracle817,我无法分析出TOOLS表空间内是否存放有数据对象,所以还是导入的为好,原因在于TOOLS表空间原先没有被创建,所以在导入的时候,导入程序认为要创建,但是创建不成功,报错。
解决办法:在oracle10g创建表空间的语句中,添加TOOLS表空间创建。

3、错误3:
IMP-00017: following statement failed with ORACLE error 959:
 "ALTER USER "SYSTEM" IDENTIFIED BY VALUES 'D4DF7931AB130E37' DEFAULT TABLESP"
 "ACE "TOOLS" TEMPORARY TABLESPACE "TEMP""
IMP-00003: ORACLE error 959 encountered
ORA-00959: tablespace 'TOOLS' does not exist
这个错误,原因是oracle817默认的SYSTEM用户默认表空间在TOOLS中,所以在导入的时候,自然因为TOOLS表空间没有创建而失败。
解决办法:只要TOOLS表空间创建起来,自然错误就消失了。:

4、错误4:
IMP-00017: following statement failed with ORACLE error 1031:
 "CREATE DATABASE LINK "DATA_LINK.WORLD" CONNECT TO "DATA" IDENTIFIED BY "DATA" "
 "USING 'ora7'"
IMP-00003: ORACLE error 1031 encountered
ORA-01031: insufficient privileges
我导入使用的是SYSTEM用户,好像是因为SYSTEM用户权限不够,不过因为这个没有用了,所以放弃创建,以后要用的话,可以再单独创建,就可以了。

5、错误5:这个才是这篇记录中最关键的一个,也是因为这个我才写这篇记录的,因为有时候,可能难以理解。
IMP-00017: following statement failed with ORACLE error 20005:
 "DECLARE  SREC DBMS_STATS.STATREC; BEGIN SREC.MINVAL := NULL; SREC.MAXVAL :="
 " NULL; SREC.EAVS := 0; SREC.CHVALS := NULL; SREC.NOVALS := DBMS_STATS.NUMAR"
 "RAY(0,0); SREC.BKVALS := DBMS_STATS.NUMARRAY(0,1); SREC.EPC := 2; DBMS_STAT"
 "S.SET_COLUMN_STATS(NULL,'"DEF$_AQERROR"','"EXCEPTION_QUEUE"', NULL ,NULL,NU"
 "LL,0,0,0,srec,0,2); END;"
IMP-00003: ORACLE error 20005 encountered
ORA-20005: object statistics are locked (stattype = ALL)
ORA-06512: at "SYS.DBMS_STATS", line 1610
ORA-06512: at "SYS.DBMS_STATS", line 2120
ORA-06512: at "SYS.DBMS_STATS", line 5010
ORA-06512: at line 1
这个错误有点蹊跷,主要错误是object statistics are locked (stattype=all),经过查询,发现这个错误发生的原因在于数据库统计信息。但是更深层次的原因,还不清楚。暂时理解的是,由于默认的导入策略是statistics=always,这个策略要求的是一定要导入原先的数据库统计信息,这个策略,还是觉得有点问题,数据库统计信息,由于是使用了新的数据库版本,原先的统计信息,基本上80%左右的统计信息应该是不正确的,所以为什么导入策略还要默认是statistics=always呢。所以,我的决定是不导入或者重新统计数据库统计信息。
解决办法 :imp 命令最后添加参数statistics=none,这个参数就是要求不导入或者重新计算数据库统计信息。

6、错误6:
IMP-00017: following statement failed with ORACLE error 2270:
 "ALTER TABLE "DEF$_CALLDEST" ADD CONSTRAINT "DEF$_CALL_DESTINATION" FOREIGN "
 "KEY ("DBLINK") REFERENCES "DEF$_DESTINATION" ("DBLINK") ENABLE NOVALIDATE"
IMP-00003: ORACLE error 2270 encountered
ORA-02270: no matching unique or primary key for this column-list
这个错误,有点喜剧了,经过oracle817和oracle10g同一个表的表结构对比,发现oracle10g有这个外键,而且好像比oracle817的要好。所以放弃了。
解决办法:忽视。

你可能感兴趣的:(oracle,升级,字符集,11g,8i)