寂寞大萝卜 发表于 2018-9-8 12:34:13

oracle修改字符集方法

  环境:
  OS:Red Hat Linux As 5
  DB:Oracle 10.2.0.4
  通常情况下,字符集是在安装的时候选定好的,需要修改数据库的字符集Oracle建议的做法是重建数据库(EXP/EXPDP导出后再导入),虽然Oracle官方文档也有说如何修改字符集,但这不是Orale推荐的方法.下面是Oracle官方文档中提到的如何修改字符集的方法.
  alter database datafile '' offline drop
  1.查看当前数据库字符集
  select * from nls_database_parameters
  where parameter='NLS_CHARACTERSET';
  -----------------------------------
  PARAMETER         VALUE
  NLS_CHARACTERSET WE8ISO8859P1
  这里的字符集WE8ISO8859P1是不支持中文的
  2.将字符集修改为中文字符集ZHS16GBK
  SQL> shutdown immediate
  Database closed.
  Database dismounted.
  ORACLE instance shut down.
  SQL> STARTUP MOUNT;
  ORACLE instance started.
  Total System Global Area734003200 bytes

  Fixed>
  Variable>  Database Buffers          465567744 bytes
  Redo Buffers                2969600 bytes
  Database mounted.

  SQL>>
  System>
  SQL>>
  Database>
  SQL>>  ALTER DATABASE CHARACTER SET ZHS16GBK
  *
  ERROR at line 1:
  ORA-12712: new character set must be a superset of old character set

  SQL>>  alter system disable restricted session;

  Database>  SQL> SHUTDOWN IMMEDIATE;
  Database closed.
  Database dismounted.
  ORACLE instance shut down.
  SQL> startup
  ORACLE instance started.
  Total System Global Area734003200 bytes

  Fixed>
  Variable>  Database Buffers          465567744 bytes
  Redo Buffers                2969600 bytes
  Database mounted.
  Database opened.
  这样将数据库的字符集由原来的WE8ISO8859P1修改成了ZHS16GBK,对原来的字符集有中文的显示的还是乱码,但对新入库的中文字符集就能正常显示.

页: [1]
查看完整版本: oracle修改字符集方法