zoukankan      html  css  js  c++  java
  • Oracle数据库备份、恢复及常见问题

    通常我们都是使用PL/SQL Developer来对Oracle中的数据对象和数据进行管理。如果我们想方便快速还原或者部署Oracle到新机器上,怎么进行数据库的备份、导入恢复呢?

    这里我们必须要考虑的:如何创建Oracle表空间、创建Oracle数据库;如何把Oracle对象、表数据导出到sql脚本中。

    1、数据库备份

    (1)导出数据库对象

    Tools-->ExportUser Objects,选择需要导出的数据库对象,包括:表、序列、存储过程、视图、函数等。

    (2)导出表数据

    Tools-->Export Tables,导出数据到PL/SQL数据库脚本中。

    2、新建表空间和Oracle数据库

    File-->New-->SQL Window,打开SQL窗口输入:

    表空间、用户名都为IGSC。

    create tablespace IGSC datafile 'E:IGSOracleIGSC.dbf' size 10240M; 
    --DROP TABLESPACE IGSC INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS; 
    create user IGSC identified by IGSC default tablespace IGSC; 
      
    grant connect,resource to IGSC;  
    grant dba to IGSC; 
    --Revoke dba from IGSC;

    点击执行sql。此时,数据库表空间、表结构、表数据齐全,可以开始迁移出一个完整的数据库了。

    3、导入数据库及对象

    Tools-->Import Tables,先导入数据库对象,再导入表数据,此时,你的表数据文件可以分几个文件导入也是不会报错的,因为表结构已经存在。

    执行过程中会出现如下界面:

    到这,整个oracle数据库的迁移工作已完成。注意:我们导出的Oracle对象和数据库默认还是原来Oracle数据库的表空间和数据库用户名。如果想在新的数据库服务器中指定不同的表空间和数据库用户,则需要替换生成的sql脚本中的表空间和用户名的设置,并且第二步指定合理的表空间和数据库用户。

    4、常见问题

    (1)就是上面说的注意

    我遇到的问题:新环境的数据库中存在IGS表空间,我导出的数据库文件IGSOracle.sql表空间默认也为IGS,结果在导入数据库对象到新表空间IGSC时,没有导入成功,却导入到了已存在的IGS表空间中。查看IGSOracle.sql:

    发现导出的Oracle对象和数据库默认还是原来Oracle数据库的表空间和数据库用户名,我们要将表空间和用户名都改为IGSC,重新导入。

    (2)ORACLE initialization or shutdown in progress

    想删除不想要了的数据库和dbf文件,停掉服务后删除,重启服务启动数据库实例时报错。

     解决:

    开始-->输入,sqlplus /nolog

    SQL> connect system/hope;

    ERROR:
    ORA-01033: ORACLE initialization or shutdown in progress【就是这个错误】
     
    SQL> connect sys/hope as sysdba
    已连接。
     
    SQL> shutdown normal
    ORA-01109: 数据库未打开
    已经卸载数据库。
    ORACLE 例程已经关闭。
     
    SQL> start mount
    SP2-0310: 无法打开文件 "mount.sql"
     
    SQL> startup mount
    ORACLE 例程已经启动。
    Total System Global Area  612368384 bytes
    Fixed Size                  1332348 bytes
    Variable Size             183151492 bytes
    Database Buffers          423624704 bytes
    Redo Buffers                4259840 bytes
    数据库装载完毕。
     
    SQL> alter database open;
    alter database open
    *
    第 1 行出现错误:
    ORA-01157: 无法标识/锁定数据文件 8 - 请参阅 DBWR 跟踪文件
    ORA-01110: 数据文件 8: 'C:TYKM.DBF'
     
    SQL> alter database datafile 8 offline drop;【8是数据文件中的8】
    数据库已更改。
     
    SQL> alter database open;【一直循环这个语句,直至不再提示错误】
    数据库已更改。
     
    SQL> shutdown normal
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
     
    SQL> startup
    ORACLE 例程已经启动。
    Total System Global Area  612368384 bytes
    Fixed Size                  1332348 bytes
    Variable Size             187345796 bytes
    Database Buffers          419430400 bytes
    Redo Buffers                4259840 bytes
    数据库装载完毕。
    数据库已经打开。
     (3)ORA-1658 无法为表空间的段创建initial区
     原因:表空间大小

      解决:因为表数据比较大,我这里将步骤二中的size改为了10240M。

    (4)PL/SQL导入表数据报错Error reading file

    如果此文对您有帮助,微信打赏我一下吧~

    当表数据文件很大时,选择Use Command Window方式导入报错。对大量数据的导入选择Use SQL*Plus,前者不能读取大文件,后者可以。

  • 相关阅读:
    编程技术网站汇总
    SQL中select与set的区别-转载
    JQuery 了解
    Html--表单练习
    SqlServer--聚合函数
    SqlServer--模糊查询-通配符
    SqlServer-- NULL空值处理
    Sql--order by、desc降序、top
    Nginx+Tomcat+Memcached集群
    配置Nginx服务
  • 原文地址:https://www.cnblogs.com/Joanna-Yan/p/5070658.html
Copyright © 2011-2022 走看看