• 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

  • 相关阅读:
    OutOfMemoryError异常
    synchronized四种锁状态的升级
    题解LeetCode--三数之和
    JDK 8的HashMap源码解析
    LinkedList原理分析
    队列与LinkedList原理实现
    Java中的递归以及不死神兔实例(斐波那契数列)
    递归问题1
    排序的第二天_快速排序与归并排序
    yum源遇到的问题
  • 原文地址:https://www.cnblogs.com/cnsend/p/13783104.html
Copyright © 2020-2023  润新知