久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

oracle事物和常用數(shù)據(jù)庫(kù)對(duì)象

 耳語(yǔ)輕言 2017-08-23

1.1.  事物的控制

控制事務(wù)

銀行轉(zhuǎn)賬

李四給張三匯款

ACID

A:原子性:整個(gè)事務(wù)中所有的步驟是不可分割的,,原子性原則規(guī)定一個(gè)事務(wù)的各個(gè)步驟都必須完成,,否則整個(gè)事務(wù)都不會(huì)完成。即保證一個(gè)事務(wù)中所有的操作都能完成或者都不能完成,,如果事務(wù)在完成之前出現(xiàn)任何錯(cuò)誤,那么數(shù)據(jù)庫(kù)自身必須保證自動(dòng)回滾所做過(guò)的任何事務(wù)部分(并且必須自動(dòng)進(jìn)行)

C:一致性:無(wú)論是事務(wù)前,,事務(wù)中,,事務(wù)后,數(shù)據(jù)始終處于一致的狀態(tài),。例如李四給張三匯款10000,,那么就需要從李四賬戶減去10000,給張三的賬戶增加10000,。Oracle使用撤銷段來(lái)保證數(shù)據(jù)的一致性,。

 

I:隔離性:隔離性的原則規(guī)定,未完成的事務(wù)必須不可視,。在某個(gè)事務(wù)進(jìn)行期間,,只有執(zhí)行該事務(wù)的會(huì)話能看見所做的變化,而其他所有的會(huì)話看見的都是沒有變化的數(shù)據(jù)(而不是更改后的新值),。這個(gè)規(guī)定的邏輯含義是:首先,,由于整個(gè)事務(wù)可能沒有全部完成,因此不允許其他用戶看到可能回滾的變化,;其次,,在某個(gè)事務(wù)進(jìn)行期間,數(shù)據(jù)是不連貫的,,李四的賬戶減掉10000,,但張三的賬戶還沒有增加10000,。事務(wù)的隔離性要求數(shù)據(jù)庫(kù)必須對(duì)其他用戶隱藏正在進(jìn)行的事務(wù),這些用戶只能看到?jīng)]有被更新的數(shù)據(jù),,只有在事務(wù)完成時(shí),,他們才能看到所有變化。Oracle使用撤銷段來(lái)保證事務(wù)的隔離性,。

創(chuàng)建練習(xí)環(huán)境:創(chuàng)建一個(gè)aa表,,插入3條記錄,并提交事物,。

查看aa表的記錄,,插入一條記錄,當(dāng)我們執(zhí)行一條DML語(yǔ)句時(shí)候,,就自動(dòng)開始了一個(gè)事物

 

此時(shí)insert記錄的事務(wù)并沒有提交,,沒有提交事務(wù)就沒有真正的完成,此時(shí)還有rollback的機(jī)會(huì),。

Scott用戶在當(dāng)前會(huì)話中查看aa表時(shí)可以看到被插入的記錄

打開一個(gè)新的sqlplus會(huì)話,,查看aa表時(shí)會(huì)發(fā)現(xiàn)并沒有新插入的記錄:這是事物的隔離性

在第一個(gè)sqlplus會(huì)話中提交事物

提交之后才能在第二個(gè)會(huì)話中看到被插入的第四條記錄

D:持久性:一旦使用commit命令來(lái)結(jié)束某個(gè)事務(wù),那么就必須保證數(shù)據(jù)庫(kù)不丟失這個(gè)事務(wù),。在事務(wù)進(jìn)行期間,,隔離性的原則要求除了指定會(huì)話涉及的用戶之外的任何用戶都不能查看當(dāng)前所做的變化。不過(guò)事務(wù)一旦完成,,所有用戶都必須能夠立即看到所做的變化,,同時(shí)數(shù)據(jù)庫(kù)必須保證這些變化絕不會(huì)丟失。Oracle通過(guò)使用日志文件來(lái)滿足這個(gè)需求,。日志文件具有兩種形式:聯(lián)機(jī)重做日志文件,,歸檔重做日志文件。

