先转一篇

================================我是分割线================================

时间:2013-06-22 13:48来源:未知 作者:admin 点击:次
$ exp username/password file=expdat.dmp tables=tablename 这是一条经历了磨难的语句,然而最终也还是修成正果 最开始报错: EXP-00008: ORACLE error 904 encountered ORA-00904: DBMS_JAVA.LONGNAME: invalid identifier Export terminated successfully
$ exp username/password file=expdat.dmp tables=tablename

这是一条经历了磨难的语句,然而最终也还是修成正果 :)

最开始报错:

EXP-00008: ORACLE error 904 encountered
ORA-00904: “DBMS_JAVA”.”LONGNAME”: invalid identifier
Export terminated successfully with warnings.

重新运行了$ORACLE_HOME/rdbms/admin/catexp.sql,无效,错误依旧。

*具体运行方法

[oracle@10 ~]$ sqlplus / as sysdba

连上db之后在里面通过执行sql邮件来使之生效

SQL>@/home/oracle/app/oracle/product/11.2.0/dbhome_1/rdbms/admin/catexp.sql

(下同,略)

然后运行$ORACLE_HOME/javavm/install/initdbj.sql,重新创建dbms_java包,这个错误消失了。

我这边遇到的情况验证到这一步就解决了。

再次运行exp,报错:

Export done in US7ASCII character set and UTF8 NCHAR character set
server uses UTF8 character set (possible charset conversion)

EXP-00008: ORACLE error 6552 encountered
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-553: character set name is not recognized
Export terminated successfully with warnings.

检查系统环境,发现在props$中字符集是UTF8,但是操作系统环境变量没有设置NLS_LANG,于是:
NLS_LANG=AMERICAN_AMERICA.UTF8;export NLS_LANG

再次运行exp,仍然报错:

Export done in UTF8 character set and UTF8 NCHAR character set

EXP-00008: ORACLE error 6552 encountered
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-553: character set name is not recognized
Export terminated successfully with warnings.

于是询问客户是否有做过字符集的修改,果然,在很久很久以前,他们手动update props$表修改了字符集(手动修改props$是oracle7的招数,在oracle8和oracle9中虽然也能修改,但是会留下修改不干净的隐患)

首先,确认字符集是否修改的不彻底。

