Конвертировать базу данных Oracle 12 c из WE8MSWIN1252 в набор символов utf-8 - PullRequest
0 голосов
/ 21 февраля 2020

Мне было поручено дать оценку моему менеджеру по проектированию / тестированию. Мы преобразуем нашу базу данных Oracle12 c из набора символов WE8MSWIN1252 в символы utf-8.

Мне было предложено составить оценки изменений развития по следующим параметрам:

  1. Переключить тип данных с байта на символ (т. Е. VARCHAR2 (10 байт ) на VARCHAR2 (10 char ))
  2. изменение кода, где Длина должна быть заменена на 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;

Заранее спасибо, ребята.

1 Ответ

1 голос
/ 26 февраля 2020

Я настоятельно рекомендую вам прочитать примечание 225912.1 о поддержке. oracle .com.

При изменении набора символов может потребоваться немало усилий, включая сканирование существующих данных, которые могут потребоваться. перезагружен / изменен и т. д. c.

...