欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Oracle學(xué)習筆記

 Oracle 學(xué)習筆記收藏

Resource:

www.itpub.net

www.oradb.com

www.chinaunix.net

 

Oracle 服務(wù)器端組成:

1.內存中的instance (數據庫對應的實(shí)例)

2.磁盤(pán)上的database (數據文件,日志,參數文件…)

對應關(guān)系: 1:1(單實(shí)例) , N:1(集群RAC,每個(gè)主機一個(gè)數據庫實(shí)例,共享一個(gè)磁盤(pán)陣列)

 

Listener

運行于服務(wù)器上,用于客戶(hù)機遠程連接數據庫,支持多協(xié)議,TCP/IP對應默認端口為1521

 

DML  CRUD(insert,select,update,delete)

DDL  alter,create , drop…

TCL (transactioncontrol lang )  commit, rollback,savepoint

DCL  (datacontrol lang)      grant revoke

 

網(wǎng)絡(luò )配置助手 net configuration assistant, netca)設置本地Net服務(wù). 登陸遠程服務(wù)器。

也可以直接修改xxxx.ora文件,復制到指定目錄,通助手設置效果相同。

C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN

sqlnet.ora

tnsnames.ora 解析數據庫名在oracle中使用類(lèi)似DNS的方式,該文件作用類(lèi)似于網(wǎng)絡(luò )中的host文件

 

Cmd 連接數據庫sas

sqlplus /nolog (不登陸,只是打開(kāi)sqlplus)

conn oe/oe@sas

或者

sqlplus oe/oe@sas

 

管理員登陸

conn sys/pwd@sas assysdba

 

如果用戶(hù)在操作系統的權限很高,可省略用戶(hù)名和密碼。conn / as sysdba;

 

 

 

 

 

查詢(xún)語(yǔ)句

數據庫與關(guān)系代數的關(guān)系、

 

字符串區分大小寫(xiě),如果不清楚大小寫(xiě),用upper/lower函數

Select * from employees where upper(last_name) = ‘KING’;

但是如果sqlwhere 語(yǔ)句后的等號左邊存在函數,則oracle中對該字段的索引無(wú)效,走全行掃描,性能低。

字符串使用單引號

 

Oracle中的字典表(比如當前用戶(hù)下的各個(gè)表對象組成的表),字典表中對象的名字都是大寫(xiě)。

select table_name from user_tables; --user_tables就是個(gè)字典表

select * from user_tables where table_name = 'CUSTOMERS';--CUSTOMERS是大寫(xiě)

 

空值NULL 不知道是什么

一個(gè)運算表達式中,只要存在一個(gè)空值,結果一定是Null.

由于空值的存在會(huì )導致運算的麻煩,設計時(shí)應當盡量避免空值產(chǎn)生。

注意

T and NULL = NULL,  F and NULL = F,

因為NULLT還是F未知,T & T =T, F&T = F, 因此結果無(wú)法判斷,是null

但是T&F= F&F = F, 因此 null & f =f

 

 

列的別名

在列的名稱(chēng)后可以緊跟別名或者使用可選的關(guān)鍵字AS放在列名和別名之間

如果別名包含空格或特殊字符或對大小寫(xiě)敏感,需要雙引號引用

 

*表空間備份之前,要設置表空間進(jìn)入備份模式

alert tablespace  tbs01 begin backup;

一個(gè)一個(gè)做很麻煩,可以這樣

 

Select  name from v$tablespace; 獲得所有表空間

Select ‘alter’ || name|| ‘ begin backup’ from v$tablespace;

則得到生成的語(yǔ)句串

 

要保存到文件,利用假脫機功能

spool c:\script.sql

set head off – 去掉結果中的標題,還有很多類(lèi)似的設置

select ‘alter’ || name|| ‘ begin backup’ from v$tablespace;

spool off

 

 

count 的問(wèn)題

select count(department_id) from (select distinct department_id from employees)

select count(*) from (select distinct department_id from employees)

如果department_id有為空的,那么結果不同,原因是count(department_id)會(huì )不計算空值的行。

可以理解為department_id列結果集中計算有多少個(gè)有值的行。

count(*)把結果集中所有的行都算上,而不管行中的列有沒(méi)有值。

