【问题标题】:Convert Oracle 12c database from WE8MSWIN1252 to utf-8 character set将 Oracle 12c 数据库从 WE8MSWIN1252 转换为 utf-8 字符集
【发布时间】:2020-02-21 12:17:38
【问题描述】:

我的任务是为我的项目经理提供开发/测试估算。我们正在将我们的 Oracle12c 数据库从 WE8MSWIN1252 字符集转换为 utf-8 字符。

我的任务是对以下方面的发展变化进行估计。

  1. 将数据类型从 Byte 切换到 Char(即 VARCHAR2(10 byte) 到 VARCHAR2(10 char) )
  2. 更改代码,其中 Length 需要替换为 lengthb

我的问题。

  1. 我是否只需要担心将数据库表列从字节更改为字符?还是我可能需要查看数据库中的其他对象?
  2. Length to Lengthb 是我需要查看的唯一 Pl/SQL 函数吗?
  3. 作为开发人员,我还有其他需要注意的方面吗(例如,我们有 Oracle 表单/报告)?
  4. 我注意到下面的代码可以更改 user_tab_columns 中的所有表列,我是否需要为其他对象类型和以下查询未获取的对象运行此代码。
   BEGIN
    FOR X IN (SELECT C.TABLE_NAME, 
                     C.COLUMN_NAME,
                     C.DATA_TYPE,
                     C.DATA_LENGTH
                FROM USER_TAB_COLUMNS C
               WHERE DATA_TYPE LIKE 'VARCHAR%' 
                AND CHAR_USED = 'B'
                AND NOT EXISTS (SELECT 1 FROM USER_VIEWS V WHERE V.VIEW_NAME = C.TABLE_NAME))
    LOOP
        EXECUTE IMMEDIATE('ALTER TABLE '||X.TABLE_NAME||' MODIFY '||X.COLUMN_NAME||' '||X.DATA_TYPE||'('||X.DATA_LENGTH||' CHAR)');
    END LOOP;
    END;

提前谢谢各位。

【问题讨论】:

    标签: oracle plsql utf-8 character-encoding oracle12c


    【解决方案1】:

    我强烈建议您阅读 support.oracle.com 上的注释 225912.1。

    更改字符集可能涉及相当多的工作,包括扫描可能需要重新加载/更改等的现有数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-29
      • 1970-01-01
      • 1970-01-01
      • 2017-07-31
      • 2016-04-03
      • 2011-06-25
      • 2014-03-18
      相关资源
      最近更新 更多