oracle 字符集修改方案,oracle字符集修改方案-程序员宅基地

技术标签: oracle 字符集修改方案  

关于oracle字符集文档

Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地

化语言和平台。

1 参数说明

影响oracle数据库字符集最重要的参数是NLS_LANG参数

Oracle的字符集命名遵循以下命名规则:

size>

即:

比如:

ZHS16GBK表示采用GBK编码格式、16位(两个字节)简体中文字符集

它的格式如下:NLS_LANG = language_territory.charset

它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性

其中:Language 指定服务器消息的语言,territory

指定服务器的日期和数字格式,charset 指定字符集。如:AMERICAN _ AMERICA. ZHS16GBK

从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分,

所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。

2 查看数据库字符集

这涉及三方面的字符集:

一是:oracel server端的字符集;

二是:oracle client端的字符集;

三是:dmp文件的字符集;

在做数据导入的时候,需要这三个字符集都一致才能正确导入。

2.1查询oracle server端的字符集

有很多种方法可以查出oracle server端的字符集

①比较直观的查询方法

SQL> select userenv('language') from

dual;

查询结果如下: SIMPLIFIED CHINESE_CHINA.ZHS32GB18030

②查看有关字符集的所有参数

SELECT * FROM

v$nls_parameters;

结果中的NLS_CHARACTERSET ZHS32GB18030

2.2查看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

2.3查询oracle client端的字符集

在windows平台下,就是注册表里面相应OracleHome的NLS_LANG。具体路径:

Win+R àregedit à

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ nls_lang

显示本地的字符集,这样就只影响这个窗口里面的环境变量。

在unix平台下,就是环境变量NLS_LANG。

$echo $NLS_LANG

AMERICAN_AMERICA.ZHS16GBK

如果检查的结果发现server端与client端字符集不一致,建议统一修改为同server端相同的字符集。

关于字符集客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter

session>环境变量>注册表>参数文件。

客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter

session>环境变量>注册表>参数文件

字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是

American_America.zhs16gbk。

2.5补充内容

2.5.1 数据库服务器字符集

SELECT * FROM nls_database_parameters;

来源于props$,是表示数据库的字符集。

2.5.2 客户端字符集环境

SELECT * FROM nls_instance_parameters;

其来源于v$parameter,表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表

2.5.3 会话字符集环境

SELECT * FROM

nls_session_parameters;

来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter

session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。

二、关于oracle字符集修改

一旦数据库创建后,数据库的字符集理论上讲是不能改变的。因此,在设计和安装之初考虑使用哪一种字符集十分重要。根据Oracle的官方说明,字符集的转换是从子集到超集受支持,反之不行。如果两种字符集之间根本没有子集和超集的关系,那么字符集的转换是不受oracle支持的。对数据库

server而言,错误的修改字符集将会导致很多不可测的后果,可能会严重影响数据库的正常运行,所以在修改之前一定要确认两种字符集是否存在子集和超集

的关系。一般来说,除非万不得已,我们不建议修改oracle数据库server端的字符集。特别说明,我们最常用的两种字符集ZHS16GBK和

ZHS16CGB231280之间不存在子集和超集关系,因此理论上讲这两种字符集之间的相互转换不受支持。

下例为把数据库的字符集从ZHS16GBK修改为 ZHS32GB18030。

1、执行脚本

对于每个sql脚本的含义,请见注释①~⑥

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 open;

set linesize 120;

alter database character set INTERNAL_USE

ZHS32GB18030;

shutdown immediate ;

startup ;

2、 相关参数注释

查看字符集参数:SELECT * FROM v$nls_parameters;

①SQL_TRACE是Oracle提供的用于进行SQL跟踪的手段,是强有力的辅助诊断工具.在日常的数据库问题诊断和解决中,SQL_TRACE是非常常用的方法。

sql_trace =true

