当导出数据时,会遇到EXP-00068 错误。
About to export specified tables via Conventional Path ...
. . exporting table TESTLOB
EXP-00068: tablespace TEST_EXP is offline
EXP-00068: tablespace TEST_EXP is offline 1 rows exported
Export terminated successfully without warnings.
一般来说,EXP-68 的症状,原因和解决办法是:
Text : tablespace %s is offline
Cause : Export failed to export tablespace (tablespace being offline).
Action: Make tablespace online and re-export.
但是 也有时候甚至会遇到明明表空间online时,却报错误。
解决办法如下:
-----------------------------------------------------------------
1 连接数据库,执行如下查询,检查错误中出现的表空间和数据文件的状态:
SELECT d.tablespace_name,d.status,d.extent_management,f.file#,f.status
FROM dba_tablespaces d, v$datafile f, v$tablespace t
WHERE d.tablespace_name=t.name AND t.ts#=f.ts#(+);
2.a. 如果状态显示为 offline,则将表空间online
ALTER TABLESPACE tablespace_name ONLINE;
b. 如果表空间里的一个或多个数据文件offline,则将相应的数据文件online
ALTER DATABASE DATAFILE datafile# ONLINE;
c. 如果表空间里的一个或多个数据文件的状态为 recover,则将其恢复并online
RECOVER DATAFILE datafile#
ALTER DATABASE DATAFILE datafile# ONLINE;
SQL> host exp system/****** file=d:\exp.dmp full=y
d. 将报错的表空间和数据文件online后,再次执行导出操作。
3. 如果表空间和数据文件已经online 并且是表空间是本地管理的时候,可以忽略次错误!
实例:
-- Export log
About to export the entire database ...
. exporting tablespace definitions
EXP-00068: tablespace TS1 is offline
-- 查看 DBA_TABLESPACES 视图 TS1的状态
SQL> select TABLESPACE_NAME,STATUS
from dba_tablespaces where tablespace_name='TS1';
TABLESPACE_NAME STATUS
------------------------------ ---------
TS1 ONLINE
TS1 显示为online,此时需要做更深一步的研究。执行如下查询来查看表空间TS1下的所有数据文件的状态。
SQL> select a.file#, a.name, a.status
2 from v$datafile a, v$tablespace b
3 where a.ts#=b.ts#
4 and b.name='TS1';
FILE# NAME STATUS
---------- --------------------------- -------
6 D:\TS1-1.DBF ONLINE
7 D:\TS1-2.DBF RECOVER <== datafile requires recovery.
9 D:\TS1-3.DBF ONLINE
从这里可以看出 ts-2.dbf 需要恢复,这就是导致EXP-00068错误的原因。
解决办法
-- 恢复数据文件 7;
SQL> recover datafile 7;
Media recovery complete.
SQL> alter database datafile 7 online;
Database altered.
---再次检查
SQL> select a.file#, a.name, a.status
2 from v$datafile a, v$tablespace b
3 where a.ts#=b.ts#
4 and b.name='TS1';
FILE# NAME STATUS
---------- ------------------------ -------
6 D:\TS1-1.DBF ONLINE
7 D:\TS1-2.DBF ONLINE <== datafile is online now.
9 D:\TS1-3.DBF ONLINE
--再次执行导出就好!