其中前者可簡(jiǎn)化 select count(distinct department_id) from employees;

單引號字符串使用單引號,當數字與字符做比較時(shí),也可以給數字加上單引號來(lái)說(shuō)明是作為字符來(lái)比較,不是必須的。

一般多行函數都會(huì )先把空值去掉再做計算。比如AVG,SUM等。

 

日期是格式敏感的

默認格式是dd-mm-yy

to_date(1987-01-12,yyyy-mm-dd) 可將習慣的時(shí)間格式轉換為日期

Oracle 的時(shí)間抽取函數 extract (year from hire_date)

 

 

ORDER BY select 語(yǔ)句最后出現

默認ASC,多列排序 修飾符只修飾緊前一個(gè)。

 

NLS : national - language - support

 

修改會(huì )話(huà)設置

alter  sessionset xxx = xxx;

優(yōu)先級 會(huì )話(huà)設置 > 環(huán)境變量 > 服務(wù)器默認值

數據類(lèi)型轉換

VCHAR VARCHAR2 一樣。VCHAR2 Oracle 自己定義的,方便日后升級。

隱藏數據類(lèi)型轉換也會(huì )導致某字段索引失效。

 

set autotrace on 追蹤執行計劃, 查看語(yǔ)句執行過(guò)程。

 

to_char, to_number,to_date

 

空值的問(wèn)題,即導致上面COUNT問(wèn)題的原因。很多函數會(huì )先去掉空值的行。

可使用NVL來(lái)給空值指定一個(gè)值。

NVL(arg1,arg2) 其中arg1,arg2的值類(lèi)型必須相同(可以用函數轉換解決不同類(lèi)型匹配)

例如 NVL(to_char(manager_id),‘NO MANAGER’);

 

 

CASE DECODE 只能處理簡(jiǎn)單的邏輯分支,復雜情況可使用PL/SQL。

 

連接:

等值連接即內連接

外連接

 

外連接: 左連接,右連接( 根據表在逗號的左右判斷)

完全外連接(等值++右的結果)

 

語(yǔ)法:字段(+), 如果(+)在等號右邊,則是左外連接,否則反之。 注意(+) 與左右概念是相反位置的。

 

分組

所有在SELECT列表中出現的列,如果未使用組函

數,那么它必須出現在GROUPBY子句中

 

where having 區別

Where 在分組之前、針對每行進(jìn)行篩選。

Having 在分組后、對分組運算結果進(jìn)行篩選

因此:

  你無(wú)法通過(guò)WHERE子句限定組

  使用HAVING子句可以限定組

  不能在WHERE子句中使用組函數

Select

Select  department_id,job_id , count(*)from employees group by deparment_id, job_id;

分組的擴展關(guān)鍵字

Rollup(上卷)  rollup(a,b,c)  分別按照a,b,c  a,b  a all 進(jìn)行分組。若有n個(gè)字段,則分組n+1次。如下測試:

Select  department_id,job_id, count(*) from employees

group byrollup(deparment_id, job_id);

department_id, job_id

department_id

all

 

Cube  2^n 種分組情況。 Cube(department_id,job_id)

四種情況

department_id, job_id

department_id,

job_id

all

 

如果沒(méi)有這兩個(gè)關(guān)鍵字,可以使用union all 將多個(gè)情況的結果構造并集,但是麻煩。

 

單行子查詢(xún)必須返回一行數據(空行和多行都不允許)> < = <> >= <=

多行子查詢(xún) ANY, IN ,ALL

 

Create table t1 as select * from employees;

Create table t1 as select * from employeeswhere 1=0; 只復制結構

上述方式不會(huì )復制外鍵,索引,主鍵等約束。

 

刪除表內容:

delete from t1;    DML不自動(dòng)提交 除非正常關(guān)閉sqlplus.

truncate table t1 (oracle 自帶);  DDL

空間管理:delete 刪除數據后不釋放空間, truncate釋放空間。

重做數據:delete 生成,寫(xiě)日志,生成undo data (可能慢),truncate 不生成

Undo data 更新前的舊數據,在撤銷(xiāo)表空間

Redo data 更新后的新數據

