當前位置:首頁 » 存儲配置 » oracle分區存儲管理

oracle分區存儲管理

發布時間: 2022-09-27 11:41:46

資料庫的實例組成部分及作用是什麼一個oracle資料庫可以有多個實例嗎

很容易混淆,這就是「實例」(instance)和「資料庫」(database)。作為Oracle術語,這兩個詞的定義如下:

q 資料庫(database):物理操作系統文件或磁碟(disk)的集合。使用Oracle 10g的自動存儲管理(Automatic Storage Management,ASM)或RAW分區時,資料庫可能不作為操作系統中單獨的文件,但定義仍然不變。

q 實例(instance):一組Oracle後台進程/線程以及一個共享內存區,這些內存由同一個計算機上運行的線程/進程所共享。這里可以維護易失的、非持久性內容(有些可以刷新輸出到磁碟)。就算沒有磁碟存儲,資料庫實例也能存在。也許實例不能算是世界上最有用的事物,不過你完全可以把它想成是最有用的事物,這有助於對實例和資料庫劃清界線。

這兩個詞有時可互換使用,不過二者的概念完全不同。實例和資料庫之間的關系是:資料庫可以由多個實例裝載和打開,而實例可以在任何時間點裝載和打開一個資料庫。實際上,准確地講,實例在其整個生存期中最多能裝載和打開一個資料庫!稍後就會介紹這樣的一個例子。

是不是更糊塗了?我們還會做進一步的解釋,應該能幫助你搞清楚這些概念。實例就是一組操作系統進程(或者是一個多線程的進程)以及一些內存。這些進程可以操作資料庫;而資料庫只是一個文件集合(包括數據文件、臨時文件、重做日誌文件和控制文件)。在任何時刻,一個實例只能有一組相關的文件(與一個資料庫關聯)。大多數情況下,反過來也成立:一個資料庫上只有一個實例對其進行操作。不過,Oracle的真正應用集群(Real Application Clusters,RAC)是一個例外,這是Oracle提供的一個選項,允許在集群環境中的多台計算機上操作,這樣就可以有多台實例同時裝載並打開一個資料庫(位於一組共享物理磁碟上)。由此,我們可以同時從多台不同的計算機訪問這個資料庫。Oracle RAC能支持高度可用的系統,可用於構建可擴縮性極好的解決方案。
q 資料庫可以由一個或多個實例(使用RAC)裝載和打開。

⑵ oracle海量數據的存儲。

不算龐大,我想超市報的數據表欄位應該不多吧,注意觀察數據文件增長,根據數據量來設定好文件大小,盡量不要頻繁自動擴展,影響性能。如果數據量很大可以建立分區表。

⑶ 關於oracle的問題

由於ORACLE資料庫產品是當前資料庫技術的典型代表,她的產品除了資料庫系統外,還有應用系統、開發工具等。剛接觸Oracle的人員都有這樣的感覺:Oracle的產品太多,每個產品內容精深,不知道從哪兒開始學才好。為了用少量時間更好地理解和使用oracle 資料庫系統,有必要對oracle的一些基本術語及概念進行了解,下面給出一些在管理中經常用到的概念和術語,供初學者快速了解Oracle資料庫系統提供方便。

§1.1 ORACLE7和ORACLE8
ORACLE7是一種完全的關系資料庫系統,它不支持面向對象。
ORACLE8 則是一個引入面向對象的資料庫系統,它既非純的面向對象的資料庫也非純的關系資料庫,它是兩者的結合,因此叫做「對象關系資料庫」。

§1.2 ORACLE8 特點
ORACLE8 於 1997年6月正式發布,它包括了幾乎所有的資料庫技術,因此被認為是未來企業級主選資料庫之一。主要有以下特點:

1.對象/關系模型

ORACLE8對於對象模型採取較為現實和謹慎的態度,使用了對象/關系模型,即在完全支持傳統關系模型的基礎上,為對象機制提供了有限的支持。ORACLE8不僅能夠處理傳統的表結構信息,而且能夠管理由C++,Smalltalk 以及其它開發工具生成的多媒體數據類型,如文本,視頻,圖形,空間對向等。這種做法允許現有軟體開發產品與工具軟體及ORACLE8應用軟體共存,保護了客戶的投資。

2.資料庫伺服器系統的動態可伸縮性

