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

1、情况解释

1.1、英文报错截图

 

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

 

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

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

NLS_LANG:SIMPLIFIED CHINESE_CHINA.ZHS16GBK

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

 

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

你可能感兴趣的:(oracle)