用友nc-oracle的数据恢复方法和步骤_exp和expdp两种

参考用:
-----------------------------------------------------------------------------------------------
 
---------------------------------------------------------------------------------------------
调整时间:2021-10-01
---------------------------------------------------------------------------------------------
一.确认并记录准备恢复数据的数据库实例信息
      新建的(准备恢复数据的)实例名称变量,可以通过替换的方式,进行调整
      新建的(准备恢复数据的)数据库实例说明:
      新建的(准备恢复数据的)实例名    :    mdfdata13
      用户名              :    mdfuser
      密码                  :    mdfPass_1234#
 
-----------------------------------------------------------------------------------------------
二.创建一个新的oracle实例
   
2.1创建nc-oracle的数据库实例
     **c:usersAdministartor>----   dbca
     **或者:开始---所有程序---Oracle - OraDb11g_home1---配置和移植工具---Database Configuration Assistant
 
     --会弹出要创建数据库的名称
     **全局数据库名和SID,都输入:   mdfdata13
 
     --会弹出要创建数据库的用户的口令(用户有SYS/SYSTEM/DBSNMP/SYSYMAN)
     **选择--所有账户使用同一管理口令--这里输入密码为:      mdfPass_1234#
 
     --第11步:
       记录下目标目录:      比如:c:ppdministratordminmdfdata13csripts
 
     --系统会开始创建指定的数据库实例--创建完成
 
2.2查看创建新实例的重要目录
             --C:ppAdministratororadatamdfdata13          ---准备创建表空间的目录     
             --C:ppAdministratordminmdfdata13dpdump     ---默认是虚拟目录的存放位置
-----------------------------------------------------------------------------------------------
三.查看新建数据库是否能正常连接
3.1.---指定连接的实例------------------ c:usersAdministartor>----
       set  oracle_sid   =   mdfdata13  
                                                                                
       [变量1--新建的(准备恢复数据的)实例名:mdfdata13 ]  
3.2.---查看是否连接了oracle数据库------ c:usersAdministartor>----  
       sqlplus    /@mdfdata13  as sysdba   
                                                                      
       [变量1--新建的(准备恢复数据的)实例名:mdfdata13]  
3.3.---查看目前连接的实例   SQL>-------
       select  instance_name   from  v$instance;   
                           
       或者到服务里看:OracleService****----星号代表正在运行的实例的名字
-----------------------------------------------------------------------------------------------
 
四.创建表空间
--说明在C:ppAdministratororadatamdfdata13路径下,创建表空间
--说明:这里的重要变量为:    mdfdata13
SQL>----   
    CREATE TABLESPACE NNC_DATA01 DATAFILE 'C:ppAdministratororadatamdfdata13 nc_data0101.dbf' SIZE 500M
    AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;     
 
    CREATE TABLESPACE NNC_DATA02 DATAFILE 'C:ppAdministratororadatamdfdata13 nc_data0201.dbf' SIZE 300M
    AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;  
    
    CREATE TABLESPACE NNC_DATA03 DATAFILE 'C:ppAdministratororadatamdfdata13 nc_data0301.dbf' SIZE 500M
    AUTOEXTEND ON NEXT 100M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K;
                                                 
    CREATE TABLESPACE NNC_INDEX01 DATAFILE 'C:ppAdministratororadatamdfdata13 nc_index0101.dbf' SIZE 500M
    AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;     
 
    CREATE TABLESPACE NNC_INDEX02 DATAFILE 'C:ppAdministratororadatamdfdata13 nc_index0201.dbf' SIZE 300M
    AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;  
  
    CREATE TABLESPACE NNC_INDEX03 DATAFILE 'C:ppAdministratororadatamdfdata13 nc_index0301.dbf' SIZE 500M
    AUTOEXTEND ON NEXT 100M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;      
