系列文章目录
目前数据库是已经搭建好的,我是直接拿来使用的。
任务是:把其他项目组导出的DUMP文件,导入到ORACLE中。
1.进入oracle
(示例):
1.切换到oracle用户(我们系统有oracle用户)
su - oracle
2.进如oracle
sqlplus / as sysdba
2.创建表空间
(示例):
1.首先先查看用户表空间的路径
select name from v$datafile;
2.根据上面执行的表空间的路径保持一致(目前我是保持一致的)
create tablespace orcl datafile '/路径/orcl.dbf' size 10240m autoexted on next 512M MAXSIZE Unlimited;
3.创建临时表空间
(示例):
#1.首先查看临时表空间的文件存储路径
select name from v$tempfile;
2.根据上面执行的临时表空间的路径保持一致(目前我是保持一致的)
create temporary tablespace orcl_temp datafile '/路径/orcl_temp.dbf' size 2048m autoexted on next 512M MAXSIZE Unlimited;
4.创建用户
代码如下(示例):
create user oss identified by oss defalut tablespace orcl temporary tablespace orcl_temp profile default;
#其中:
oss代表的用户
orcl代表的表空间
orcl_temp代表的临时表空间
5.给用户赋权
(示例):
1.为用户赋予角色
grant connect,resource to oss;
2.赋予用户创建会话的权限
grant create session to oss;
3.修改用户密码
alter user oss identified by oss;
6.导入文件
(示例):
1.将文件上传到相应的oracle节点上(注意的是:刚开始的时候OSS.DUMP是放到的root用户下,imp命令:
imp oss/oss@127.0.0.1:1521/sorcl file='/home/xxx/OSS.DUMP' log=20210629.log full=y ignore=y;
报错:oracle执行imp命令报could not convert to environment character set's handle
事实证明不能在root下执行呀
)
#在切换到oracle用户下,不需要进入到oracle中
impdp oss/oss@127.0.0.1:1521/sorcl directory=dump_dir schemas=oss dumpfile='/home/xxx/OSS.DUMP' logfile=20210629.log table_exists_action = replace;
#注释:
schemas : 要导入的方案列表
directory : 转储文件的目录对象
dumpfile: 要导入的文件
table_exists_action: 导入文件已存在时执行的操作
dump_dir: 是linux下的自己创建的相关目录
执行后报错:ORA-39087:directory name dump_dir is invalid;
2.根据上面的报错信息后进行的操作
2.1 首先执行sqlplus / as sysdba,进到oracle中
create directory dump_dir as '/home/oracle/dump_dir';
#(如果有该目录的话,不需要在重复执行)
2.2 给用户赋读写的权限
grant read,write on directory dump_dir to oss;
#注释
oss:为用户名
dump_dir:为目录名
2.3 执行导入操作
impdp oss/oss@127.0.0.1:1521/sorcl directory=dump_dir schemas=oss dumpfile='/home/xxx/OSS.DUMP' logfile=20210629.log table_exists_action = replace;
总结
今天导入数据真的是搞了一天,碰到好多问题,最后确实不知道还得给用户赋予读和写的操作,最后是看到之前安装oracle留下来的笔记才知道还得赋权。
最后,希望我踩到坑看到我这篇文章的人就不用在踩到相同的坑了。