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

最新文章

  1. MongoDB初识
  2. Initializing connection provider: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider停住了
  3. header、footer、hgroup、address
  4. java中的全等和相似
  5. php数组插入数据库这个功能该怎么实现
  6. S2 第二本书 深入.NET平台和C#编程 总结 by天命
  7. 【AngularJS学习笔记】02 小杂烩及学习总结
  8. CSS规范之BFC & IFC
  9. 20141031--SQL分组,数学函数,聚合函数
  10. strstr,strchr,strtr 比较
  11. Jquery AJAX POST与GET之间的区别
  12. 关于http与https区别
  13. 【开发技术】eclipse中格式化代码快捷键Ctrl+Shift+F失效的解决办法
  14. android activity传递实体类对象
  15. parseInt ,parseDouble,parseFloat
  16. SIFT算法大综合
  17. calendar模块
  18. Python 练习:三级菜单选择城市(二)
  19. [UE4]机器人射击逻辑行为树
  20. tomcat 启动报错org.hibernate.cfg.annotations.SimpleValueBinder.setType

热门文章

  1. slf4j的简单介绍
  2. Django开发笔记
  3. Smart3D系列教程6之 《案例实战演练3——倾斜数据正射影像及DSM的生产》
  4. 【转】POJ题目分类推荐 (很好很有层次感)
  5. 如何给GridView添加网格
  6. JQuery之$.ajaxPOST数据
  7. 【二】jekyll 的使用
  8. 如何让Maple中的数学引擎进入你的桌面应用程序和网站
  9. 使用nmap工具查询局域网某个网段正在使用的ip地址
  10. 程序员眼中的 SQL Server-执行计划教会我如何创建索引?