在全局启用SQL_TRACE会导致所有进程的活动被跟踪,包括后台进程及所有用户进程,这通常会导致比较严重的性能问题,所以在生产环境中要谨慎使用,这个参数在10g之后是动态参数,可以随时调整,在某些诊断中非常有效。

提示:

通过在全局启用sql_trace,我们可以跟踪到所有后台进程的活动,很多在文档中的抽象说明,通过跟踪文件的实时变化,我们可以清晰的看到各个进程之间的紧密协调.

②在使用过程中对数据库进行限制

ALTER SYSTEM DISABLE RESTRICTED

SESSION来取消数据库的受限制状态。在数据库受限制的过程中,只有对数据库拥有CREATE

SESSION权限的用户才能够连接到数据库。这种状态有利于对数据库进行备份,恢复,导入,导出等操作。

③首先设置JOB_QUEUE_PROCESSES=0,Oracle会杀掉CJQ0及相应job进程

④aq_tm_processes值可选在1到10之间,0代表是关闭队列监视

⑤利用INTERNAL_USE

关键字修改区域设置,目的是让Oracle数据库绕过了子集与超集的校验

⑥STARTUP NOMOUNT

然后可以使用ALTER DATABASE MOUNT 来挂上数据库。可以使用: STARTUP

MOUNT来启动数据库,并挂载上数据库,但是保持数据库的关闭状态。稍后可以使用ALTER DATABASE

OPEN来打开数据库。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42361071/article/details/116368622

智能推荐

Android11编译第五弹:开启VPN权限_安卓虚拟网络权限-程序员宅基地

文章浏览阅读1.9k次。虚拟专用网(VPN)是一条通信隧道,可以在不可信的中间网络上提供身份认证和数据通信的点对点传输。大多数VPN使用加密技术来保护封装的通信数据,但是加密对于VPN 连接而言并非必需的。简单来说,设备不论连接什么类型的网络,只要和VPN服务器提供的网络,那么这些设备就在VPN网络中,相当于在同一个虚拟局域网内。因此就可以使用adb访问智能货柜设备。因为需要支持VPN访问,因此AOSP需要定制支持VPN权限。_安卓虚拟网络权限

【VS配置】如何设置调试命令行参数_vs 调试 命令行参数-程序员宅基地

文章浏览阅读5k次。右键项目->属性->配置属性->调试,如下图命令:即是应用程序的绝对路径命令行参数自行设定以下设置是我调试 Nvidia编码设置的参数_vs 调试 命令行参数

数字后端基本认识-程序员宅基地

