Oracle

該數據庫在企業裏普遍應用

1.Oracle的發展史

     1.1:1970年IBM的codd提出關係模型理論。

     1.2:Larry Ellison、Bob Miner、Ed Oates+Bruce Scott組成的SDL(software development laboratories)研究出的第一個Demo產品取名爲Oracle

     1.3:SDL更名爲RSI(relational software Inc),併發布了用於特定系統的商用Oracle2.0。

     1.4:RSI更名爲Oracle;Oracle3.0具有可移植性、事務處理單元、非阻塞查詢、SQL語句。

     1.5:Oracle4.0、Oracle5.0改善數據庫的穩定性。

     1.6:重寫數據庫核心的Oracle6.0bug衆多,性能不穩。具有行級鎖、PL/SQL語言、聯機熱備份

     1.7:Oracle7.0具有分佈式處理、基於開銷的優化器

     1.8:Oracle8i支持Internet、java;Oracle9i支持RAC(多機單服務器)

     1.9:Oracle10g數據庫網格計算功能。

     1.10:Oracle11g數據壓縮技術、

 

 

2.Oracle的結構——實例與數據庫是怎樣的對應關係一對一還是多對一


 2.1:實例——內存結構和後臺進程

       2.1.1:內存

           2.1.1.1:PGA(program global area)——存放服務器進程的數據和控制信息。

                  2.1.1.1.1:排序區(sort area)——排序的信息。

                  2.1.1.1.2:會話信息(session informaiton)——會話的權限、角色,會話的性能統計信息

                  2.1.1.1.3:遊標狀態(cursor state)——當前SQL的狀態;指針

                  2.1.1.1.4:堆棧空間(stack space)——會話的變量信息

           2.1.1.2:SGA(system global area)——可以提高效率和性能

                  2.1.1.2.1:數據庫緩存區(database buffer cache)——緩存命中;減少數據存取時造成的磁盤讀寫動作。

                  2.1.1.2.2:重做日誌緩衝區(redo log buffer)——對數據庫的修改按序記錄在緩衝區中。

                  2.1.1.2.3:共享池(shared pool)——library cache(SQL編譯代碼)+dictionary cache(數據字典)

                  2.1.1.2.4:java pool

                  2.1.1.2.5:large pool

 

      2.1.2:進程

           2.1.2.1:數據寫進程(DBWR)

           2.1.2.2:日誌寫進程(LGWR)

           2.1.2.3:系統監控(SMON)——Oracle非正常關閉後,由smon進行必要的數據庫修復。

           2.1.2.4:進程監控(PMON)——失敗進程的清除。

           2.1.2.5:檢查點進程(CKPT)——當數據永久記錄時,更新控制文件和數據文件的數據庫狀態信息。

           2.1.2.6:歸檔進程(ARCH)——將已滿的日誌組備份或歸檔。

  

2.2:數據庫——一系列的物理文件和與之對應的邏輯結構
       2.2.1:物理(操作系統)——文件

           2.2.1.1:數據文件——邏輯數據庫對象

                    *Oracle數據——沒有Boolean和%type類型,對大小寫敏感,

           2.2.1.2:日誌文件——聯機重做日誌文件、歸檔重做日誌文件

           2.2.1.3:參數文件——激活前的配置參數

           2.2.1.4:控制文件——數據庫的實體信息

           2.2.1.5:口令文件——指令

       

       2.2.2:邏輯(數據庫內部)

           2.2.2.1:表空間()——業務系統

           2.2.2.2:段()——數據類型

           2.2.2.3:區(4塊)——最小分配(存取)單位;DB的塊與OS的塊成整倍數關係。

           2.2.2.4:塊(8k)——最小存儲單位

           2.2.2.5:

 

 

 

3.特點

   3.1:跨操作系統和硬件

   3.2:穩定性

   3.3:安全性

   3.4:高效率

   3.5:爲什麼選擇Oracle

         3.5.1:安全。

         3.5.2:數據量可以很大

         3.5.3:分析特別靈活,例如不同應用中的排名。

         3.5.4:性能調優手段很多

         3.5.5:Oracle發展好,國內應用廣泛。

         3.5.6:

4.數據字典中的數據庫對象

   4.1:數據字典(系統表)——對象描述的信息庫;只讀對象;

   4.2:模式(schema)——數據庫對象組合的一個集合;一個數據用戶只能有一個schema且與用戶同名。

   4.3:數據庫對象

         4.3.1:用戶:

         4.3.2:角色

         4.3.3:表空間

         4.3.4:表

               4.3.4.1:數據類型——char;varchar2;number默認38位;date;

 

         4.3.5:視圖(view)=虛表——從一個或多個表中通過查詢語句得到的結果,以表的形式存在。

               4.3.4.1:視圖對應的數據未實際存儲在數據庫中,只是在字典裏存放了視圖的定義。

               4.3.4.2:作用——封裝查詢語句;簡化複雜查詢;簡化權限管理;

               4.3.4.3:格式——create view 視圖名 as 查詢語句; 

         4.3.6:簇

         4.3.7:類型

         4.3.8:同義詞(synonym)=別名——儘量避免直接引用表、視圖、其它數據庫對象。

               4.3.8.1:分類——分爲公用的和私有(默認)的。

               4.3.8.2:格式——create public synonym 同義詞名 for 數據庫對象;

               4.3.8.3:數據庫對象組成——SYSTEM(px上的用戶).auths(SYSTEM用戶的對象)@PX(服務器).orcl(實例)

 

         4.3.9:序列(sequence)——與identity類似,但sequence解決了高併發的問題。

               4.3.9.1:格式——create sequence 序列名 increment by 步頻 start with 起數 maxvalue 止數

               4.3.9.2:屬性——nextVal/currVal(只是獲得當前的固定值,沒有nextval的輔助是無意義的)【SELECT ABC.NEXTVAL FROM DUAL;初始序列——>SELECT ABC.NEXTVAL FROM DUAL;獲得下一個序列——>SELECT ABC.CURRVAL FROM DUAL;】

               4.3.9.3:DUAL——默認只有一行一列;任何用戶都可使用;類似java中的超類object;屬於SYS schema的一個表,然後以PUBLIC SYNONYM的方式供其他數據庫USER使用 ;

                             *dual包含的信息——user(當前用戶);sysdate(系統日期);表達式計算後的值;序列號;

                             *

                             *

               4.3.9.4:查看序列信息——SELECT SEQUENCE_NAME,MIN_VALUE,MAX_VALUE,INCREMENT_BY,LAST_NUMBER FROM
USER_SEQUENCES;  

 

         4.3.10:索引

         4.3.11:數據庫鏈接

         4.3.12:存儲過程

         4.3.13:函數

                    4.3.13.1:sysdate——作用於數據的函數

                    4.3.13.2:to_date(日期串,日期格式,地區語言)——

                                 4.3.13.2.1:日期格式—— 'DD/MM/yyyy   HH24:MI:SS ';

                                        *YEAR——y;y的個數代表年的位數

                                        *MONTH——mm(純2位數)/mon(縮寫詞)/month spelled out(全詞)

                                        *DAY——dd(月中天)/ddd(年中天)/dy abbreviated(星期的縮寫)/day spelled out(星期的全詞)

                                        *HOUR——hh(1:00:00~12:59:59)/hh24(24小時制0:00:00~23:59:59)

                                        *MINUTE——mi

                                        *SECONDE——ss

                                        *Q(季度)/W(月中周)/WW(年中周)

                                 4.3.13.2.2設置時間語言——alter session set NLS_DATE_LANGUAGE='AMERICAN';==TO_DATE('2002-4-3','YYYY-MM-DD','NLS_DATE_LANGUAGE=AMERICAN');

                                 4.3.13.2.3:時間差—— select floor(sysdate-to_date('20020405','yyyymmdd'))from dual;

                                 4.3.13.2.4:next_day(date,day);

                                 4.3.13.2.5:extract()——找出時間段或日期的字段值

                                 4.3.13.2.

                    4.3.13.3:to_char(數字值,格式,返回字符)   

                                  *NLS_NUMERIC_CHARACTERS="d(小數點)g(分組)"       

                                  *NLS_CURRENCY="NUD"——本地貨幣

                                  * NLS_ISO_CURRENCY  =TERRITORY——國際貨幣

                                  *格式——fm:去空格;0起佔位作用,9對應的位置有才顯示無則影藏。              

                    4.3.13.

                    4.3.13.

                    4.3.13.

         4.3.14:包

         4.3.15:觸發器

 

 

 

5.Oracle執行SQL

    5.1:語法檢查

    5.2:語義檢查——訪問數據字典,檢查訪問對象存在否+是否有權限

    5.3:SQL解析——生成解析樹、執行計劃——存放在library cache的共享SQL區

     *私有SQL——專用服務器連接(PGA)/共享服務器連接(SGA)

    5.4:執行SQL,返回結果。

6.遠程訪問oracle的配置

     6.1:打開工具net manager

     6.2:配置LISTENER——監聽的遠程服務器和端口(1521)

     6.3:在服務命名中新建服務——給予引用名,服務器ip,oracle服務名(從oracleservice服務的屬性中的可執行文件路勁的最後一個單詞)

     6.4:打開服務TNSListener;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章