某天有这个需求,在网上找了很久,踩坑付出了惨痛的代价,最终成功,总结如下:
一、DMP文件导入Oracle
1、创建新的表空间(空间自己设置,一旦设置就会占用磁盘,不建议一开始设置很大,后面可以扩容)。DAT是以前的后缀,现在一般是DBF。都可以的。
CREATE TEMPORARY TABLESPACE TEMP2 TEMPFILE 'F:\orcdat\temp_2.dat' SIZE 10G SEGMENT SPACE MANAGEMENT MANUAL; -- 临时表空间 几乎不需要新建
CREATE TABLESPACE test_space DATAFILE 'E:\Oraclefile\test_space.dbf' SIZE 20G AUTOEXTEND ON; --正常表空间 可以resize到最多32G
CREATE BIGFILE TABLESPACE test_space DATAFILE 'E:\softwore\oracle_19c_app\oradata\ORCL\test_space.dbf' SIZE 120G AUTOEXTEND ON; --大型表空间 推荐 随时可以更改大小,可以改到很大很大
2、创建目录文件(DMP文件路径是电脑本地绝对路径),一般有目录的话不用新建,没必要留很多目录。
create directory 目录名 as 'DMP文件所在路径';
-- 查看现在有的目录
select * from all_directories;
3、创建用户(有时候会遇到权限不足的问题,用session可以解决)
ALTER SESSION SET "_ORACLE_SCRIPT"=true;
CREATE USER 用户名 IDENTIFIED BY Oracle密码;
4、给目录文件授权
grant read,write on directory 目录名 to 用户名;
5、给用户授权
GRANT DATAPUMP_IMP_FULL_DATABASE TO 用户名;
GRANT GRANT ANY PRIVILEGE TO 用户名;
GRANT CREATE SESSION TO 用户名;
GRANT UNLIMITED TABLESPACE TO 用户名;
6、在powershell或cmd中执行导入命令,exe根据你自己的路径来
D:\database\oracle_data\bin\impdp.exe system/Oracle密码 DIRECTORY=目录名 DUMPFILE=DMP文件名.DMP REMAP_TABLESPACE=NB_TBS_YOBET:表空间名 remap_schema=RACTTFC:用户名 FULL=y;
以上步骤导入后,会生成一个DAT或DBF文件,存储在默认路径下。DAT文件也是表空间文件的一种,如果DAT文件太大,很占内存。如果想要移动DAT文件,可以参考以下:
二、DAT文件迁移
1、查看表空间、对应路径和状态(该代码可多次执行,确保操作正确)
select tablespace_name,file_name,online_status from dba_data_files;
2、使表空间下线
alter tablespace 表空间名 OFFLINE;
3、查看表空间、对应路径和状态,确保已经下线&路径正确
select tablespace_name,file_name,online_status from dba_data_files;
4、手动复制dat文件到新的路径(必须是复制,不能剪切,要保证源文件还在)
5、重命名表空间路径,使表空间对应路径更改
ALTER TABLESPACE 表空间名 RENAME DATAFILE '旧的表空间DAT文件路径.DAT' TO '新的表空间DAT文件路径.DAT';
6、查看表空间及路径和状态 确保路径更改成功
select tablespace_name,file_name,online_status from dba_data_files;
7、手动删除旧的表空间DAT文件
8、使表空间上线(恢复使用)
alter tablespace BAOFENGX01 ONLINE;