Oracle11g 字符集 AL32UTF8 修改为ZHS16GBK

本文档详细介绍了如何在阿里云docker环境中将Oracle11g数据库的字符集从AL32UTF8修改为ZHS16GBK,包括进入容器、切换用户、修改权限、启动与停止数据库、执行字符集变更SQL以及处理可能出现的数据乱码问题。同时,提到了数据导出与导入的注意事项,确保在字符集转换过程中的数据完整性。
摘要由CSDN通过智能技术生成

Oracle11g 字符集 AL32UTF8 修改为ZHS16GBK

     一.由于测试环境在阿里云上的docker中,

          1.需要先进入容器:docker exec -it oracle11g bash

          2.切换root用户:su root  并输入密码

          3.软连接:sqlplus /nolog    

                           conn as sysdba

                           1).如果提示 bash: sqlplus: command not found 需要重新建 ln -s $ORACLE_HOME/bin/sqlplus /usr/bin

                          2).如果提示没有oracle_home配置,重载配置文件:source /home/oracle/.bash_profile

                          3).如果提示没有权限:cd /var/tmp      chown oracle:dba .oracle

                          4).如果su root 密码一直错误 修改密码 docker exec -itu root oracle11g passwd

                         5).message file sp1<lang>.msb not found   

                             su oracle 和 su - oracle是有区别的: 
-, -l ,–login make the shell a login shell 
加了”-“,是以login shell登陆的,所以会设置环境变量,如果不加,使用的还是切换前用户的环境变量,所以会出错。

                             echo $ORACLE_HOME 为空行

                             export $ORACLE_HOME=/home/app/oracle/...

  二.开始修改字符集

        1.SHUTDOWN IMMEDIATE;

        2.STARTUP MOUNT;

        3.ALTER SYSTEM ENABLE RESTRICTED SESSION;

        4.ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

        5.ALTER SYSTEM SET AQ_TM_PROCESSES=0;

        6.ALTER DATABASE OPEN;

        7.ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;

        8.SHUTDOWN IMMEDIATE;

        9.STARTUP;

三.后续数据问题

     数据库中中文乱码,处理方式:修改字符集前先导出数据库dmp备份,修改完后再导入

         1.导出数据注意空表,执行脚本:select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null

         2.导出AL32UTF8字符集DMP:

               查询服务端字符集:select userenv('language') from dual;

               修改环境变量中的HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient11g_home1-->NLS_LANG-->SIMPLIFIED CHINESE_CHINA.AL32UTF8

               dos中为乱码,不影响

          3.导出ZHS16GBK字符集DMP:

               查询服务端字符集:select userenv('language') from dual;

               修改环境变量中的HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient11g_home1-->NLS_LANG-->SIMPLIFIED CHINESE_CHINA.ZHS16GBK

               会有EXP-00091 正在导出有问题的统计信息 警告,基本不影响数据

               由于后面服务端字符集为ZHS16GBK,后面就有这个dmp数据覆盖服务器上的数据

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值