zoukankan      html  css  js  c++  java
  • oracle备份恢复(dmp文件)

    jidmp文件恢复方式:只能通过代码恢复
    注意: Oracle expdp/impdp导出导入命令及数据库备份  2者之间的区别
    使用EXPDP和IMPDP时应该注意的事项:
    EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
    EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。
    IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。
    expdp或impdp命令时,可暂不指出用户名/密码@实例名 as 身份,然后根据提示再输入,如:
    expdp schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
    附imp导入命令:
    imp SKZY2018/skzy2018 file='F:ackup20200807120000.DMP' full=y
     
    dmp备份文件为EXPDP导出的文件 因此只能在服务端使用impdb命令导入
    alter user sys identified by SKZY 修改oracle 用户密码
    开始导入数据:
    由于我的数据库备份文件指定了库名,因此必须创建相同的用户进行数据导入
    创建用户(启动cmd )
    以dba运行sqlplus:
    sqlplus "/as sysdba"
     
    创建用户SKZY :
    CREATE USER SKZY PROFILE DEFAULT IDENTIFIED BY SKZY
    DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE temp ACCOUNT UNLOCK ;
     
    赋予用户SKZY 权限
    GRANT UNLIMITED TABLESPACE TO SKZY;
    GRANT CONNECT,RESOURCE TO SKZY;
    grant dba to SKZY;
     
    在我的电脑里面,建立文件夹D:/SKZY,把要还原的DMP文件拷贝进该文件夹
    创建DIRECTORY,并且赋权限给SKZY用户
    CREATE OR REPLACE DIRECTORY tempdump AS 'D:/SKZY/';
    GRANT READ, WRITE ON DIRECTORY tempdump TO SKZY;
     
    新开cmd窗口运行impdb导入数据:
    导入数据:impdp SKZY/SKZY@ORCL full=Y directory=tempdump dumpfile=20200807120000.DMP
     
    正常来说运行上述程序即可导入数据成功,但是也有特殊情况:
    实际遇上的问题:
    表空间不存在
    第一次导入数据时提示表空间“BJHYS”不存在,导入失败
    解决方案:创建表空间BJHYS
    首先删除刚才创建的用户,然后在sqlplus dba模式下新建表空间:
    create tablespace BJHYS datafile 'D:/SKZY/BJHYS.dbf' size 2000m autoextend on next 100m maxsize unlimited;
    (创建表空间BJHYS 初始大小2000M 自动增加大小100M)
    附:删除用户出现问题:无法删除当前已连接用户
    网上解决办法:
     
    select username,sid,serial# from v$session 查看当前oracle连接
     
    alter system kill session '14,60596' 杀死oracle连接
     
    drop user SKZY2018 cascade ///删除oracle用户
     
    但是我在运行上述解决办法时并不成功,于是我用了最直接的办法,重启server服务
    找到OracleServiceORCL服务 直接停止重新启动即可删除用户及用户数据
    字符集问题
    解决表空间问题之后重新导入,出现导入失败,ORA-02374 ,ORA-12899,ORA-02372
    参考博客:https://www.linuxidc.com/Linux/2018-05/152228.htm之后发现是数据库字符集不对
    正式环境的字符集是ZHS16GBK 而测试环境安装oracle之后默认字符集是AL32UTF8
    由于utf8人为汉字是3个字符,而gbk汉字是两个字符,所以一直导入失败
     
    解决办法:修改测试环境字符集
     
    select * from nls_database_parameters 查看当前oracl数据库字符集
    cmd下sqlplus 以dba模式启动运行
    正常关闭数据库 :shutdown immediate
    将数据库启动到mount状态:startup mount 
    将数据库设置为首先模式: ALTER SYSTEM ENABLE RESTRICTED SESSION; 
                ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;(只用于复制环境)
                ALTER SYSTEM SET AQ_TM_PROCESSES=0; 【如果大于零, 就会启用对队列消息的时间监视。该时间值可用于指定消息的延迟和失效属性 (用于应用程序的开发)。】
    打开数据库:alter database open;
           alter database character set INTERNAL_USE ZHS16GBK;
          或者ALTER DATABASE character set INTERNAL_USE AL32UTF8;  
    关闭数据库:shutdown immediate
    将数据库启动:startup;
    由于之前你设置了restricted限制了其他用户的登录,可能导致其他客户不能通过pl/sql来登录影响正常使用,
          alter system disable restricted session;
     
    第一次运行shutdown immediate出现ORA-24324
    解决办法:简单粗暴,重启OracleServiceORCL服务即可
     
     

  • 相关阅读:
    dapper 批量删除、新增、修改说明
    android 加载assets目录下的静态html文件案例
    webstorm中使用git提交代码时出现unversioned files错误
    windows server 2008 R2 x64 部署.net core 3.1项目
    asp.net core 项目添加nlog日志(loggerFactor.AddNLog 过时处理(.net core 3.1))
    机器学习笔记之一步步教你轻松学主成分分析PCA降维算法
    机器学习笔记之类别特征处理
    机器学习笔记之range, numpy.arange 和 numpy.linspace的区别
    机器学习笔记之Numpy的random函数
    机器学习笔记之矩阵分解 SVD奇异值分解
  • 原文地址:https://www.cnblogs.com/blogs-xd/p/14153423.html
Copyright © 2011-2022 走看看