学习恢复数据库啦,一样的环境。C盘装的还原。第一遍装好后,备份文件,然后重启(数据库装在C盘),然后正常流程恢复。,结果启动后,发现表中的中文内容都乱码啦。有同学知道么。
第1个回答 2017-06-27
1.Oracle数据库出现乱码的原因:
<a>操作系统与服务器一致,但客户端与服务器字符集不一致<b>客户端与服务器一致,但操作系统与服务器不一致2.解决办法:
设置相关的字符集,保证操作系统、客户端、数据库服务器,保证这三者的字符集都相同。
3.针对<a>情况:
设置客户端的字符集与服务器一致,假如服务器的字符集为:UTF8(建议创建数据库的时候用这个字符集,中英文都能兼容)客户端Linux设置步骤:
1.切换至oracle数据库的安装用户,我的用户名就是oracle$ su - oracle
$ cd ~ //进入oracle用户的家目录
$ vim .bash_profile //编辑oracle用户下的.bash_profile文件.bash_profile文件内容:(每个人的这个文件具体的设置可能都不太一样,不用担心,注意红色那一行就行了)export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 //设置这个参数就代表设置用户客户端的字符集,在创建数据库的时候不设置这个参数也没问题,建议是最好规划好自己的库需要用到什么时候类型的字体,然后再设置这个值,最好保持与数据库一致,当然这个参数可以随时改变.(我自己的数据库是用UTF8字符集)SQL> select userenv('language') from dual; //oracle中查询的字符集USERENV('LANGUAGE')
--------------------------------------------------------------------------------AMERICAN_AMERICA.AL32UTF8
$ source .bash_profile //执行source命令使修改完的.bash_profile文件生效至此,设置完毕,再次登录Oracle数据库,查询显示正常,但有一点要注意,就是如果你插入数据时的字符集不是UTF8下执行的,当你客户端和服务器都变成UTF8字符集后,以后插入的中文可能显示就为乱码了。所以说只有三个点(客户端、操作系统、数据库)的字符集保持一致的时候才能让数据库里面的中文正常显示。
<a>操作系统与服务器一致,但客户端与服务器字符集不一致<b>客户端与服务器一致,但操作系统与服务器不一致2.解决办法:
设置相关的字符集,保证操作系统、客户端、数据库服务器,保证这三者的字符集都相同。
3.针对<a>情况:
设置客户端的字符集与服务器一致,假如服务器的字符集为:UTF8(建议创建数据库的时候用这个字符集,中英文都能兼容)客户端Linux设置步骤:
1.切换至oracle数据库的安装用户,我的用户名就是oracle$ su - oracle
$ cd ~ //进入oracle用户的家目录
$ vim .bash_profile //编辑oracle用户下的.bash_profile文件.bash_profile文件内容:(每个人的这个文件具体的设置可能都不太一样,不用担心,注意红色那一行就行了)export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 //设置这个参数就代表设置用户客户端的字符集,在创建数据库的时候不设置这个参数也没问题,建议是最好规划好自己的库需要用到什么时候类型的字体,然后再设置这个值,最好保持与数据库一致,当然这个参数可以随时改变.(我自己的数据库是用UTF8字符集)SQL> select userenv('language') from dual; //oracle中查询的字符集USERENV('LANGUAGE')
--------------------------------------------------------------------------------AMERICAN_AMERICA.AL32UTF8
$ source .bash_profile //执行source命令使修改完的.bash_profile文件生效至此,设置完毕,再次登录Oracle数据库,查询显示正常,但有一点要注意,就是如果你插入数据时的字符集不是UTF8下执行的,当你客户端和服务器都变成UTF8字符集后,以后插入的中文可能显示就为乱码了。所以说只有三个点(客户端、操作系统、数据库)的字符集保持一致的时候才能让数据库里面的中文正常显示。