oracle备份部分数据库,Oracle 11g 数据库备份涉及的部分记忆点

在开发中有一个项目,其中有 32 个表,含有 10 个空表(没有数据),开发过程恰逢自己电脑换系统和新配一台工作电脑,在备份数据库时,感觉有部分记忆点值得记录一下。

¶一、导出、导入数据文件(可用于数据备份,或者不同地点间的数据库同步)

1、使用 PLSQL 12 中自带的 工具——导出表 ,单击第一个表,按住 Shift 键单击最后一个表即可将所有表全部选定,选定导出目录,填写输出文件名称,保存,数据多的时候可以在弹出的窗口中看见导出过程。(这时候可以发现有部分表提示“导出失败,某某表不存在”,查看这些表后发现这些表都有一个共同的特征:无数据,解决办法可跳至第三段)

2、在新电脑中使用 PLSQL 12 中的 工具——导入表,选中刚刚的导出文件,导入数据即可。

¶二、想象中的导出、导入数据文件

¶以下为缺少表空间的错误:

1、在原先正常的电脑上使用 PL SQL 12 导出 32 个表,为 .dmp 格式文件,并在新电脑进行导入表的操作

2、弹出一个窗口后秒关,尝试通过截图快捷键截图查看,以失败告终,请教项目组上的数据库老师后知道了这是缺少表空间的缘故,之后 就是各种恶补表空间知识。

3、在 PLSQL 中新建 SQL 窗口,键入以下语句并执行:

1

2

3

4

5

6

7CREATE TABLESPACE OP

LOGGING

DATAFILE 'D:\Oracle\product\11.2.0\OP.DBF'

SIZE 50M

AUTOEXTEND ON

NEXT 32M MAXSIZE UNLIMITED

EXTENT MANAGEMENT LOCAL;

其中第三行语句含有表空间的存放位置,建议放在 Oracle 的安装目录里面,防止误删除。OP 为表空间名字,其他行语句想了解的可自行百度具体含义。删除已经使用的表空间会使得对应的用户无法登录使用,我是重装 Oracle 解决的,就是这么低技术含量,幸好是没有什么重要数据。可以删除表空间后再删除这个 .DBF 文件,删除语句如下:

1DROP TABLESPACE OP;

¶三、解决空表不导出的方法

1、在数据导出的时候,无法导出空表,提示错误“EXP-00011:table 不存在”。

产生原因:Oracle 11g 默认创建一个表时不分配 segment,只有在插入数据时才会产生(当然也可以强制分配),以节省磁盘空间。

2、解决方法:

(1)第一种:在空表中插入一条数据然后再对插入的数据进行删除,便可以进行数据导出(我的那几个表添加假数据很难,如果表少的话可以手动执行,对于多个表的情况可以采用语句进行批量操作的)。

(2)第二种:可以使用手工为空表分配 Extent 的方式,来解决导出之前建立的空表的问题。在 PLSQL 中新建 SQL 窗口,键入以下语句并执行:

1SELECT 'ALTER TABLE '||TABLE_NAME||' ALLOCATE EXTENT;' FROM USER_TABLES WHERE SEGMENT_CREATED='NO';

2b1731113d48844a95719d08e58910a5.png

可以通过语句导出查询结果,执行导出的语句即可(表数量少的话可以复制粘贴执行查询结果)。

c8233515fcd8735eca3ee493e0fa9ac5.png

1

2

3

4

5

6

7set heading off;

set echo off;

set feedback off;

set termout on;

spool D:\Oracle\product\11.2.0\allocate.sql;

SELECT 'ALTER TABLE '||TABLE_NAME||' ALLOCATE EXTENT;' FROM USER_TABLES WHERE SEGMENT_CREATED='NO';

spool off;

导出后执行导出的语句:

1@ D:\Oracle\product\11.2.0\allocate.sql;

(3)第三种:设置deferred_segment_creation 参数,该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。

(这种方法我没有试过,你可以自行尝试)

1SELECT 'ALTER TABLE '||TABLE_NAME||' ALLOCATE EXTENT;' FROM USER_TABLES WHERE NUM_ROWS=0;

实测上面百度到的这句指令不显示空表结果,你可以自己试一试。

下面这个语句可在 TNS 连接不上时导入表:

1imp scott/tiger@localhost:1521/orcl full=y file= E:\my.dmp ignore=y;

1、写这篇随笔的时候发现在 Atom 中选中单词,按住 Ctrl 后按 K, 再按 U,即可将选中的单词大写

2、白天的技巧:Eclipse 中查看方法在哪里被调用了——选中方法,直接Ctrl + Shift + G 或者 Ctrl + Alt + H

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值