Oracle数据库导入和导出以及出现的问题

时间:2021-11-11 21:42:15

数据导入导出

数据库导出

 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp
   exp system/manager@TEST file=d:\daochu.dmp full=y
 2 将数据库中system用户与sys用户的表导出
   exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
 3 将数据库中的表table1 table2导出
   exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2) 
 4 将数据库中的表table1中的字段filed1"00"打头的数据导出
   exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like  '00%'\"

数据库导入

D:\daochu.dmp 中的数据导入 TEST数据库中。
   imp system/manager@TEST  file=d:\daochu.dmp
   上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
   在后面加上 ignore=y 就可以了。
 2 d:\daochu.dmp中的表table1 导入
 imp system/manager@TEST  file=d:\daochu.dmp  tables=(table1)

数据导出:
exp hkb/hkb@boss_14 full=y file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbfull.log;

导出注意事项:导出的是当前用户的的数据,当前用户如果有DBA的权限,则导出所有数据!

同名用户之间的数据导入:
imp hkb/hkb@xe  file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbimp.log full=y

不同名之间的数据导入:
imp system/test@xe fromuser=hkb touser=hkb_new file=c:\orabackup\hkbfull.dmp 

log=c:\orabackup\hkbimp.log;

2.数据的导出问题

A.11gexp导出空表提示EXP-00011:  不存在

原因:11g默认创建一个表时不分配segment,只有在插入数据时才会产生(当然也可以强制分配),以节省磁盘空间。

对于已经存在的空表解决办法:

就是想办法让空表有segment

第一种:可以通过插入数据的方式(不想要这些数据可以回滚),只要有insert动作就会分配segment

第二种:就是强制分配:alter table tablename allocate extent;

为了后面创建的表能直接分配segment:修改参数deferred_segment_creation11g新增的)。该参数即指是否延迟创建segment,默认为true。如果想让表创建时就分配segment,那么久应该修改该参数为falsealter system set deferred_segment_creation=false;