-----------------------------------------------------------------------------------------------
五.给表空间创建新用户,并授权  
--用户名为:      mdfuser
  密码为  :      mdfPass_1234#
  ---------------------------------
     SQL>---------- 
          CREATE USER  mdfuser   IDENTIFIED BY  mdfPass_1234#     DEFAULT TABLESPACE    NNC_DATA01       TEMPORARY TABLESPACE temp;  
          
          [变量2--用户名:mdfuser] [变量3--密码:mdfPass_1234#]   [固定值空间表:NNC_DATA01 ]
     SQL>----------
          GRANT connect,dba to    mdfuser;      
                          
          [变量2--用户名:mdfuser]   **回车--------      (提示授权成功)
    
   
 
-----------------------------------------------------------------------------------------------
************************************************************************************************************
说明前面五步的操作都是一样的
************************************************************************************************************
六.用impdp方案恢复数据库,,这种方案速度较快(比imp最少快5倍)
   执行下面的语句,将数据导入到新建的(准备恢复数据的)oracle实例中
------------------------------------------------------------------------------------------------------------
方案1:
       ----使用现有虚拟目录的方法:
 
       6.1----指定要连接的oracle数据库 c:usersAdministartor>---- 
              sqlplus    /@mdfdata13      as    sysdba   
                                                                          
              [变量1--新建的(准备恢复数据的)实例名:mdfdata13]
       6.2.1--查看虚拟目录: SQL>----------------------------------
              select * from dba_directories;                                                    
                                                                  
              说明:查看是否存在现有的虚拟目录名称,
       6.2.2--查看默认目录下是否存在默认的虚拟目录,比如:
            c:ppdministrator/admin/mdfdata13/dpdump/ 存在虚拟目录,比如:data_pump_dir
 
 
       6.2.3--将虚拟目录授权授权给指定用户 SQL>---------------------------------
              grant read,write on directory   data_pump_dir    to    mdfuser   ;                
                                                              
              说明:,读写权限授权       [默认虚拟目录]         [变量2--用户名:mdfuser] 
       6.2.4--将通过expdp方式备份出来的备份文件,拷贝到虚拟目录,所在的实际目录文件夹中
            --将物理实体.dmp和日志文件.log要放置到虚拟目录对应的路径下,
            --比如:C:ppAdministratordminmdfdata13dpdump
 
       6.3.1--记录下备份文件的名称
       6.3.2--打开备份数据的日志文件,即log文件,查看使用哪个用户做的备份
       6.3.3--在恢复语句中,注意调整
 
       6.4----语句c:usersAdministartor>----
              IMPDP  mdfuser/mdfPass_1234#@mdfdata13            directory  =  DATA_PUMP_DIR          dumpfile = UFNC_BAK.dmp     logfile = UFNC_BAK.log         Remap_schema=USER_CCC:mdfuser    
          
            [变量2--用户名:mdfuser][变量3--密码:mdfPass_1234#][变量1--新建的(准备恢复数据的)实例名:mdfdata13]                   [变量4--默认虚拟目录:DATA_PUMP_DIR]    [备份出来的数据库实体名:UFNC_BAK]     [备份出来的数据库日志名:UFNC_BAK]     
            [变量Remap_schema=USER_CCC:mdfuser--该参数必须填写],且必须用用友已知的备份用户,不然root登陆后,看不到管理员,再设置超级麻烦                              
            说明:USER_CCC为:对应用户导出的日志文件/   mdfuser:为创建的<当前实例中创建的用户名>, 
                    Remap_schema=USER_CCC:mdfuser表示将备份账套中的USER_CCC这个用户对应的所有数据导入到当前实例的mdfuser用户中 
临时修改:
              IMPDP  mdfuser/mdfPass_1234#@mdfdata13            directory  =  DATA_PUMP_DIR          dumpfile=ORCL_BAK.dmp     logfile=ORCL_BAK.log         Remap_schema=nc65user:mdfuser    
 
              IMPDP  mdfuser/mdfPass_1234#@mdfdata13            directory  =  DATA_PUMP_DIR          dumpfile=MDFDATA01_BAK.dmp     logfile=MDFDATA01_BAK.log         Remap_schema=mdfuser:mdfuser    
 
              IMPDP  mdfuser/mdfPass_1234#@mdfdata13            directory  =  DATA_PUMP_DIR          dumpfile = NC6520210415000001.dmp     logfile = NC6520210415000001.log         Remap_schema=NC65:mdfuser    
 
              IMPDP  mdfuser/mdfPass_1234#@mdfdata13            directory  =  DATA_PUMP_DIR          dumpfile = NCDATA_BAK.dmp     logfile = NCDATA_BAK.log         Remap_schema = NCDATA:mdfuser    
20:57
 
 
------------------------------------------------------------------------------------------------------------
方案2:
       ----创建新虚拟目录比如(mdf_XuNiMuLu )的方法:
 
       6.1.1----指定要连接的oracle数据库------ c:usersAdministartor>---- 
                sqlplus    /@mdfdata13  as sysdba   
                                                                 
                [变量1--新建的(准备恢复数据的)实例名:mdfdata13]
       6.1.2--在C盘建立一个文件夹,名称为:AAA_expdp
 
 
       6.2.1--查看虚拟目录: SQL>------------------------------------------ 
              select * from dba_directories;                                                    
                                                                        
              说明:查看是否存在现有的虚拟目录名称,
       6.2.2--删除虚拟目录: SQL>------------------------------------------ 
              drop directory  mdf_XuNiMuLu   ;                                                      
                                                                    
              说明:删除 虚拟目录 mdf_XuNiMuLu ,如果没有这个会提示错误,继续下步即可
       6.2.3--创建虚拟目录: SQL>------------------------------------------ 
              create or replace directory  mdf_XuNiMuLu   as 'c:AAA_expdp' ;                                                  
                                                                        
              说明:虚拟目录的名称为  mdf_XuNiMuLu ,所在的位置为 c:AAA_expdp                        
       6.2.4--给虚拟目录授权 SQL>----------------------------------------- 
              grant read,write on directory   mdf_XuNiMuLu      to    mdfuser   ;         
                                                                             
              说明:,读写权限授权       [创建的虚拟目录]       [变量2--用户名:mdfuser]  
       6.2.5--将通过expdp方式备份出来的备份文件,拷贝到虚拟目录,所在的实际目录文件夹中
          --将物理实体.dmp和日志文件.log要放置到虚拟目录对应的路径下,比如:C:AAA_expdp
 
       6.3.1--记录下备份文件的名称
       6.3.2--打开备份数据的日志文件,即log文件,查看使用哪个用户做的备份
       6.3.3--在恢复语句中,注意调整
 
 
       6.6----语句c:usersAdministartor>----
            IMPDP  mdfuser/mdfPass_1234#@mdfdata13            directory  =  mdf_XuNiMuLu           dumpfile=UFNC_BAK.dmp      logfile=UFNC_BAK.log         Remap_schema=USER_CCC:mdfuser            
           
            [变量2--用户名:mdfuser][变量3--密码:mdfPass_1234#][变量1--新建的(准备恢复数据的)实例名:mdfdata13]                   [变量4--默认虚拟目录:DATA_PUMP_DIR]    [备份出来的数据库实体名:UFNC_BAK]     [备份出来的数据库日志名:UFNC_BAK]      [该参数必须填写]                              
            [变量Remap_schema=USER_CCC:mdfuser--该参数必须填写],且必须用用友已知的备份用户,不然root登陆后,看不到管理员,再设置超级麻烦    
            说明:USER_CCC为:对应用户导出的日志文件/   mdfuser:为创建的<当前实例中创建的用户名>, 
                    Remap_schema=USER_CCC:mdfuser表示将备份账套中的USER_CCC这个用户对应的所有数据导入到当前实例的mdfuser用户中 
临时修改:
              IMPDP  mdfuser/mdfPass_1234#@mdfdata13            directory  =  DATA_PUMP_DIR          dumpfile=ORCL_BAK.dmp     logfile=ORCL_BAK.log         Remap_schema=nc65user:mdfuser    
 
              IMPDP  mdfuser/mdfPass_1234#@mdfdata13            directory  =  DATA_PUMP_DIR          dumpfile=MDFDATA01_BAK.dmp     logfile=MDFDATA01_BAK.log         Remap_schema=mdfuser:mdfuser    
 
              IMPDP  mdfuser/mdfPass_1234#@mdfdata13            directory  =  DATA_PUMP_DIR          dumpfile = NC6520210415000001.dmp     logfile = NC6520210415000001.log         Remap_schema=NC65:mdfuser    
 
 
    ---如果第一次执行提升不正确,就再执行一次
-----------------------------------------------------------------------------------------------
 
************************************************************************************************************
方案3:
    ----用imp方案恢复数据库,,这种方案太慢(最少要2个小时)
    ----执行下面的语句,将数据导入到新建的(准备恢复数据的)oracle实例中 
 
       6.1--指定要连接的oracle数据库 c:usersAdministartor>----
            sqlplus    /@mdfdata13      as    sysdba   
                                                                   
            [变量1--新建的(准备恢复数据的)实例名:mdfdata13]
       6.2--将通过exp方式备份出来的备份文件,拷贝到指定的文件夹中,
            --将物理实体.dmp和日志文件.log要放置到虚拟目录对应的路径下,比如:C:AAA_exp
                                                                       
       6.3.1--记录下备份文件的名称
       6.3.2--
       6.3.3--在恢复语句中,注意调整
 
 
       6.3--imp   导入语句 c:usersAdministartor>----
            imp   mdfuser/mdfPass_1234#@mdfdata13               file=C:AAA_expUFNC_bak.dmp     full=y     ignore=y   
             
            [变量2--用户名:mdfuser][变量3--密码:mdfPass_1234#][变量1--新建的(准备恢复数据的)实例名:mdfdata13]          [变量4:路径][变量5:物理文件名]
    最后如果提示:成功终止导入,但没有出现警告。”,表明导入数据完毕
 
-----------------------------------------------------------------------------------------------
 
七. 检测数据是否导入成功  
     连接的数据库        :   c:usersAdministartor>----     sqlplus     mdfuser/mdfPass_1234#@mdfdata13           
     查看导入的数据表数量:   SQL>-----------------------     select count(*) from tab;     
-----------------------------------------------------------------------------------------------
***********************************************************************************************
 
八.恢复账套后,建议重新启动计算机
 
 
 
 
***********************************************************************************************
用友nc中间件配置工具
1.打开--C:yonyouhomeinsysconfig
2.数据源页签--读取
比如1:用友默认的数据库
3.1数据库/ODBC输入:  ORCL
3.2用户名输入:  sys
3.3密码输入:  Aaaa1234.(最后有个点)
 
比如2:新恢复的数据库
3.1数据库/ODBC输入:  mdfdata13
3.2用户名输入     :  mdfuser
3.3密码输入       :  mdfPass_1234#
4.点击测试,看是否数据库连接成功,如果连接成功,就可以做下一步的操作了
----------------
启用用友NC
1.桌面上或者C:yonyouhome路径中的:startup.bat
  说明:时间会比较长,等到出现"信息:server startup in XXX ms  (XXX表示启动服务所用时间)" 表示启动成功
2.登录nc
  说明:打开浏览器登陆了.登陆地址在IE浏览器收藏夹上.
3.NC登录说明
NC管理登陆
  如果不知道密码,可以使用,密码调整工具,
  1.修改root密码,再进行下步操作
 
  用户:super--------密码:  111aaa!!!  ---------  AAAbbb123@
  用户:root---------密码:  111aaa!!!  ---------  AAAbbb123@
NC演示登陆,root进入后可以自定义
  用户:admin--------密码:  111aaa!!!
 
***********************************************************************************************
-----------------------------------------------------------------------------------------------
1.查看是否连接了oracle数据库
            c:usersAdministartor>----   sqlplus    /  as sysdba     
 
 
2.查看目前连接的实例
            SQL>----    select  instance_name   from  v$instance;    注意:最后有个分号
            或者到服务里看:OracleService****----星号代表正在运行的实例的名字
 
3.退出连接
             SQL>----    quit
 
4.指定连接的实例
                             实例名称
             c:usersAdministartor>----     set  oracle_sid=orcl             
             c:usersAdministartor>----     set  oracle_sid=NCDATA         
             c:usersAdministartor>----     set  oracle_sid=mdfdata13    
             SQL>----   connect sys/Aaaa1234.@orcl as sysdba
                        connect 用户名/密码@数据库名 as sysdba。
             回车
             如果显示<已连接>,则说明数据库连接上了
             实例2举例:
             SQL>----   connect NCDATA/NCDATA@NCDATA as sysdba
             SQL>----   connect NCDATA/NCDATA@orcl as sysdba
             SQL>----   connect nc65user/Aaaa1234.@orcl as sysdba
             实例3举例:
             SQL>----   connect mdfuser/mdfPass_1234#@mdfdata13 as sysdba
 
5.查看当前连接oracle实例中的用户名
             c:usersAdministartor>----   sqlplus    /  as sysdba     
             SQL>----    select   username  from  dba_users;           
 
 
7.指定要连接新创建的数据库实例
                               实例名称
             c:usersAdministartor>----    set  oracle_sid=NCmdfdata13            
8.查看是否连接了新创建的oracle数据库实例
             c:usersAdministartor>----    sqlplus    /  as sysdba
 
9.创建表空间
-----------
--说明在C:ppAdministratororadatamdfdata13路径下,创建表空间
--用户为:mdfuser/     密码为:mdfPass_1234#            
--说明:这里的重要变量为:    mdfdata13
             SQL>----   
CREATE TABLESPACE NNC_DATA01 DATAFILE 'C:ppAdministratororadatamdfdata13 nc_data0101.dbf' SIZE 500M
AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;     
 
CREATE TABLESPACE NNC_DATA02 DATAFILE 'C:ppAdministratororadatamdfdata13 nc_data0201.dbf' SIZE 300M
AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;  
    
CREATE TABLESPACE NNC_DATA03 DATAFILE 'C:ppAdministratororadatamdfdata13 nc_data0301.dbf' SIZE 500M
AUTOEXTEND ON NEXT 100M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K;
                                                 
CREATE TABLESPACE NNC_INDEX01 DATAFILE 'C:ppAdministratororadatamdfdata13 nc_index0101.dbf' SIZE 500M
AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;     
 
CREATE TABLESPACE NNC_INDEX02 DATAFILE 'C:ppAdministratororadatamdfdata13 nc_index0201.dbf' SIZE 300M
AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;  
    
CREATE TABLESPACE NNC_INDEX03 DATAFILE 'C:ppAdministratororadatamdfdata13 nc_index0301.dbf' SIZE 500M
AUTOEXTEND ON NEXT 100M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;
    
CREATE USER mdfuser  IDENTIFIED BY  mdfPass_1234#    DEFAULT TABLESPACE NNC_DATA01 TEMPORARY TABLESPACE temp;
 
GRANT connect,dba to mdfuser;
 
**回车
--(提示授权成功)
说明以上语句执行后,
会生成文件夹:C:ppAdministratororadatamdfdata13,并且在该文件夹下会生成存放表空间的文件,格式为.dbf格式
 
 
10.将备份文件拷贝到DATA_PUMP_DIR
    --将客户备份的  .dmp和.log文件(比如:NC6520210415000001.DMP和NC6520210415000001.log)
    **复制到指定文件夹---C:ppAdministratordminNCmdfdata13dpdump
 
 
11.执行下面的语句
 
          用户   密码      实例                                                                          客户备份出的dmp文件名                                                                        数据库
IMPDP mdfuser/mdfPass_1234#@mdfdata13 directory=DATA_PUMP_DIR  dumpfile=NC6520210415000001.dmp logfile=impfull.log Remap_schema=NC65:NCmdfdata13
 
    
12. 检测数据是否导入成功  
     直接连接回复的数据库
        c:usersAdministartor>----   sqlplus     NCmdfdata13/NCmdfdata13@NCmdfdata13    
     查看是否导入了数据
            SQL>----     select count(*) from tab;
 
*******************************************