SG_007_CHAPTER 9

chenai79921發表於2009-10-26

Other Database Objects

Creating and Managing Sequences

序列值存在於資料字典中。

Creating and Dropping Sequences

Create sequence schema..sequence 引數;

引數:start with integer : 預設為1

Increment by integer :每次增長或減少數,預設為1

Nominvalue

Minvalue integer 產生最小的數字

NOMAXVALUE

MAXVALUE interger :最大的數字

NOCYCLE

CYCLE

NOCACHE

CACHE 序列的size儲存在記憶體中。預設為20.

Drop sequence sequence_name

Using Sequences:

得到序列的後一個數字,使用NEXTVAL

得到最新產生的序列數字,使用CURRVAL。如果你的session 還沒有產生一個新的序列號,CURRVAL將不會被定義。

Sequence_name.nextval

Sequence_name.currval

Sequence Initialization:

CREATE SEQUENCE emp_seq NOMAXVALUE NOCYCLE;

確定在引用CURRVAL之前,使用NEXTVAL來初始化序列。

SELECT emp_seq.nextval FROM dual;

--------1

SELECT policy_seq.currval FROM dual;

--------1

Missing Sequence Values:

當給資料分配完序列號,如果此時ROLLBACK,再分配序列號時,接著原先分配的序列號之後。

Maximum and Minimum Values

升序時,超過最大值,出錯。

降序時,低於最小值,出錯。降序時,預設從-1開始,預設最大為0.

Altering Sequences

改變序列號步驟:

1.Drop ,re-create序列號

2.SELECT NEXTVAL 到想要的數值。

3.改變INCREMENT BY 引數,使用NEXTVAL變成一個想要的數值。

例子:

SELECT sequence_name , cache_size, last_number

From user_sequences

SEQUENCE_NAME CACHE_SIZE LAST_NUMBER

------------------------ ----------------- ---------------------

SALE_SEQ 20 441

ALTER SEQUENCE sale_seq INCREMENT BY 111555888;

SELECT sale_seq.nextval FROM dual;

NEXTVAL

-------------

111556309

ALTER SEQUENCE sale_seq INCREAMENT BY 1.

SELECT sequence_name , cache_size, last_number

From user_sequences

SEQUENCE_NAME CACHE_SIZE LAST_NUMBER

------------------------ ----------------- ---------------------

SALE_SEQ 20 111556310

Creating and Managing Synonyms:

公共的同義詞對任何使用者都可用。私有的同義詞只對私有使用者可用。

當物件drop 或者失效,物件的同義詞還是合法的。

同樣,也可以建立一個同義詞,指向一個不存在的物件。

Creating and Dropping Synonyms

Create [ public ] SYNONYM synonym_name

FOR [schema.] object [ @db_link];

DROP  PUBLIC  SYNONYM employees;

Public Synonyms:

建立一個同義詞,即使其他使用者不擁有該表,但是有對該表的select 許可權,那麼就能引用同義詞。

Private Synonyms

A擁有的表table_A , ASELECT許可權給B C

Btable A建立一個私有同義詞

此時C也擁有這個私有同義詞。

Resolving Object References

查詢引用的順序。

1.當前使用者的物件

2.當前使用者的私有同義詞

3.公共同義詞。

CREATING Database Links

CREATE [SHARED] [PUBLIC] DATABASE LINK link_name

[CONNECT TO username IDENTIFIED BY password] USING ‘tns_name’;

PUBLIC:使資料連結對所有使用者都有效。

CONNECT TO:連結遠端伺服器的使用者名稱和密碼。

Tns_name:遠端資料庫的服務名。

SHARED : 所有oracle 的公共資料庫連結的使用者分享單個連結到遠端資料庫的網路

例子:

Create public database link new_jersry

Connect to home_office INDENTIFIED BY secret USING ‘NJ’

如果不想每個人都用同樣的使用者名稱來連線遠端資料庫,那麼建立一個database,不帶CONNECT TO語句。

例子:

Create public database link new_jersey USING ‘NJ’

上面的語句告訴每個使用者,必須透過他們自己的使用者名稱和密碼來連線NJ,那麼引用資料庫庫的使用者要擁有一個賬號,這個賬號必須在本地和遠端資料庫中都存在。

Creating and Managing Indexes

Using B-Tree Indexes

適用於高基數的column,該column有許多不同的數值。

當返回小部分資料時,這是一個很有效的方法。當返回的資料超過所有資料的10%時,此時全表掃描是一個更加好的方法。

B-TREE

branch blocks 擁有index columnthe key)和 連線另外一個index block的地址。

leaf block key rowid

column A column B是聯合索引,where 中有column A時有效,只有column B時無效。

Using Bitmap Indexes

通常只有單個column作為索引。

適用於低基數的情況,當用and or 上連線使用,比較有效。

以壓縮的形式儲存,佔用比較少的空間。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11997930/viewspace-1028151/,如需轉載,請註明出處,否則將追究法律責任。