Oracle sqlplus中的事務(wù):

         以第一個(gè)DML SQL語(yǔ)句執行開(kāi)始

         以下面的事件為止

    —COMMIT或者ROLLBACK語(yǔ)句被執行

    一個(gè)DDL或者DCL語(yǔ)句執行(自動(dòng)提交)

    用戶(hù)退出SQL*Plus

系統崩潰

 

使用COMMITROLLBACK語(yǔ)句,你可以

         確保數據一致

         在做永久改變之前可以預覽數據改變

         組邏輯上的相關(guān)操作

 

COMMIT之后的數據狀態(tài)

         數據庫中數據的改變被永久化不會(huì )丟失,即使系統崩潰。

         事務(wù)結構,舊事務(wù)狀態(tài)被清除,新事務(wù)開(kāi)始。

         舊事務(wù)中的鎖定的行被釋放,這些行現在可以被其它用戶(hù)進(jìn)行操作。

 

Rollback之后數據的狀態(tài)

         數據的改變被撤回

         數據先前的狀態(tài)被還原

         受影響行上面的鎖被釋放

 

在下列環(huán)境下自動(dòng)提交會(huì )發(fā)生

    —DDL語(yǔ)句被執行

    —DCL語(yǔ)句被執行

    SQL*Plus中的正常退出,沒(méi)有顯式執行COMMIT或者ROLLBACK語(yǔ)句

         SQL*Plus非正常結束或者系統失敗,自動(dòng)回滾發(fā)生。

 

