伴隨建庫的亞洲杯——祝福中國隊,建庫亞洲杯中國隊

來源:互聯網
上載者:User

伴隨建庫的亞洲杯——祝福中國隊,建庫亞洲杯中國隊

原創作品,出自 “深藍的blog” 部落格,歡迎轉載,轉載時請務必註明以下出處,否則追究著作權法律責任。

深藍的blog:http://blog.csdn.net/huangyanlong/article/details/42869063

 

        黑龍江的建庫之旅,讓北漂的我有了一段喘息和舒緩的平坦期。更高興的是在緊張的工作之餘,就在未留意間,亞洲杯開賽了。

       今天帶著一種期待中國隊下一個亞洲杯對手的心態,看了A組的這場韓國對澳大利亞的焦點戰。讓我沒有想到的是,先佔據主動權的竟然是韓國隊,雖然澳大利亞失球後將老將卡希爾派上了場,並且之後也開始了一股又一股潮水般的反撲,但最終也沒能改變結果。隨著巴林的主裁判吹響比賽結束的哨聲,韓國隊以1:0的比分戰勝了奪冠大熱門澳大利亞隊。“演雜”了的澳大利亞人敗給了我們的“亞洲”本土球隊,雖然有一絲欣慰,但另一方面,也就意味著在八強淘汰賽中,澳大利亞將成為我們的下一個對手。面對這隻被視為最俱實力與主場優勢的球隊,我們將有一場硬仗要打了。

       繁雜的工作中,腦海中略過一絲絲的閃光點,想想這中國隊的比賽與oracle技術或多或少有著那麼一點點的聯絡與對應。

 

點滴一:

建庫基礎操作:資料表空間、使用者、建表

足球比賽要素:戰術、球員、配合

1-1 資料表空間

CREATE TABLESPACE TBS_HYL_PERSON

    LOGGING

    DATAFILE '+OCR_DATA/HYL/TBS_HYL_PERSON ' SIZE 1000M AUTOEXTEND

    ON NEXT 100M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL

    SEGMENT SPACE MANAGEMENT AUTO;

--常用的建立資料表空間的sql

映射出中國隊的打法體系,使用雙後腰對後防的保護,在先前的兩場比賽裡,充分得到了體現,有沒有點規劃資料表空間布局的意思,如下面:

映射到資料庫中的資料表空間規劃,有沒有點相近的地方,如下面:

1-2 使用者

CREATE USER hyl IDENTIFIED BY hyl

DEFAULT TABLESPACE TBS_HYL_PERSON

TEMPORARY TABLESPACE TBS_HYL_TEMP;

--常見的建立使用者的sql,預設資料表空間設定為TBS_HYL_PERSON,暫存資料表空間設定為TBS_HYL_TEMP

映射到中國隊,教練佩蘭和我們的小夥子們,像下面這樣中國隊的陣容:

圍繞在佩蘭主教練身邊的中國小夥子們,團結協作正是勝利的保障,回想起某一個大型應用系統下,那多使用者互相訪問、管理的情境,有沒有點相近,就像下面:

1-3 建表

create table TB_HYL_USER

(id varchar2(32),

name varchar2(32),

id_no number,

loadtime date default sysdate

)

tablespace TBS_HYL_PERSON

  pctfree 10

  initrans 1

  maxtrans 255

  storage

  (

    initial 64K

    next 8K

    minextents 1

    maxextents unlimited

  );

對於建表,我們在業務系統裡,會針對不同的業務設計不同的資料表空間,同樣在中國隊的比賽中,小夥子們也會有不同的進球方式,如自由球、角球、十二碼、直塞球、二過一、單刀球、世界波球等等。

點滴二:

建庫資料處理:常用的類型轉換、垃圾資料處理、重複資料處理

實戰的關注點:穩固戰術體系以慢制動、減少失誤、找準時機掌握比賽節奏以動制動

 

2-1 ORA-01861文字與格式字串不匹配

現象:Oracle插入時間時,報錯:ORA-01861:文字與格式字串不匹配

這個報錯往往出現在插入時間資料時,由於源端資料是諸如“2008/07/28”這種格式之類,在向DATE類型插入資料時,往往會報此類錯誤。

解決方案很簡單,使用to_date對其進行轉換即可,文法如:to_date('欄位名','yyyy-mm-dd hh24:mi:ss')。 

映射:足球比賽上,想想這種格式轉換關係,當對手的節奏變快時,我們中國隊採用的是掌握主動權的方式,通過控球將節奏壓下來。皮球就這樣在經過中國小夥子一次一次轉換之後,把比賽節奏成功的拉回到我們適應的節奏下。這就是穩固的戰術體系,以慢制動。

 

2-2時間類欄位出現垃圾值

這個其實很簡單,如果你在查看資料時足夠細心,就會發現諸如2098年這類垃圾資料。所以我們要對其進行處理,如果是單純的時間超過,這個倒是比較好解決,如用以下指令,將其尋找出來:

SQL> select dengjishijian from table1 where dengjishijian>to_date('20150101','yyyy-mm-dd');