一個(gè)正確配置的oracle數(shù)據(jù)庫(kù)是不可能丟失數(shù)據(jù)的,。當(dāng)然用戶的錯(cuò)誤(包括不恰當(dāng)?shù)?/span>DML或刪除對(duì)象)也會(huì)造成數(shù)據(jù)的丟失

DDL語(yǔ)句有自動(dòng)提交功能(create,、droptruncate,、alter

創(chuàng)建表AA,,插入一條記錄 (第一個(gè)sqlplus會(huì)話中操作)

回退事物

在表中插入一條記錄

sqlplus中正常退出

在另外一個(gè)sqlplus中查看aa表中的記錄,會(huì)發(fā)現(xiàn)新插入的tom1的記錄了,。如果使用sqlplus工具更改了數(shù)據(jù)之后,,正常退出sqlplus時(shí),oracle會(huì)自動(dòng)提交事物,。

目前aa表中只有tom1的記錄,,另外一個(gè)sqlplus會(huì)話進(jìn)程中。

模擬實(shí)例重啟

使用scott用戶連接,,查看aa表中的內(nèi)容,,發(fā)現(xiàn)insert tom2的記錄由于實(shí)例重啟自動(dòng)被回滾了,。

使用autocommit實(shí)現(xiàn)事物的自動(dòng)提交

即使執(zhí)行回滾,查詢結(jié)果仍然包含新插入的數(shù)據(jù),,關(guān)閉自動(dòng)提交時(shí)可以使用set autocommit off

關(guān)于事物的總結(jié):

1. 需要注意的是,,Commit:只是用來(lái)確認(rèn)這個(gè)數(shù)據(jù)已經(jīng)正式的修改了,不一定非得寫入硬盤,,DBWn什么都不做,。執(zhí)行commit命令時(shí)發(fā)生的所有物理操作時(shí)LGWR進(jìn)程將日志緩沖區(qū)的內(nèi)容寫入磁盤。DBWN進(jìn)程完全沒有執(zhí)行任何操作,。DBWN進(jìn)程與提交事物處理沒有關(guān)系,,不過(guò)最終DBWN進(jìn)程會(huì)將變化的數(shù)據(jù)塊寫入磁盤。

2. commitrollback語(yǔ)句只應(yīng)于DML語(yǔ)句,,我們無(wú)法回滾DDL語(yǔ)句,。DDL語(yǔ)句一旦被執(zhí)行就會(huì)立即具有持久狀態(tài)。

3.自動(dòng)提交和隱式提交:oracle在某些情況下可以進(jìn)行自動(dòng)提交:執(zhí)行DDL語(yǔ)句是一種情況,,退出某個(gè)用戶進(jìn)程也是一種自動(dòng)提交,。

1.2.  索引

索引是oracle提供的一個(gè)對(duì)象,提供了一種快速訪問(wèn)數(shù)據(jù)的途徑,,提高了數(shù)據(jù)庫(kù)的檢索性能,。索引使數(shù)據(jù)庫(kù)程序無(wú)需對(duì)整個(gè)表進(jìn)行全表掃描,就可以在其中找到所需要的數(shù)據(jù),,就想書的目錄,,可以通過(guò)他快速查找所需信息,無(wú)需閱讀整本書,。

ora 

2.通過(guò)ROWID

3.使用索引

索引的分類:

1B樹索引結(jié)構(gòu)

索引的頂部為根,,其中包含指向下一級(jí)索引的項(xiàng),。下一級(jí)為分支塊,分支塊又指向索引中下一級(jí)的塊,,最低一級(jí)的塊稱為葉節(jié)點(diǎn),,其中包含指向表數(shù)據(jù)行的索引項(xiàng)。葉節(jié)點(diǎn)為雙向連接,,有助于按關(guān)鍵字值得升序和降序掃描索引,。

1.2.1.   創(chuàng)建普通索引

創(chuàng)建普通索引的語(yǔ)法

create [unique] index 索引名稱 on 表名(列名)[tablespace 表空間名稱]

[unique]用于指定唯一索引,默認(rèn)情況下為非唯一索引

[tablespace]為索引指定表空間

練習(xí)環(huán)境

在雇員EMP表中,,在雇員名稱列創(chuàng)建B樹索引,,oracle創(chuàng)建的普通索引如果沒有說(shuō)明類型就是B樹索引

查看剛剛創(chuàng)將的索引 EMP_NAME_IDX

1.2.2.   創(chuàng)建唯一索引和非唯一索引

唯一索引:保證定義索引的列中沒有任何重復(fù)值,唯一索引的索引關(guān)鍵字只能指向表中的一行,。

非唯一索引:定義索引的列中可以有重復(fù)值

在薪水級(jí)別salgrade表中,,為級(jí)別編號(hào)(grade)列創(chuàng)建唯一索引

1.2.3.   反向鍵索引

與常規(guī)B樹索引相反,,反向鍵索引在保持順序的同時(shí),反轉(zhuǎn)索引列的字節(jié),。反向鍵索引通過(guò)反轉(zhuǎn)索引鍵的數(shù)據(jù)值,,使得索引的修改平均分布到整個(gè)索引樹上,主要應(yīng)用多個(gè)實(shí)例可同時(shí)訪問(wèn)同一個(gè)數(shù)據(jù)庫(kù)的場(chǎng)景中,。使用反向鍵索引將索引插入操作分散在多個(gè)索引塊鍵,,如果使用B數(shù)索引的情況下,由于索引關(guān)鍵字在索引樹中的位置相近而處于同一個(gè)索引塊中,,多個(gè)實(shí)例同時(shí)更新時(shí)會(huì)發(fā)生沖突,,從而導(dǎo)致I/O訪問(wèn)上的瓶頸。

語(yǔ)法如下:

CREATE index 索引名稱 on 表名(列名) REVERSE;

 

1.2.4.   位圖索引

位圖索引適用于低基數(shù)的列,,即該列的值是有限的幾個(gè),,例如雇員表中的工種(job)列,即便是幾百萬(wàn)條雇員記錄,,工種也是有限的,。JOB列可以作為位圖索引

位圖索引的優(yōu)點(diǎn):

相對(duì)B樹索引而言,基于位圖索引列的查詢可以減少響應(yīng)時(shí)間

相比其他索引技術(shù),,位圖索引占用空間有所減少

位圖索引不應(yīng)當(dāng)在頻繁發(fā)生INSERT,,update,delete操作的表上使用,這是因?yàn)閱蝹€(gè)位圖索引項(xiàng)指向表的很多數(shù)據(jù)行,,當(dāng)修改索引項(xiàng)時(shí)需要將其指向的數(shù)據(jù)行全部鎖定,,這會(huì)嚴(yán)重降低數(shù)據(jù)庫(kù)的并發(fā)處理能力。位圖索引適用于數(shù)據(jù)倉(cāng)庫(kù)和決策支持系統(tǒng)中.