ORACLE8引入了連接存儲池(connection polling)和多路復用(multiplexing)機制,提供了對大型對象的支持。當需要支持一些特殊數據類型時,用戶可以創建軟體插件(catridge )來實現。ORACLE8採用了高級網路技術,提高共享池和連接管理器來提高系統的可括性,容量可從幾 GB 到 幾百 TB 位元組,可允許10萬用戶同時並行訪問,ORACLE 的資料庫中每個表可以容納 1000列,能滿足目前資料庫及數據倉庫應用的需要。
ORACLE 公司稱,ORACLE8可以支持達 512PB的數據量。但目前還未有哪一家用戶的資料庫的數據量達到這個數量。下面是幾種常用數據量的等價關系:
1MB = 1024 KB
1GB = 1Gigabyte Byte = 1024 MB
1TB = 1TeraByte = 1024 GB = 1024*1024MB
1PB = 1PeraByte = 1024 TB = 1024 * 1024 * 1024 MB
1EB = 1ExaByte = 1024 PB = 1024 * 1024 *1024 *1024 MB

3.系統的可用性和易用性

ORACLE8提供了靈活多樣的數據分區功能,一個分區可以是一個大型表,也可以是索引易於管理的小塊,可以根據數據的取值分區。有效地提高了系統操作能力及數據可用性 ,減少I/O 瓶頸。ORACLE8還對並行處理進行了改進,在點陣圖索引,查詢,排序,連接和一般索引掃描等操作引入並行處理,提高了單個查詢的並行度。ORACLE8通過並行伺服器(Parallel Server Option )來提高系統的可用性。

4.系統的可管理性和數據安全功能

ORACLE8提供了自動備份和恢復功能,改進了對大規模和更加細化的分布式操作系統的支持,如加強了sql 操作復制的並行性。為了幫助客戶有效地管理整個資料庫和應用系統,ORACLE還提供了企業管理系統(ORACLE Enterprise Manager),資料庫管理員可以從一個集中控制台拖放式圖形用戶界面管理ORACLE的系統環境。
ORACLE8通過安全伺服器中提供的安全服務,加強了ORACLE Web Server 中原有的用戶驗證和用戶管理。

5.面向網路計算

ORACLE8i在 與JAVA VM 及 CORBA ORB 集成後,將成為NCA(網路計算機體結構)的核心部件。NCA是ORACLE 關於分布式對象與網路計算機的戰略規劃。ORACLE8 對NCA產生了巨大影響,簡化了應用軟體的化分,推動了瘦型客戶機及Web 應用軟體的發展。在ORACLE8 FOR NT 中還提共了新產品Web 發布助理(Web Publishing Assistant ORACLE),提供了一種在WORD WIDE WEB 上發布資料庫信息的簡便,有效的方法。

6.對多平台的支持與開放性

網路結構往往含有多個平台,ORACLE8 可以運行於目前所有主流平台上,如
SUN Solarise, Sequent Dynix/PTX,Intel Nt,HP_UX,DEC_UNIX,IBM AIX 和 SP等。ORACLE8 的異構服務為同其它數據源以及使用SQL 和PL/SQL的服務進行通訊提供了必要的基礎設施。ORACLE8 繼續至力於對開放標准規范SQL3,JDBC,JSQL和CORBA 的支持。

§1.3 ORACLE8和ORACLE8i
當 ORACLE 8 第一次發行時,它提供了優於 ORACLE 7 的性能和選件,但是它基本是ORACLE7 的引擎。 在ORACLE8 的後來版本中不斷作過多次的完善,出現 ORACLE 8.0.X 版本。然而1998年初發行(推出)的 ORACLE 8I 可以被看作是 ORACLE 8 的功能擴展集。
由於ORACLE 8I 比 ORACLE 8 提供了更多的功能,它除了共同的RDBMS功能外,還提供了許多與INTERNET 有關的能力,最重要的是它將 JAVA 集成為一種內部的數據語言,這種語言可充當或替代品,而且它還集成了一個WEB伺服器和開發平台(Web DB )。對ORACLE 8.0.x 來說只到 ORACLE 8.0.5 版本就終止了,接著就推出了 ORACLE8i 8.1.5版本,ORACLE8i 8.1.5版本也經常被稱為Release 1;而ORACLE8i 8.1.6版本被稱為Release 2;ORACLE8i 8.1.7版本被稱為Release 3。
§1.4 ORACLE8i和ORACLE9i
在正式進入21世紀前的2000年年底,ORACLE公司正式發布了ORACLE 9i 新資料庫系統。原先預料可能會有ORACLE 8i V8.1.8等版本,但ORACLE8i版本只推出8.1.7就被Oracle9i所代替。ORACLE公司和其它的軟體公司一樣,為了搶占市場,不再願意在原來版本上再作更多的改進和優化工作,而是直接的推出新產品這樣一種策略。ORACLE9i 與ORACLE8i 比較,ORACLE 9i 主要包括下面三大部分:

l 資料庫核心(Database )
l 應用伺服器(Application Server )
l 開發工具集(Developer Suite )

Oracle9i 主要焦點(Oracle9i Focus ):
l 電子商務智能化( E-Business Intelligence )
l 應用開發( Applications Development )
l 應用主機( Applications Hosting )
l 門戶與內容( Portals and Content )
l 電子商務連續性( E-Business Continuity )

