使用命令行修改Oracle的字符编码集

今天做了个数据迁移,从oracle10g迁移到Oracle11g,导入过程中,发现错误

对比了一下,发现原数据库编码是ZHS16GBK,新数据库编码是AL32UTF8

SELECT * FROM NLS_DATABASE_PARAMETERS p where p.PARAMETER='NLS_CHARACTERSET';

那么就需要修改编码集,百度了一下,过程如下:

  1. 以sysdba的身份登录

sqlplus / as sysdba

2.关闭数据库

shutdown immediate

3.以mount(挂载方式)打开数据库

startup mount

4.设置session

ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;

5.启动数据库

alter database open;

6.修改字符集(改成你需要的字符集)

ALTER DATABASE CHARACTERSET ZHS16GBK;

这里可能会出错,提示ORA-12712: 新字符集必须为旧字符集的超集

跳过超集检查做更改:

ALTER DATABASE character set INTERNAL_USE ZHS16GBK;

7.关闭数据库,重新启动

shutdown immediate
startup

8.再次查询,新数据库字符集已经变成ZHS16GBK,你以为这样就完了么?这个时候可能数据泵无法使用,我就碰到了。所以继续执行下边代码

execute sys.dbms_metadata_util.load_stylesheets;

9.再次使用数据泵导入,导入成功。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值