通常我们都是使用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. C#按照指定长度分割中英文字符串

    最近有一个需求:玩家发的不同长度文字,需要自适应行数. 初步实现想法很简单,直接获取字符数均分行数,再利用string.substring()切割即可.但是显而易见,由于一般字体下,中文显示宽度一般是 ...

  2. >hibernate-session中的方法

    1.操作实体对象的方法 save()  保存 update() 更新 saveOrUpdate() 保存或更新 delete() 删除 2.操作缓存的方法 clear()  清除所有缓存 evit() ...

  3. *HDU 1392 计算几何

    Surround the Trees Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  4. mongodb的修改器

    在mongodb中通常文档只会有一部分要更新,利用原子的更新修改器,可以做到只更新文档的一部分键值,而且更新极为高效,更新修改器是种特殊的键,用来指定复杂的更新操作,比如调整.增加.或者删除键,还可以 ...

  5. Dexpress 中 grid的使用

    grid 中加入checkbox Run desiger Columns ColumnEdit中选择checkbox 此时我们要在后台手动指定一个数据列如下代码: dtRebatesReport.Co ...

  6. js弹出框、对话框、提示框、弹窗总结

    一.JS的三种最常见的对话框 //====================== JS最常用三种弹出对话框 ======================== //弹出对话框并输出一段提示信息 funct ...

  7. Metaio在Unity3D中报错 Start: failed to load tracking configuration: TrackingConfigGenerated.xml 解决方法

    报错:Start: failed to load tracking configuration: TrackingConfigGenerated.xml Start: failed to load t ...

  8. 系统定位在iOS8中的改变

    CLLocationManager这个系统定位的类在iOS8之前要实现定位,只需要遵守CLLocationManagerDelegate这个代理即可: - (void)startLocate {   ...

  9. WPF整理-使用用户选择主题的颜色和字体

    “Sometimes it's useful to use one of the selected colors or fonts the user has chosen in theWindows ...

  10. Linux 部署ASP.NET SQLite 应用 的坎坷之旅 附demo及源码

    Linux 部署ASP.NET SQLite 应用 的坎坷之旅.文章底部 附示例代码. 有一台闲置的Linux VPS,尝试着部署一下.NET 程序,结果就踏上了坑之路,不过最后算是完美解决问题,遂记 ...