oracle基礎入門(轉)

post0發表於2007-08-14
oracle基礎入門(轉)[@more@]

  一、ORACLE的表的分類:

  1、REGULAR TABLE:普通表,ORACLE推薦的表,使用很方便,人為控制少。

  2、PARTITIONED TABLE:分割槽表,人為控制記錄的分佈,將表的儲存空間分為若干獨立的分割槽,記錄按一定的規則儲存在分割槽裡。適用於大型的表。

  

  二、建表

  1 CREATE TABLE 表名 (EMPNO NUMBER(2),NAME VARCHAR2(20)) PCTFREE 20 PCTUSED 50

  STORAGE (INITIAL 200K NEXT 200K MAXEXTENTS 200 PCTINCREASE 0) TABLESPACE 表空間名稱

  [LOGGING|NOLOGGING]所有的對錶的操作都要記入REDOLOG,ORACLE建議使用NOLOGGING;

  [CACHE|NOCACHE]:是否將資料按照一定的演算法寫入記憶體。

  2、關於PCTFREE 和PCTUSED

  A、行遷移和行連結

  B、PCTFREE:制止INSERT,為 UPDATE留FREE 空間

  C、PCTUSED:為恢復INSERT操作,而設定的。

  

  三、複製一個已經存在的表:

  CREATE TABLE 新表名 STORAGE(。。) TABLESPACE 表空間

  AS SELECT * FROM 老表名 ;

  當老表存在約束,觸發的時候,不會拷過去。

  

  四、修改表的引數

  ALTER TABLE 名稱 PCTFREE 20 PCTUSED 50 STOAGE(MAXEXTENTS 1000);

  

  五、手工分配空間:

  

  ALTER TABLE 名稱 ALLOCATE EXTENT(SIZE 500K DATAFILE '。。');

  

  1、SIZE選項,按照NEXT分配

  2、表所在表空間與所分配的資料檔案所在的表空間必須一樣。

  

  六、水線

  1、水線定義了表的資料在一個BLOCK中所達到的最高的位置。

  2、當有新的記錄插入,水線增高

  3、當刪除記錄時,水線不回落

  4、減少查詢量

  

  七、如何回收空間:

  ALTER TABLE 名稱 DEALLOCATE UNUSED [KEEP 4[M|K]]

  1、當空間分配過大時,可以使用本命令

  2、如果沒有加KEEP,回收到水線

  3、如果水線《MINEXTENTS的大小回收到MINEXTENTS所指定的大小

  

  八、TRUNCATE 一個表

  TRUNCATE TABLE 表名,表空間擷取MINEXTENT,同時水線重置。

  

  九、DROP 一個表

  DROP TABLE 表名 [CASCADE CONSTRAINTS]

  當一個表含有外來鍵的時候,是不可以直接DROP的,加CASCADE CONSRIANTS將外來鍵等約束一併刪掉。

  

  十、資訊獲取

  1、dba_object

  2 dba_tables:建表的引數

  3 DBA_SEGMENTS:

  組合查詢的連線欄位:DBA_TABLES的table_name+dba_ojbect的object_name+dba_segments的SEGMENT_NAME

  

  第十一章:索引的管理

  一、索引的分類:

  1、邏輯上:

  單列索引 複合索引 唯一索引 非唯一索引

  2、物理上:

  B-TREE OR BITMAP

  B-TREE (NORMAL和反向索引)

  

  二、CREATE INDEX

  CREATE INDEX 名稱 ON 表名(列名) PCTFREE 30 STORAGE(。。。。。) TABLESPACE 名稱

  沒有定義PCTUSED:索引是按照一定儲存的,如果透過PCTUSED允許恢復對BLOCK的INSERT操作,可能影響INDEX的效率。

  

  三、建立索引的注意事項

  1、索引對查詢效能有提高,但對DML語句有影響。

  2、索引也應該放在一個專用的表空間

  3、定義索引的EXTENT的大小時,=5*DB BLOCK

  4、建立索引時,應採用 NOLOGGING

  方式。

  四、修改索引

  ALTER INDEX 名稱 STORAGE(新值)

  

  五、分配空間給索引

  1、ALTER INDEX 名稱 ALLOCATE EXTENT(SIZE 200K DATAFILE '。。')

  

  六、重建索引

  1、提高查詢效能

  2、當一個索引重建時,老的索引會在新索引建立完成後,被刪除。

  3、新索引建立過程中,老的索引仍可用於查詢。

  4、硬碟的開銷大,

  

  七、DROP一個索引

  DROP INDEX 名稱

  

  八、資訊獲取

  1、DBA_INDEXES:建索引的引數

  2、DBA_IND_COLUMNS:

  

  第十二章:使用者的管理

  一、ORACLE的安全域

  1、TABLESPACE QUOTAS:表空間的使用定額

  2、DEFAULT TABLESPACE:預設表空間

  3、TEMPORARY TABLESPACE:指定臨時表空間。

  4、ACCOUNT LOCKING:使用者鎖

  5、RESOURCE LIMITE:資源限制

  6、DIRECT PRIVILEGES:直接授權

  7、ROLE PRIVILEGES:角色授權先將應用中的使用者劃為不同的角色,

  二、建立使用者時的清單:

  1、選擇一個使用者名稱稱和檢驗機制:A,看到使用者名稱,實際操作者是誰,業務中角色。

  2、選擇合適的表空間:

  3、決定定額:

  4、口令的選擇:

  5、臨時表空間的選擇:先建立一個臨時表空間,然後在分配。不分配,使用SYSTEM表空間

  6、CREATE USER

  7、授權:A,使用者的工作職能

  B,使用者的級別

  三、使用者的建立:

  1、命令:

  CREATE USER 名稱 IDENTIFIED BY 口令 DEFAULT TABLESPACE 預設表空間名 TEMPOARAY

  TABLESPACE 臨時表空間名

  QUOTA 15M ON 表空間名

  [PASSWORD EXPIRE]:當使用者第一次登陸到ORACLE,建立時所指定的口令過期失效,強迫使用者自己定義一個新口令。

  [ACCOUNT LOCK]:加使用者鎖

  QUOTA UNLIMITED ON TABLESPACE:不限制,有多少有多少。

  [PROFILE 名稱]:受PROFILE檔案的限制。

  

  四、如何控制使用者口令和使用者鎖

  1、強迫使用者修改口令:ALTER USER 名稱 IDENTIFIED BY 新口令 PASSWORD EXPIRE;

  2、給使用者加鎖:ALTER USER 名稱 ACCOUNT [LOCK|UNLOCK]

  3、注意事項:

  A、所有操作對當前連線無效

  B、1的操作適用於當使用者忘記口令時。

  

  五、更改定額

  1、命令:ALTER USER 名稱 QUOTA 0 ON 表空間名

  ALTER USER 名字 QUOTA (數值)K|M|UNLIMITED ON 表空間名;

  2、使用方法:

  A、控制使用者資料增長

  B、當使用者擁有一定的資料,而管理員不想讓他在增加新的資料的時候。

  C、當將使用者定額設為零的時候,使用者不能建立新的資料,但原有資料仍可訪問。

  

  六、DROP一個USER

  1、DROP USER 名稱

  適合於刪除一個新的使用者

  2、DROP USER 名稱 CASCADE: 刪除一個使用者,將使用者的表,索引等都刪除。

  3、對連線中的使用者不好用。

  

  

  七、資訊獲取:

  1、DBA_USERS:使用者名稱,狀態,加鎖日期,預設表空間,臨時表空間

  2、DBA_TS_QUOTAS:使用者名稱,表空間名,定額。

  兩個表的連線欄位:USERNAME

  GRANT CREATE SESSION TO 使用者名稱

  

  

  第十三章:PROFILE的管理(資源

  檔案)

  一、PROFILE的管理內容:

  1、CPU的時間

  2、I/O的使用

  3、IDLE TIME(空閒時間)

  4、CONNECT TIME(連線時間)

  5、併發會話數量

  6、口令機制:

  

  二、DEFAULT PROFILE:

  1、所有的使用者建立時都會被指定這個PROFILE

  2、DEFAULT PROFILE的內容為空,無限制

  

  三、PROFILE的劃分:

  1、CALL級LIMITE:

  物件是語句:

  當該語句資源使用溢位時:

  A、該語句終止

  B、事物回退

  C、SESSION連線保持

  2、SESSION級LIMITE:

  物件是:整個會話過程

  溢位時:連線終止

  

  四、如何管理一個PROFILE

  1、CREATE PROFILE

  2、分配給一個使用者

  3、象開關一樣開啟限制。

  

  五、如何建立一個PROFILE:

  1、命令:CREATE PROFILE 名稱

  LIMIT

  SESSION_PER_USER 2

  CPU_PER_SESSION 1000

  IDLE_TIME 60

  CONNECT_TIME 480

  六、限制引數:

  1、SESSION級LIMITE:

  CPU_PER_SESSION:定義了每個SESSION佔用的CPU的時間: (1/100 秒)

  2、SESSION_PER_USER:每個使用者的併發連線數

  3、CONNECT_TIME:一個連線的最長連線時間(分鐘)

  4、LOGICAL_READS_PER_SESSION: 一次讀寫的邏輯塊的數量

  5、CALL級LIMITE

  CPU_PER_CALL:每個語句佔用的CPU時間

  

  LOGICAL_READS_PER_CALL:

  

  七、分配給一個使用者:

  CREATE USER 名稱。。。。。。

  PROFILE 名稱

  ALTER USER 名稱 PROFILE 名稱

  

  八、開啟資源限制:

  1、RESOURCE_LIMT:資原始檔中含有

  2、ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;

  3、預設不開啟

  

  九、修改PROFIE的內容:

  1、ALTER PROFILE 名稱引數 新值

  2、對於當前連線修改不生效。

  

  

  十、DROP一個PROFILE

  1、DROP PROFILE 名稱

  刪除一個新的尚未分配給使用者的PROFILE,

  2、DROP PROFILE 名稱 CASCADE

  3、注意事項

  A、一旦PROFILE被刪除,使用者被自動載入DEFAULT PROFILE

  B、對於當前連線無影響

  C、DEFAULT PROFILE不可以被刪除

  十一、資訊獲取:

  1、DBA_USERS:

  使用者名稱,PROFILE

  2、DBA_PROFILES:


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