安裝Oracle後,經常使用的修改表空間的SQL程式碼(轉)

PigBaby2007發表於2007-08-08
安裝Oracle後,經常使用的修改表空間的SQL程式碼[@more@]

配置:  Windows NT 4.0 中文版
  5塊10.2GB SCSI硬碟
  分:C:盤、D:盤、E:盤、F:盤、G:盤
  Oracle 8.0.4 for Windows NT
  NT安裝在C:WINNT,Oracle安裝在C:ORANT
  
  目標:
  因系統的回滾段太小,現打算生成新的回滾段,
  建立大的、新的表空間(資料表空間、索引表空間、回滾表空間、臨時表空間、)
  建兩個資料表空間、兩個索引表空間,這樣建的目的是根據實際應用,
  如:現有10個應用使用者,每個使用者是一個獨立子系統(如:商業進銷存MIS系統中的財務、收款、庫存、人事、總經理等)
  尤其大型商場中收款機眾多,同時訪問程式很多,經常達到50-100個程式同時訪問,
  這樣,透過建立多個使用者表空間、索引表空間,把各個使用者分別建在不同的表空間裡(多個使用者表空間放在不同的物理磁碟上),
  減少了使用者之間的I/O競爭、讀寫資料與寫讀索引的競爭(使用者表空間、索引表空間也分別放在不同的物理磁碟上)
  
  規劃:
  C:盤、NT系統,Oracle系統
  D:盤、資料表空間1(3GB、自動擴充套件)、回滾表空間1(1GB、自動擴充套件)
  E:盤、資料表空間2(3GB、自動擴充套件)、回滾表空間2(1GB、自動擴充套件)
  F:盤、索引表空間1(2GB、自動擴充套件)、臨時表空間1(0.5GB、不自動擴充套件)
  G:盤、索引表空間2(2GB、自動擴充套件)、臨時表空間2(0.5GB、不自動擴充套件)
  
  注:這只是一個簡單的規劃,實際規劃要依系統需求來定,儘量減少I/O競爭
  
  實現:
  1、首先檢視系統有哪些回滾段及其狀態。
  
  SQL> col owner format a20
  SQL> col status format a10
  SQL> col segment_name format a20
  SQL> col tablespace_name format a20
  
  SQL> SELECT OWNER,SEGMENT_NAME,TABLESPACE_NAME,SUM(BYTES)/1024/1024 M
  2 FROM DBA_SEGMENTS
  3 WHERE SEGMENT_TYPE='ROLLBACK'
  4 GROUP BY OWNER,SEGMENT_NAME,TABLESPACE_NAME
  5 /
  
  OWNER   SEGMENT_NAME     TABLESPACE_NAME  M
  -------------------- -------------------- -------------------- ---------
  SYS    RB1    ROLLBACK_DATA    .09765625
  SYS    RB10    ROLLBACK_DATA    .09765625
  SYS    RB11    ROLLBACK_DATA    .09765625
  SYS    RB12    ROLLBACK_DATA    .09765625
  SYS    RB13    ROLLBACK_DATA    .09765625
  SYS    RB14    ROLLBACK_DATA    .09765625
  SYS    RB15    ROLLBACK_DATA    .09765625
  SYS    RB16    ROLLBACK_DATA    .09765625
  SYS    RB2    ROLLBACK_DATA    .09765625
  SYS    RB3    ROLLBACK_DATA    .09765625
  SYS    RB4    ROLLBACK_DATA    .09765625
  SYS    RB5    ROLLBACK_DATA    .09765625
  SYS    RB6    ROLLBACK_DATA    .09765625
  SYS    RB7    ROLLBACK_DATA    .09765625
  SYS    RB8    ROLLBACK_DATA    .09765625
  SYS    RB9    ROLLBACK_DATA    .09765625
  SYS    RB_TEMP  SYSTEM   .24414063
  SYS    SYSTEM   SYSTEM   .1953125
  
  查詢到18記錄.
  
  SQL> SELECT SEGMENT_NAME,OWNER,
  2     TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS
  3     FROM DBA_ROLLBACK_SEGS
  4 /
  
  SEGMENT_NAME     OWNER   TABLESPACE_NAME   SEGMENT_ID  FILE_ID STATUS
  -------------------- -------------------- -------------------- ---------- ------
  SYSTEM   SYS    SYSTEM  0     1 ONLINE
  RB_TEMP  SYS    SYSTEM  1     1 OFFLINE
  RB1    PUBLIC   ROLLBACK_DATA    2     3 ONLINE
  RB2    PUBLIC   ROLLBACK_DATA    3     3 ONLINE
  RB3    PUBLIC   ROLLBACK_DATA    4     3 ONLINE
  RB4    PUBLIC   ROLLBACK_DATA    5     3 ONLINE
  RB5    PUBLIC   ROLLBACK_DATA    6     3 ONLINE
  RB6    PUBLIC   ROLLBACK_DATA    7     3 OFFLINE
  RB7    PUBLIC   ROLLBACK_DATA    8     3 OFFLINE
  RB8    PUBLIC   ROLLBACK_DATA    9     3 OFFLINE
  RB9    PUBLIC   ROLLBACK_DATA   10     3 OFFLINE
  RB10    PUBLIC   ROLLBACK_DATA   11     3 OFFLINE
  RB11    PUBLIC   ROLLBACK_DATA   12     3 OFFLINE
  RB12    PUBLIC   ROLLBACK_DATA   13     3 OFFLINE
  RB13    PUBLIC   ROLLBACK_DATA   14     3 OFFLINE
  RB14    PUBLIC   ROLLBACK_DATA   15     3 OFFLINE
  RB15    PUBLIC   ROLLBACK_DATA   16     3 OFFLINE
  RB16    PUBLIC   ROLLBACK_DATA   17     3 OFFLINE
  
  查詢到18記錄.
  
  2、修改程式碼如下,可把以下程式碼存入一.sql檔案,如cg_sys.sql,然後以SQL> @cg_sys.sql呼叫執行。
  
  --注意:各個硬碟上要事先建好oradata目錄
  
  --修改現有回滾段,使之失效,下線
  alter rollback segment rb1 offline;
  alter rollback segment rb2 offline;
  alter rollback segment rb3 offline;
  alter rollback segment rb4 offline;
  alter rollback segment rb5 offline;
  alter rollback segment rb6 offline;
  alter rollback segment rb7 offline;
  alter rollback segment rb8 offline;
  alter rollback segment rb9 offline;
  alter rollback segment rb10 offline;
  alter rollback segment rb11 offline;
  alter rollback segment rb12 offline;
  alter rollback segment rb13 offline;
  alter rollback segment rb14 offline;
  alter rollback segment rb15 offline;
  alter rollback segment rb16 offline;
  
  --刪除原有回滾段
  drop rollback segment rb1;
  drop rollback segment rb2;
  drop rollback segment rb3;
  drop rollback segment rb4;
  drop rollback segment rb5;
  drop rollback segment rb6;
  drop rollback segment rb7;
  drop rollback segment rb8;
  drop rollback segment rb9;
  drop rollback segment rb10;
  drop rollback segment rb11;
  drop rollback segment rb12;
  drop rollback segment rb13;
  drop rollback segment rb14;
  drop rollback segment rb15;
  drop rollback segment rb16;
  
  --建資料表空間1
  --收款、庫存、訂貨、遠端通訊
  create tablespace USER_DATA1 datafile
  'd:oradatauser1_1.ora' size 512M,
  'd:oradatauser1_2.ora' size 512M,
  'd:oradatauser1_3.ora' size 512M,
  'd:oradatauser1_4.ora' size 512M,
  'd:oradatauser1_5.ora' size 512M,
  'd:oradatauser1_6.ora' size 512M
  AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
  default storage (initial 128K next 2M pctincrease 0);
  --initial 128K,因為,使用者建在表空間上,而表建在使用者裡,為使用者所擁有,
  --使用者繼承資料表空間的儲存引數,表繼承使用者的儲存引數
  --如果initial設的過大,如:5M,則每建一個空表就要佔用5M的空間,即使一條記錄也沒有
  --AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED,設定資料檔案自動擴充套件,每一次擴充套件增加5M,最大空間不受限
  
  --建資料表空間2
  --物價、人事、結算、財務、總經理、合同、統計
  create tablespace USER_DATA2 datafile
  'e:oradatauser2_1.ora' size 512M,
  'e:oradatauser2_2.ora' size 512M,
  'e:oradatauser2_3.ora' size 512M,
  'e:oradatauser2_4.ora' size 512M,
  'e:oradatauser2_5.ora' size 512M,
  'e:oradatauser2_6.ora' size 512M
  AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
  default storage (initial 128K next 2M pctincrease 0);
  
  --建索引表空間1
  create tablespace INDEX_DATA1 datafile
  'f:oradataindex1_1.ora' size 512M,
  'f:oradataindex1_2.ora' size 512M,
  'f:oradataindex1_3.ora' size 512M,
  'f:oradataindex1_4.ora' size 512M
  AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
  default storage (initial 128K next 2M pctincrease 0);
  
  --建索引表空間2
  create tablespace INDEX_DATA2 datafile
  'g:oradataindex2_1.ora' size 512M,
  'g:oradataindex2_2.ora' size 512M,
  'g:oradataindex2_3.ora' size 512M,
  'g:oradataindex2_4.ora' size 512M
  AUTOEXTEND ON NEXT 5M

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

相關文章