分區(qū)表的可用性:
創(chuàng)建一個(gè)分區(qū)表:
CREATE TABLE employee
( empno int,
ename varchar2(20)
)
PARTITION BY HASH (empno)
( partition part_1 tablespace TBS_DAIMIN,
partition part_2 tablespace USERS
)
SQL> insert into employee select empno, ename from scott.emp
2 ;
14 rows created.
commit;
SQL> select * from employee partition(part_1);
EMPNO ENAME
---------- --------------------
7369 SMITH
7499 ALLEN
7654 MARTIN
7698 BLAKE
7782 CLARK
7839 KING
7876 ADAMS
7934 MILLER
8 rows selected.
SQL> select * from employee partition(part_2);
EMPNO ENAME
---------- --------------------
7521 WARD
7566 JONES
7788 SCOTT
7844 TURNER
7900 JAMES
7902 FORD
6 rows selected.
假如將該表的一個(gè)分區(qū)offline之后,出現(xiàn)下面的錯(cuò)誤:
SQL> alter tablespace TBS_DAIMIN offline;
SQL> select * from employee;
select * from employee
*
ERROR at line 1:
ORA-00376: file 12 cannot be read at this time
ORA-01110: data file 12: '/opt/ora9/PRoduct/9.2/dbs/tbs_daimin02.dat'
原因:
主要是因?yàn)樵摫淼囊粋€(gè)分區(qū)已經(jīng)offline,而 select * from employee是訪問整個(gè)表的信息,這樣必然需要訪問表的所有分區(qū),當(dāng)訪問到已經(jīng)offline的時(shí)候,則會(huì)報(bào)錯(cuò);
但是如果是試圖訪問聯(lián)機(jī)的分區(qū)的數(shù)據(jù),則可以成功;如下:
SQL> variable n number
exec :n :=SQL> 7521
PL/SQL procedure successfully completed.
SQL> select * from employee where empno = :n
2 ;
EMPNO ENAME
---------- --------------------
7521 WARD
但是這樣分區(qū)有個(gè)好處就是放一張分區(qū)表出現(xiàn)故障時(shí),可以通過分析確認(rèn)是表的哪個(gè)分區(qū)出現(xiàn)故障,然后將出現(xiàn)故障的分區(qū)通過優(yōu)化器從方案中排除對該分區(qū)的數(shù)據(jù)查詢,可以減少故障時(shí)間。
比方說:
有一個(gè)100GB的表,并且這個(gè)表被分成50個(gè)2GB的分區(qū),可以更快的從系統(tǒng)錯(cuò)誤中恢復(fù)過來。如果有一個(gè)2GB的分區(qū)受損,則恢復(fù)時(shí)間則就恢復(fù)一個(gè)2GB分區(qū)所花費(fèi)的時(shí)間,而不是恢復(fù)一個(gè)100GB的表所花費(fèi)的時(shí)間
可用性得到了提高:
1、分區(qū)可以用優(yōu)化器來排除,使得一個(gè)分區(qū)的破壞不會(huì)對用戶產(chǎn)生很大的影響,最多就是查詢不到受損分區(qū)的數(shù)據(jù);
2、分區(qū)受損,只需要恢復(fù)該受損分區(qū)及可,這樣減少了系統(tǒng)故障時(shí)間。
新聞熱點(diǎn)
疑難解答
圖片精選