一、导出
1.导出所有的表
exp username/password@Oracle数据库安装ip地址:端口/SID file=路径及文件名
eg:
--导出全部表结构和数据
exp root/root@10.5.34.233:1521/test file=‘D:\daochu.dmp’
2.导出指定的表
exp username/password@Oracle数据库安装ip地址:端口/SID file=路径及文件名 tables=(表名1,表名2,...)
eg:
--导出指定的表table1,table2
exp root/root@10.5.34.233:1521/test file=‘D:\daochu.dmp’ tables=(table1,table2)
3.导出表空间中以XX开头的表
exp username/password@Oracle数据库安装ip地址:端口/SID file=路径及文件名 tables=(XX%)
eg:
--导出表空间中以AB开头的所有表结构和数据
exp root/root@10.5.34.233:1521/test file=‘D:\daochu.dmp’ tables=(AB%)
4.仅导出表结构,不导出数据
exp username/password@Oracle数据库安装ip地址:端口/SID file=路径及文件名 rows = n
5.注意
因为oracle为了节约空间,对于空表不分配segment,所以对于空表使用exp命令导不出来,有以下几种解决办法:
- 使用以下语句设置空表可以导出,设置后需要重启数据库。
alter system set deferred_segment_creation = false
- 对需要导出的空表插入一条数据再删除,此刻该表就产生了segment,再导出时就可以成功了。
- 执行以下语句,也可以导出。
alter table 空表名 allocate extent;
二、导入
已经存在导出的.dmp文件,则可以使用以下语句将其导入到你需要导入的目标数据库中。
imp usernamr/password@目标数据库ip地址:端口/SID file=文件路径及名称
eg:
--将daochu.dmp导入到目标库中
imp root/root@10.5.88.345:1521/test file='D:\daochu.dmp'
如果有的表已经存在,不对该表进行导入,可以在上述语句后面添加上ignore=y就ok了