在雇員表(emp)表中,,為工種(job)列創(chuàng)建位圖索引

在雇員表(emp)中,,為雇員名稱(ename)列創(chuàng)建大寫函數(shù)索引

基于函數(shù)的索引

查看索引列相關(guān)的信息:索引名,表名,,索引列

1.3.  維護(hù)索引

重建索引:

索引需要維護(hù),,如果建立了索引的表中有大量的刪除和插入操作,會(huì)使得索引很大,,因?yàn)閯h除操作后,,刪除值得索引空間不能被自動(dòng)重新使用。對(duì)于大表和DML操作頻繁的表,,索引的維護(hù)是很重要的,。ORACLE提供了REBUILD指令來(lái)重建索引,使索引空間可以重用刪除值所占用的空間,,使索引更加進(jìn)奏,。

在重建索引時(shí),也可以修改索引的表空間

合并索引碎片

合并索引碎片可以釋放部分磁盤空間,,是索引維護(hù)的一種重要方式,,也是維護(hù)磁盤空間的方式

刪除索引

DROP INDEX語(yǔ)句刪除索引

刪除雇員表中的INDEX_BIT_JOB位圖索引

1.4.  視圖

視圖是一個(gè)虛表,,不占用物理空間,因?yàn)橐晥D本身的定義語(yǔ)句存儲(chǔ)在數(shù)據(jù)字典里,。視圖中的數(shù)據(jù)是從一個(gè)或多個(gè)實(shí)際的表中獲得,。

