先捋一下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;
可以看出最下面那个用户没有赋予单独的临时表空间,oracle这种情况会默认赋予系统临时表空间
#查看表空间信息 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
标签:数据库,空间,test,导入,tablespace,oracle,create From: https://www.cnblogs.com/allay/p/17688193.html