oracle导出导入数据库

发布时间 2023-09-08 17:40:29作者: 06

先捋一下oracle的概念

oracle的概念稍微有点复杂:

用户账号和表空间绑定,表空间分为永久表空间和临时表空间,通过表空间设置数据库的大小等参数,在表空间里面进行新建数据表等操作,oracle的表空间等同于mysql的数据库

tnsname里面的server是oracle服务端的连接配置,是用来连接数据库的

操作步骤

1.导出oracle数据库

exp 账号/密码@127.0.0.1:1521/server_name file=D:\dbbak\test.dmp

 导出完之后,压缩dmp文件,并下载

2.导入oracle数据库

(1)新建永久表空间和临时表空间

#在oracle服务器上以sysdba身份登录,也可以通过plsql登陆
sqlplus / as sysdba
#查看表空间存储位置
select * from dba_data_files 

 

 

#创建一个永久表空间,大小200M,可以自动扩展
create tablespace test_data datafile 'D:\APP\ADMINISTRATOR\ORADATA\ETL\test\test_data.dbf' size 200M autoextend on;
#或者大小 100M,每次 5M 自动增大,最大不限制
create tablespace test_tablespace datafile 'testfile.dbf' size 100M autoextend on next 5M maxsize unlimited;
#临时表空间创建
create temporary tablespace test_temp tempfile 'D:\APP\ADMINISTRATOR\ORADATA\ETL\test\test_temp.dbf' size 200m;

(2)新建用户

#新建用户并指定登录密码,同时指定表空间
create user test identified by 123456 default tablespace test_data temporary tablespace test_temp;
#高版本的oracle普通用户前面要加c##,如果不带c##可以执行如下命令
alter session set "_ORACLE_SCRIPT"=true;
#新建完用户后再给改回来
alter session set "_ORACLE_SCRIPT"=false;

也可以先建用户再指定表空间

# 创建用户名test 密码 123456
create user test identified by 123456;
# 可以将tablespace表空间分配给指定用户来管理 
ALTER USER test QUOTA UNLIMITED ON test_tablespace;
# 或者为用户指定默认表空间
ALTER USER test DEFAULT TABLESPACE test_tablespace;

(3)给用户赋权

-- 给用户分配权限,必须赋予sysdba权限,imp命令需要sysdba身份导入
grant create session,create table,create view,create sequence,unlimited tablespace,connect,resource,dba to test;

(4)查看表空间

# 查看表空间对应关系
SELECT username, default_tablespace, temporary_tablespace, profile FROM dba_users;

 可以看出最下面那个用户没有赋予单独的临时表空间,默认赋予系统临时表空间

#查看表空间信息
select   *   from   dba_tablespaces
# 查看系统目录
select * from dba_directories;

确认表空间关系对应无误后,导入数据库

(5)导入数据库

把dmp文件上传到相关目录并解压,在cmd中执行导入命令

imp test/123456 file=D:\app\Administrator\admin\etl\dpdump\test.dmp log=D:\app\Administrator\admin\etl\dpdump\test.log fromuser=test touser=test constraints=N ignore=y

 

另外还有远程导入命令供参考:

imp ds/123456@*.*.*.28:1521/orcl file=/home/sawl/tools/oracle11g/data/nmgzc2.dmp log=/home/sawl/tools/oracle11g/data/test.log fromuser=test111 touser=ds constraints=N ignore=y

 

导入中遇到的错误:

ORA-39143: 转储文件可能是原始的导出转储文件

问题
options
ORA-39001: 参数值无效
ORA-39000: 转储文件说明错误
ORA-39143: 转储文件 “.dmp” 可能是原始的导出转储文件

原因分析:
.dmp文件是使用exp命令导出的,而使用
impdp 无法识别exp命令导出的文件,需要使用imp命令进行导入

当时导出用的exp,导入用的impdp,所以报错了。。

 

参考文档:

https://www.jianshu.com/p/9745ae3cb9b0

https://www.cnblogs.com/aeolian/p/16935162.html

https://blog.csdn.net/Crazy_young_man/article/details/131162884

https://zhuanlan.zhihu.com/p/484128583

https://blog.csdn.net/roamer314/article/details/50901893

表空间知识扩展:

https://blog.csdn.net/m0_71406734/article/details/131135587