物化視圖:也成實(shí)體化視圖,含有實(shí)際數(shù)據(jù),,占用存儲(chǔ)空間,,在數(shù)據(jù)倉(cāng)庫(kù)中經(jīng)常應(yīng)用物化視圖

創(chuàng)建視圖的語(yǔ)法

CREATE [OR REPLACE] [FORCE |NO FORCE] VIEW view_name [(alias [,alias]..)] as select_statement [WITH CHECK_OPTION [CONSTRAINT constraint]] [WITH READ ONLY];

在語(yǔ)法中

OR REPLACE:如果視圖已經(jīng)存在,此選項(xiàng)將重新創(chuàng)建該視圖,。

FORC:如果使用此關(guān)鍵字,,則無(wú)論基表是否存在,都將創(chuàng)建視圖

NO FORCE:這是默認(rèn)值,,如果使用此關(guān)鍵字,,則僅當(dāng)基表存在時(shí)才創(chuàng)建視圖

VIEW_NAME:要?jiǎng)?chuàng)建的視圖名

ALIAS:指定由視圖的查詢所選擇的的表達(dá)式或列的別名。別名的數(shù)目必須與視圖所選擇的的表達(dá)式的數(shù)據(jù)相匹配,。

select_statement:SELECT 語(yǔ)句

WITH CHECK_OPTION:此選項(xiàng)指定只能插入或更新視圖可以訪問(wèn)的行,,constraint標(biāo)識(shí)CHECK OPTION約束指定的名稱

WITH READ ONLY:此選項(xiàng)保證不能再視圖上執(zhí)行任何修改操作。

創(chuàng)建帶有錯(cuò)誤的視圖

如果在CREATE VIEW語(yǔ)法中使用FORCE選項(xiàng),,即使存在以下情況,,也會(huì)創(chuàng)建視圖

視圖定義的查詢引用了一個(gè)不存在的表

視圖定義的查詢引用了現(xiàn)有表中無(wú)效的列。

視圖的所有者沒有所需的權(quán)限,。

在這些情況下,,oracle僅檢查CREATE VIEW語(yǔ)句中語(yǔ)法錯(cuò)誤,如果語(yǔ)法正確,,將會(huì)創(chuàng)建視圖,,并將視圖的定義存儲(chǔ)在數(shù)據(jù)字典中,但是該視圖卻不能使用,。這種視圖被認(rèn)為是帶有錯(cuò)誤創(chuàng)建的,。可以用SHOW ERRORS VIEW視圖名來(lái)查看錯(cuò)誤

1.4.1.   對(duì)單表的視圖操作

SQL> create table order_master (orderno number(5) CONSTRAINT p_ord PRIMARY KEY,

  2  odate DATE,vencode number(5),

  3  o_status char(1));

插入數(shù)據(jù)

SQL> insert into order_master values (1,to_date('2010-01-01','yyyy-mm-dd'),1,'a');

SQL> insert into order_master values (2,to_date('2011-01-01','yyyy-mm-dd'),2,'p');

創(chuàng)建訂單狀態(tài)為"p"的視圖,,提示沒有創(chuàng)建視圖的權(quán)限

授予SCOTT用戶創(chuàng)建視圖的權(quán)限

創(chuàng)建視圖

SQL> create view pen_view as select * from order_master where o_status = 'p';

查詢視圖

通過(guò)視圖修改數(shù)據(jù),將狀態(tài)為“p”的訂單修改為“d

SQL> update pen_view SET o_status='d' where o_status='p';

如果修改成功,,在查詢視圖將查詢不出任何記錄,,因?yàn)樾薷牧藙?chuàng)建視圖是作為條件的列

為了避免修改視圖后查詢不到記錄的現(xiàn)象,使用with check option語(yǔ)句創(chuàng)建檢查約束以防止上述情況的發(fā)生,,同時(shí)可以使用CONSTRAINT指定約束名稱

SQL> create or replace view pen_view as select * from order_master where o_status='p'

  2  with check option constraint penv;

order_master插入記錄

SQL> insert into order_master values (3,to_date('2011-01-01','yyyy-mm-dd'),3,'p');

更新視圖

SQL> update pen_view set o_status='d' where o_status='p';

提示with check option違反where子句

