oracle 如何导出指定表空间的数据?

如题所述

1.确定表空间是否为自包含表空间。
SQL>execute dbms_tts.transport_set_check(ts_list=>表空间名,incl_constraints=>TRUE);
说明:
参数ts_list用于指定要搬移的表空间,incl_constraints用于指定是否检查完整性约束。

执行完过程dbms_tts.transport_set_check之后,系统将违反自包含表空间的信息存入临时表transport_set_violations。查询该表时,如果没有返回任何信息,说明表空间是自包含的,否则会返回非自含表空间的原因,也就是要导出的表空间名还必需要包括的其它表空间名。

2.导出表空间信息
2.1首先设置表空间为只读。第一步查出有多少表空间就需要做多少个。(假设2个apps_ts_tx_data和apps_ts_tx_idx)
SQL>alter tablespace apps_ts_tx_data read only;
SQL>alter tablespace apps_ts_tx_idx read only;
2.2 导出数据
SQL>EXP transport_tablespace=y tablespaces=apps_ts_tx_data,apps_ts_tx_idx read file=expdat.dmp

注意:导入完后需要执行以下命令将表空间设置为读写。
SQL>alter tablespace app_data read write;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-02
楼上正解。
EXP
FILE="D:\aa.DMP"
LOG="D:\exp_aa.log"
TRANSPORT_TABLESPACE=Y
TABLESPACES=('DATA' )
第2个回答  2011-04-02
什么版本的oracle数据库?只有10g以后的才可以追问

是10g的,我在一个user里建的一个表属于tablespace1,其他的属于tablespace2,我想只到user中属于tablespace2的数据

追答

你tablespace1里的表和tablespace2表里的数据有依赖关系没?就是说有没有主外建关系还有tablespace2里的表的索引在什么表空间?只有没有依赖性且表的索引和数据都在一个表空间里才可以导

追问

没有依赖关系,没有索引

追答

C:\Documents and Settings\Administrator>expdp lztx_lzntp/manager@test dumpfile=d:\test.dmp DIRECTORY=E:\work\script\dir tablespaces=lzntp_data_system

本回答被提问者采纳
相似回答