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