博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle备份表
阅读量:2049 次
发布时间:2019-04-28

本文共 2151 字,大约阅读时间需要 7 分钟。

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

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

第一步修改表名

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窗口

 

转载地址:http://iweof.baihongyu.com/

你可能感兴趣的文章
Leetcode C++《热题 Hot 100-58》560. 和为K的子数组
查看>>
Leetcode C++《热题 Hot 100-59》416. 分割等和子集
查看>>
Leetcode C++《热题 Hot 100-60》146. LRU缓存机制
查看>>
Leetcode C++《热题 Hot 100-61》200. 岛屿数量
查看>>
Leetcode C++《热题 Hot 100-62》621. 任务调度器
查看>>
Leetcode C++《热题 Hot 100-63》394. 字符串解码
查看>>
Leetcode C++《热题 Hot 100-64》142. 环形链表 II
查看>>
Leetcode C++《热题 Hot 100-65》207. 课程表
查看>>
Leetcode C++《热题 Hot 100-66》309. 最佳买卖股票时机含冷冻期
查看>>
Leetcode C++《热题 Hot 100-67》279. 完全平方数
查看>>
Leetcode C++《热题 Hot 100-68》337. 打家劫舍 III
查看>>
Leetcode C++《热题 Hot 100-69》647. 回文子串
查看>>
Leetcode C++ 《第22场双周赛-1》 5348.两个数组间的距离值
查看>>
[Kick Start 2020] Round A 1.Allocation
查看>>
[Kick Start 2020] Round A 2.Plates
查看>>
Leetcode C++ 《第181场周赛-1》 5364. 按既定顺序创建目标数组
查看>>
Leetcode C++ 《第181场周赛-2》 1390. 四因数
查看>>
阿里云《云原生》公开课笔记 第一章 云原生启蒙
查看>>
阿里云《云原生》公开课笔记 第二章 容器基本概念
查看>>
阿里云《云原生》公开课笔记 第三章 kubernetes核心概念
查看>>