使用exp/imp迁移oracle数据库

参考博客:https://blog.csdn.net/qq877507054/article/details/52818609?locationNum=8&fps=1

exp/imp使用详解

1.根据用户导出导入

导出:

    只导出某个用户的数据:

exp test/test@ORCL owner=coop
	file=/data/oradata/data_dbbak/data_coop/exp_data_2018.2.23.dmp 
	log=/data/oradata/data_dbbak/data_coop/dbbak_coop_2018.2.23.16.25.txt
	buffer=1024000

buffer是指数据行的缓冲区大小,默认值根据系统而定,通常应设置为高值,exp的buffer最好>64000,

imp的buffer最好>100000,1024000是一个比较好的值,这也是别人的经验。

其中的test/test是数据库的登陆用户名和密码,导出用户coop的数据。

ORCL为本地配置的连接文件的name名称

将文件发送到待导入数据的服务器上(scp)

    在其他oracle数据库导入上面导出的数据,导入前先建好表空间、用户、根据数据集大小创建合适的数据文件

imp coop/coop  file= /data/data_dbbak/data_coop/exp_data_2018.2.23.dmp ignore=y 
log=/data/oradata/data_dbbak/data_coop/imp_data_GZ86_2018.2.23.17.13.txt fromuser=cooper touser=cooper

导入时:coop/coop为数据库的用户名和密码,fromuser为导出时数据的归属用户,touser指定导入到某用户的表空间中

数据文件为导出的数据文件

同时导出多个用户的数据:

exp coop/coop@ORCL
    owner="(coop,test1,test2)" 
    file=/data/oradata/backup/data_dbbak/exp_data_2.18.2.26dmp 
    log=/data/oradata/backup/data_dbbak/exp_data__2.18.2.26.txt

注意()要加上"",否则会报错

导入:

imp coop/coop
file= /data/oradata/backup/data_dbbak/exp_data_2.18.2.26dmp  
ignore=y log=/data/oradata/backup/data_dbbak/imp_data_2.18.2.26.txt 
fromuser="(coop,test1,test2)" touser="(coop,test1,test2)"

查看表空间使用率:

SELECT a.tablespace_name "表空间名", total "表空间大小", free "表空间剩余大小",
 (total - free) "表空间使用大小", total / (1024 * 1024 * 1024) "表空间大小(G)",
  free / (1024 * 1024 * 1024) "表空间剩余大小(G)",
 (total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)",
   round((total - free) / total, 4) * 100 "使用率 %" FROM (SELECT tablespace_name, 
 SUM(bytes) free FROM dba_free_space GROUP BY tablespace_name) a, 
 (SELECT tablespace_name, SUM(bytes) total FROM dba_data_files GROUP BY tablespace_name)
   b WHERE a.tablespace_name = b.tablespace_name;

表空间不足会导致导入失败,导入前根据备份集文件大小规划表空间,创建数据文件

创建表空间:

create tablespace dataspace 
datefile '/data/oradata/data/tablespace_dataspace/orcl_tablespace.dbf' 
size 20G
AUTOEXTEND ON next 50m  EXTENT MANAGEMENT LOCAL;  

为表空间增加数据文件:

ALTER TABLESPACE dataspace ADD DATAFILE 
	'/data/oradata/data/tablespace_dataspace/dataspace_6.dbf' SIZE 30G AUTOEXTEND ON NEXT 50M;

有DBA权限的用户查看数据文件位置:

SELECT FILE_NAME, TABLESPACE_NAME, AUTOEXTENSIBLE FROM DBA_DATA_FILES;

创建用户并指定表空间:

 CREATE USER coop IDENTIFIED BY gzuncoop DEFAULT TABLESPACE dataspace ;

给用户授权:

grant connect,resource,dba to coop; 

删除用户及用户数据:

drop user gzunicom cascade;
重复导入同一备份集(数据可能有差异,类似备份集)前需要删除所有数据,否则导入后会出现重复数据。

猜你喜欢

转载自blog.csdn.net/matengbing/article/details/80489550