SELECT DISTINCT (NLS_CHARSET_NAME(CHARSETID)) CHARACTERSET,
DECODE(TYPE#,
1,
DECODE(CHARSETFORM,
1,
'VARCHAR2',
2,
'NVARCHAR2',
'UNKOWN'),
9,
DECODE(CHARSETFORM,
1,
'VARCHAR',
2,
'NCHAR VARYING',
'UNKOWN'),
96,
DECODE(CHARSETFORM, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),
112,
DECODE(CHARSETFORM, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN
FROM SYS.COL$
WHERE CHARSETFORM IN (1, 2)
AND TYPE# IN (1, 9, 96, 112);

CHARACTERSET TYPES_USED_IN
-------------------- -------------
AL16UTF16 NCHAR
AL16UTF16 NCLOB
AL16UTF16 NVARCHAR2
UTF8 CHAR
UTF8 VARCHAR2
WE8ISO8859P1 CHAR
WE8ISO8859P1 CLOB
WE8ISO8859P1 VARCHAR2

8 rows selected.
确实在数据库的列属性中仍然存在着多个字符集的设定,这是导致exp失败的原因。下面解决这个问题。

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;

COL VALUE NEW_VALUE CHARSET
SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
COL VALUE NEW_VALUE NCHARSET
SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';

--INTERNAL_USE是没有写在文档中的参数,用以强制完成字符集一致化
ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;

SHUTDOWN IMMEDIATE;
STARTUP;
-- 再次启动数据库一遍
SHUTDOWN IMMEDIATE;
STARTUP;
按照上面的步骤,一步一步来,一步不要少,完成以后,重新检索col$表。

CHARACTERSET TYPES_USED_IN
-------------------- -------------
UTF8 CHAR
UTF8 CLOB
UTF8 NCHAR
UTF8 NCLOB
UTF8 NVARCHAR2
UTF8 VARCHAR2
干净了,再次运行exp,大功告成。

Export terminated successfully without warnings.

(责任编辑:admin)

================================我是分割线================================

然后有个问题不晓得是不是不正常,我这边在命令行里面直接写

exp usernam/pwd@dbname file=file.dmp

或exp usernam/pwd@dbname

的时候会出错。

Export: Release 11.2.0.1.0 - Production on Fri Sep 26 11:05:43 2014

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

EXP-00056: ORACLE error 12154 encountered
ORA-12154: TNS:could not resolve the connect identifier specified
EXP-00000: Export terminated unsuccessfully

于是我尝试写了exp,就可以正常进行了。然后出现的一系列内容的填写。

[oracle@10 ~]$ exp

Export: Release 11.2.0.1.0 - Production on Fri Sep 26 11:16:30 2014

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

Username: opr001
Password:

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Enter array fetch buffer size: 4096 >【回车】------选择默认的情况下,直接回车就行了,下同

Export file: expdat.dmp > test0926.dmp

(1)E(ntire database), (2)U(sers), or (3)T(ables): (2)U > 2  *这里我随便选了2,自己按需选择顺序或者写缩写(E,U,T)

Export grants (yes/no): yes >【回车】------默认是yes

Export table data (yes/no): yes >【回车】------默认是yes

Compress extents (yes/no): yes >【回车】------默认是yes

Export done in US7ASCII character set and AL16UTF16 NCHAR character set
server uses JA16SJIS character set (possible charset conversion)

About to export specified users ...
User to be exported: (RETURN to quit) > .. *这里一般默认写上两个点【..】

Export terminated successfully without warnings.

完了导出成功,在oracle_home下找到刚才的dmp文件。

*oracle_home为自定义环境变量或者叫安装目录吧,同windows系统下面的概念。

我这边的oracle_home为:/home/oracle/app/oracle/product/11.2.0/

Oracle数据库Linux下的导出EXP的更多相关文章

  1. Oracle数据库Linux下的导入IMP

    和相关篇的EXP相对应的用了如下的导入方法. [oracle@localhost ~]$ imp Import: Release 11.2.0.1.0 - Production on Fri Sep ...

  2. 大并发连接的oracle在Linux下内存不足的问题的分析

    大并发连接的oracle在Linux下内存不足的问题的分析 2010-01-28 20:06:21 分类: Oracle 最近一台装有Rhel5.3的40G内存的机器上有一个oracle数据库,数据库 ...

  3. Oracle数据库的导入和导出

    Oracle数据库的导入和导出,是一项重要的的技术活,不但解决了数据库的导入导出,更方便快捷的获得数据. 使用imp和exp导入导出数据 使用exp导出数据 存放目录为\ORACLE_HOME\BIN ...

  4. 关于Linux下使用expdp和impdp命令对Oracle数据库进行导入和导出操作

    说明:本次导入和导出采用expdp和impdp命令进行操作,这2个命令均需要在服务器端进行操作 http://www.cnblogs.com/huacw/p/3888807.html 一.    从O ...

  5. linux下导入导出oracle的dmp文件

    1.导出dmp件 命令:exp QGTG/\"QGTG@orcl\" file=/usr/fuck.dmp exp QGTG/\"QGTG@orcl\" fil ...

  6. Linux下 导入导出数据库

    1.怎么找到mysql下的bin? 1.1首先我在网上百度了一些Linux下如何导入导出数据.基本都是用mysqldump命令,但是如果没有到指定目录 下,执行这个命令是没有用的.一开始我还以为要在m ...

  7. 异构环境oracle数据库迁移dmp文件之exp和imp以及expdp和impdp

    exp/imp可在以下情况下使用 两个数据库之间传送数据 1.同一个oracle数据库的版本之间 2.不同oracle数据库的版本之间 3.相同或不相同的操作系统之间的oracle数据库 用于数据库的 ...

  8. oracle数据库表的导入导出cmd命令大全

    在实际的项目开发中经常会遇到导入导出oracle数据库中的表,以下是常用的一些cmd命令: 一.数据表的导出 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daoch ...

  9. ORACLE数据库的导入及导出

    今天在客户这里导入oracle数据库,第一次导入oracle数据库,在这里记录一下,以后备用. 一.使用PLSQL导出导入ORACLE数据库: 1.打开plsql-->工具---->导出用 ...

随机推荐

  1. 8种主要排序算法的C#实现

    作者:胖鸟低飞 出处:http://www.cnblogs.com/fatbird/ 简介 排序算法是我们编程中遇到的最多的算法.目前主流的算法有8种. 平均时间复杂度从高到低依次是: 冒泡排序(o( ...

  2. Section 1.4 Arithmetic Progressions

    寒假的第一天,终于有空再写题目了,专心备战了.本想拿usaco上的题目练手热身,结果被磕住了T T.其实这是一道穷举题,一开始我在穷举a,b,但是怎么优化就是过不了Test 8,后来参照NOCOW上的 ...

  3. Hibernate对象映射类型

    Hibernate understands both the Java and JDBC representations of application data. The ability to rea ...

  4. obj.offsetHeight与obj.style.height区别

    我们都知道obj.offsetHeight与obj.style.height都可以获取obj的高度,但是在js使用中,我们通常会使用前者来获取高度,这是为什么,二者有什么样的区别呢. 1.obj.of ...

  5. 计算文字的高度和宽度--以微博会话界面中用户名(userName)为例

    所用方法 // NOTE: All of the following methods will default to drawing on a baseline, limiting drawing t ...

  6. 获取手机联系人项目 PPGetAddressBook

    PPGetAddressBook PPGetAddressBook对AddressBook框架(iOS9之前)和Contacts框架(iOS9之后)做了对应的封装处理; 支持获取按联系人姓名首字拼音A ...

  7. iOS多线程之GCD学习笔记

    什么是GCD 1.全称是Grand Central Dispatch,可译为“牛逼的中枢调度器” 2.纯C语言,提供了非常多强大的函数 GCD的优势 GCD是苹果公司为多核的并行运算提出的解决方案 G ...

  8. EditTest输入类型设置

    1,当输入为文字性密码时,输入前有提示效果,输入后有遮蔽效果 android:hint="@string/hint_etPassword" android:inputType=&q ...

  9. Configuration for Python to run on Android

    It's exiting to learn to make app on Android with python. But when I check <Head First Python> ...

  10. Unity3D ShaderLab 车辆喷漆光照模型实战

    这一篇,我们来创建一个车辆喷漆的光照模型.首先就是准备场景,新建Shader & Material. 过程比较简单,直接看完成的代码吧: Shader "91YGame/CarOut ...