通常我们都是使用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:\IGSOracle\IGSC.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,前者不能读取大文件,后者可以。

Oracle数据库备份、恢复及常见问题的更多相关文章

  1. Oracle数据库备份恢复,巡检须要关注的对象设置以及相关恢复概述

    数据库备份恢复.巡检须要关注的对象设置: 1.数据库名称,以及DBID:  --dbid在v$database中     SYS@ORCL>select dbid,name from v$dat ...

  2. Oracle数据库备份、灾备的23个常见问题

    为了最大限度保障数据的安全性,同时能在不可预计灾难的情况下保证数据的快速恢复,需要根据数据的类型和重要程度制定相应的备份和恢复方案.在这个过程中,DBA的职责就是要保证数据库(其它数据由其它岗位负责) ...

  3. Oracle数据库备份及还原

    Oracle数据库备份 1:找到Oracle安装路径我的就是默认C盘  C:\app\wdjqc\admin\orcl\adump 2:执行文件:back.bat 文件内容如下: @echo off ...

  4. Oracle数据库备份/导出(exp/expd)、导入(imp/impd)

    ​ 常用的oracle数据库备份(导入/导出)有两种,分别是exp/imp和expd/impd,前者是Orace早期版本带有的导入导出工具,后者是Oracle10g后出现的,下面进行分别介绍! 1.e ...

  5. Oracle数据库备份还原笔记

    Oracle数据库备份还原笔记 通过查阅资料知道Oracle备份还原的方式有三种.分别的是导出/导入.热备份和冷备份.导出/导入是一种逻辑备份.而热备份和冷备份是物理备份.[参考资料(https:// ...

  6. Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复

    Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...

  7. Java实现Oracle数据库备份

    今天将很早就实现的一个Oracle数据库备份功能粘贴出来,这个功能是在大学做阶段设计时写的: import java.io.File; import java.io.IOException; /** ...

  8. postgres 数据库备份恢复

    postgre 数据库备份恢复命令 备份:pg_dump -U postgres -v -F c -Z 4 -f ***.backup dbname  9压缩率最狠恢复:pg_restore -U p ...

  9. MySQL用户管理、常用sql语句、MySQL数据库备份恢复

    1.MySQL用户管理 给远程登陆用户授权:grant all on *.* to 'user1'@'127.0.0.1' identified by '123456' (这里的127.0.0.1是指 ...

  10. mysql 从陌生到熟练之----数据库备份恢复的实现方法

    mysql 从陌生到熟练之----数据库备份恢复的实现方法 MySQL数据库使用命令行备份|MySQL数据库备份命令 例如: 数据库地址:127.0.0.1 数据库用户名:root 数据库密码:roo ...

随机推荐

  1. 用SQL Server(T-SQL)获取连接字符串

    一般情况下,C# 连接SQL Server的字符串可以直接按照说明文档直接手动写出来,或者也可以参考大名鼎鼎的connectionstrings手动拼写 但是如果你已经连接到SQL Server也可以 ...

  2. ADO.NET数据访问模板整理

    /// <summary> /// 数据访问类:hi_test /// </summary> public partial class TestDA { public Test ...

  3. Java 集合类的特性

    ArrayList: 元素单个,效率高,多用于查询  Vector: 元素单个,线程安全,多用于查询 LinkedList: 元素单个,多用于插入和删除  HashMap: 元素成对,元素可为空  H ...

  4. xml中DTD解析

    DTD的作用是"文档类型的定义" DTD申明始终以<!DOCTYPE开头(开头后空一格). 本标签一共有三种写法 一.内部DTD: <!DOCTYPE 根元素 [ 文档 ...

  5. *HDU2254 矩阵乘法

    奥运 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submissi ...

  6. android ADT 无法查看第三方jar源代码

    Source not foundThe JAR of this class file belongs to container 'Android Private Libraries' which do ...

  7. 日常办公工具利器 notepad++

    日常办公工具利器 notepad++ 文本内容比较 Notepad++ https://notepad-plus-plus.org/ http://jingyan.baidu.com/article/ ...

  8. 微软开源 WCF 分布式服务框架,并入 .NET 基金会项目

    微软北京时间2015.5.20 在其 .NET Foundation GitHub 开源项目页中开放了 WCF 分布式服务框架的代码.WCF突然之间成为一个热门话题,在各大网站上都有不同的报道:dot ...

  9. 探索c#之storm的TimeCacheMap

    阅读目录: 概述 算法介绍 清理线程 获取.插入.删除 总结 概述 最近在看storm,发现其中的TimeCacheMap算法设计颇为高效,就简单分享介绍下. 思考一下如果需要一个带过期淘汰的缓存容器 ...

  10. 我所理解的RESTful Web API [设计篇]

    <我所理解的RESTful Web API [Web标准篇]>Web服务已经成为了异质系统之间的互联与集成的主要手段,在过去一段不短的时间里,Web服务几乎清一水地采用SOAP来构建.构建 ...