修改oracle 字符集出现(STARTUP MOUNT;)12514
背景:导入dmp遇到数据库字符集和dmp 不一致 导致数据导入失败("HPTDATA"."OUT_PATIENTCOSTS"."ITEMNAME" 的值太大 (实际值: 56, 最大值: 50))
原因:dmp字符集:SIMPLIFIED CHINESE_CHINA.ZHS16GBK 目标数据库:SIMPLIFIED CHINESE_CHINA.AL32UTF8
一、 修改字符集
1.要停到数据库 ( shutdown immediate;)
2.启动数据库服务(STARTUP MOUNT;)
二、解决12514问题
1.修改listener.ora文件
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = E:\app\Administrator\product\11.2.0\dbhome_2)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:E:\app\Administrator\product\11.2.0\dbhome_2\bin\oraclr11.dll")
)
##添加
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = E:\app\Administrator\product\11.2.0\dbhome_2)
)
##
)
2.重新启动监听
C:\Users\Administrator>cd c:\
c:\>lsnrctl
LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 24-2月 -2016 10:55:59 Copyright (c) 1991, 2010, Oracle. All rights reserved.
欢迎来到LSNRCTL, 请键入"help"以获得信息。
LSNRCTL> reload
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
命令执行成功
LSNRCTL> exit
3. 启动数据库服务
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> STARTUP MOUNT;
ORACLE 例程已经启动。
三、修改字符集
SQL> ALTER SESSION SET SQL_TRACE=TRUE;
会话已更改。
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
系统已更改。
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
系统已更改。
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
系统已更改。
SQL> Alter database open;
数据库已更改。
ALTER DATABASE character set INTERNAL_USE ZHS16GBK;