I have heard that using direct=y in an export the import would be much faster, my question is there any situation where we cannot use direct=y? If direct is recommendable why by default is N? Can we always use direct=y?
Also can anyone clarify the meaning of buffer and arraysize in import, how are they measured, in number of rows, bytes or blocks?
Using direct=y makes export work faster, the conventional way of evaluating the buffer before it is written to the export file is skipped in this case, hence it is faster.
There are certain cases in which you can't use direct=y, some of them are
you cannot use them in interactive export mode,
in version prior to 8.1.5 tables with objects and LOBs cannot be used with direct option.
The size of the buffer is calculated in bytes, this tells oracle the size of the buffer it should use to fetch records at a time, so if you want to fetch 100 rows with a arraysize of 56 your buffersize = arraysize*no. of rows.
See the chapter 8 of oracle8i utilities documentation. There is description on when you can/cannot use direct load/ conventional path load which gives fair idea of what to use/not use depending on the situation, time you have for load and #of records you want to load etc.,. If you don't have documentation there is link for 817 documentation posted on 12/22/00 under the subject "8.1.7 doc" which takes you to technet documentation library. you need to have technet membership to access the documentation.
[Edited by sreddy on 12-27-2000 at 12:27 PM]
The direct=y, means it will disable the constraints on the table. you have to use this option only, if you were make sure your data has got no duplicate records.
I have found that direct=Y is only faster for large tables. If you are exporting/importing small tables (or mostly small tables) then you are better off with direct=N