Oracle备份表

当表中的数据量很大时亿量时,如果在继续存放数据的话查询的效率会很慢,这时可以对这个表做一个备份,然后创建一个一模一样的表来继续存放数据。

首先我们要做的是修改表的名字、主键的名字、索引的名字,如果有外键的话也对外键名修改。然后在创建一个新的表,表名、主键名、索引名、外键名。都和原来表中保持一致,然后在把一部分需要的数据导入到新的表中即可。

第一步修改表名

ALTER TABLE 表名 RENAME TO 修改后的表名;

第二步修改主键

由于主键名不能修改所以只能先删除原来的主键,然后重新添加一个新的主键名称,如下分情况操作。

1.当表有主键没有主键约束名,先删除主键,在添加主键。

删除主键:ALTER TABLE 表名 DROP PRIMARY KEY;

添加主键:ALTER TABLE 表名 ADD PRIMARY KEY (字段名);

2.当有主键也有主键约束名,先删除已有的主键约束名,在添加主键和主键约束名。

若不知道主键约束名可查询:

SELECT C.CONSTRAINT_NAME FROM USER_CONS_COLUMNS C WHERE C.TABLE_NAME='表名';

查询出来之后在删除主键约束名:ALTER TABLE 表名 DROP CONSTRAINT 约束名;

最后在添加主键和主键约束名:ALTER TABLE 表名 CONSTRAINT 约束名 PRIMARY KEY (字段名1,字段名2);

第三步修改索引名

ALTER INDEX  索引名 RENAME TO 修改后的索引名;

第四步统计分析(作用是提高导入数据的效率)

ANALYZE TABLE 表名 COMPUTE STATISTICS FOR TABLE FOR ALL INDEXES FOR ALL COLUMNS;

注意:第二步和第四步所有操作的表名,都是修改之后的表名。

第五步创建新表(新表的表名要和第一步修改前的表名一致),同时从修改后的表中导入一部分所需数据

CREATE TABLE 表名 AS SELECT * FROM 修改后的表名 WHERE 自己需要导入的条件;

第六步添加主键

ALTER TABLE 表名 ADD CONSTRAINT 主键约束名 PRIMARY KEY(字段名);

第七步添加索引

CREATE INDEX 索引名 ON 表名 (字段名);

第八步为了提高新表的查询效率可以对新建的表做一个统计分析

ANALYZE TABLE 表名 COMPUTE STATISTICS FOR TABLE FOR ALL INDEXES FOR ALL COLUMNS;

例子如下:

表名:tb_student

主键是:student_id

主键约束名:pk_student_1

索引名:index_student_1

修改表名:alter table tb_student rename to tb_student_backup2019;

删除主键:alter table tb_student_backup2019drop primary key;

或者删除主键约束名:alter table tb_student_backup2019 drop constraint pk_student_1;

添加主键和主键约束名:

alter table tb_student_backup2019 add constraint pk_student_1_backup2019 primary key (student_id);

修改索引:alter index index_student_1 rename to index_student_1_backup2019;

统计分析:

analyze table tb_student_backup2019 compute statistics for table for all indexes for all columns;

创建新表:

create table tb_student as select * from tb_student_backup2019 where datetime>='20180101';

增加主键和主键约束名:alter table tb_student add constraint pk_student_1 primary key (student_id);

增加索引:create index index_student_1_backup2019 rename to index_student_1;

统计分析:analyze table tb_student compute statistics for table for all indexes for all columns;

还有一些常用命令也写下方

查看oracle版本号:select * from v$version;

删除索引:drop index 索引名;

统计分析另一种写法:exec dbms_stats.gather_table_stats('用户名','表名');  --该命令适用于dos窗口

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

handsome-boy

谢谢你的支持,我会继续努力的哈

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值