Oralce的DMP导入

本文详细介绍了如何在Oracle数据库中删除并重建表空间和用户,以确保顺利导入DMP文件。首先,通过SQL命令删除原有表空间和用户,然后创建新的表空间和用户,并赋予全面的权限。接着,清理闪回恢复区的归档日志,调整其大小,最后执行导入数据的步骤。在遇到导入问题时,提供了相应的解决方案,如检查归档日志、调整闪回恢复区大小等。
摘要由CSDN通过智能技术生成

以下是使用imp导入DMP文件数据

很多人会通过连接Oracle的5500端口删除表空间,这样子的删除好像删除不干净,会导入失败(至少我操作是这样子的, 如果可以的话欢迎在评论区留言)

1.首先删除之前的表空间及用户

drop tablespace 表空间 including contents and datafiles cascade constraint;
drop user 用户名称 cascade;

创建新的表空间和用户

CREATE SMALLFILE TABLESPACE "表空间名称"
 DATAFILE
 '表空间名称1' SIZE 10G AUTOEXTEND ON NEXT 500M,
 '表空间名称2' SIZE 10G AUTOEXTEND ON NEXT 500M
 LOGGING
 DEFAULT NOCOMPRESS
 ONLINE
 EXTENT MANAGEMENT LOCAL AUTOALLOCATE
 SEGMENT SPACE MANAGEMENT AUTO;

创建用户

 
create user "用户名称" identified by 用户密码 profile "DEFAULT" account unlock default tablespace  "用户名称" temporary tablespace "指定默认的表空间";

赋予权限


grant DROP ANY TABLE to "表空间";
grant UPDATE ANY TABLE to "表空间";
grant "CONNECT" to "表空间";
grant "DBA" to "表空间";
grant SELECT ANY TABLE to "表空间";
grant DROP ANY TRIGGER to "表空间";
grant CREATE ANY TABLE to "表空间";
grant ALTER TABLESPACE to "表空间";
grant ALTER ANY PROCEDURE to "表空间";
grant CREATE ANY INDEXTYPE to "表空间";
grant CREATE ANY VIEW to "表空间";
grant DROP ANY INDEX to "表空间";
grant DROP ANY PROCEDURE to "表空间";
grant DROP ANY VIEW to "表空间";
grant CREATE ANY TRIGGER to "表空间";
grant CREATE ANY PROCEDURE to "表空间";
grant ALTER ANY TRIGGER to "表空间";
grant INSERT ANY TABLE to "表空间";
grant CREATE TABLESPACE to "表空间";
grant UNLIMITED TABLESPACE to "表空间";
grant ALTER ANY INDEX to "表空间";
grant CREATE TRIGGER to "表空间";
grant CREATE PROCEDURE to "表空间";
grant READ ANY TABLE to "表空间";
grant CREATE ANY INDEX to "表空间";
grant CREATE TABLE to "表空间";
grant CREATE VIEW to "表空间";
grant DELETE ANY TABLE to "表空间";
grant "RESOURCE" to "表空间";
grant EXECUTE ANY PROCEDURE to "表空间";

2.删除闪回恢复区里的归档日志

1)、进入cmd,用rman命令登陆用户 rman target 账号/密码@orcl;2)、crosscheck archivelog all;
 	--此命令的含义是检查所有归档日志的状态,并把遗失的标记为expired,也就是说,expired 表示已经被操作系统中被删除的归档日志。
(3)、delete expired archivelog all;
	--此命令的含义是删除expired的归档日志。
	delete archivelog all; 
	--将会毫无保留的删除所有的归档日志(在控制文件中有相应记录的)

3.手动删除归档日志
oracle存放归档日志路径
fast_recovery_area\ORCL\ARCHIVELOG

4.设置闪回恢复区里的归档日志为最大
查看闪回恢复区设置:

show parameter db_recovery_file_dest_size

修改闪回恢复区大小:

alter system set db_recovery_file_dest_size=100G;

5.导入数据

imp 账号/密码 file='dmp文件路径'  log='dmp文件日志路径' full=y ignore=y

6.关闭oracle实例

shutdown normal;

7.启动oracle实例

startup;

8.修改用户密码(可操作也可以不操作,影响不大)

alter user 账号 identified by 密码;

设置用户密码永不过期

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

9.设置闪回恢复区

修改闪回恢复区大小:

alter system set db_recovery_file_dest_size=8G;

到这里基本上就导入成功了,本人这个步骤目前来说没有出现过任何问题,有问题可以留言,一起解决

问题一 : 导入的时候长时间卡着不动
这个时候需要去查看一下日志,正常情况需要看一下(上面步骤三) 归档是否超出设定最大数值 是的话手动删除

問題二 : 日志一直警告报警磁盘空间不足
闪回恢复区设置大一点 这个时候单纯删除归档日志是没有用的

问题三 : 导入的时候频繁出现违反唯一约束条件 或 由于ORACLE错误而拒绝行
直接停止导入,将表空间和用户全部删掉 ,按照上面步骤来即可

问题四 :ORA-03113: 通信通道的文件结尾
1.首先启动实例

startup mount;

2.然后查询一下类似于备份数据的意思

select * from v$log;

3.完成介质恢复(恢复的时间自己定)

recover database until time '2020-06-09 1:45:02';

4.更改数据库启动类型

alter database open resetlogs;

5.关闭数据实例

shutdown

6.重新启动

startup  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值