web-dev-qa-db-ja.com

Oracle 11g r2Expressエディションで文字セットを変更する方法

Oracle 11g r2Expressインスタンスで文字セットをAL32UTF8からWE8MSWIN1252に変更する必要があります...次のコマンドを使用しようとしました。

ALTER DATABASE CHARACTER SET WE8MSWIN1252;

しかし、MSWIN1252がAL32UTF8のスーパーセットではないとは言えません。次に、CSSCANについて説明している記事をいくつか見つけましたが、そのツールはOracle 11Expressでは使用できないようです。

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

誰かがそれを行う方法についてのアイデアを持っていますか?前もって感謝します

Edit少し明確にする:本当の問題は、VARCHAR(6バイト)として定義された列を持つテーブルにデータをインポートしようとしていることです。 。問題の原因となっている文字列は「eq.mês」です。MSWIN1252では6バイト、UT8では7バイトが必要です。

9
alessandroasm

できません。

Express Editionの11gは、UTF-8文字セットを使用した場合にのみ使用できます。 10gのエクスプレス版に戻りたい場合は、Windows-1252文字セットを使用した西ヨーロッパ版がありました。他のエディションとは異なり、OracleはExpress Editionの全範囲の文字セットをサポートしておらず、既存のXEデータベースの文字セットの変更もサポートしていません。

データベースの文字セットを変更する必要があるのはなぜだと思いますか?一般的に特に頻繁に使用されないWindows-1252範囲の上半分の文字をサポートするために、もう少し多くのストレージスペースを使用する可能性があることを除けば、UTF-8データベースには多くの欠点はありません。

5
Justin Cave

元の文字のサブセットのみをサポートする文字セットに移動する場合の最良のオプションは、expとimp back(またはexpdpとimpdp)を使用することです。

1252コードページにない文字が単一のテーブルに含まれないことを確認しますか?

1
Benoit

そのALTERDATABASEコマンドのみを実行する場合の問題は、データディクショナリが変換されておらず、破損している可能性があることです。

私も同じ問題を抱えていました。私の場合、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スクリプトは機能しません。

  • すべてのCHARVARCHAR2、およびLONGデータ(データディクショナリおよびアプリケーションデータ)に対して変更なし
  • すべてのアプリケーションデータCLOBに対して変更なし
  • すべてのデータディクショナリCLOBに対して変更なしおよび/または変換可能

この場合、この条件が満たされ、CSALTERスクリプトを正常に実行できました。さらに、このスクリプトは、実行しようとしているALTER DATABASEコマンドを実行し、変換可能なデータディクショナリのCLOBデータを変換します。

最後に、アプリケーションのユーザーとテーブルスペースを作成し、ユーザーデータのダンプを正常にインポートします。

1
lssilveira