首页 > 数据库 >oracle安装成功后,更改字符集

oracle安装成功后,更改字符集

时间:2023-09-12 10:37:20浏览次数:37  
标签:更改 bytes 数据库 字符集 乱码 SQL oracle ALTER


看了网上的文章,乱码有以下几种可能 
1. 操作系统的字符集 
2.oracle server的字符集 
3.客户端的字符集 

1. 查看oracle的字符集 
  

1. select userenv('language') from dual


2.在Ubuntu中.bashrc 中加入下边的话: 
   export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK(改掉操作系统的字符集) 
Oracle  NLS_LANG Oracle 
3.


引用



 
  但是如果不一致的话,会将数据库中的数据转换成操作系统的字符集,返回给用户。插入时一样,就会将数据先做个转换,然后在插入到数据库。



  网上的人是这么说的,但具体的我也没试。我有时间试一下,看是不是他所说的那样。 

4.修改Oracle的编码和操作系统的一样。(参考别人的) 

登陆用dba 
SQL> conn sys/sys as sysdba; 

停掉数据库 
SQL>shutdown immediate; 


启动数据库到mount状态下 
SQL> STARTUP MOUNT; 

1. ORACLE instance started.  
2. Total System Global Area   76619308 bytes  
3. Fixed Size                   454188 bytes  
4. Variable Size              58720256 bytes  
5. Database Buffers           16777216 bytes  
6. Redo Buffers                 667648 bytes  
7. Database mounted.


SQL> ALTER SESSION SET SQL_TRACE=TRUE; 
Session altered. 


SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; 
System altered. 


SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; 
System altered. 


SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0; 
System altered. 

启动数据库 
SQL> Alter database open; 

设置字符集 
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK; 
先把数据库中的有中文乱码的清空了。 
然后在执行。这是有可能报错 
执行这个ALTER DATABASE character set INTERNAL_USE ZHS16GBK 
跳过字符集检查 

关闭数据库 
SQL> Shutdown immediate; 

重启 
SQL> startup; 


做完之后在sqlplus里边试一下,应该就好了,但是在pl/sql里边一看还是乱码, 
最后,在pl/sql里边创建个表,然后在插入中文,查看一下,应该是对的。 

这样就解决了乱码问题。 中间还有许多的问题,自己在慢慢研究吧。 

 

 

============================================================

http://weiruan85.iteye.com/blog/281470


标签:更改,bytes,数据库,字符集,乱码,SQL,oracle,ALTER
From: https://blog.51cto.com/u_16255870/7443150

相关文章

  • Oracle over(partition by) 用法
    语法与说明selectAAA,序号函数over(partitionbyBBBgroupbyCCC)fromtable;select后面跟什么字段随便。序号函数有多种,类似row_number()等。partitionby后面跟的字段实际是分组字段,与groupby后面跟的字段类似。再之后的order字段,就是分组后排序。序号函数说明......
  • Oracle 查询当前用户下所有索引(Index)并拼接创建脚本
    原文地址:https://blog.csdn.net/zy_workjob/article/details/82011825 Oracle查询当前用户下所有索引(Index,PK)并拼接创建脚本【不包含FUNCTION-BASED基于函数的索引】SELECTT.TABLE_NAME,--表名T.INDEX_NAME,--索引名I.UNIQUENESS,--是否非空I.INDEX_......
  • 通过代码更改Power Automate (Flow)
    这是我的第504篇原创文章,写于2023年9月11日。官方文档请参考 Workwithcloudflowsusingcode。我这里举个场景,我想通过代码或者Flow来更改某个flow的运行频率,比如我建立了一个Flow是每天中国北京时间17:00 运行,我想通过代码来更改,比如改成每天19:40 运行,这个场景用于用户......
  • oracle sql*plus常用命令
    文章转载自:https://www.cnblogs.com/csschn/p/4864653.html一、sys用户和system用户Oracle安装会自动的生成sys用户和system用户(1)、sys用户是超级用户,具有最高权限,具有sysdba角色,有createdatabase的权限,该用户默认的密码是change_on_install(2)、system用户是管理操作员,权......
  • 数据库数据恢复-Oracle数据库误执行truncate table的数据恢复案例
    Oracle数据库故障&分析:北京某单位Oracle11gR2数据库误执行truncate table CM_CHECK_ITEM_HIS,表数据丢失,查询该表时报错。数据库备份无法使用,表数据无法查询。Oracle数据库Truncate数据的机理:执行Truncate命令后,ORACLE数据库会在数据字典和Segment Header中更新表的Data O......
  • oracle 去重函数(逗号分割后去重,行转列)
    createorreplacefunctionaaa_distinct(avarchar2)returnvarchar2asresultsvarchar2(2000):='';begin selectlistagg(CONTRACTNO_listagg,',')withingroup(orderbyCONTRACTNO_listagg)intoresultsfrom(selectdistinctsubs......
  • 检查Oracle中是否是“数字”函数,Oracle11时候,报is_number 无效的运算符,使用lenth( )
    检查Oracle中是否是“数字”函数原文链接:https://www.jb51.cc/oracle/207329.html我试图检查来自oracle(10g)查询中的列的值是否是一个数字,以便进行比较。就像是:selectcasewhen(is_number(myTable.id)and(myTable.id>0))then'Isanumbergreaterth......
  • 如何使用Oracle判断是否为数字,使用 REGEXP_LIKE 正则
    如何使用Oracle判断是否为数字原文链接:https://www.python100.com/html/KDO3R3J4S004.html一、判断是否为数字的方法在Oracle中,常用的判断是否为数字的方法是使用REGEXP_LIKE函数和正则表达式。SELECTCASEWHENREGEXP_LIKE('123','^[[:digit:]]+$')THEN'是数字'ELSE'......
  • Debezium日常分享系列之:Oracle数据库系列文章之安装和设置
    Debezium日常分享系列之:Oracle数据库系列文章之安装和设置一、什么是Oracle二、安装Oracle三、配置Oracle1.配置Oracle:归档日志2.配置Oracle:重做日志3.配置Oracle:补充日志记录4.配置Oracle:用户设置四、总结这篇文章是由3部分组成的系列文章的一部分,该系列文章探讨如何使用......
  • Debezium系列之:获取Oracle JDBC驱动程序和XStream API文件
    Debezium系列之:获取OracleJDBC驱动程序和XStreamAPI文件一、背景二、详细步骤1.下载OracleClient包2.解压缩3.复制ojdbc8.jar和xstreams.jar文件4.创建环境变量三、XStream连接器属性一、背景DebeziumOracle连接器需要OracleJDBC驱动程序(ojdbc8.jar)才能连接到Oracl......