DB 內部調度要遵循可串行化規則,前后順序不能變。(參考老胡的PPT

ORACLE事務(wù)的隔離級別(獨立方式) 讀已提交、連續讀(可串行化)

 

沒(méi)有提交的數據,其他用戶(hù)是看不到的,即處在 讀已提交 隔離級別。

可能出現 不可重復讀 現象,即兩次讀取的數據可能不一樣(被更新了)

 

Oracle 的語(yǔ)句一致性(多版本并發(fā)控制,不同于其他DB):

1 語(yǔ)句級別一致性, 當執行一個(gè)語(yǔ)句,數據與按下回車(chē)的那一刻是一致的。

2 事務(wù)一致性,得到的數據與事務(wù)開(kāi)始的那一刻是一致的。

 

默認在語(yǔ)句級別的一致性。

事務(wù)一致性在可串行化級別中實(shí)現。同一個(gè)查詢(xún),在一個(gè)事務(wù)中得到的結果是一樣的,看不到別人的修改。

OracleSQLSERVER/DB2 處理方式不同, 事務(wù)A開(kāi)始后,Oracle允許B修改事務(wù)A的數據,而SQLSERVER/DB2 會(huì )掛起B的操作直到A事務(wù)完成。如果B修改了A的數據,A可能無(wú)法再修改那些數據,因為無(wú)法保證可串行化。

 

不可重復讀與幻象讀

不可重復讀:對原有數據的修改被讀取

幻象讀:原有數據不變,添加了新的數據后被讀取

Level                                           dirtiy read        nonreaptableread     phantom read

Read uncommitted

不加鎖

 

Read commited

鎖定當前游標所處理的記錄

 

Repeatable read

鎖定當前處理的數據

 

Serlizable

鎖定事務(wù)

 

鎖:        share      exlusive

Share         y          y       

Exlusive                  n

Oracle redo data redo log,    undo data undo tablespace(公開(kāi)可訪(fǎng)問(wèn)),并發(fā)時(shí)其他人可能訪(fǎng)問(wèn)舊數據。Oracle中共享鎖和排他鎖可共存,即當事務(wù)A寫(xiě)數據X并且未提交時(shí),

事務(wù)B可以訪(fǎng)問(wèn)X的舊數據(共享讀),但是不能寫(xiě)X(排他寫(xiě))。

其他db 新舊數據都在redo log, 并發(fā)時(shí)只能等待。

Oracle不會(huì )預防死鎖,但是會(huì )檢測,死鎖必然是業(yè)務(wù)邏輯造成的。

 

鎖的升級:MSSQLServer,DB2 會(huì )將鎖保存到鎖鏈表中,可能會(huì )將整個(gè)表鎖住。

Oracle不做鎖的升級。

 

請求鎖而得不到操作會(huì )被阻塞。

查詢(xún)時(shí)加鎖(悲觀(guān)加鎖)  select xxx from yyy for update;

Oracle DML鎖、DDL鎖、內部鎖(栓) 三類(lèi)鎖。

栓用于鎖定內存結構,

一般鎖可能持續很長(cháng)時(shí)間,栓持續時(shí)間很短。

鎖一般是隊列方式獲得鎖

栓是搶先機制,無(wú)隊列

 

字典表

用戶(hù)下的User_table, user_view, user_xxxxx…

管理員的 Dba_table,…

所有有權限訪(fǎng)問(wèn)的 Full_table,….

 

約束

表間外鍵約束,進(jìn)行如下操作該表是否受約束影響

         Ins  upd  del

  n    y    y

  y    y    n

約束不能修改 ,只能刪除重建

視圖

虛表,只包含一個(gè)查詢(xún)公式,每次訪(fǎng)問(wèn)時(shí)都執行公式一次。

簡(jiǎn)單視圖可以通過(guò)視圖的DML操作改變基表,然而也不一定,例如

T1

x int not null, y int

 

v1

select y from t1;

 

如果對v1進(jìn)行插入操作,由于x not null的存在,將無(wú)法進(jìn)行插入。

可以使用替代觸發(fā)器(取消用戶(hù)的操作,以其他操作來(lái)替代)來(lái)解決,當插入操作進(jìn)行時(shí),自動(dòng)設置x的值。

 

With check option 語(yǔ)句根據創(chuàng )建視圖時(shí)的where語(yǔ)句條件劃定的集合,對DML進(jìn)行限制,如果修改的數據不符合這個(gè)條件,則拒絕DML操作。

 

TOP-n分析

y最大的前三個(gè)。

Select * from t1 whererownum <=3 order by y desc;

上述寫(xiě)法錯誤,因為語(yǔ)句先按照where篩選,只得到前三行數據,因此結果錯誤。

利用

Select * from (select *from t1 order by y desc) where rownum <=3;

或者將子查詢(xún)用視圖臨時(shí)保存下來(lái)。

 

注意! 當訪(fǎng)問(wèn)某行且條件不滿(mǎn)足時(shí),rownum不會(huì )增加,因為rownum是結果集的行號!因此不能使用between and 來(lái)查詢(xún)中間第xx yy范圍的數據。

可以使用集合minus來(lái)查詢(xún)中間范圍段.

 

序列的nextval,curval 都不可以更改,只能刪掉重建。

 

查看執行計劃

Set autotrace on

當開(kāi)始一個(gè)查詢(xún),系統首先查詢(xún)字典表獲取一些信息(recursive calls 遞歸調用次數)。

當獲取這些信息后,會(huì )緩存到內存,下次查詢(xún)該表時(shí),遞歸調用開(kāi)銷(xiāo)就小了。

 

十三章 優(yōu)化部分不作要求。

基數(一個(gè)字段值中不重復值的個(gè)數)

Btree 索引: 適用于高基數的字段, 等值查詢(xún)

Bitmap索引 適用于大量重復值,低基數的字段上, 大量邏輯條件判斷。

 

Hash索引. Oracle不允許。

 

集合運算

Union(合并時(shí)會(huì )去掉重復值, 后臺會(huì )排序可能影響效率), union all(不去除重復值).

Intersect 交集

Minus 相減

 

 

PL/SQL

SQL的擴展,用于程序設計語(yǔ)言。

數據查詢(xún),維護SQL語(yǔ)句包含在存儲過(guò)程中,作為代碼組成部分。

 

游標和活動(dòng)集 就是 指針和數組的關(guān)系。

包有聲明和實(shí)現兩部分。

能處理的有: 存儲過(guò)程 函數 觸發(fā)器 等。

 

匿名塊 存儲過(guò)程 函數 觸發(fā)器

如果一個(gè)塊要被頻繁調用,應當寫(xiě)成存儲過(guò)程或者函數。

TIMESTAMP Date 更精確

用單引號界定字符串,字符串內的單引號用兩個(gè)單引號轉義。

NULL是真是假無(wú)法判斷。

 

組合數據類(lèi)型:

Tables 類(lèi)似數組

記錄record類(lèi)似于結構體。

 

PLSQL只允許DML語(yǔ)句執行,如果要執行DDL,要使用Execute immediate 來(lái)動(dòng)態(tài)執行語(yǔ)句。

(類(lèi)似于js eval ?)

 

Varchar2(30) 是按照字節分配的

Varchar2(30 char) 是按字符分配的(一個(gè)字符根據編碼不同占用字節數不同)

 

可變數組 VARRAY

聯(lián)合數組xxtype IS TABLE OF VARCHAR(20) INDEX BY BINARY_INTEGER 下標在正負范圍內隨便寫(xiě),根據表格屬性來(lái)訪(fǎng)問(wèn)下標。

 

 

….睡著(zhù)了

 

 

PL/SQL 中的select 只能獲取一行數據,沒(méi)有或者多行都是異常。

 

系統優(yōu)先將變量名解析為列,因此不要使用跟列名同名的變量名!

 

繼續走神。。。

 

 

條件空值語(yǔ)句

 

在判斷真假時(shí),出現NULL,無(wú)法判斷真假,在while, if 等判斷中都是只在值為真的時(shí)候才執行。

 

PLSQLfor 循環(huán)無(wú)法實(shí)現非1-1)步長(cháng)的循環(huán)。

