热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux导入Oracledump文件乱码等问题

本地PLSQL导出sql文件导入到Linux服务器上的Oracle数据库出现数据乱码检查数据库字符集参数“NLS_LANGUAGE”、“NLS_TERRITORY”、“NLS_C

本地PL/SQL导出sql文件导入到Linux服务器上的Oracle数据库出现数据乱码

检查数据库字符集参数“NLS_LANGUAGE”、 “NLS_TERRITORY”、 “NLS_CHARACTERSET'”的值。

select parameter,value from nls_database_parameters where parameter in('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET');

或者select userenv('language') from dual;查询字符集编码

可以发现本地数据库字符集和服务器字符集编码不同

修改数据库所在机器操作系统的字符集“NLS_LANG”变量。

Windows系统在cmd窗口输入:set NLS_LANG=AMERICAN_AMERICA.AL32UTF8

该命令只对当前窗口有效,Linux系统输入: export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

因为导出dump文件的字符编码只和NLS_LANG环境变量有关,所以我们也可以通过直接修改Windows机器的环境变量实现:

还有一种简单的方式是修改dump文件,dump用16进制打开,它的第2、3个字节就表示使用的字符集:

如图所示字符集的编号是0369,在数据库中可以查询到编号对应的字符集也可以查询字符集对应的编号,因为我们直接修改这两个字节就可以改变dump文件的字符集。。查询编号对应的字符集:

select nls_charset_name(to_number('0369','xxxx')) from dual;

查询字符集对应的编号:

select to_char(nls_charset_id('ZHS16GBK'), 'xxxx') from dual;

下面演示导出导入dump文件的步骤:

1、导出dump文件

本地是Windows系统安装的oracle,使用exp导出dump文件,先打开命名行界面,输入导出命令如下:

exp username/password@localhost/sid file=d:\dd.dump log=d:dd.log

2、将dump文件和log文件放到远程服务器上

3、切换到oracle用户执行导入dump文件的命令

su – oracle
imp customerchat/customerchat@localhost/NJORCL file=/database/app/oracle/oradata/ccorcl/dd.dump log=/database/app/oracle/oradata/ccorcl/dd.log

1)报错:

IMP-00030: failed to create file /database/app/oracle/oradata/ccorcl/dd.log for write
IMP-00000: Import terminated unsuccessfully

从错误信息可以知道是由于文件只读造成的,这是由于上传到服务使用的用户不是oracle用户,所以oracle对这个文件是只读的,需要切换到root用户将文件所属用户和组改为oracle:

chown –R 用户:用户组 文件或目录名

2)切换到oracle用户重新执行imp命令:

报错:

IMP-00058: ORACLE error 12541 encountered
ORA-12541: TNS:no listener
IMP-00000: Import terminated unsuccessfully

从错误可以看出是报找不到监听器的错误,可以通过lsnrctl status查看监听器是否启动,检查发现监听器正常启动,很奇怪为什么报错,仔细检查发现是导入命令漏写了端口号。。。加上端口好继续执行

imp customerchat/customerchat@localhost:10000/NJORCL file=/database/app/oracle/oradata/ccorcl/dd.dump log=/database/app/oracle/oradata/ccorcl/dd.log

3)继续执行报如下错误

Export file created by EXPORT:V11.02.00 via conventional path
IMP-00013: only a DBA can import a file exported by another DBA
IMP-00000: Import terminated unsuccessfully

从错误可以看出是要导入数据的用户没有dba权限,可以登录到sysdba用户将dba权限分配给该用户:

sqlplus / as sysdba
grant sysdba to username;
grant imp_full_database to username;

4)继续执行报如下错误

Export file created by EXPORT:V11.02.00 via conventional path
import done in US7ASCII character set and AL16UTF16 NCHAR character set
import server uses AL32UTF8 character set (possible charset conversion)
export client uses AL32UTF8 character set (possible charset conversion)
IMP-00031: Must specify FULL=Y or provide FROMUSER/TOUSER or TABLES arguments
IMP-00000: Import terminated unsuccessfully

从报错可以看出需要指定从哪个用户导入到哪个用户,可以指定,如果不知道可以直接使用full=y代替:

imp customerchat/customerchat@localhost:10000/NJORCL file=/database/app/oracle/oradata/ccorcl/dd.dump log=/database/app/oracle/oradata/ccorcl/dd.log fromuser=customerchat touser=customerchat

执行成功:

登录root用户将刚才分配的权限收回:

sqlplus / as sysdba
revoke sysdba from username;
revoke imp_full_database from username;

 


推荐阅读
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了一个误删Oracle数据文件导致数据库无法打开的问题,并提供了解决方式。解决方式包括切换到mount状态、离线删除报错的数据文件等。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
    随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
author-avatar
kobe24_3803
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有