Singletask exp imp ? Still There ?

玉面飞龙在一则BLOG的评注中提起

imp exp sqlldr 有个叫做 singletask 模式 relink的方式据说可以增加执行速度。

上去是某种特定平台才有.据说会消耗更多内存.在IxORA 上有一则信息

To perform a single-task export, you must use the expst executable instead of just exp. You will probably need to create the executable first, as follows.

cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk singletask

If you are intending the single-task executables to be used by a user other than oracle, then you will need to set the setuid bits as follows.

chmod 4511 $ORACLE_HOME/bin/*st

我在 Linux 下和 HP-UX 下测试了一下,现在的版本似乎都不支持了.得到的错误信息如下:

$ cd $ORACLE_HOME/rdbms/lib
$ make -f ins_rdbms.mk singletask
- Linking Singletask Export utility (exp)
cc -Wl,+s -Wl,+n +DA2.0W +DS2.0 -o expst -L/oracle/product/9.2.0/rdbms/lib/ -L/oracle/product/9.2.0/lib/
/oracle/product/9.2.0/rdbms/lib/s0exudrv.o
/oracle/product/9.2.0/rdbms/lib/defopt.o -ldbtools9
`if [ -f /oracle/product/9.2.0/lib/osntabst.o ]; then \
echo '/oracle/product/9.2.0/lib/osntabst.o'; \
else \
echo '/oracle/product/9.2.0/network/lib/osntabst.o'; \
fi ` /oracle/product/9.2.0/rdbms/lib/ttcsoi.o
/oracle/product/9.2.0/rdbms/lib/ttcoerr.o
/oracle/product/9.2.0/rdbms/lib/kpufpd.o
/oracle/product/9.2.0/rdbms/lib/config.o
-lserver9  -lodm9 -lskgxp9  -lskgxn9  -lpls9 -lplp9 -lslax9 -lgeneric9  -lclient9 -lcommon9 -lwtc9 -lmm
-lknlopt -lpls9 -lserver9 -lpls9
/oracle/product/9.2.0/lib/nautab.o
/oracle/product/9.2.0/lib/naeet.o
/oracle/product/9.2.0/lib/naect.o
/oracle/product/9.2.0/lib/naedhs.o   `cat /oracle/product/9.2.0/lib/ldflags`
-lnsslb9 -lncrypt9 -lnsgr9 -lnzjs9 -ln9 -lnl9 -lnro9 -lclient9 -lpls9 -lplp9    -ljox9 -lserver9
`cat /oracle/product/9.2.0/lib/ldflags`
-lnsslb9 -lncrypt9 -lnsgr9 -lnzjs9 -ln9 -lnl9 -lnro9 -ltrace9 `if ar tv /oracle/product/9.2.0/rdbms/lib/libknlopt.a
| grep "kxmnsd.o" > /dev/null 2>&1 ;
then echo " " ;
else echo "-lordsdo9"; fi` -lcore9  -lvsn9 -lcommon9 -lgeneric9 -lknlopt  -lctxc9 -lctx9 -lzx9 -lgx9 -lordimt9
-lunls9 -lsnls9 -lnls9  -lcore9  -lxml9 -lunls9
-lnls9  -lwwg9 -locijdbc9 -lxsd9 -lnls9  -lcore9  -lxml9 -lunls9   `cat /oracle/product/9.2.0/lib/sysliblist`  -lm
ld: I/O error,
file "/oracle/product/9.2.0/rdbms/lib/kpufpd.o": No such file or directory
Fatal error.
*** Error exit code 1
Stop.
$

若要在用户和Oracle 8i之间传输大量的数据(如使用Export/Import),使用单任务结构是非常高效的,因为作为单任务链接Oracle可执行程序,允许某用户进程直接存取整个SGA。但运行单任务需要更多的内存。为了使用单任务导入、导出和SQLLoader(sqlldrst)可执行程序,我们可以调用make文件的ins_rdbms.mk(在$ORACLE_HOME/rdbms/lib目录中)。
下面是用于实现单任务导入、导出和SQLLoader(sqlldrst)的可执行程序:

% cd $ORACLE_HOME/rdbms/lib
% make -f ins_utilities.mk singletask 

Leave a Reply

Your email address will not be published. Required fields are marked *