1.4.2.   創(chuàng)建只讀視圖

SQL> create or replace view pen_view as select * from order_master with read only;

查看視圖

為視圖插入記錄

1.4.3.   創(chuàng)建帶有錯(cuò)誤的視圖

因?yàn)椴淮嬖?/span>venmast

創(chuàng)建表venmast

SQL> create table venmast (id int);

手動(dòng)編譯剛才創(chuàng)建的錯(cuò)誤視圖

查看視圖

1.4.4.   創(chuàng)建帶ORDER BY子句的視圖

SQL> create or replace view pen_view as select * from order_master order by orderno;

 

1.5.  復(fù)雜視圖

DML語(yǔ)句是指用于修改數(shù)據(jù)的INSERT,,DELETEUPDATE語(yǔ)句,。因?yàn)橐晥D是一個(gè)虛表,,所以這些語(yǔ)句也可以與視圖一同使用,。一般情況下不通過(guò)視圖修改數(shù)據(jù),而是直接修改基本表,,因?yàn)檫@樣調(diào)理更清晰,。在視圖上使用DML語(yǔ)句有如下限制:(相對(duì)于表)

DML語(yǔ)句只能修改視圖中的一個(gè)基表

如果對(duì)記錄的修改違反了基表的約束條件,則將無(wú)法更新視圖

如果創(chuàng)建的視圖包含連接運(yùn)算符,,DISTINCT運(yùn)算符,,集合運(yùn)算符,聚合函數(shù)和group BY子句,,則將無(wú)法更新視圖,。

如果創(chuàng)建的視圖包含偽列或表達(dá)式,則將無(wú)法更新視圖,。

簡(jiǎn)單視圖基于單個(gè)基表,,不包括函數(shù)和分組函數(shù),那么可以在此視圖中進(jìn)行INSERT,,UPDATE,DELETE操作,。這些操作實(shí)際上是在基表中插入、更新和刪除行,。

復(fù)雜視圖從多個(gè)提取數(shù)據(jù),,包括函數(shù)和分組函數(shù),復(fù)雜視圖不一定能進(jìn)行DML操作,。

刪除視圖可以使用

1.6.  物化視圖

物化視圖是和普通視圖相對(duì)應(yīng)的,,在oracle使用普通視圖時(shí),它會(huì)重復(fù)執(zhí)行創(chuàng)建視圖的所有sql語(yǔ)句,,如果這樣的SQL語(yǔ)句含有多張表的連接或者ORDER BY子句,,而且表的數(shù)據(jù)量很大,則會(huì)非常耗時(shí),,效率非常低下,。為了解決這個(gè)問(wèn)題,oracle提出了物化視圖的概念

物化視圖就是具有物理存儲(chǔ)的特殊視圖,,占用物理空間,,就象表一樣,物化視圖是基于表,,物化視圖等創(chuàng)建的,。它需要和源表進(jìn)行同步,不斷的刷新物化視圖中的數(shù)據(jù),。物化視圖有兩個(gè)重要概念:查詢重寫和物化視圖的同步

查詢重寫:

對(duì)SQL語(yǔ)句進(jìn)行重寫,。當(dāng)用戶使用SQL語(yǔ)句對(duì)基表進(jìn)行查詢時(shí),如果已經(jīng)建立了基于這些基表的物化視圖,oracle將自動(dòng)計(jì)算和使用物化視圖來(lái)完成查詢,,在某些情況下可以節(jié)約查詢時(shí)間,,減少系統(tǒng)I/O。這種查詢優(yōu)化技術(shù)成為查詢重寫,。參數(shù)QUERY_REWRITE_ENABLED決定是否使用重寫查詢,。在創(chuàng)建物化視圖時(shí)需要使用ENABLE QUERY REWRITE來(lái)啟動(dòng)查詢重寫功能

可通過(guò)SHOW命令查看該參數(shù)的值

物化視圖的同步:

物化視圖是基于表創(chuàng)建的,所以當(dāng)基表發(fā)生變化時(shí),,需要同步數(shù)據(jù)以更新物化視圖中的數(shù)據(jù),,這樣保持無(wú)話視圖中的數(shù)據(jù)和基表的數(shù)據(jù)的一致性。oracle提供了兩種物化視圖刷新方式

