zoukankan      html  css  js  c++  java
  • oracle重装之后恢复数据库(冷备份,恢复)

    GPS平台、网站建设、软件开发、系统运维,找森大网络科技!
    https://cnsendnet.taobao.com
    来自森大科技官方博客
    http://www.cnsendblog.com/index.php/?p=1493

    在开发机器上经常会遇到重装系统的问题,重装之前如果ORACLE没有及时备份的话重装之后就纠结了,数据还原很头疼。

    各种娘中只能找到一些ORACLE安装与重装系统前目录相同的解决办法,目录不同就没招了。

    我用的是oracle11G。老版的应该相似。

    经过我的尝试,找到了几个关键点,现在分享出来。

    1、控制文件CONTROL01.CTL

    oracle数据库的控件文件有两个,一个是在oradataoradb中,名称为CONTROL01.CTL

    另外一个是在flash_recovery_areaSDMS_DEMO,名称为CONTROL01.CTL 

    控件文件也可能是CONTROL02.CTL 或CONTROL03.CTL

    2、控制文件中的datafile,tempfile,logfile

    原数据库中的文件路径如果和重装后的路径不一致,需要将这些路径全部修改之后就可以了,具体步骤如下:

    一:重新创建oracle数据库后手动关闭oracle所有服务

    二:将oradata中新创建的数据库目录改名,d:appuseroradataoradb,改为d:appuseroradataoradb_new

    三:将原来的数据库目录复制到该目录下,复制后的结果是oradata中有d:appuseroradataoradb_new和d:appuseroradataoradb两个目录

    d:appuseroradataoradb是重装之前数据库的数据文件夹。

    Sand:将之前的CONTROL02.CTL替换到新的安装目录中,我刚开始按照教程,没做这一步,无法登录。

    四:启动各项oracle服务,到这里,platadmin已经可以登录了,但是发现system、sys等账号无法登录,报错

    在sqlplus里执行startup mount;命令也是报这个错

    ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

    原因应该就是listener.ora中没有添加SID_NAME等东西(详情见下方)

    http://blog.csdn.net/haiross/article/details/18559659

    :sqlplus /nolog命令进入oracle命令符

    六:用connect sys/change_on_install as sysdba;命令获得系统管理权限并登录。

    cmd中执行以下命令,gis32是32位的TNS名

    sqlplus sys/hch408@gis32 as sysdba

    七:用select instance_name from v$instance;确认当前的数据库实例是否正确,如果不是oradb需要使用 set oracle_sid来修改默认的oracle实例(没记错的话应该是这个命令可以问度娘查一下)。

    八:将d:appuseroradataoradbCONTROL02.CTL控制文件复制到d:appuserflash_recovery_areaoradb中,替换目录中原有的控制文件,注意:名称不一样的话改一下名字。

     

    (二) 方法二:SQL修改数据文件位置


    *************************************
    *  主要步骤:                        
    *  1、关闭数据库;                   
    *  2、复制数据文件到新的位置;       
    *  3、启动数据库到mount状态;        
    *  4、通过SQL修改数据文件位置;      
    *  5、打开数据库;                   
    *************************************


    1、关闭数据库 
       ---------------------------
    SQL> shutdown immediate;
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。


    2、复制数据文件到新的位置;
       ---------------------------
       同方法一

    3、启动数据库到mount状态; 
       ----------------------------
    SQL> startup mount
    ORACLE 例程已经启动。
    Total System Global Area 167772160 bytes
    Fixed Size                  1247900 bytes
    Variable Size              96470372 bytes
    Database Buffers           67108864 bytes
    Redo Buffers                2945024 bytes
    数据库装载完毕。

     

     

     

    九:使用startup nomount用无装载模式启动数据库。

    十: 设置数据库为装载模式:alter database mount;

     

    十一:查看数据文件清单:select name from v$datafile;

    查看临时文件清单:select name from v$tempfile;
    查看日志文件清单:select * from v$logfile;

    会看到如下结果:

    E:APPUSERORADATAORADBSYSTEM01.DBF
    E:APPUSERORADATAORADBSYSAUX01.DBF
    E:APPUSERORADATAORADBUNDOTBS01.DBF
    E:APPUSERORADATAORADBUSERS01.DBF
    E:APPUSERORADATAORADBSDMS_DATA01.DBF

    十二:修改数据文件路径,依次执行如下命令:

    SQL> alter database rename file 'E:APPUSERORADATAORADBSYSTEM01.DBF' to 'D:APPUSERORADATAORADBSYSTEM01.DBF'

    注意日志文件修改的时候有点纠结 文件名是redo01,因为oracle默认为大写,我看成了red001,一直修改不成,另外一个,如果用select * from v$logfile;看到的只有一条日志文件,建议把原数据库中的几个都修改一下。

    SQL> alter database rename file 'E:APPUSERORADATAORADBREDO03.LOG' to'D:APPUSERORADATAORADBREDO03.LOG';

    十三:启动数据库:alter database open;

    好了,现在可以用客户端连接这个数据库了。

    Sand:然而,我却报这个错

    但是不行。

    于是,我只好把所有的都改回来,就能启动了。但是,我这时,去登录system账号,也能登录了。

    GPS平台、网站建设、软件开发、系统运维,找森大网络科技!
    https://cnsendnet.taobao.com
    来自森大科技官方博客
    http://www.cnsendblog.com/index.php/?p=1493

  • 相关阅读:
    973. K Closest Points to Origin
    919. Complete Binary Tree Inserter
    993. Cousins in Binary Tree
    20. Valid Parentheses
    141. Linked List Cycle
    912. Sort an Array
    各种排序方法总结
    509. Fibonacci Number
    374. Guess Number Higher or Lower
    238. Product of Array Except Self java solutions
  • 原文地址:https://www.cnblogs.com/cnsend/p/13783104.html
Copyright © 2011-2022 走看看