Oracle9i 為了結合 Internet 市場設計。Oracle9i適合並勝任市場上所有的苛刻要求。
l Oracle9I實時應用( Oracle9i Real Application)
l Oracle9I高可用性(Oracle9i High Availability)
l Oracle9I 系統管理( Oracle9i Systems Management )
l Oracle9I 安全( Oracle9i Security)

Oracle9i 資料庫服務(Oracle9i Database Services):
l 商業智能與數據倉庫( Business Intelligence and Data Warehousing)
l Oracle9I動態服務( Oracle9i Dynamic Services)
l Oracle9I JAVA 和XML(Oracle9i Java and XML)

l 電子商務集成( E-Business Integration )

§1.5 ORACLE OAS和ORACLE iAS
目前的ORACLE公司的iAS 的早期版本是 ORACLE Web Server ,後來第4版改名為ORACLE APPLICATION SERVER ,2000年底前又改名為 ORACLE9i Internet Application Server(ORACLE iAS)。目前的iAS可以與ORACLE8i 或ORACLE9i 結合在一起的綜合開發工具。為創建和部署任何基於網路的應用程序提供了一個完整的Internet 平台,iAS包括了門戶、事務應用、商業智能工具、無線上網應用和企業集成等。
Oracle Internet Application Server 提供了行業中最全面的中間層產品,包括通信、表示、商業邏輯、數據緩存和系統服務等。

1.通信服務:

基於Apache 的ORACLE HTTP Server,主要包括下面模塊:
mod_jserv:將對servlet 的HTTP請求分發到Oracle iAS 的Servlet 引擎。
Mod_perl:將perl 程序的HTTP 請求分發到Apache Web Server 的Perl Interpreter。
Mod_ssl:提供基於SSL證書的公共密鑰,它被用來在客戶端和Apache Server 之間進行加密通信。
Mod_plsql:Oracle 專用模塊,用來將HTTP請求傳到資料庫內的PL/SQL和Java存儲過程。

2. 表示服務

提供下面方法進行內容表示:
Oracle portal(Oracle 門戶)
Apache Jserver (Apache Java 伺服器)
Perl Interpreter( Perl 解釋程序 )
Oracle JavaServer Pager(JSP)
Oracle PL/SQL Server Pages(PSP)

3.商業邏輯服務

可提供以下服務組件:

Oracle8i JVM( Java 虛擬機)
Oracle8i PL/SQL
Java 商業組件(BC4J)
Form Service
Report Service
Discoverer Viewer

4.數據管理服務

Oracle 8i cache

5.系統服務

Oracle Enterprise Manager(Oracle 企業管理器)
Oracle Advanced Security (Oracle 高級安全性)
Developer's KITS(開發工具),包括:

l Oracle database client developer's Kit
l Oracle XML developer's Kit(XDK)
l Oracle LDAP developer's Kit

§1.6 ORACLE Application R11i
Oracle 公司除了提供完美的資料庫系統外,也提供完整的解決方案的套件,即全套應用系統,通常稱作 Oracle Application R11i。它是一全面集成的電子商務套件。它包括:

1.數據倉庫平台
l Oracle 8i 企業級資料庫伺服器
l Oracle Warehouse Builder(數據倉庫構造器)

2.商業智能工具集
l Oracle Discoverer
l Oracle Express產品系列
l Oracle darwin

3.Oracle 金融服務應用
l 績效管理
l 客戶關系管理
l 風險管理

4.ORACLE財務系統
基於Internet 的財務管理系統包括下面模塊:
l 商業智能管理
l 預算管理
l 合並管理
l 現金預測管理
l 員工費用管理
l Oracle 財務分析系統
l Oracle 項目管理系統
l 工作流程管理
l 預警系統

§1.7 ORACLE 伺服器組件
l 過程組件

可以用於建立過程、觸發器(封裝),這些代碼可以存放在資料庫伺服器中。Oracle,Sybase,Informix,Sql Server 都把這些所謂存儲過程存放在資料庫內,而DB2則把這些所謂存儲過程存放在伺服器的另外一個專門分區內。

l 分布選件

可以支持多台伺服器(在不同的地方)間的通信,即每個伺服器上均有Oracle系統,而分布選件就是把這些不同的地方的資料庫系統管理起來的部件。

l 並行選件

對一台具有多個CPU的機器能進行並行查詢、充分利用計算機的性能。

l 並行伺服器

對於多台機器(有自己的處理器)共同訪問同一個硬碟這樣的結構進行管理,為用戶提供很高的容錯性。當某台機器出現故障時,可以安排用戶使用(登錄)到另一台機器上。當兩台都出現故障時,則整個系統都不能使用。

l 圖象選件

可以存儲、管理和提供實時的,全屏幕的圖象和高質量的聲音給網路上的用戶。

l 企業管理器