ON COMMIT:指物化視圖在對(duì)基表的DML操作事物提交的通行進(jìn)行刷新

ON DEMAND:指物化視圖在用戶需要的時(shí)候進(jìn)行刷新,,可以手工通過(guò)DBMS_IVIEW.refresh等方法來(lái)進(jìn)行刷新,,也可以通過(guò)JOB定時(shí)刷新

選擇刷新方式后,還需要選擇一種刷新類型,,刷新類型值刷新時(shí)基表與物化視圖如何實(shí)現(xiàn)數(shù)據(jù)同步,,oracle提供了一下4種刷新類型:

COMPLETE:對(duì)整個(gè)物化視圖進(jìn)行完全刷新。

FAST:采用增量刷新,,只刷新自上次刷新以后進(jìn)行的修改

FORCEoracle在刷新會(huì)判斷是否可以進(jìn)行快速刷新,,如果可以則采用FAST刷新方式,否則使用COMPLETE方式,。

NEVER:物化視圖不進(jìn)行任何刷新

1.6.1.   創(chuàng)建物化視圖

創(chuàng)建物化視圖的前提條件:

具備創(chuàng)建物化視圖的權(quán)限,,QUERY REWRITE的權(quán)限,以及對(duì)創(chuàng)建物化視圖所涉及的表的訪問(wèn)權(quán)限和創(chuàng)建表的權(quán)限

使用SCOTT用戶來(lái)舉例說(shuō)明

1.授予相應(yīng)的權(quán)限

SQL> show user;

USER is "SYS"

SQL> grant create materialized view to scott;

SQL> grant query rewrite to scott;

SQL> grant create any table to scott;

SQL> grant select any table to scott;

2.創(chuàng)建物化視圖日志

物化視圖日志是用戶選擇了FAST刷新類型時(shí)需要使用的,,以增量同步基表的變化,。

對(duì)SCOTT用戶的EMP表和DEPT表創(chuàng)建物化視圖,所以對(duì)這兩個(gè)基表創(chuàng)建物化視圖日志

SQL> create materialized view log on dept with rowid;

SQL> create materialized view log on emp with rowid;

創(chuàng)建物化視圖

通過(guò)CREATE MATERIALIEZED VIEW語(yǔ)句來(lái)創(chuàng)建物化視圖,,

SQL> create materialized view mtrlview_test

  2  build immediate

  3  refresh fast

  4  on commit

  5  enable query rewrite as

  6  select d.dname,d.loc,e.ename,e.job,e.mgr,e.hiredate,e.sal,d.rowid d_rowid,e.rowid e_rowid

  7  from dept d,emp e where d.deptno=e.deptno;

其中:

BUILD IMMEDIATE:該參數(shù)的意思是立即創(chuàng)建物化視圖;也可以選擇BUILD DEFFERED,該參數(shù)說(shuō)明在物化視圖定義以后不會(huì)立即執(zhí)行,,而是延遲執(zhí)行,,在使用該視圖在創(chuàng)建。

REFRESH FAST:刷新數(shù)據(jù)的類型選擇FAST類型

ON COMMIT:在基表有更新時(shí)提交后立即更新物化視圖

ENABLE QUERY REWRITE :啟動(dòng)查詢重寫功能,,在創(chuàng)建物化視圖是明確說(shuō)明啟用查詢重寫功能,。

AS:定義后面的查詢語(yǔ)句

查詢體:物化視圖的查詢內(nèi)容。該SQL語(yǔ)句的查詢結(jié)果集輸出到物化視圖中,,保存在由oracle自動(dòng)創(chuàng)建的表中,。

刪除物化視圖

1.7.  序列

序列是用來(lái)生成唯一,連續(xù)的整數(shù)的數(shù)據(jù)庫(kù)對(duì)象,,序列通常用來(lái)自動(dòng)生成主鍵或唯一鍵的值。序列可以按升序或降序排列。

1.7.1.   創(chuàng)建序列

授予SCOTT用戶創(chuàng)建序列的權(quán)限

SQL> grant create sequence to scott;

創(chuàng)建序列,,從序號(hào)1開始,,每次增加1,最大為100,,不循環(huán),,

