日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

创建表分区的总结

發布時間:2025/5/22 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 创建表分区的总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近接手一個需求,需要展示主機的性能值(指主機的CPU利用率)主機60臺,每臺10分鐘產生條記錄。每天數據量60*6*24=8640 一年300W條記錄 結合一些業務要求 展示數據時間大概要10秒左右。不符合顧客需要,所以就需要進行優化改造。方法肯定很多,自己想到的就是一個用java開源的分布式框架來做,但是有點大材小用的感覺。于是就考慮對表進行分區來提高查詢速度。以下就是本人對表分區過程的介紹及其遇到的各種問題的解決方式,希望對大家有所幫助!

對于表分區可以通過重建表,交換分區和在線重定義的方式來實現

具體參考http://blog.itpub.net/post/468/13091

我采用最保守的重建表的方式來實現

首先是創建表空間

1 /*1.創建表空間*/ --autoextend on 2 CREATE TABLESPACE CPU_201112 3 DATAFILE 'F:\ORACLE\ORADATA\NGNMC\CPU_201112.DBF ' SIZE 100M REUSE; 4 /*CREATE TABLESPACE CPU_201201 5 DATAFILE 'F:\ORACLE\ORADATA\NGNMC\CPU_201201.DBF ' SIZE 100M REUSE; */ 6 CREATE TABLESPACE CPU_201202 7 DATAFILE 'F:\ORACLE\ORADATA\NGNMC\CPU_201202.DBF ' SIZE 100M REUSE; 8 CREATE TABLESPACE CPU_201203 9 DATAFILE 'F:\ORACLE\ORADATA\NGNMC\CPU_201203.DBF ' SIZE 100M REUSE; 10 CREATE TABLESPACE CPU_201204 11 DATAFILE 'F:\ORACLE\ORADATA\NGNMC\CPU_201204.DBF ' SIZE 100M REUSE; 12 CREATE TABLESPACE CPU_201205 13 DATAFILE 'F:\ORACLE\ORADATA\NGNMC\CPU_201205.DBF ' SIZE 100M REUSE;

? 查詢創建的表空間

select * from user_tablespaces

Ps:
這里可能會遇到ora-01119的錯誤
原因是表空間創建的路徑必須要正確

?

/*2.刪除表空間*/

--DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;--推薦刪除contents 然后在手動刪除datafiles

刪除表空間不是都可以的哦 親,

造成這種原因基本是這個分區的數據包含了別的分區的數據

?3.創建表分區? ? ? ? ? ?

1 create table host_cpu_new partition by range(intime) 2 3 (partition p1 values less than(to_date('2011-12-30','yyyy-MM-dd')) TABLESPACE CPU_201112, 4 5 -- partition p2 values less than(to_date('2012-01-1','yyyy-MM-dd')) TABLESPACE CPU_201201, 6 7 partition p3 values less than(to_date('2012-02-1','yyyy-MM-dd')) TABLESPACE CPU_201202, 8 9 partition p4 values less than(to_date('2012-03-1','yyyy-MM-dd')) TABLESPACE CPU_201203, 10 11 partition p5 values less than(to_date('2012-04-1','yyyy-MM-dd')) TABLESPACE CPU_201204, 12 13 partition p6 values less than(to_date('2012-05-1','yyyy-MM-dd')) TABLESPACE CPU_201205 14 15 )as select * from host_cpu

由于目前數據只到4四月份 且11年的數據不多

所以分區創建的思路就是將11年的數據全放到一個分區 基本也不會用到

12的數據按月來分區

可是因為一時的疏忽 注意12月份可是有31的天 親

而p2的分區是我后面加的

結果悲催的事情來了 這也是我為什么要寫這篇文章主要的原因

當界面查詢1月份的數據的時候 發現出現了12月份的數據

親 你知道為什么嗎?單獨查詢sql發現是不會有問題的

Select * from host_cpu_new where intime>=to_date(‘2012-01-01 00:00:00’,’yyyy-MM-dd HH24:mi:ss’)

And intime<??????????????????????????? to_date(‘2012-02-01 00:00:00’,’yyyy-MM-dd HH24:mi:ss’)

Java程序調用的時候結果出現了12月份的數據 想來

Java查詢的時候查詢了兩個分區也就是p2和p3的數據了

后悔呀 只能把P2的分區給刪除了 發現暴ora-14404的錯誤

也就是這個分區包含了其他分區的數據

沒辦法 只能重新重建一次了 當然也可以選擇合并分區啦?

最后的一點操作

Truncate table host_cpu

drop table host_cpu

?alter table host_cpu_new rename to host_cpu;

完成操作

Ps 在去查詢的時候 發現展示的時間縮短了大概2/3 嘻嘻。

由于期間遇到誤刪除表數據的情況 悲啊 什么情況

http://soft.chinabyte.com/database/161/12309661.shtml

如果是10g還可以這么做

select timestamp_to_scn(to_timestamp('表刪除的時間','YYYY-MM-DD HH24:MI:SS')) from dual; --return scn

create table tablename as select * from tablename AS OF SCN ?scn(第一條SQL執行返回的scn結果)

?

關于更多表分區的知識

Oracle 分區表的新增、修改、刪除、合并。普通表轉分區表方法?;

http://adamxgl.blog.163.com/blog/static/29094652011117111221690/

刪除表空間失敗

http://topic.csdn.net/u/20100714/16/b9beb58e-0dd0-4653-9784-7fb7a71eb260.html

快速刪除表空間

http://apps.hi.baidu.com/share/detail/15357973

表空間操作的簡單介紹

http://blog.sina.com.cn/s/blog_53d1a7710100072u.html

轉載于:https://www.cnblogs.com/draem0507/archive/2012/04/26/2471737.html

總結

以上是生活随笔為你收集整理的创建表分区的总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。