Oracle 提供一個幫助用戶管理系統,應用網路和資料庫工具「Oracle企業管理器(OEM)」.

l 空間數據選件(Spatial data option)

空間數據選件是一種存儲和檢索數據的新方法,在查詢中系統根據所關心的數據進行組織,因此,資料庫性能的主要決定因素是所感興趣的資料庫集的大小。

l 上下文選件

是一種文本管理方案,它把非結構化的文本數據管理如同結構化一樣。可以建立和開展基於文本的帶有類似SQL介面的應用。這種方法只有 ORACLE8 及以後版本能支持。

l Web伺服器

可以通過WWW來訪問Oracle資料庫中的數據。

l OLAP選件

聯機分析處理,Oracle提供Oracle Express作為聯機分析處理。

§1.8 目前ORACLE8i 的主要產品
(Oracle9i產品在最後一天介紹)

l SQL*Plus

Oracle的SQL*Plus是標准SQL的一個超集,它除提供符合SQL標準的語句外,還提供一些Oracle特定的外加語句,set,column,Ttitle等。

l Oralce Forms

Oracle Forms的前身是SQL*Forms。SQL*Forms和Oracle Forms都是為用戶提供輸入、查詢、修改等功能的開發工具,前者是在字元終端上運行。後者是在圖形終端上運行。Oracle Forms除了在許多觸發器及功能鍵繼承前者外,大部分的設計界面都發生了變化。
SQL*Forms不含Menu功能,Menu專門為一個產品叫SQL*Menu;而Oracle Forms 把Menu,Library 等融為一體,使功能更強大。

l Oracle Reports

Oracle Reports的先前版本是SQL*Reportwriter,自從Oracle7以後,將其發展為能支持Windows界面的開發工具,在最新版本中,它可以訪問其他主要資料庫,如Sybase, Informix, DB2 ,Microsoft SQL Server等。

l Oracle Book

Oracle Book提供一個共享Oracle產品文本的聯機文檔生成與瀏覽工具。

l Oracle Loader

Oracle Loader早期就提供一個ODL(Oracle data Loader)數據載入工具。該工具可以把多種格式的文本數據載入到Oracle表中。後來的版本更名為SQL*Loader,現在叫Oracle Loader,目前版本可以把多媒體數據載入到資料庫系統中。

l Developer/2000 和 Oracle Developer

是一個綜合產品的總稱,它包括:

l Oracle Reports
l Oracle Forms
l Oracle Graphics
l Procere Builder

四個部件,它的先前名稱叫CDE產品(即協同開發環境),現在Oracle的開發工具叫Oracle Developer。

l ORACLE Designer(Designer /2000)

ORACLE Designer 的前身是 Designer/2000,而Designer/2000的前身是SQL*Case,它是一個資料庫Case工具(計算機輔助設計工具),它目前版本包含:
Business Process Reengineering
Modellers
Generators

l Personal Oracle

95年後,Oracle 提供了可以在Dos,Windows3.x,Windows95,Windows NT 等不同的單機版,它的基本使用方法完全同工作組版和企業版一樣。

l SQL*Net和Net 8

SQL*Net和Net 8都提供在網路下的訪問Oracle資料庫的產品。SQL*Net 分為SQL*Net V1 和SQL*Net V2。SQL*Net V1主要支持字元終端方式,如Dos,終端伺服器方式;SQL*Net V2.x主要支持圖形終端與Oracle的連接,而Net 8則是Oracle 8網路產品SQL*Net V2.x的升級版。

l Oracle Jdeveloper

Oracle 最新產品,它是一個具有高效生產力的3GL編程工具,它可以使編程人員在Java中嵌入SQL語句,編寫能訪問資料庫的Java程序。

l Oracle Express

可以在線分析處理的工具,利用它可以方便地進行各種數據分析。

l PRO*C, PRO*COBOL, PRO*FORTRAN等

可以提供與3GL介面的工具,利用它可以在高級語言中嵌入 SQL語句,從而達到訪問Oracle資料庫的目的。

l 財務軟體( ORACLE Financials )

ORACLE Financials 是 ORACLE APPLICATION 中用於財務管理的應用程序模塊。包括財務會計,管理會計。

l 供應鏈與製造應用軟體

包括:
l 銷售定單管理
l 供應商管理
l 新產品工程設計管理
l 物料管理
l 成本管理
l 質量管理

⑷ 如何啟用oracle11g的全自動內存管理以及計算memory