SQL> create sequence s1

  2  start with 1

  3  increment by 1

  4  maxvalue 100

  5  nocycle

  6  cache 10;

查看序列可以

SQL> select * from user_sequences;

1.7.2.   如何從序列中取值

查看當(dāng)前已經(jīng)取到的值

SQL> select s1.currval from dual;

從序列中取值

清除表中的記錄

從序列中取值

在打開一個(gè)sqlplus會(huì)話,使用SCOTT用戶連接

會(huì)發(fā)現(xiàn)所有的會(huì)話會(huì)共享一個(gè)序列,。

執(zhí)行以下命令

會(huì)發(fā)現(xiàn)ID不連續(xù),,這個(gè)也是難免得。

查詢序列的當(dāng)前值是8

假如實(shí)例重啟后

按創(chuàng)建序列的要求,,每次會(huì)拿10個(gè)序列號(hào)放到緩存中,,實(shí)例重啟后,緩存中的序列就會(huì)消失,,

會(huì)發(fā)現(xiàn)此時(shí)序列從11開始了,,緩存中緩存的是1120

再次重新啟動(dòng)實(shí)例

此時(shí)序列從21開始,。緩存中緩存的是2130

 

1.7.3.   修改序列

 修改序列為沒有最大封頂值

修改序列號(hào)每次增值值為10

修改序列放到緩存當(dāng)中的數(shù)量為20

1.7.4.   刪除序列

1.8.  同義詞

同義詞分為私用同義詞和公有同義詞

私有同義詞只能被當(dāng)前模式的用戶訪問(wèn),,私有同義詞名稱不能不可與當(dāng)前模式的對(duì)象名同名。要在自身的模式創(chuàng)建私有同義詞,,用戶必須擁有創(chuàng)建同義詞的系統(tǒng)權(quán)限,。要在其他用戶模式下創(chuàng)建私有同義詞,,用戶必須擁有CREATE ANY SYNONYM系統(tǒng)權(quán)限。

創(chuàng)建私有同義詞的語(yǔ)法如下:

CREATE [OR REPLACE] SYNONYM [schema.]synonym_name FOR [schema.]object_name;

[OR REPLACE]:在同義詞存在的情況下替換該同義詞

synonym_name:要?jiǎng)?chuàng)建同義詞的名稱

object_name:指定要為之創(chuàng)建同義詞的對(duì)象的名稱,。

 

創(chuàng)建tom用戶授予create session

授予tom用戶創(chuàng)建表的權(quán)限

使用tom用戶創(chuàng)建表aa

Sys用戶若要訪問(wèn)tom用戶下的aa表,,select語(yǔ)句這樣寫

SQL>select * from tom.aa;

可以給tom.aa起個(gè)別名xx,以后訪問(wèn)xx就代表scott.aa;

查看同義詞

使用tom用戶連接

Sql>Desc user_synonms;

Sql>Select * from user_synonyms;

1.8.1.   創(chuàng)建私有同義詞

使用sys用戶連接

使用TOM用戶連接

創(chuàng)建的xx同義詞是私有的同義詞,,tom用戶創(chuàng)建的xx同義詞,,只有tom用戶能使用

使用sys用戶連接

使用TOM用戶連接

使用sys用戶連接,為tom用戶創(chuàng)建公有同義詞的權(quán)限

1.8.2.   創(chuàng)建公有同義詞

使用sys用戶訪問(wèn)XXX公有同義詞,,就是在訪問(wèn)tom.aa表了

1.8.3.   刪除公有同義詞

tom用戶沒有刪除公有同義詞的權(quán)限,。

tom用戶授權(quán)刪除公有同義詞的權(quán)限

刪除tom用戶創(chuàng)建的公有同義詞XXX

DROP SYNONYM語(yǔ)句用于從數(shù)據(jù)庫(kù)中刪除同義詞,要?jiǎng)h除同義詞,,用戶必須擁有相應(yīng)的權(quán)限,。這樣刪除的是同義詞,并不是對(duì)應(yīng)的表,。

1.9.  分區(qū)表的含義

