以下命令都是在命令窗口使用,无需进入sqlplus。建议所有操作都导出日志文件,便于查找问题
1、数据库导出
1.1、全库导出
exp 用户名/密码@数据库实例 file=导出文件存储地址 full
示例:
exp station_nd/station_nd@172.26.92.22:1521/orcl file=D:\dmp\station.dmp
1.2、导出数据库中的某表
exp 用户名/密码@数据库实例 file=导出文件存储地址 tables=(要导出的表名)
示例:
exp station_nd/station_nd@172.26.92.22:1521/orcl file=D:\dmp\ticket.dmp tables=(T_TICKET,T_TICKET_PRO)
2、数据库导入
2.1、全库导入
imp 用户名/密码@数据库实例 full=y file=要导入的文件路径 ignore=y;
imp station_nd/station_nd@172.26.92.22:1521/orcl full=y file=D:\dmp\station.dmp ignore=y
2.2、部分表格导入
imp 用户名/密码 @数据实例 full=y file=要导入的文件路径 tables=(表名1,表名2)
示例:
imp station_nd/station_nd@172.26.92.22:1521/orcl full=y file=D:\dmp\station.dmp tables=(T_TICKET,T_TICKET_PRO)
3、常用参数说明
file 创表语句存储路径,如上述 d盘下dba的目录,必须在运行命令前创建,否则会报错。
log=d:\dba\test.log 运行日志存储路径,同上
rows=n 表示只复制表结构,不复制数据,默认为Y。
tables 要同步哪些表,不加则默认该库全部
ignore=y 忽略创建错误提示
full=y 导出整个文件,默认为N
4、常见异常
4.1、ORA-00959(表空间不存在)
如果导入表中含有分区字段,导入时就可能会出现ORA-00959错误,并由此引发IMP-00017和IMP-00003错误,是表导入失败,这个是因为导入时表会创建到导入用户的默认表空间中,但是分区字段的存储参数是另外指定的,并不会自动创建到默认表空间中去,所以会报错表空间不存在。
解决方法一: 导入钱先创建好表空间
CREATE SMALLFILE TABLESPACE xxx(表空间名) DATAFILE '路径\文件名(建议和表空间名相同).dbf' SIZE 10M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE 32767M LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
解决方法二: 指定用户该表空间不受限
alter user 用户名 quota unlimited on 表空间名;
4.2、ORA-14400(插入分局关键字未映射到任何分区)
库表导入成功后,无法插入新数据,插入新数据时报错ORA-14400,这是因为表格设置了根据时间进行分区,如果插入时间不在任何一个分区对应的时间段中就会报这种错误;
解决方法: 更新分区时间
ALTER TABLE 表名 ADD PARTITION partitionname VALUES LESS THAN (MAXVALUE);