导入oracle数据库,出现数据库未打开ORA-01033,找不到表空间ORA-00959等错误
从其他人那拷来一个DMP文件,使用数据泵导入时,报错,显示数据库未打开,查看服务,oracle的两项服务已打开。而后去网上找错误,应该是之前删除无用的数据库或者表空间文件夹造成的。
解决办法:参考https://www.linuxidc.com/Linux/2017-05/143799.htm
基本思想是:
1.先连上数据库,sqlplus ‘sys/sys as sysdba’
2.shutdown normal
提示:
数据库已经关闭
已经卸载数据库
ORACLE 例程已经关闭
3.startup mount
提示:
数据库装载完毕。
4.alter database open
(这一步出错)
提示:
ORA-01157: 无法标识/锁定数据文件11 - 请参阅DBWR 跟踪文件
ORA-01110: 数据文件11: ‘’’‘I:\tablesapce\APP0104_DEFAULT.dbf’’
5.alter database datafile 11 offline drop
6.重复第4第5步,直到所有无法连接的的表空间都已经drop为止
7.重新连接oracle数据库即可。
数据库未打开问题解决了,但是在导入数据库时出现了找不到表空间问题,造成数据库表、视图等数据均缺失。
原因:在建用户时未指定表空间,因为拷过来的dmp文件可能规定了表空间名称。
解决办法:若已导入,未导入成功,需要先将该用户删除,重新添加。
参考https://www.cnblogs.com/codecat/p/10796100.html
使用该文章中的命令,先创建表空间,在添加用户同时规定对应的表空间等信息,再次导入即可。
创建表空间:
CREATE TABLESPACE 表空间名称 LOGGING DATAFILE 'H:\app\oradata\orcl\TBS_NAME.dbf' SIZE 256M AUTOEXTEND ON NEXT 32M MAXSIZE 10240M EXTENT MANAGEMENT LOCAL;
创建用户同时赋予表空间
CREATE USER 用户名 IDENTIFIED BY 密码 DEFAULT TABLESPACE 表空间名称;
赋权限给用户
Grant connect,dba,resource to 用户名
创建路径(把从数据库上拷下来的文件放到这个路径)
create directory impdp_dir as 'e:\data';
赋权限给路径
grant read,write on directory impdp_dir to 用户名;
退出再执行下步操作
exit
导入
impdp 用户名/密码 directory= impdp_dir dumpfile=xxxx.DMP FULL=y;