修改表空間的SQL程式碼
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 MAXSIZE UNLIMITED
default storage (initial 128K next 2M pctincrease 0);
--建回滾表空間1
--設定初始值40M(initial 40M),則每在這個表空間中建一個回滾段,
--此回滾段自動繼承此回滾表空間的儲存引數,也即預設檔案為40M
create tablespace ROLLBACK_DATA1 datafile
'd:oradataroll1_1.ora' size 512M,
'd:oradataroll1_2.ora' size 512M
AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
default storage (initial 40M next 5M pctincrease 0);
--建回滾表空間2
create tablespace ROLLBACK_DATA2 datafile
'e:oradataroll2_1.ora' size 512M,
'e:oradataroll2_2.ora' size 512M
AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
default storage (initial 40M next 5M pctincrease 0);
--建臨時表空間1
create tablespace TEMPORARY_DATA1 datafile
'f:oradatatemp1_1.ora' size 512M
default storage (initial 10M next 3M pctincrease 0);
--建臨時表空間2
create tablespace TEMPORARY_DATA2 datafile
'g:oradatatemp2_1.ora' size 512M
default storage (initial 10M next 3M pctincrease 0);
--使其真正成為臨時的
alter tablespace TEMPORARY_DATA1 temporary;
alter tablespace TEMPORARY_DATA2 temporary;
--建立新的回滾段,每個都一樣大,不同大小的回滾段沒有什麼意義,系統是隨機選擇的。
--建多少個,根據併發訪問使用者的多少,
--如果你們公司每天有50-100個人員使用Oracle系統開發的管理軟體,應該20個以上
create public rollback segment rb01 tablespace rollback_data1;
create public rollback segment rb02 tablespace rollback_data1;
create public rollback segment rb03 tablespace rollback_data1;
create public rollback segment rb04 tablespace rollback_data1;
create public rollback segment rb05 tablespace rollback_data1;
create public rollback segment rb06 tablespace rollback_data1;
create public rollback segment rb07 tablespace rollback_data1;
create public rollback segment rb08 tablespace rollback_data1;
create public rollback segment rb09 tablespace rollback_data2;
create public rollback segment rb10 tablespace rollback_data2;
--前8個建在回滾表空間1中,後8個在回滾表空間2
create public rollback segment rb11 tablespace rollback_data2;
create public rollback segment rb12 tablespace rollback_data2;
create public rollback segment rb13 tablespace rollback_data2;
create public rollback segment rb14 tablespace rollback_data2;
create public rollback segment rb15 tablespace rollback_data2;
create public rollback segment rb16 tablespace rollback_data2;
create public rollback segment rb17 tablespace rollback_data2;
create public rollback segment rb18 tablespace rollback_data2;
create public rollback segment rb19 tablespace rollback_data2;
create public rollback segment rb20 tablespace rollback_data2;
--使回滾段online,即有效
alter rollback segment rb01 online;
alter rollback segment rb02 online;
alter rollback segment rb03 online;
alter rollback segment rb04 online;
alter rollback segment rb05 online;
alter rollback segment rb06 online;
alter rollback segment rb07 online;
alter rollback segment rb08 online;
alter rollback segment rb09 online;
alter rollback segment rb10 online;
alter rollback segment rb11 online;
alter rollback segment rb12 online;
alter rollback segment rb13 online;
alter rollback segment rb14 online;
alter rollback segment rb15 online;
alter rollback segment rb16 online;
alter rollback segment rb17 online;
alter rollback segment rb18 online;
alter rollback segment rb19 online;
alter rollback segment rb20 online;
--檢視現有回滾段及其狀態
col segment format a30
SELECT SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS FROM DBA_ROLLBACK_SEGS;
--檢視資料檔案及其所在表空間、大小、狀態
col file_name format a40
col tablespace_name format a20
select file_name,file_id,tablespace_name,bytes,status from dba_data_files;
至此,表空間重新規劃完畢,這裡講的比較通俗,還有好多引數值得設定,能夠把Oracle設定到最優的境界,
表空間設定完了,下面,就該好好的整理一下Oracle的記憶體區了,
Oracle很有意思,記憶體越大,效果越明顯,所以有必要好好調整一下SGA區,也就是主要配置ininorcl.ora引數檔案。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-84295/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 安裝Oracle後,經常使用的修改表空間的SQL程式碼(轉)OracleSQL
- 表空間sqlSQL
- 表空間的建立修改等操作
- 有關表空間查詢的sql指令碼SQL指令碼
- 【SQL】查詢及修改資料庫預設表空間SQL資料庫
- Oracle表、索引修改表空間語句Oracle索引
- ORACLE表空間的建立修改刪除Oracle
- Oracle修改預設表空間和預設臨時表空間Oracle
- 修改表空間檔案路徑
- 表空間常用sql彙總SQL
- 2 Day DBA-管理Oracle例項-修改表空間-刪除表空間Oracle
- Oracle批次修改使用者表table的表空間Oracle
- Shell磁碟空間和表空間告警程式
- oracle 修改表空間儲存路徑Oracle
- 2 Day DBA-管理Oracle例項-修改表空間-使表空間離線Oracle
- oracle sql 表空間利用率OracleSQL
- Oracle SQL 基本操作之 表空間OracleSQL
- 移動表空間的指令碼指令碼
- Oracle臨時表空間檢視、新增臨時表空間資料檔案、修改預設臨時表空間 方法!Oracle
- 檢視單個SQL消耗TEMP表空間以及TEMP表空間使用率SQL
- Oracle 表空間查詢相關sqlOracleSQL
- 貼一個求表空間的sql 語句SQL
- 檢視SQL SERVER表的空間使用情況SQLServer
- 管理表空間(表空間的屬性)轉貼
- 根據源庫表空間實際使用建立表空間指令碼指令碼
- 修改oracle使用者名稱,表空間名字,Oracle
- 刪除表空間和表空間包含的檔案
- 取得所有使用者表空間資訊的sqlSQL
- 檢視SQL SERVER表的空間使用情況(續)SQLServer
- 詳細顯示資料表空間的使用率與剩餘空間的SQLSQL
- sql檢視所有表空間使用情況SQL
- 指令碼建立表空間、使用者、表指令碼
- 分析表空間空閒率並收縮表空間
- 監控oracle表空間指令碼Oracle指令碼
- 透過sql語句建立表時指定表空間的語法SQL
- Oracle的邏輯結構(表空間、段、區間、塊)——表空間Oracle
- 測試表的空間壓縮與表空間的關係
- 基於可傳輸表空間的表空間遷移