文章浏览阅读2.3w次,点赞50次,收藏402次。1、数字后端的目的传统上将布局布线前的工作称之为数字前端(Front End)设计,而将布局布线之后的工作称为数字后端(Back End)设计。布局的目的在于产生制作掩膜所需的GDSII文件。同时也产生布局后的网表文件(Netlist)及标准延迟文件(SDF)。2、数字芯片后端工程师要做什么主要工作就是接收数字前端提交的代码,最终交付一个完整的芯片布局布线结果。工作职责(1)从事SoC物理实现(P&R)工作,包括版图设计(floorplan)与后端验证(LVS/DRC)等(2._数字后端

计算机基础知识面试题集_计算机基础面试题-程序员宅基地

文章浏览阅读6.3w次,点赞100次,收藏955次。凡是计算机类的面试都少不了计算机基础知识,汇总整理此类知识有助于面试集中复习,说不定什么时候就用上了。1、ICMP 是什么协议?处于哪一层?答:ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。属于网络层协议控制消息是指网络通不通、主机..._计算机基础面试题

redhat oracle 12c 安装图解,RedHat 7 静默安装Oracle 12c-程序员宅基地

文章浏览阅读673次。之前在网上看了很多Oracle的静默安装教程,感觉有些乱,经过自己查阅Oracle官网英文手册,结合在虚拟机中安装测试,整理出了这篇RedHat 7 静默安装Oracle 12c。redhat 6静默安装Oracle 11g R2也已基本整理好了,等有时间了再发出来。一、环境要求与准备1、硬件要求(1)磁盘空间EnterpriseEdition : 6.4GBStandardEdition : 6..._oracl12c redhat7 非图形界面安装

shell函数的使用方法,轻松写脚本_shell脚本函数调用怎么写-程序员宅基地

文章浏览阅读2k次。目录shell函数1.函数的作用2.函数的基本格式3.函数注意事项4.函数调用的方法5.函数的返回值6.函数的传参7.在外部调用函数8.函数变量的作用范围9.函数的递归shell函数1.函数的作用语句块定义成函数约等于别名,定义函数,再引用函数封装的可重复利用的具有特定功能的代码2.函数的基本格式法一:[function] 函数名 (){ 命令序列 [return x] #使用return或者exit可以显式的结束函数} 法二:函数名(){ 命令序列}3._shell脚本函数调用怎么写

随便推点

Numpy:repeat用法详解 Python_python np.repeat-程序员宅基地

文章浏览阅读811次。NumPy的函数是一个非常有用的函数,可以用来重复数组中的元素。本文详细介绍了函数的用法,包括扁平化重复操作和按轴重复操作。我们还提供了相应的源代码示例,希望能帮助读者更好地理解和使用函数。_python np.repeat

Mac for postman interceptor安装_mac postman interceptor-程序员宅基地

文章浏览阅读1k次。1、先安装chrome浏览器下载一个chrome,进行正常安装即可,本人chrome版本为92,下载插件一定要最新版本1.1以上;2、再安装postman从官网下载了一个新最的进行正常安装(本人的太老了,取了最新版本postman)3、在chrome中添加插件interceptor下载地址:https://www.crx4chrome.com/crx/560/下载文件名为aicmkgpgakddgnaphhhpliifpcfhicfo-1.1.2-Crx4Chrome.c.._mac postman interceptor

分布式锁,使用redis还是zookeeper?--中篇_zoomkeeper 与redis-程序员宅基地

文章浏览阅读263次。前言上篇已经详细提及到redis实现的redLock算法下的分布式锁,在项目里出现的问题以及提出的解决的方案,现在就针对这个分布式锁的话题,这节就针对zk的锁来详细说明,项目里使用的zk实现分布式锁还是很方便的,使用起来比redis要高效,安全。而且ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件..._zoomkeeper 与redis

linux0.01源代码分析笔记_linux0.01源码分析-程序员宅基地

文章浏览阅读7.6k次,点赞6次,收藏45次。linux0.01(原始版)源代码分析笔记 1. 整体结构:第一个文件夹boot ,包含boot.s 和head.s 。boot.s 实现计算机加电自检引导扇区,第一次加载扇区和第二次加载操作系统的功能,head.s 主要包括初始设置的代码、时钟中断int 0x08的过程代码、系统调用中断int 0x80的过程代码以及任务A 和任务B 等的代码和数据。 (其中.S为扩展名的文件为汇编文件..._linux0.01源码分析

CAS-KG——知识推理_部分完整性假设-程序员宅基地

文章浏览阅读1.4k次,点赞2次,收藏19次。说明:CAS是国科大的简称,KG是知识图谱的缩写,这个栏目之下是我整理的国科大学习到的知识图谱的相关笔记。课程目标了解以知识图谱为代表的大数据知识工程的基本问题和方法掌握基于知识图谱的语义计算关键技术具备建立小型知识图谱并据此进行数据分析应用的能力教学安排详情请见博客:CAS-KG——课程安排文章目录..._部分完整性假设

Android trace文件分析小技巧-程序员宅基地

文章浏览阅读3.3k次。网上有很多trace文件分析博客,但是都是解释anr发生得原因,没有指导anr文件如何着手分析?本篇文章就是讲trace文件怎么切入?_android trace文件分析