--假設今天的時間是2015年1月1日,這樣很容易查看出時間超出當前的時間點的垃圾時間值

        除了這個比較簡單的情況外,有時我們也會遇到諸如“20130241”這類格式的資料,明顯2月份不會有41日,這也是垃圾資料,或有時出現了“2103年11月1日”之類存在中文的,在做資料幫浦時有時也需要處理才可以成功的插入到DATE類型的欄位下。我們可以編寫一個簡單的預存程序,用來尋找出這些垃圾欄位,舉個例子如下:

編寫預存程序:

create or replace function isdate(p_in varchar2,f_in varchar2)

return varchar is

       scrub_dt date;

begin

       scrub_dt := to_date(p_in,f_in);

       return 'Y';

exception when others then

        return 'N';

end;

/

SQL> select start_date from FLUSH_TEST_DATE where isdate(start_date,'yyyymmddhh24miss') = 'N';

--執行這條語句,便可以查看出不符合數字日期格式的資料這裡的N正是調用了預存程序中,把不符合日期格式的欄位拋出來。 

映射:在足球比賽中,失誤是在所難免的,但我們要盡量減少失誤,並且在某個失誤之後通過團隊的其它成員來彌補一個球員失誤帶來的致命後果。同樣,就像資料庫中的垃圾資料一樣,垃圾資料的產生有時產生是不可避免的,但這就需要我們靈活、正確處理才可以了。

 

2-3  完全重複資料

如果發現庫裡有重複資料,一定要同業務研發相關人員確認好後再做處理。

有時如果拋離開了業務,很可能錯誤理解重複資料的意義,因為也許產生的重複資料是有意義的。

在確認要重複資料刪除資料時,我們可以採取諸如下面這種方法用來查詢,舉例如:

SQL> select * from table_test where count_id in(select count_id from table_test group by count_id having count(count_id)>1);

--這個sql中的子查詢使用having作為條件查詢出某個欄位重複大於1的count_id,然後再通過這個count_id,把滿足count_id欄位相同的資料查詢出來

 

映射:有時候資料庫中會出現完全重複的資料,這個有可能是資料來源於另外的資料庫,重複抽取造成的,這就需要我們做出判斷,並將重複資料儘快清除才可以,要以動制動。在中國隊的比賽中,我們也是這樣的,不能永遠都以慢制動,有時候需要以動制動,對抗烏茲別克的那場比賽,當烏茲別克以一球領先,並且想要控制住比賽節奏的時候,中國隊的小夥子利用速度衝出一次次有威脅的進攻,並且最後成功扭轉乾坤,這便是我們不只是會以慢制動,我們也可以以動制動。O(∩_∩)O哈哈~

 

點滴三:

上線業務的最佳化:關聯欄位索引建立

中國長遠的目標:為2018年俄羅斯世界盃預選賽練兵

 

建立索引

create index idx_TB_HYL_USER_id on TB_HYL_USER (id);

create index idx_TB_HYL_USER_DM4 on TB_HYL_USER (SUBSTR(HYL_USER_DM,0,4));

--對於長數字代碼,例如地區編碼之類的,我們可以通過截取欄位來建立索引

       在業務應用中,往往存在著大量關聯查詢的sql語句,這時我們就要結合業務系統,儘快作出判斷,如果有條件先做一次測試,然後及時的在生產庫上建立相關索引,來緩解業務中的壓力。這是一項必要做的準備。

 

映射:資料庫的最佳化向來都是大事,可以協助業務系統起死回生,而我們這支年輕的國字型大小球隊同樣需要作出最佳化,建立起成型的打法體系,讓球員們形成默契,這需要教練員的戰術規劃,需要小夥子們努力,我們期待著。。。

         中國隊這次亞洲杯的表現,真可以說是讓人眼前一亮,這些年輕的小夥子們,在這屆杯賽上,讓球迷們又重拾了對於國家隊的期待。原本這種期待一直都存在著,只是苦於中國隊過往的表現總是讓球迷們失望,而這一次,希望我們的中國小夥子們放下包袱,不要被過往輿論的壓力所影響,勇往直前,真希望可以看到他們在澳大利亞會師決賽。

 

祝福中國隊,在亞洲杯上可以走的更遠,希望2018年,中國隊,我們期待,在俄羅斯,可以一同預見~~~~

 

深藍記於2015年1月17日

 

聲明:

        這不是單純的技術文檔,既然學來幾招 oracle簡單招式,就忍不了在人前賣弄幾下。純為茶餘飯後與數朋庫友的插科打諢,只為輕鬆中帶有一絲的詼諧,IT技術也能用來調侃一番,還蠻耐人尋味。

        同時近來數月oracle知識點忘記了不少,為了把知識點重現,點滴間偶出靈感乍現,以一種自由的形式將其發布,由於本人學藝不精,文中列舉的例子或故事,其中必然會有與技術聯絡牽強之處,望大家海涵。只當是一部小菜鳥的雜記,不要把這當做單純的技術文章喔,親!看過、笑過,就好。

         歡迎拍磚,這將是我成長的最大動力。

 

原創作品,出自 “深藍的blog” 部落格,歡迎轉載,轉載時請務必註明以下出處,否則追究著作權法律責任。

深藍的blog:http://blog.csdn.net/huangyanlong/article/details/42869063

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.