Today, when I used exp/imp for a small backup and recovery operation, I encountered a problem. Many empty tables cannot be expressed. I didn't understand it at the beginning, later, I went to the Oracle official website and read ORACLE data. I sent oracle11g R2 with a new feature. When exp and IMP are used, no segment is allocated when the table has no data, to save space. This will prevent the empty table data from being expressed. I want to say something in shit.
Okay. solution:
Solution 1: set the system parameter to take effect only for the table created after the parameter is updated.
Alter system set deferred_segment_creation = false scope = both;
The default value of this parameter is true. When it is set to false, segment is assigned to both empty tables and non-empty tables. It should be noted that the value setting does not affect the empty tables previously imported and cannot be exported. It can only be used for the newly added tables. To export an empty table, you can only use the first method.
Then execute solution 2.
Solution 2: manually allocate space for empty tables
Select 'alter table' | table_name | 'allocate extent; 'from user_tables where num_rows = 0;