循環(huán)中的循環(huán)變量是自動(dòng)增加的,且其作用域是在循環(huán)塊內,當與外部變量同名時(shí)覆蓋。

 

 

 

游標

游標分隱式和顯示。每條語(yǔ)句執行時(shí),都會(huì )產(chǎn)生游標。

隱式:在聲明DML PL/SQL SELECT 語(yǔ)句時(shí)自動(dòng)產(chǎn)生的游標。

顯示:在程序中定義。

 

Declare –>open >fetch <> empty ? >close

 

Declare

         Cursor cur_name IS

                   Select…;

BEGIN

Open cur_name;

Fetch cur_name intovar1, var2..;

Fetch cur_name intorecord_var1;

 

Close cur_name;

END

 

使用循環(huán)獲取多行數據。

1普通循環(huán),自己做open fetch close 操作

Open cur

LOOP

         Fetch cur into xxxx…;

         Exit when cur%NOTFOUND;

         Do something…

END LOOP;

Close cur;

 

2 用于游標的循環(huán) for in , 省略了open fetch close 操作,使用方式簡(jiǎn)潔。

游標不能重復打開(kāi),要再次打開(kāi),要先close

記住Forin 方式使用游標會(huì )自動(dòng)打開(kāi)游標。

Into 的列數要與cursor定義的一致。

游標使用完畢記得要關(guān)閉,以釋放內存。

FETCH 之后游標才移動(dòng)到該行,因為fetch之后還可以做NOTFOUND檢測。

游標取值失敗后,不會(huì )將之前的變量值覆蓋,可能造成數據重復。

 

參數游標 確定指向哪個(gè)表,但是查詢(xún)參數可變

         Cursor xx(v1,v1..) IS …;

         Open xx(val1,val2..);

參照游標 :不確定指向哪個(gè)表。

 

