찾다
데이터 베이스MySQL 튜토리얼字符集与Oracle导出导入问题总结

此处主要是关于NLS_LANG这个环境变量的说明,客户端依据其最先找到的NLS_LANG作为参考字符集,顺序为:用户级环境变量,系统级环

一 字符集与导出导入问题总结

    首先是必须保证Oracle的数据库服务端与客户端字符集一致,这样就能保证数据编码的一致性。

当数据库服务端选用ZHS16GBK时,当导出导入新的数据过程中,数据库服务端会对导入的二进制数据库作ZHS16GBK编码检查,当数据长度为奇数值时,出现数据的最后一个字节对应十进制为:129到254时,会丢失此字节,具体解释见第二节内容。

当数据库服务端选用WE8ISO8859P1时,当导出导入新的数据过程中,数据库服务端会对导入的二进制数据库作WE8ISO8859P1编码检查,逐个字节内容进行,不会有数据丢情况发生,具体解释见第二节内容;

针对在不同的字符集下将密文表数据进行导出导入后会有数据丢失的情况,下面作详细描述。

 

二 ZHS160GBK与WE8ISO8859P1字符集说明

对于上面提到的两种字符集,ZHS16GBK是Windows系统安装Oracle时,默认的数据库字符集,WE8ISO8859P1是Linux系统的默认安装的数据库字符集。且两种字符集都支持中文,至于国家字符集的选择,这里我们都是选择AF16UTF16。数据库安装完成后,可以用 select userenv('language') from dual 语句进行查看。对于ZHS16GBK字符集,数据库按双字节进行处理,且当字节对应的十进制数从129到254时,Oracle会按双字节处理,从而查找下一个字节内容,两个字节组成一个整体进行处理;但对WE8ISO8859P1,数据库完全是按单字节进行处理,所以不会有什么字节检查。

 

三当数据库为ZHS16GBK的情况描述

1 数据库端配置

在Windows下我们使用默认的Oracle安装,当要DBCoffer正常工作时,需对listener.ora进行修改,其参考配置如下:

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = ljb)

      (ORACLE_HOME = E:\oracle\product\10.2.0\db_1)

    )

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = E:\oracle\product\10.2.0\db_1)

      (ENVS = EXTPROC_DLLS=ANY)

      (PROGRAM = extproc)

    )

  )

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = IPC)(KEY = extproc))

      (ADDRESS = (PROTOCOL = TCP)(HOST = Jiabo)(PORT = 1521))

    )

  )

表1

 

关于此种情况下的Oracle客户端环境变量的设置,可以在注册表查找到:

NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

 

2 加密解密情况描述

正常安装DBCoffer完成后,便可以正常加密解密数据

 

3 导出导入情况描述

   当加密一个表后,我们知道加密后的密文长度都是一个奇数值,当将密文表用exp命令导出数据库后,然后将原密文表重命名,而后将导出的数据导入数据库,此时会出现的情况是密文字段部分数据的最后一个字节内容丢失,当再次将此时导入的密文表再次导出去,并且与原导出的表的二进制文件进行比较时,明显数据对不上,且丢失的字节大小范围都在对应的十进制的129到254,那么这样一来,就可以确定是数据库字符集处理产生的问题,因为密文长度是一个奇数值,假如当密文的数据的最后一个字节内容为129到254时,会出现如前面所描述的情况发生,Oracle服务端会将最后一个字节作双字节处理,如果找不到下一

个字节,则将此字节丢失。

关于以上情况:我们可以用lengthb(密文字段)去查看,原密文表的密文长度都是一个固定的奇数值,而再次导入表密文表的密文字段有部分是比该奇数值小1的,所以针对密文表的查询会报-10004,加密数据不完整。

 

四当数据库为WE8ISO8859P1的情况描述

1 新建一个Oracle数据库实例iso8859

此步可以利用DBCA工具进行,当进行至第十步时,按下图所示设置数据库字符集。

图 1

 

 

2 修改Oracle的listener.ora和tnames.ora的配置

  关于listener.ora的配置参考如下:

# listener.ora Network Configuration File: E:\oracle\product\10.2.0\db_1\network\admin\listener.ora

# Generated by Oracle configuration tools.

 

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = ljb)

      (ORACLE_HOME = E:\oracle\product\10.2.0\db_1)

    )

    (SID_DESC =

      (SID_NAME = iso8859)

      (ORACLE_HOME = E:\oracle\product\10.2.0\db_1)

    )

    (SID_DESC =

      (SID_NAME = orcl)

      (ORACLE_HOME = E:\oracle\product\10.2.0\db_1)

    )

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = E:\oracle\product\10.2.0\db_1)

      (ENVS = "EXTPROC_DLLS=ANY,ODC_SECURE_SERVICE_API_CONFIG_FILE=C:\DBCoffer\DBCSecureServiceAPI\secureServiceAPI.conf,NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1")

      (PROGRAM = extproc)

    )

  )

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = IPC)(KEY = extproc))

      (ADDRESS = (PROTOCOL = TCP)(HOST = Jiabo)(PORT = 1521))

    )

  )

 

表2

 

