簡體   English   中英

如何更改Oracle 11g r2 Express版中的字符集

[英]How to change character set in Oracle 11g r2 Express edition

我必須在Oracle 11g r2 Express實例中將字符集從AL32UTF8更改為WE8MSWIN1252 ...我嘗試使用以下命令:

ALTER DATABASE CHARACTER SET WE8MSWIN1252;

但它沒有說MSWIN1252不是AL32UTF8的超集。 然后我發現了一些關於CSSCAN的文章,這個工具似乎在Oracle 11 Express中不可用。

http://www.oracle-base.com/articles/10g/CharacterSetMigration.php

任何人都知道如何做到這一點? 提前致謝

編輯澄清一點:真正的問題是我正在嘗試將數據導入到一個表中,該表的列定義為VARCHAR(6字節)。 導致問題的字符串是'eq.mês',它在MSWIN1252中需要6個字節,在UT8中需要7個字節

你不能。

11g的Express Edition僅使用UTF-8字符集。 如果你想回到10g的快遞版,有一個使用Windows-1252字符集的西歐版本。 與其他版本不同,Oracle不支持Express Edition中的所有字符集,也不支持更改現有XE數據庫的字符集。

為什么您認為需要更改數據庫字符集? 除了可能需要更多存儲空間來支持Windows-1252范圍上半部分中的字符(通常沒有特別大量使用)之外,UTF-8數據庫沒有太多缺點。

僅執行ALTER DATABASE命令的問題是數據字典未被轉換且可能已損壞。

我有同樣的問題。 在我的例子中,我們使用的是Oracle 11g Express Edition(11.2.0.2.0),我們確實需要它在WE8MSWIN1252字符集上運行,但我無法在安裝時更改字符集(它始終與AL32UTF8一起安裝)。

以管理員身份安裝Oracle Client 11g並僅運行csscan full=y (請查看此鏈接https://oracle-base.com/articles/10g/character-set-migration ),我們注意到有損和可轉換的數據問題在我們的數據庫中 但是,問題在於MDSYS(Oracle Spatial)和APEX_040000(Oracle Application Express)模式。 因此,由於我們不需要這些產品,我們將其刪除(請查看此鏈接: http//fast-dba.blogspot.com.br/2014/04/how-to-remove-unwanted-components-from.html )。

然后,我們使用expdp導出用戶模式並刪除用戶(必須在過程結束時重新創建它們)。

使用full=y capture=y再次執行csscan,它報告: The data dictionary can be safely migrated using the CSALTER script 如果報告沒有這個,那么csalter.plb腳本將不起作用,因為有些條件無法滿足:

  • 所有CHAR VARCHAR2和LONG數據(數據字典和應用程序數據)都沒有變化
  • 所有Application Data CLOB都沒有變化
  • 所有數據字典CLOB都沒有變化和/或可轉換

在我們的例子中,這個條件得到滿足,我們可以成功運行CSALTER腳本。 此外,此腳本執行您嘗試運行的ALTER DATABASE命令,並轉換可轉換的數據字典的CLOB數據。

最后,我們創建應用程序的用戶和表空間,並成功導入用戶數據的轉儲。

當你想要一個只支持原始字符子集的字符集時,我會說你最好的選擇,你最好的選擇是使用exp和imp back(或expdp和impdp)。

您確定沒有單個表格會包含1252代碼頁中找不到的任何字符嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM