美文网首页
Linux服务器下利用expdb/impdb来导入/导出Orac

Linux服务器下利用expdb/impdb来导入/导出Orac

作者: 惜小八 | 来源:发表于2019-05-29 18:31 被阅读0次

    参考自:https://blog.csdn.net/qq_33204709/article/details/82592197

    一.使用Xshell链接Linux

    准备工作:首先用Xshell连接到Linux服务器,并切换至oracle账号,

    注意'-'后面有个空格
    [root@localhost ~]# su - oracle
    
    Last login: Fri Jul 21 13:49:22 CST 2018 on pts/1    (成功切换)
    
    [oracle@localhost ~]$
    

    二.使用数据泵导出Linux服务器上的数据

    expdp SEAS05/Neusoft#123@orcl schemas=SEAS05 directory=DATA_PUMP_DIR dumpfile=SEAS05lyx20190103_11.dmp version=11.2.0.1.0 
    
    注意如果是导出本地的数据库不要加@orcl
    

    1.创建逻辑目录

    创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等数据库管理员创建。(这个逻辑目录指定了导出文件的保存位置)
    此处使用的是数据库默认的逻辑目录DATA_PUMP_DIR,可以使用 select * from dba_directories;查看这个逻辑目录所代表的具体位置
    当然也可以自己创建一个逻辑目录,指定他的具体位置:
    本例当中使用的是默认的DATA_PUMP_DIR逻辑目录

    create directory dpdata1 as '/home/oracle';
    expdp SEAS02/Neusoft#123@orcl schemas=SEAS02 directory=dpdata1 dumpfile=SEAS02bzq20190529.dmp version=11.2.0.1.0 
    

    2.查看导出的数据库

    select * from dba_directories;
    查找出导出时使用的逻辑目录所对应的具体位置(本例当中是DATA_PUMP_DIR),在里面即是导出的数据库。
    

    三.导入数据库到本地数据库

    1.创建表空间

    Oracle数据库当中用户的概念有点像是mysql当中的数据库的概率,在Oracle当中,每个用户都有一个默认的表空间,也可以修改默认的表空间,

    Oracle数据库:是一个文件系统,是物理概念。
    实例:在Oracle的数据库中可有多个实例,通常我们只用一个实例
    用户:一个实例下有多个用户。
    表空间:一个实例下有多个表空间,表空间是逻辑概念,一个表空间对应着一个或者多个物理存储文件(.dbf,.ora)
    用户和表空间的关系:一个用户有一个默认的表空间,一个表空间可以为多个用户作为默认表空间,用户和用户之间的数据是隔离,数据不会混。
    ********************************************************************************************************
    
    可以通过
    select * from  dba_data_files;
    查询出表空间对应文件的位置。
    
    *******************************************************************************************************
    
    --创建表空间  
    create tablespace seas_data datafile 'G:\ORACLEDATA\DPDATA\SEAS_DATA' size 100M  autoextend on;
    
    

    2.创建用户指定表空间,赋权限

    --2.建用户  
    create user SEAS02 identified by Neusoft#123 default tablespace seas_data;  
      
    --3.赋权(可以对其他用户下的表进行操作)  
    grant connect,resource to SEAS02;  
    grant create any sequence to SEAS02;  
    grant create any table to SEAS02;  
    grant delete any table to SEAS02;  
    grant insert any table to SEAS02;  
    grant select any table to SEAS02;  
    grant unlimited tablespace to SEAS02;  
    grant execute any procedure to SEAS02;  
    grant update any table to SEAS02;  
    grant create any view to SEAS02;  
    grant dba to SEAS02;
    

    3.查看当前要导入的用户的表空间和原先导出用户的表空间是否一致

    在导入导出时要注意的是,导入导出的表空间一定要一!!!,如果表空间不一致可以使用一下的方法进行操作

    --查看当前用户的表空间
    select username,default_tablespace from user_users;
    
    --方法一:更改当前用户的表空间
    alter tablespace USERS rename to seas_data;
    --方法二:在导入数据库的时候,末尾加上remap_tablespace=sourse:target
    sourse:导出dmp文件的表空间
    target:导入数据的表空间
    

    4.执行导入语句

    impdp SEAS02/Neusoft#123 directory=dpdata1 dumpfile=SEAS02bzq20190529.dmp
    此处 directory是我们在本地创建的逻辑目录,dumpfile是逻辑目录所在具体目录的位置(里面存放的是要导入的数据)
    

    5.导入表失败

    如果导入失败,则必须要删除用户名和用户下的数据后再重新导入,记得后面要加cascade,SQL如下:

    drop user SEAS02 cascade;
    

    四.expdb/impdb需要注意的事项

    1.导入导出的表空间用户要相同

    impdp命令只可导入expdp导出的dmp文件。expdp导出的时候,需要创建 DIRECTORY,如不创建也可以使用原有的
    
    导出什么表空间,导入也要什么表空间。
    
    导出什么用户,导入也要什么用户。
    

    2.在导出时指定版本和要导入的数据库版本一致

    查看版本:
    show parameter compatible;
    

    报错:ORA-39001,ORA-39142 解决办法,指定版本一致


    捕获2.PNG

    3.更多错误解决方案:https://www.linuxidc.com/Linux/2013-09/90592.htm

    相关文章

      网友评论

          本文标题:Linux服务器下利用expdb/impdb来导入/导出Orac

          本文链接:https://www.haomeiwen.com/subject/jeawoqtx.html