其中请一定注意红色部分的内容,如果用Net Manager修改相关配置后,也请以此文件为参考,否则有可能我们的DBCoffer可能不能正常工作,而在tnames.ora的配置就相对较简单,添加如下内容即可:

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
解读CRISP-ML(Q):机器学习生命周期流程解读CRISP-ML(Q):机器学习生命周期流程Apr 08, 2023 pm 01:21 PM

译者 | 布加迪审校 | 孙淑娟目前,没有用于构建和管理机器学习(ML)应用程序的标准实践。机器学习项目组织得不好,缺乏可重复性,而且从长远来看容易彻底失败。因此,我们需要一套流程来帮助自己在整个机器学习生命周期中保持质量、可持续性、稳健性和成本管理。图1. 机器学习开发生命周期流程使用质量保证方法开发机器学习应用程序的跨行业标准流程(CRISP-ML(Q))是CRISP-DM的升级版,以确保机器学习产品的质量。CRISP-ML(Q)有六个单独的阶段:1. 业务和数据理解2. 数据准备3. 模型

人工智能的环境成本和承诺人工智能的环境成本和承诺Apr 08, 2023 pm 04:31 PM

人工智能(AI)在流行文化和政治分析中经常以两种极端的形式出现。它要么代表着人类智慧与科技实力相结合的未来主义乌托邦的关键,要么是迈向反乌托邦式机器崛起的第一步。学者、企业家、甚至活动家在应用人工智能应对气候变化时都采用了同样的二元思维。科技行业对人工智能在创建一个新的技术乌托邦中所扮演的角色的单一关注,掩盖了人工智能可能加剧环境退化的方式,通常是直接伤害边缘人群的方式。为了在应对气候变化的过程中充分利用人工智能技术,同时承认其大量消耗能源,引领人工智能潮流的科技公司需要探索人工智能对环境影响的

找不到中文语音预训练模型?中文版 Wav2vec 2.0和HuBERT来了找不到中文语音预训练模型?中文版 Wav2vec 2.0和HuBERT来了Apr 08, 2023 pm 06:21 PM

Wav2vec 2.0 [1],HuBERT [2] 和 WavLM [3] 等语音预训练模型,通过在多达上万小时的无标注语音数据(如 Libri-light )上的自监督学习,显著提升了自动语音识别(Automatic Speech Recognition, ASR),语音合成(Text-to-speech, TTS)和语音转换(Voice Conversation,VC)等语音下游任务的性能。然而这些模型都没有公开的中文版本,不便于应用在中文语音研究场景。 WenetSpeech [4] 是

条形统计图用什么呈现数据条形统计图用什么呈现数据Jan 20, 2021 pm 03:31 PM

条形统计图用“直条”呈现数据。条形统计图是用一个单位长度表示一定的数量,根据数量的多少画成长短不同的直条,然后把这些直条按一定的顺序排列起来;从条形统计图中很容易看出各种数量的多少。条形统计图分为:单式条形统计图和复式条形统计图,前者只表示1个项目的数据,后者可以同时表示多个项目的数据。

自动驾驶车道线检测分类的虚拟-真实域适应方法自动驾驶车道线检测分类的虚拟-真实域适应方法Apr 08, 2023 pm 02:31 PM

arXiv论文“Sim-to-Real Domain Adaptation for Lane Detection and Classification in Autonomous Driving“,2022年5月,加拿大滑铁卢大学的工作。虽然自主驾驶的监督检测和分类框架需要大型标注数据集,但光照真实模拟环境生成的合成数据推动的无监督域适应(UDA,Unsupervised Domain Adaptation)方法则是低成本、耗时更少的解决方案。本文提出对抗性鉴别和生成(adversarial d

数据通信中的信道传输速率单位是bps,它表示什么数据通信中的信道传输速率单位是bps,它表示什么Jan 18, 2021 pm 02:58 PM

数据通信中的信道传输速率单位是bps,它表示“位/秒”或“比特/秒”,即数据传输速率在数值上等于每秒钟传输构成数据代码的二进制比特数,也称“比特率”。比特率表示单位时间内传送比特的数目,用于衡量数字信息的传送速度;根据每帧图像存储时所占的比特数和传输比特率,可以计算数字图像信息传输的速度。

数据分析方法有哪几种数据分析方法有哪几种Dec 15, 2020 am 09:48 AM

数据分析方法有4种,分别是:1、趋势分析,趋势分析一般用于核心指标的长期跟踪;2、象限分析,可依据数据的不同,将各个比较主体划分到四个象限中;3、对比分析,分为横向对比和纵向对比;4、交叉分析,主要作用就是从多个维度细分数据。

聊一聊Python 实现数据的序列化操作聊一聊Python 实现数据的序列化操作Apr 12, 2023 am 09:31 AM

​在日常开发中,对数据进行序列化和反序列化是常见的数据操作,Python提供了两个模块方便开发者实现数据的序列化操作,即 json 模块和 pickle 模块。这两个模块主要区别如下:json 是一个文本序列化格式,而 pickle 是一个二进制序列化格式;json 是我们可以直观阅读的,而 pickle 不可以;json 是可互操作的,在 Python 系统之外广泛使用,而 pickle 则是 Python 专用的;默认情况下,json 只能表示 Python 内置类型的子集,不能表示自定义的

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경