在oracle 11g中,使用一個參數memory_target就能夠實現SGA和PGA組件依據工作負荷進行自動內存分配。oracle推薦使用自動內存管理簡化內存分配。 oracle 11g依然支持手工內存分配: 1:oracle 11g使用memory_target來支持內存自動分配。 2:使用sga_target和pga_target參數來設置SGA和PGA,資料庫會在這兩個組件中自我優化。 3:你也可以手工設置SGA中的各個組件。比如db_cache_size,shared_pool_size等組件。 oracle 11g中新的內存初始化參數: 有兩個新的關鍵的內存初始化參數memory_target(動態參數,設置分配給實例的內存數)和memory_max_size(靜態參數,這個參數是可選的,設置實例能夠分配的最大內存,設置的是memory_target的上限值)。注意:雖然memory_target是一個動態參數,但是當資料庫運行時,你不能從非自動內存管理交換到自動內存管理。必須重啟資料庫將參數應用到實例啟動過程才行。

⑸ 請教Oracle 11G 自動內存管理如何分配內存

請教Oracle 11G 自動內存管理如何分配內存
在11g中oracle引入了自動化內存管理(Automatic Memory Management)概念,僅用兩個參數就能完成oracle的內存管理工作。

1 :MEMORY_TARGET:oracle所能使用的最大內存,該參數可以動態調整。
2 :MEMORY_MAX_TARGET:MEMORY_TARGET參數所能動態設定的最大值,不能動態調整,需要重啟資料庫。
至於具體如何分配
正常看資料庫伺服器一共有多少內存,是否還有其他系統或程序在跑。
可以分配全部內存的2/3 到 3/4 給oracle ;oracle自己分配 pga 和 sga 及其內部的內存結構。

⑹ oracle邏輯存儲結構有哪些部分組成

Oracle資料庫邏輯存儲結構是Oracle資料庫創建後利用邏輯概念來描述資料庫內部數據的組織和管理形式。包括表空間(tablespace)、段(segment)、區(extent)和塊(block)四種。一個表空間由多個段構成;一個段由多個區構成,一個區由多個塊構成。資料庫是由表空間構成的,數據存儲在表空間中。一個表空間包含一個或多個數據文件,但一個數據文件只能屬於一個表空間。
邏輯存儲結構概念存儲在數據字典中,用戶可通過查詢數據字典獲取邏輯存儲結構信息。

⑺ oracle partition paraller 8 和16的區別