更新游標(for update & current of

Cursor cur_name is

         Select … forupdate; // 將字段悲觀(guān)鎖定

如果改成 select xx for update of xx; 則只鎖定某個(gè)字段。

Begin

….

Update xx where current of cursor_name;  更新游標指向的行。

 

游標與事務(wù)

  一般的游標不會(huì )產(chǎn)生鎖

  更新游標

      打開(kāi)游標前沒(méi)有鎖

      使用for update nowait檢測鎖的沖突

      打開(kāi)游標后產(chǎn)生鎖(TMRS,TXX

      關(guān)閉游標后,鎖直到commitrollback結束事務(wù)才釋放

  使用更新游標過(guò)程中不要COMMITROLLBACK(不用for update時(shí)沒(méi)事)

 

 

隱式游標可以使用%NOTFOUND屬性,但是不能用%ISOPEN

 

 

 

存儲過(guò)程,函數,觸發(fā)器,包

參數類(lèi)型

IN 當作常量使用,不允許作為左值出現, 傳參為引用類(lèi)型。

OUT/INOUT 左右都可以,傳參時(shí)會(huì )將值復制。

INOUT使用NOCOPY可以不復制,直接傳引用,提高效率。

 

存儲過(guò)程可以重載。

 

//走神中。。。

 

觸發(fā)器 審計

審計只要有操作就觸發(fā),且無(wú)論操作成功還是失敗

觸發(fā)器在insert,update,delete觸發(fā)。觸發(fā)器如果不提交,會(huì )被回滾。

觸發(fā)器可以觸發(fā)操作,而審計只會(huì )在日志中寫(xiě)入記錄。

For each row 加在creat xx … on yy 后面,則是行級別的觸發(fā)器,不加是語(yǔ)句級別的。

 

兩個(gè)記錄變量 冒號new/old

:new  update/insert時(shí),是將要插入或者更新的新數據,如果是delete則是空。

:old  如果是insert,則是空,如果是update則是更新前的數據,如果是delete, 則是要刪除的數據。

如果插入數據不合規范,可以對:new進(jìn)行整理,然后執行插入,則:new中的數據會(huì )插入行。

比如將序列用觸發(fā)器寫(xiě)入id值:

before update/insert 創(chuàng )建觸發(fā)器,執行

Select seq.nextval into:new.id from dual;

 

觸發(fā)器觸發(fā)順序:

1 語(yǔ)句級別的before

2 行級別before的觸發(fā)器,如果級別相同,先執行后定義的。

3 處理數據

4 行級別的after, 同級執行后定義的

5 下一行。。。

6 語(yǔ)句級別的after

 

觸發(fā)器級別

模式級別(用戶(hù)), 數據庫級別

 

Oracle 體系結構

實(shí)例,數據庫

----SGA 系統全局區

1.   shared pool 語(yǔ)句的解析、執行計劃的緩存池,適度大小

2.   Db buffercache 操作影響的數據塊,越大越好,命中率越高

3.   Log buffer Log積累到一定量一次性寫(xiě)入

4.   Large pool [可選] 備份/恢復的工作緩存區,如果沒(méi)有大池,則使用共享池

5.   Java pool[可選]  java應用的支持,分配給它的緩存

----background process 后臺進(jìn)程

         Smon 系統監視器(監視服務(wù)器)

Pmon 進(jìn)程監視器(監視客戶(hù)端)

Dbw(database writer 數據庫寫(xiě)進(jìn)程) 將內存里的臟數據塊寫(xiě)入磁盤(pán),臟數據即在內存中被修改的數據(與磁盤(pán)上不一致的)

數據庫的瓶頸就在內存與磁盤(pán)的讀寫(xiě)的(即IO),因此減少IO是數據庫設計的要點(diǎn)。

寫(xiě)數據的條件:

no free buffer

dirty  xxx 臟數據塊累計到一定量時(shí)

time out

tbs offline 離線(xiàn)表空間

LGWR 日志寫(xiě)進(jìn)程

1.   寫(xiě)觸發(fā)條件:

2.   Log buffer 1/3滿(mǎn)時(shí)

3.   生成 1M redo data 時(shí)

4.   Per 3 seconds

5.   Commit,定義ACID,指數據庫事務(wù)正確執行的四個(gè)基本要素的縮寫(xiě).包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。Commit 時(shí)寫(xiě)入日志保證事務(wù)操作的持久性。

6.   在數據庫進(jìn)程寫(xiě)之前,要將日志寫(xiě)磁盤(pán)。

Chpt  當檢測點(diǎn)出現,就一定要將內存中的臟數據寫(xiě)入數據庫。每隔一定時(shí)間要出現檢查點(diǎn),當出現問(wèn)題時(shí),可以回復到最后一個(gè)檢查點(diǎn)。 檢查點(diǎn)是性能和可恢復性之間的權衡。檢查點(diǎn)越頻繁,性能低,但是可恢復性強了。

Arch 歸檔

----PGA 程序全局區

         每個(gè)服務(wù)器進(jìn)程都有一個(gè)PGA, 排序操作就是發(fā)生在PGA內存中,由進(jìn)程自己使用。

----server process 數據庫進(jìn)程

 

 

DATABASE 數據庫:

Control file控制文件:包含很多重要的狀態(tài)信息,有多個(gè)相同的鏡像文件來(lái)保護這些信息,啟動(dòng)數據庫時(shí)要求幾個(gè)文件都在正常狀態(tài),寫(xiě)入時(shí)向幾個(gè)文件都寫(xiě)入。一般是兩三個(gè)文件,最好分配在不同的磁盤(pán)上。

 

Data file 數據文件:邏輯上跟表空間對應的,一個(gè)或多個(gè)數據文件構成一個(gè)表空間。一般以dbf坐后綴。

Log file

 

Initial parameter file  spfileSID.ora

Password file

 

繼續走神。。。。。。。

要明確的了解Oracle的體系結構

數據字典:字典表,動(dòng)態(tài)性能表

區別:名字,存儲,數據來(lái)源

怎樣使用字典表

DBA_xxx

Oe_xxx

用戶(hù),方案對象,存儲結構

一般是只讀。當我們執行DDL時(shí),由數據庫自己去修改字典表。

 

動(dòng)態(tài)性能表

V$為前綴。V$process , v$session, V$sga ….

記錄數據庫當前的活動(dòng)、狀態(tài)、標志等。由SYS用戶(hù)所有,不允許DML.

 

系統關(guān)閉后,字典表會(huì )保留在磁盤(pán),動(dòng)態(tài)性能視圖不會(huì )保留。

在優(yōu)化過(guò)程中,通過(guò)動(dòng)態(tài)視圖監控數據庫的話(huà),那么要保證在監控期間數據庫不間斷運行,應確定好采樣范圍是有代表性的。

 

 

 

 

數據庫存儲

Physical物理結構

1.   Data file, os block 組成。

 

Logical 邏輯結構

Db block( oracle 的塊,是os block的整數倍, db_block_size 參數決定, 例如16k, io 的最小單位),

多個(gè)db block 構成一個(gè)extend(擴展,或者叫區).

Extend 是空間分配的最小單位。
多個(gè)extend 構成一個(gè)段segment,段對應一個(gè)實(shí)際的對象,比如一個(gè)表,一個(gè)索引,但是視圖不是,視圖只是個(gè)定義,不會(huì )消耗磁盤(pán)空間??赡艹霈F一張表是由多個(gè)段構成的,比如分區表。

段再構成tablespace.

 

Table, index 可能跨多個(gè)db file進(jìn)行存儲,修改table,index的內容可能導致多個(gè)文件大小同時(shí)改變。

 

物理文件和表空間對應。

 

系統表空間

非系統表空間 見(jiàn)課件

 

空間管理方式:

DMT dictionary 字典管理表空間, 表空間的區的分配是由字典管理的。

LMT local 本地管理表空間, 區是由本地表空間來(lái)管理的。( 9+版本)

 

建議在Oracle中,有自動(dòng)選項的,盡量勾選。

不建議使用多個(gè)小文件來(lái)構建一個(gè)表空間,建議使用一個(gè)大文件來(lái)存儲。

 

 

Oracle 自動(dòng)管理空間方式

Dba_segments 段字典

Dba_extends 區字典, 區的大小是根據數據量調整的。

 

Pctfree

Pctused

當一個(gè)塊裝滿(mǎn)后,某條記錄數據增多,會(huì )導致行遷移,系統在另一個(gè)塊中存儲該行,然后在原位置留一個(gè)指針指向那一行。之所以這么做,是因為當插入一個(gè)行時(shí),系統分配一個(gè)行標識符,即物理地址,而索引中是包含這個(gè)標識符的,如果行遷移時(shí)修改行標識符,則所有的索引都要改變,因此系統不修改行的位置,而是在那個(gè)位置添加指針。

 

為了避免行遷移,一個(gè)塊不應當裝的太滿(mǎn),pctfree,pctused用于指定一個(gè)塊裝了多少的時(shí)候允許插入數據。

 

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Oracle學(xué)習總結
[整理]Oracle面試題(基礎篇)
Web-第二十四天 Oracle學(xué)習【悟空教程】
Oracle中SQL優(yōu)化原理分析 -計算機畢業(yè)網(wǎng)
Java教程:oracle中的游標類(lèi)型
[轉]ORACLE PL/SQ入門(mén) - Web/.Net 開(kāi)發(fā) - 博客園
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久