データ化けに起因する問題のOracleデータベースの文字セット

はじめに:

  データベースにテーブルの後、ごみの多くを見つけ、元のデータベースの元のデータは、ビューの情報ポイントの多くを見つけることは問題ではない、問題は、検査工程の後、問題が解決された、著者らはメモ、文字セットであってもよいことが見つかりました:

  フォーマットZHS16GBK、以下のレコードを符号化するOracleデータベースの一般的な文字は、実際の操作の文字セットを置き換えることです。

[オラクル@ woitumi- 197 DBS] $ sqlplusを/ としてSYSDBA 

启动数据库:
SQL
> 起動 SQL > SHUTDOWN IMMEDIATE; SQL > STARTUP MOUNT; SQL > ALTER SYSTEMは、RESTRICTED SESSIONをENABLE; SQL > ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 0 ; SQL > ALTER SYSTEM SET AQ_TM_PROCESSES = 0 ; SQL > ALTER DATABASE OPEN; SQL > ALTER DATABASEのCHARACTER SET ZHS16GBK。

そして、二つのことが発生する可能性があります。

AT 1 RA-ラインERROR 12721:操作他のCANないときアクティブセッションがある実行し
、上記のエラーは、変更するには、次のメソッドを使用する場合、使用INTERNAL_USEが表示されるスーパーセットチェックをスキップすることができ、1:

SQL> ALTER DATABASEのCHARACTER SET INTERNAL_USE ZHS16GBK。

2、エラーの結果は、新しい文字セットは、古い文字セットのスーパーセットでなければならないことを示唆しています。

12712-ORA:SET A新しい新キャラ旧文字セットのスーパーセットでなければなりません
RROR AT 1行目:

必要キャスト:

> ALTER DATABASE文字セット INTERNAL_USE ZHS16GBK。

どちらの場合も、私は最後のステップに関連するコマンドの実装で直面する問題:

> シャットダウン即時;
> STARTUP;

添付ファイル:

  ときに、データベースのバックアップファイルのインポート、

1. oracelサーバー側の文字セット

2. Oracleのリモート接続ツールの文字セット

3.エクスポート文字セットDMPファイルデータベース。

 これらの三つの操作の後、同じデータである必要があり、それが文字化け表示されません

照会方法:

クエリOracleサーバー側の文字セット

見つけるために多くの方法があることを、次のされたOracleサーバー側の文字セットを、お問い合わせのより直感的な方法は

SQL> を選択し USERENV(' 言語'からデュアル; 

USERENV(' LANGUAGE ' 

 -------------------------------------------- -------- 

簡体CHINESE_CHINA.ZHS16GBK 

 

SQL > を選択し USERENV( '言語')からデュアル; 

AMERICAN _ AMERICA。ZHS16GBK

確認する方法文字セットDMPファイルを

oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3个字节记录了dmp文件的字符集。如果dmp文件不大,比如只有几M或几十M,可以用UltraEdit打开(16进制方式),看第2第3个字节的内容,如0354,然后用以下sql查出它对应的字符集:

SQL> select nls_charset_name(to_number('0354','xxxx')) from dual;

ZHS16GBK

如果dmp文件很大,比如有2G以上(这也是最常见的情况),用文本编辑器打开很慢或者完全打不开,可以用以下命令(在linux主机上):

cat exp.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6

おすすめ

転載: www.cnblogs.com/xiaoyuxixi/p/12124881.html