暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 表备份

askTom 2017-04-20
226

问题描述

嗨,团队,

我在面试中经历了一个问题,但找不到答案。如果你能帮我。

假设有一个表员工有数百万条记录,我们希望将列大小address_col(10) 增加到address_col(20)。如果下面的查询在4-5小时内运行并且仍在运行,我该如何备份employee表。

创建员工 _ 备份
作为
从员工中选择 *

有什么办法可以备份perticuler专栏。或者建议采用什么方法。


专家解答

“比方说,有一个拥有数百万条记录的表员工,我们希望将列大小address_col(10) 增加到address_col(20)”

执行此命令将 * 不需要时间 *,因为不需要更改数据。

SQL> create table t ( address varchar2(10));

Table created.

SQL> insert /*+ APPEND */ into t
  2  select rownum
  3  from ( select 1 from dual connect by level <= 1000 ),
  4  ( select 1 from dual connect by level <= 10000 )
  5  /

10000000 rows created.

SQL> set timing on
SQL> alter table t modify address varchar2(50);

Table altered.

Elapsed: 00:00:00.05


但是不管怎样。如果您需要备份列,您可以复制主键列和所需列的副本,例如

创建表备份 _ 我的 _ 表
作为选择pk_col1,pk_col2,my_column
从我的表;

您需要主键列,以便您可以根据需要将数据映射回原始表。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论