oracle查看编码以及修改编码,[Err] ORA-01704: string literal too long,字符串文字太长,dmp文件导入导出,oracle导入导出

1、情况解释

1.1、英文报错截图

 

 

1.2、配置环境变量,然后可以看到中文的提示

TNS_ADMIN:oracle根目录\product\11.2.0\dbhome_1\NETWORK\ADMIN

NLS_LANG:SIMPLIFIED CHINESE_CHINA.ZHS16GBK

 

1.3、问题原因解释

  场景描述:

      通过navicat连接了oracle数据库,然后通过navicat导出了xx.sql的文件。但是更换了不同的服务器的oracle数据库之后,使用navicat导入的时候报错。报错如上图。

  导致问题原因:

     数据库的字符编码不同,oracle默认的是英文的编码。换成中文之后,字节数就不一样了。

 

2、解决过程

1、打开控制台,用sys账号连接上

C:\Users\Administrator>sqlplus sys/pass as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期一 7月 13 19:09:15 2020

Copyright (c) 1982, 2010, Oracle.  All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> 

 

2、关闭数据库

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

 

3、mount

SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area 1.3629E+10 bytes
Fixed Size                  2188688 bytes
Variable Size            7113542256 bytes
Database Buffers         6476005376 bytes
Redo Buffers               37343232 bytes
数据库装载完毕。

解释:  startup nomount:启动实例,读取参数文件,分配内存空间,启动后台进程,打开跟踪文件和报警文件。startup mount:装载数据库,打开控制文件。nomount方式下还没有读取控制文件,该选项用于在数据库的控制文件全部损坏,需要重新创建数据库控制文件或创建一个新的数据库时使用。mount 选项下并没有打开数据文件,该选项可以用来修改数据库的运行模式或进行数据库恢复。


4、设置session 

SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;

系统已更改。

SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

系统已更改。

SQL>  ALTER SYSTEM SET AQ_TM_PROCESSES=0;

系统已更改。

5、启动数据库 

SQL> alter database open;

数据库已更改。

 

6、修改字符集

会报错,提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:

SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;
ALTER DATABASE CHARACTER SET ZHS16GBK
*
第 1 行出现错误:
ORA-12712: 新字符集必须为旧字符集的超集

加了TERNAL_USE,就会使oracle绕过了子集与超集的验证,这条语句和上面的语句内部操作时完全相同的。
 

SQL> ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;

数据库已更改。

 

7、关闭,重新启动

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup;
ORACLE 例程已经启动。

Total System Global Area 1.3629E+10 bytes
Fixed Size                  2188688 bytes
Variable Size            7113542256 bytes
Database Buffers         6476005376 bytes
Redo Buffers               37343232 bytes
数据库装载完毕。
数据库已经打开。
SQL>

3、导入和导出命令

导入和导出命令,默认路径都是D:\app\Administrator\admin\orcl\dpdump。导出默认路径这个,如果改了就报错。导入命令默认路径也是这个,如果加路径就会报错。

impdp 账号/密码@127.0.0.1/orcl dumpfile= backupfile.dmp full=y

 

expdp 账号/密码@127.0.0.1/orcl dumpfile=backupfile.dmp logfile=logfile.log

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ORA-01861: literal does not match format string 是一个Oracle数据库的错误,通常发生在日期和字符串之间的格式不匹配时。 这个错误通常出现在以下情况下: - 当你尝试将一个字符串转换为日期类型时,但字符串的格式与指定的日期格式不匹配。 - 当你尝试将一个日期转换为字符串类型时,但指定的日期格式与实际日期的格式不匹配。 要解决这个问题,你可以采取以下步骤: 1. 确保你提供的字符串日期与指定的日期格式相匹配。例如,如果你使用 TO_DATE 函数将字符串转换为日期,请确保指定的日期格式与字符串的格式相匹配。 2. 检查你使用的日期格式是否正确。日期格式使用特定的符号和代码来表示年、月、日、时、分、秒等。确保使用正确的符号和代码,并按照正确的顺序组合它们。 3. 如果你在查询中使用了类似 TO_DATE 或 TO_CHAR 的函数,请确保提供的日期和格式参数是正确的。 下面是一个示例,演示了如何使用 TO_DATE 函数将字符串转换为日期类型: ```sql SELECT * FROM table1 WHERE date_column = TO_DATE('2022-01-01', 'YYYY-MM-DD'); ``` 上述示例中,将字符串 '2022-01-01' 转换为日期类型,并与表中的 date_column 进行比较。确保提供的字符串和日期格式相匹配。 通过仔细检查日期格式和提供的值,你应该能够解决 ORA-01861 错误。如果问题仍然存在,请确保检查其他可能导致错误的因素,例如数据库配置或其他查询语句中的日期转换操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值