设为首页 收藏本站
查看: 472|回复: 0

[经验分享] Oracle数据库字符集修改

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-6-17 10:18:46 | 显示全部楼层 |阅读模式
T Nls_Charset_Name(To_Number('0354', 'xxxx')) FROM Dual;   
NLS_CHARSET_NAME(TO_NUMBER('0354','XXXX'   
----------------------------------------   
ZHS16GBK如果dmp文件很大如2G以上,可以用以下命令查看(在unix主机上): cat dbexp.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6
一、修改单实例的数据库字符集    接下来以数据库的字符集从ZHS16GBK修改为 ZHS32GB18030为例。
操作步骤如下:
--停监听   
lsnrctl stop   
--关闭数据库   
SQL>shutdown immediate;   
--开启数据库到mount状态   
SQL>startup mount ;   
--SQL_TRACE是Oracle提供的用于进行SQL跟踪的手段,是强有力的辅助诊断工具.在日常的数据库问题诊断和解决中,SQL_TRACE是非常常用的方法。   
--sql_trace =true在全局启用SQL_TRACE会导致所有进程的活动被跟踪,包括后台进程及所有用户进程,这通常会导致比较严重的性能问题,所以在生产环境中要谨慎使用,这个参数在10g之后是动态参数,可以随时调整,在某些诊断中非常有效。   
--提示: 通过在全局启用sql_trace,我们可以跟踪到所有后台进程的活动,很多在文档中的抽象说明,通过跟踪文件的实时变化,我们可以清晰的看到各个进程之间的紧密协调.   
SQL>alter session set sql_trace=true;     
--ALTER SYSTEM DISABLE RESTRICTED SESSION来取消数据库的受限制状态。在数据库受限制的过程中,只有对数据库拥有CREATE SESSION权限的用户才能够连接到数据库。这种状态有利于对数据库进行备份,恢复,导入,导出等操作。   
SQL>alter system enable restricted session;   
--首先设置JOB_QUEUE_PROCESSES=0,Oracle会杀掉CJQ0及相应job进程   
SQL>alter system set job_queue_processes=0;   
--aq_tm_processes值可选在1到10之间,0代表是关闭队列监视   
SQL>alter system set aq_tm_processes=0;     
--利用INTERNAL_USE 关键字修改区域设置,目的是让Oracle数据库绕过了子集与超集的校验   
SQL>alter database character set INTERNAL_USE ZHS32GB18030;   
--打开数据库   
SQL>alter database open;   
--再次关闭数据库   
SQL>shutdown immediate ;   
--再次打开数据库   
SQL>startup ;   
SQL>SET linesize 200   
SQL>SELECT *   
  FROM Nls_Database_Parameters a   
WHERE a.Parameter = 'NLS_CHARACTERSET';   
SQL>SELECT '张王李赵' from dual;
二、修改RAC环境下的数据库字符集      Oracle11gR2中RAC环境下修改数据库字符集方法:
(1) 停监听   
ps -ef |grep pmon   
lsnrctl stop   
(2) 停所有实例   
cd $ORACLE_HOME/crs_1/bin   
./srvctl stop database -d testdb     
或者使用   
./srvctl stop instance -d testdb -i rac1   
./srvctl stop instance -d testdb -i rac2   
(3) 查看集群状态   
crs_stat -t   
(4) 只能在一个节点上操作,如rac1,否则会报ORA-12720错误,意为此操作只能在单实例下操作。   
startup   
(5) 先将数据库置于非集群状态   
alter system set cluster_database=false scope=spfile sid='testdb';   
(6) 修改数据库字符集   
shutdown immediate;   
startup mount;   
alter session set sql_trace=true;     
alter system enable restricted session;   
alter system set job_queue_processes=0;   
alter system set aq_tm_processes=0;     
alter database character set INTERNAL_USE ZHS32GB18030;   
(7) 再将数据库置于集群状态   
alter system set cluster_database=true scope=spfile;     
(8) 关闭数据库   
shutdown immediate;     
(9) 先启动一个节点进行验证,各节点都需要进行验证。   
startup   
sqlplus / as sysdba   
SELECT '张王李赵' FROM Dual;   
(10) 恢复集群状态   
./srvctl start database -d testdb   
(11) 查看集群状态   
crs_stat –t
在数据库安装部署时需要考虑数据库字符集的问题,最好在安装实例时就设置好,不建议后续对数据库字符集进行修改。
         

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-20723-1-1.html 上篇帖子: oracle手工冷备份脚本 下篇帖子: oracle 性能优化方向 Oracle 数据库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表