添加分區
ALTER TABLE table_name ADD PARTITION (partCol = 'value1') location 'loc1'; //示例
ALTER TABLE table_name ADD IF NOT EXISTS PARTITION (dt='20130101') LOCATION '/user/Hadoop/warehouse/table_name/dt=20130101'; //一次添加一個分區
ALTER TABLE page_view ADD PARTITION (dt='2008-08-08', country='us') location '/path/to/us/part080808' PARTITION (dt='2008-08-09', country='us') location '/path/to/us/part080809'; //一次添加多個分區
刪除分區
ALTER TABLE login DROP IF EXISTS PARTITION (dt='2008-08-08');
ALTER TABLE page_view DROP IF EXISTS PARTITION (dt='2008-08-08', country='us');
修改分區
ALTER TABLE table_name PARTITION (dt='2008-08-08') SET LOCATION "new location";
ALTER TABLE table_name PARTITION (dt='2008-08-08') RENAME TO PARTITION (dt='20080808');
查詢分區
select*from user_tables a where a.partitioned='YES'
此文從以下幾個方面來整理關於分區表的概念及操作:1.表空間及分區表的概念2.表分區的具體作用3.表分區的優缺點4.表分區的幾種類型及操作方法5.對表分區的維護性操作。
(1)表空間及分區表的概念表空間:
是一個或多個數據文件的集合,所有的數據對象都存放在指定的表空間中,但主要存放的是表,所以稱作表空間。
分區表:當表中的數據量不斷增大,查詢數據的速度就會變慢,應用程序的性能就會下降,這時就應該考慮對表進行分區。表進行分區後,邏輯上表仍然是一張完整的表,只是將表中的數據在物理上存放到多個表空間(物理文件上),這樣查詢數據時,不至於每次都掃描整張表。
( 2)表分區的具體作用Oracle的表分區功能通過改善可管理性、性能和可用性,從而為各式應用程序帶來了極大的好處。
通常,分區可以使某些查詢以及維護操作的性能大大提高。此外,分區還可以極大簡化常見的管理任務,分區是構建千兆位元組數據系統或超高可用性系統的關鍵工具。
分區功能能夠將表、索引或索引組織表進一步細分為段,這些資料庫對象的段叫做分區。每個分區有自己的名稱,還可以選擇自己的存儲特性。從資料庫管理員的角度來看,一個分區後的對象具有多個段,這些段既可進行集體管理,也可單獨管理,這就使資料庫管理員在管理分區後的對象時有相當大的靈活性。但是,從應用程序的角度來看,分區後的表與非分區表完全相同,使用 SQL DML 命令訪問分區後的表時,無需任何修改。
什麼時候使用分區表:1、表的大小超過2GB. 2、表中包含歷史數據,新的數據被增加都新的分區中。
(3)表分區的優缺點:
優點:
1、改善查詢性能:對分區對象的查詢可以僅搜索自己關心的分區,提高檢索速度。
2、增強可用性:如果表的某個分區出現故障,表在其他分區的數據仍然可用;3、維護方便:如果表的某個分區出現故障,需要修復數據,只修復該分區即可;4、均衡I/O:可以把不同的分區映射到磁碟以平衡I/O,改善整個系統性能。
缺點:分區表相關:已經存在的表沒有方法可以直接轉化為分區表。不過 Oracle 提供了在線重定義表的功能。
(4)表分區的幾種類型及操作方法
一。范圍分區:范圍分區將數據基於范圍映射到每一個分區,這個范圍是你在創建分區時指定的分區鍵決定的。這種分區方式是最為常用的,並且分區鍵經常採用日期。舉個例子:你可能會將銷售數據按照月份進行分區。
當使用范圍分區時,請考慮以下幾個規則:1、每一個分區都必須有一個VALUES LESS THEN子句,它指定了一個不包括在該分區中的上限值。分區鍵的任何值等於或者大於這個上限值的記錄都會被加入到下一個高一些的分區中。
2、所有分區,除了第一個,都會有一個隱式的下限值,這個值就是此分區的前一個分區的上限值。
3、在最高的分區中,MAXVALUE被定義。MAXVALUE代表了一個不確定的值。這個值高於其它分區中的任何分區鍵的值,也可以理解為高於任何分區中指定的VALUE LESS THEN的值,同時包括空值。
例一:假設有一個CUSTOMER表,表中有數據200000行,我們將此表通過CUSTOMER_ID進行分區,每個分區存儲100000行,我們將每個分區保存到單獨的表空間中,這樣數據文件就可以跨越多個物理磁碟。下面是創建表和分區的代碼,如下:CREATE TABLE CUSTOMER(CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,FIRST_NAME VARCHAR2(30) NOT NULL,LAST_NAME VARCHAR2(30) NOT NULL,PHONE VARCHAR2(15) NOT NULL,EMAIL VARCHAR2(80),STATUS CHAR(1))
PARTITION BY RANGE (CUSTOMER_ID)
(PARTITION CUS_PART1 VALUES LESS THAN (100000) TABLESPACE CUS_TS01,PARTITION CUS_PART2 VALUES LESS THAN (200000) TABLESPACE CUS_TS02)
例二:按時間劃分CREATE TABLE ORDER_ACTIVITIES(ORDER_ID NUMBER(7) NOT NULL,ORDER_DATE DATE,TOTAL_AMOUNT NUMBER,CUSTOTMER_ID NUMBER(7),PAID CHAR(1))
PARTITION BY RANGE (ORDER_DATE)
(PARTITION ORD_ACT_PART01 VALUES LESS THAN (TO_DATE('01- MAY -2003','DD-MON-YYYY')) TABLESPACEORD_TS01,PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUN-2003','DD-MON-YYYY')) TABLESPACE ORD_TS02,PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUL-2003','DD-MON-YYYY')) TABLESPACE ORD_TS03)
例三:MAXVALUE CREATE TABLE RangeTable(idd INT PRIMARY KEY ,iNAME VARCHAR(10),grade INT)
PARTITION BY RANGE (grade)
(PARTITION part1 VALUES LESS THEN (1000) TABLESPACE Part1_tb,PARTITION part2 VALUES LESS THEN (MAXVALUE) TABLESPACE Part2_tb);
二。列表分區:該分區的特點是某列的值只有幾個,基於這樣的特點我們可以採用列表分區。
例一CREATE TABLE PROBLEM_TICKETS(PROBLEM_ID NUMBER(7) NOT NULL PRIMARY KEY,DESCRIPTION VARCHAR2(2000),CUSTOMER_ID NUMBER(7) NOT NULL,DATE_ENTERED DATE NOT NULL,STATUS VARCHAR2(20))
PARTITION BY LIST (STATUS)
(PARTITION PROB_ACTIVE VALUES ('ACTIVE') TABLESPACE PROB_TS01,PARTITION PROB_INACTIVE VALUES ('INACTIVE') TABLESPACE PROB_TS02
例二CREATE TABLE ListTable(id INT PRIMARY KEY ,name VARCHAR (20),area VARCHAR (10))
PARTITION BY LIST (area)
(PARTITION part1 VALUES ('guangdong','beijing') TABLESPACE Part1_tb,PARTITION part2 VALUES ('shanghai','nanjing') TABLESPACE Part2_tb);)
三。散列分區:這類分區是在列值上使用散列演算法,以確定將行放入哪個分區中。當列的值沒有合適的條件時,建議使用散列分區。
散列分區為通過指定分區編號來均勻分布數據的一種分區類型,因為通過在I/O設備上進行散列分區,使得這些分區大小一致。
例一:CREATE TABLE HASH_TABLE(COL NUMBER(8),INF VARCHAR2(100))
PARTITION BY HASH (COL)
(PARTITION PART01 TABLESPACE HASH_TS01,PARTITION PART02 TABLESPACE HASH_TS02,PARTITION PART03 TABLESPACE HASH_TS03)
簡寫:CREATE TABLE emp(empno NUMBER (4),ename VARCHAR2 (30),sal NUMBER)
PARTITION BY HASH (empno) PARTITIONS 8 STORE IN (emp1,emp2,emp3,emp4,emp5,emp6,emp7,emp8);
hash分區最主要的機制是根據hash演算法來計算具體某條紀錄應該插入到哪個分區中,hash演算法中最重要的是hash函數,Oracle中如果你要使用hash分區,只需指定分區的數量即可。建議分區的數量採用2的n次方,這樣可以使得各個分區間數據分布更加均勻。
四。組合范圍散列分區這種分區是基於范圍分區和列表分區,表首先按某列進行范圍分區,然後再按某列進行列表分區,分區之中的分區被稱為子分區。
CREATE TABLE SALES(PRODUCT_ID VARCHAR2(5),SALES_DATE DATE,SALES_COST NUMBER(10),STATUS VARCHAR2(20))
PARTITION BY RANGE(SALES_DATE) SUBPARTITION BY LIST (STATUS)
(PARTITION P1 VALUES LESS THAN(TO_DATE('2003-01-01','YYYY-MM-DD'))TABLESPACE rptfact2009(SUBPARTITION P1SUB1 VALUES ('ACTIVE') TABLESPACE rptfact2009,SUBPARTITION P1SUB2 VALUES ('INACTIVE') TABLESPACE rptfact2009),PARTITION P2 VALUES LESS THAN (TO_DATE('2003-03-01','YYYY-MM-DD')) TABLESPACE rptfact2009(SUBPARTITION P2SUB1 VALUES ('ACTIVE') TABLESPACE rptfact2009,SUBPARTITION P2SUB2 VALUES ('INACTIVE') TABLESPACE rptfact2009)
五。復合范圍散列分區:這種分區是基於范圍分區和散列分區,表首先按某列進行范圍分區,然後再按某列進行散列分區。
create table dinya_test(transaction_id number primary key,item_id number(8) not null,item_description varchar2(300),transaction_date date)
partition by range(transaction_date)subpartition by hash(transaction_id) subpartitions 3 store in (dinya_space01,dinya_space02,dinya_space03)
(partition part_01 values less than(to_date(『2006-01-01』,『yyyy-mm-dd』)),partition part_02 values less than(to_date(『2010-01-01』,『yyyy-mm-dd』)),partition part_03 values less than(maxvalue));
(5)。有關表分區的一些維護性操作:
一、添加分區以下代碼給SALES表添加了一個P3分區ALTER TABLE SALES ADD PARTITION P3 VALUES LESS THAN(TO_DATE('2003-06-01','YYYY-MM-DD'));注意:以上添加的分區界限應該高於最後一個分區界限。
以下代碼給SALES表的P3分區添加了一個P3SUB1子分區ALTER TABLE SALES MODIFY PARTITION P3 ADD SUBPARTITION P3SUB1 VALUES('COMPLETE');
二、刪除分區以下代碼刪除了P3表分區:ALTER TABLE SALES DROP PARTITION P3;在以下代碼刪除了P4SUB1子分區:ALTER TABLE SALES DROP SUBPARTITION P4SUB1;注意:如果刪除的分區是表中唯一的分區,那麼此分區將不能被刪除,要想刪除此分區,必須刪除表。
三、截斷分區截斷某個分區是指刪除某個分區中的數據,並不會刪除分區,也不會刪除其它分區中的數據。當表中即使只有一個分區時,也可以截斷該分區。通過以下代碼截斷分區:ALTER TABLE SALES TRUNCATE PARTITION P2;通過以下代碼截斷子分區:ALTER TABLE SALES TRUNCATE SUBPARTITION P2SUB2;
四、合並分區合並分區是將相鄰的分區合並成一個分區,結果分區將採用較高分區的界限,值得注意的是,不能將分區合並到界限較低的分區。以下代碼實現了P1 P2分區的合並:ALTER TABLE SALES MERGE PARTITIONS P1,P2 INTO PARTITION P2;
五、拆分分區拆分分區將一個分區拆分兩個新分區,拆分後原來分區不再存在。注意不能對HASH類型的分區進行拆分。
ALTER TABLE SALES SBLIT PARTITION P2 AT(TO_DATE('2003-02-01','YYYY-MM-DD')) INTO (PARTITION P21,PARTITION P22);
六、接合分區(coalesca)
結合分區是將散列分區中的數據接合到其它分區中,當散列分區中的數據比較大時,可以增加散列分區,然後進行接合,值得注意的是,接合分區只能用於散列分區中。通過以下代碼進行接合分區:ALTER TABLE SALES COALESCA PARTITION;
七、重命名表分區以下代碼將P21更改為P2 ALTER TABLE SALES RENAME PARTITION P21 TO P2;
八、相關查詢跨分區查詢select sum( *) from(select count(*) cn from t_table_SS PARTITION (P200709_1)
union all select count(*) cn from t_table_SS PARTITION (P200709_2));查詢表上有多少分區SELECT * FROM useR_TAB_PARTITIONS WHERE TABLE_NAME='tableName'查詢索引信息select object_name,object_type,tablespace_name,sum(value)
from v$segment_statistics where statistic_name IN ('physical reads','physical write','logical reads')and object_type='INDEX' group by object_name,object_type,tablespace_name order by 4 desc
——顯示資料庫所有分區表的信息:select * from DBA_PART_TABLES
——顯示當前用戶可訪問的所有分區表信息:select * from ALL_PART_TABLES
——顯示當前用戶所有分區表的信息:select * from USER_PART_TABLES
——顯示表分區信息 顯示資料庫所有分區表的詳細分區信息:select * from DBA_TAB_PARTITIONS
——顯示當前用戶可訪問的所有分區表的詳細分區信息:select * from ALL_TAB_PARTITIONS
——顯示當前用戶所有分區表的詳細分區信息:select * from USER_TAB_PARTITIONS
——顯示子分區信息 顯示資料庫所有組合分區表的子分區信息:select * from DBA_TAB_SUBPARTITIONS
——顯示當前用戶可訪問的所有組合分區表的子分區信息:select * from ALL_TAB_SUBPARTITIONS
——顯示當前用戶所有組合分區表的子分區信息:select * from USER_TAB_SUBPARTITIONS
——顯示分區列 顯示資料庫所有分區表的分區列信息:select * from DBA_PART_KEY_COLUMNS
——顯示當前用戶可訪問的所有分區表的分區列信息:select * from ALL_PART_KEY_COLUMNS
——顯示當前用戶所有分區表的分區列信息:select * from USER_PART_KEY_COLUMNS
——顯示子分區列 顯示資料庫所有分區表的子分區列信息:select * from DBA_SUBPART_KEY_COLUMNS
——顯示當前用戶可訪問的所有分區表的子分區列信息:select * from ALL_SUBPART_KEY_COLUMNS
——顯示當前用戶所有分區表的子分區列信息:select * from USER_SUBPART_KEY_COLUMNS
——怎樣查詢出oracle資料庫中所有的的分區表select * from user_tables a where a.partitioned='YES'
——刪除一個表的數據是truncate table table_name;
——刪除分區表一個分區的數據是alter table table_name truncate partition p5;
「PS」:當update更改數據所屬分區時,必須賦予表row movement許可權。
alter table test_partition_tab enable/disable row movement;update分區欄位,改變所屬分區,數據在內部變化是經過了源數據插入新分區、新數據更新、源老數據刪除的步驟,因此rowid將會改變;數據索引也將重走。

⑻ Oracle 資料庫 與 MySQL 資料庫在數據存儲上有什麼差異

Oracle 是基於用戶的數據管理系統。數據存儲時,首先有資料庫,資料庫中下轄 「用戶」,「數據表」 存放在用戶下,數據存儲在表中。對接新項目時,通常只需創建新用戶即可;MySQL 是基於資料庫的數據管理系統。數據存儲時,首先有用戶(通常root),用戶中下轄 「資料庫」,「數據表」存放在資料庫下,數據存儲在表中。對接新項目時,通常只需創建新資料庫;資料庫相關知識,可以到黑馬程序員學習,如果想系統的學習某一門編程語言,也可以到黑馬哦!非常高興你能採納我的回答,如果還有什麼問題可以繼續追問,謝謝

熱點內容
監控腳本實用 發布:2022-11-30 14:14:28 瀏覽:377
九陰真經顯血腳本 發布:2022-11-30 14:14:22 瀏覽:197
浪潮伺服器mgn口地址 發布:2022-11-30 14:13:41 瀏覽:821
linux鎖屏設置 發布:2022-11-30 14:08:20 瀏覽:896
演算法轉讓 發布:2022-11-30 14:07:24 瀏覽:25
我的世界為什麼從伺服器斷開連接 發布:2022-11-30 14:07:04 瀏覽:432
怎麼擠出母乳存儲袋中的空氣 發布:2022-11-30 14:05:32 瀏覽:33
linuxbin文件 發布:2022-11-30 14:01:19 瀏覽:481
購物網站源碼php 發布:2022-11-30 13:58:15 瀏覽:475
python執行java 發布:2022-11-30 13:56:23 瀏覽:942