oracle允許用戶把一個(gè)表中的所有行分成幾部分,,并將他們存儲(chǔ)在不同的表空間。分成的每一個(gè)部分稱為一個(gè)分區(qū),,被分區(qū)的表稱為分區(qū)表,。

對(duì)于包含大量數(shù)據(jù)的表來(lái)說(shuō),分區(qū)很有用,表分區(qū)有以下有點(diǎn):

2  改善表的查詢性能,,在對(duì)表進(jìn)行分區(qū)后,,用戶執(zhí)行sql查詢時(shí)可以只訪問(wèn)特定的分區(qū)而非整個(gè)表。

2  表更容易管理,,因?yàn)榉謪^(qū)表的數(shù)據(jù)存儲(chǔ)在多個(gè)部分中,,按分區(qū)加載和刪除數(shù)據(jù)比在表中加載和刪除更容易。

2  便于備份和恢復(fù),,可以獨(dú)立的備份和恢復(fù)每個(gè)分區(qū)

2  提高數(shù)據(jù)安全性,,將不同的分區(qū)分布在不同的磁盤,可以減小所有分區(qū)的數(shù)據(jù)同時(shí)損壞的可能性,。

符合以下條件的表可以創(chuàng)建分區(qū)表:

2  數(shù)據(jù)量大于2GB

2  已有的數(shù)據(jù)和新添加的數(shù)據(jù)有明顯的界限劃分

表分區(qū)對(duì)用戶是透明的,,即應(yīng)用程序可以不知道表已被分區(qū),在更新和查詢分區(qū)表是當(dāng)做普通表來(lái)操作,,但oracle優(yōu)化程序是知道表已經(jīng)被分區(qū)了,。

要分區(qū)的表不能具有LONGLONG RAW數(shù)據(jù)類型的列。

分區(qū)表的分類:oracle提供的分區(qū)方法有范圍分區(qū),,列表分區(qū),,散列分區(qū),復(fù)合分區(qū),,間隔分區(qū)和虛擬列分區(qū)等,。其中間隔分區(qū)和虛擬列分區(qū)是oracle11g的新增特性。

范圍分區(qū):是一種常用的表分區(qū)方法,,它是oracle引進(jìn)的第一個(gè)分區(qū)類型,。范圍分區(qū)用于可以根據(jù)某些條件按范圍分開的數(shù)據(jù)。如果數(shù)據(jù)均勻的分布在所建立的不同的范圍內(nèi),,那么使用范圍分區(qū)將得到最好的分區(qū)效果,。范圍可以基于順序數(shù)或部分?jǐn)?shù),范圍分區(qū)技術(shù)通?;跁r(shí)間(例如月或季度)

練習(xí)范圍分區(qū)之前將scott用戶下的aa表刪除

1.9.1.   創(chuàng)建范圍分區(qū)

創(chuàng)建表aa,,創(chuàng)建范圍分區(qū),以ID為范圍,,創(chuàng)建了3個(gè)分區(qū)P1,,P2P3

SQL> create table aa (id number,name varchar2(10))

  2  partition by range(id)(

  3  partition p1 values less than (10),

  4  partition p2 values less than (20),

  5  partition p3 values less than (30));

向表中插入數(shù)據(jù)

SQL> insert into aa values (1,'tom1');

SQL> insert into aa values (2,'tom2');

SQL> insert into aa values (11,'tom11');

SQL> insert into aa values (12,'tom12');

SQL> insert into aa values (21,'tom21');

SQL> insert into aa values (22,'tom22');

SQL> commit;

Commit complete.

查看p1分區(qū)的數(shù)據(jù)

查看p2分區(qū)的數(shù)據(jù)

查看p3分區(qū)的數(shù)據(jù)

如果向表中插入以下記錄,,會(huì)提示插入的分區(qū)關(guān)鍵字未映射到任何分區(qū)

按范圍分區(qū)是,,如果某些記錄暫時(shí)無(wú)法預(yù)測(cè)范圍,可以創(chuàng)建maxvalue分區(qū),,所有不在指定范圍內(nèi)的記錄都會(huì)被存儲(chǔ)到maxvalue所在的分區(qū)中,。

在插入剛才的記錄

查看P4分區(qū)的記錄

查看分區(qū)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多