Oracle数据库dmp相关操作——数据库导出与迁移

以下命令都是在命令窗口使用,无需进入sqlplus。建议所有操作都导出日志文件,便于查找问题

1、数据库导出

1.1、全库导出

exp 用户名/密码@数据库实例 file=导出文件存储地址 full
示例:

exp station_nd/[email protected]:1521/orcl file=D:\dmp\station.dmp

1.2、导出数据库中的某表

exp 用户名/密码@数据库实例 file=导出文件存储地址 tables=(要导出的表名)
示例:

exp station_nd/[email protected]: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/[email protected]:1521/orcl full=y file=D:\dmp\station.dmp ignore=y

2.2、部分表格导入

imp 用户名/密码 @数据实例 full=y file=要导入的文件路径 tables=(表名1,表名2)
示例:

 imp station_nd/[email protected]: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);

你可能感兴趣的:(善其事利其器,数据库,oracle)