expdp $DBNAME directory=ar_exp content=data_only dumpfile=${tablename}.dmp logfile=${tablename}.log tables=$tablename query=$SCHNAME.$tablename:'"where substr('$fieldname',1,5) in('$cpidlst')"'
这里这个操作需要临时表空间,但是需要多少临时表空间如何计算呢?
expdp $DBNAME directory=ar_exp content=data_only dumpfile=${tablename}.dmp logfile=${tablename}.log tables=$tablename query=$SCHNAME.$tablename:'"where substr('$fieldname',1,5) in('$cpidlst')"'
这里这个操作需要临时表空间,但是需要多少临时表空间如何计算呢?
除了估计答案的链接之外,这里还有一个脚本,我们可以用它来找出正在使用的温度。您必须找到 expdp 会话的 SID,然后将其加入 WHERE 子句。
select
s.sid,
s.serial#,
p.spid "OS SID",
s.sql_hash_value "HASH VALUE",
s.username "ORA USER",
s.status,
s.osuser "OS USER",
s.machine,
s.terminal,
s.type,
s.program,
s.logon_time,
s.last_call_et,
su.contents,
ROUND(((su.blocks*param.value)/1024/1024),2) "MB",
tablespace,
s.sql_id
FROM
v$session s, v$sort_usage su, v$process p, v$parameter param
WHERE
param.name = 'db_block_size' and
su.session_addr = s.saddr and
p.addr = s.paddr
ORDER BY
su.blocks DESC;
找到会话的 SID 后:
- 将其加入 V$SQL_TEXT 并获取 SQL_TEXT
- 了解如何创建 PLAN_TABLE
- 运行“explain plan into plan_table for”您在步骤 1 中找到的 SQL_TEXT
- 从 PLAN_TABLE 中选择 TEMP_SPACE;
这应该给你一个估计;但是我从来没有发现这个估计是准确的。最好的方法是观看会话运行,然后在必要时重复使用上面的脚本。