第一篇:學(xué)習(xí)oracle的6條經(jīng)驗(yàn)
學(xué)習(xí)oracle的6條經(jīng)驗(yàn)
1、如果有一定的數(shù)據(jù)庫(kù)基礎(chǔ),知道SQL是怎么回事,即使寫不出來(lái)簡(jiǎn)單的SQL,但可以看懂它們,你就可以跳到2。否則請(qǐng)先看一下數(shù)據(jù)庫(kù)基礎(chǔ)和SQL語(yǔ)言,不需要很深,更不需要去記憶那些復(fù)雜的SQL命令,這些可以留在以后邊應(yīng)用邊學(xué)習(xí)、記憶。
2、要想學(xué)好ORACLE,首先要學(xué)習(xí)ORACLE的體系結(jié)構(gòu),現(xiàn)在你不需要深入理解它們,但要分清幾個(gè)關(guān)鍵的概念:
instance&database, memory structure,process&those files,such as data file, control file, init parameter file etc以及database ,tablespace,data file和tablespace,segmnet,extent & block它們之間的關(guān)系。
當(dāng)然還要分清undo tablespace & redo log file等,對(duì)于很多初學(xué)者來(lái)說(shuō),能夠?qū)@些概念有個(gè)較為清晰的認(rèn)識(shí)并不是一件容易的事,而這些并非Oracle的全部。
3、有關(guān)Oracle的一些基本概念,下面要學(xué)習(xí)的是一些簡(jiǎn)單的的實(shí)際操作,就是如何去管理Oracle數(shù)據(jù)庫(kù),當(dāng)然不是管理全部的Oracle。在此過(guò)程中你將對(duì)SQL和Oracle體系結(jié)構(gòu)有個(gè)更深入的了解。
4、到了這一步你基本上算是初步掌握了ORACLE,下面將要根據(jù)你的方向來(lái)具體學(xué)習(xí)其它的ORACLE知識(shí)了。如果你是開(kāi)發(fā)人員,則需要更多地去學(xué)習(xí)PL/SQL以及DEVELOPER,而這將是一門新的課程。如果你是一名DBA,請(qǐng)繼續(xù)。
5、現(xiàn)在你可以根據(jù)自己的實(shí)際情況,進(jìn)行有選擇的學(xué)習(xí),也就是說(shuō)下面的內(nèi)容沒(méi)有特別順序要求。可以選擇深入學(xué)習(xí)ORACLE的管理、備份與恢復(fù)、性能調(diào)整、網(wǎng)絡(luò)等。當(dāng)然在學(xué)習(xí)這些知識(shí)的過(guò)程中,如果有實(shí)際的工作更好,這樣你可以在實(shí)際中成長(zhǎng),學(xué)會(huì)TROUBLE SHOOTING。
6、當(dāng)然在學(xué)習(xí)的過(guò)程中,你可以在網(wǎng)站或論壇中與他人進(jìn)行交流,可以看別人的一些經(jīng)驗(yàn)文章,也可以自己寫一些心得體會(huì)。技術(shù)進(jìn)步的本身就是經(jīng)驗(yàn)的積累和提煉過(guò)程,希望大家共同成長(zhǎng),歡迎大家相互交流。
第二篇:Oracle經(jīng)驗(yàn)集錦
1.刪除表空間
DROP TABLESPACE TableSpaceName [INCLUDING CONTENTS [AND DATAFILES]]
2.刪除用戶
DROP USER User_Name CASCADE
3.刪除表的注意事項(xiàng)
在刪除一個(gè)表中的全部數(shù)據(jù)時(shí),須使用TRUNCATE TABLE 表名;因?yàn)橛肈ROP TABLE,DELETE * FROM 表名時(shí),TABLESPACE表空間該表的占用空間并未釋放,反復(fù)幾次DROP,DELETE操作后,該TABLESPACE上百兆的空間就被耗光了。
4.having子句的用法
having子句對(duì)group by子句所確定的行組進(jìn)行控制,having子句條件中只允許涉及常量,聚組函數(shù)或group by 子句中的列。
5.外部聯(lián)接“+”的用法
外部聯(lián)接“+”按其在“=”的左邊或右邊分左聯(lián)接和右聯(lián)接.若不帶“+”運(yùn)算符的表中的一個(gè)行不直接匹配于帶“+”預(yù)算符的表中的任何行,則前者的行與后者中的一個(gè)空行相匹配并被返回.若二者均不帶’+’,則二者中無(wú)法匹配的均被返回.利用外部聯(lián)接“+”,可以替代效率十分低下的 not in 運(yùn)算,大大提高運(yùn)行速度.例如,下面這條命令執(zhí)行起來(lái)很慢
用外聯(lián)接提高表連接的查詢速度
在**連接(常用于視圖)時(shí),常使用以下方法來(lái)查詢數(shù)據(jù):
SELECT PAY_NO, PROJECT_NAME
FROM A
WHERE A.PAY_NO NOT IN(SELECT PAY_
NO FROM B WHERE VALUE >=120000);
----但是若表A有10000條記錄,表B有10000條記錄,則要用掉30分鐘才能查完,主要因?yàn)镹OT IN要進(jìn) 行一條一條的比較,共需要10000*10000次比較后,才能得到結(jié)果。該用外聯(lián)接后,可以縮短到1分左右的時(shí)間:
SELECT PAY_NO,PROJECT_NAME
FROM A,B
WHERE A.PAY_NO=B.PAY_NO(+)
AND B.PAY_NO IS NULL
AND B.VALUE >=12000;
6.set transaction命令的用法
在執(zhí)行大事務(wù)時(shí),有時(shí)oracle會(huì)報(bào)出如下的錯(cuò)誤:
ORA-01555:snapshot too old(rollback segment too small)
這說(shuō)明oracle給此事務(wù)隨機(jī)分配的回滾段太小了,這時(shí)可以為它指定一個(gè)足夠大的回滾段,以確保這個(gè)事務(wù)的成功執(zhí)行.例如
set transaction use rollback segment roll_abc;
delete from table_name where...commit;
回滾段roll_abc被指定給這個(gè)delete事務(wù),commit命令則在事務(wù)結(jié)束之后取消了回滾段的指定.7.?dāng)?shù)據(jù)庫(kù)重建應(yīng)注意的問(wèn)題
在利用import進(jìn)行數(shù)據(jù)庫(kù)重建過(guò)程中,有些視圖可能會(huì)帶來(lái)問(wèn)題,因?yàn)榻Y(jié)構(gòu)輸入的順序可能造成視圖的輸入先于它低層次表的輸入,這樣建立視圖就會(huì)失敗.要解決這一問(wèn)題,可采取分兩步走的方法:首先輸入結(jié)構(gòu),然后輸入數(shù)據(jù).命令舉例如下(uesrname:jfcl,password:hfjf,host sting:ora1,數(shù)據(jù)文件:expdata.dmp):
imp jfcl/hfjf@ora1 file=empdata.dmp rows=N
imp jfcl/hfjf@ora1 file=empdata.dmp full=Y buffer=64000
commit=Y ignore=Y
第一條命令輸入所有數(shù)據(jù)庫(kù)結(jié)構(gòu),但無(wú)記錄.第二次輸入結(jié)構(gòu)和?64000字節(jié)提交一次.ignore=Y選項(xiàng)保證第二次輸入既使對(duì)象存在的情況下也能成功.select a.empno from emp a where a.empno not in(select empno from emp1 where job=’SALE’);
倘若利用外部聯(lián)接,改寫命令如下:
select a.empno from emp a ,emp1 b
where a.empno=b.empno(+)
and b.empno is null
and b.job=’SALE’;
可以發(fā)現(xiàn),運(yùn)行速度明顯提高.8.從已知表新建另一個(gè)表:
CREATE TABLE b
AS SELECT *(可以是表a中的幾列)
FROM a
WHERE a.column =...;
9.查找、刪除重復(fù)記錄:
法一: 用Group by語(yǔ)句 此查找很快的
select count(num), max(name)from student--查找表中num列重復(fù)的,列出重復(fù)的記錄數(shù),并列出他的name屬性
group by num
having count(num)>1--按num分組后找出表中num列重復(fù),即出現(xiàn)次數(shù)大于一次
delete from student(上面Select的)
這樣的話就把所有重復(fù)的都刪除了。-----慎重
法二:當(dāng)表比較大(例如10萬(wàn)條以上)時(shí),這個(gè)方法的效率之差令人無(wú)法忍受,需要另想辦法:
----執(zhí)行下面SQL語(yǔ)句后就可以顯示所有DRAWING和DSNO相同且重復(fù)的記錄
SELECT * FROM EM5_PIPE_PREFAB
WHERE ROWID!=(SELECT MAX(ROWID)FROM EM5_PIPE_PREFAB D--D相當(dāng)于First,Second
WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND
EM5_PIPE_PREFAB.DSNO=D.DSNO);
----執(zhí)行下面SQL語(yǔ)句后就可以刪除所有DRAWING和DSNO相同且重復(fù)的記錄
DELETE FROM EM5_PIPE_PREFAB
WHERE ROWID!=(SELECT MAX(ROWID)FROM EM5_PIPE_PREFAB D
WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND
EM5_PIPE_PREFAB.DSNO=D.DSNO);
10.返回表中[N,M]條記錄:
取得某列中第N大的行
select column_name from
(select table_name.*,dense_rank()over(order by column desc)rank from table_name)
where rank = &N;
假如要返回前5條記錄:
select * from tablename where rownum,>=,=,Between...and。由于rownum是一個(gè)總是從1開(kāi)始的偽列,Oracle 認(rèn)為這種條件 不成立,查不到記錄.另外,這個(gè)方法更快:
select * from(select rownum r,a from yourtable
where rownum??10
這樣取出第11-20條記錄!(先選再排序再選)
要先排序再選則須用select嵌套:內(nèi)層排序外層選。
rownum是隨著結(jié)果集生成的,一旦生成,就不會(huì)變化了;同時(shí),生成的結(jié)果是依次遞加的,沒(méi)有1就永遠(yuǎn)不會(huì)有2!
rownum 是在 查詢集合產(chǎn)生的過(guò)程中產(chǎn)生的偽列,并且如果where條件中存在 rownum 條件的話,則:
1: 假如 判定條件是常量,則:
只能 rownum = 1, 11.快速編譯所有視圖
----當(dāng)在把數(shù)據(jù)庫(kù)倒入到新的服務(wù)器上后(數(shù)據(jù)庫(kù)重建),需要將視圖重新編譯一遍,因?yàn)樵摫砜臻g視圖到其它表空間的表的連接會(huì)出現(xiàn)問(wèn)題,可以利用PL/SQL的語(yǔ)言特性,快速編譯。
SQL >SPOOL ON.SQL
SQL >SELECT ‘ALTER VIEW ‘||TNAME||’
COMPILE;’ FROM TAB;
SQL >SPOOL OFF
然后執(zhí)行ON.SQL即可。
SQL >@ON.SQL
當(dāng)然,授權(quán)和創(chuàng)建同義詞也可以快速進(jìn)行,如:
SQL >SELECT ‘GRANT SELECT ON ’
||TNAME||’ TO USERNAME;’ FROM TAB;
SQL >SELECT ‘CREATE SYNONYM
‘||TNAME||’ FOR USERNAME.’||TNAME||’;’ FROM TAB;
12.讀寫文本型操作系統(tǒng)文件
----?L/SQL 3.3以上的版本中,UTL_FILE包允許用戶通過(guò)PL/SQL讀寫操作系統(tǒng)文件。如下:
DECALRE
FILE_HANDLE UTL_FILE.FILE_TYPE;
BEGIN
FILE_HANDLE:=UTL_FILE.FOPEN(‘C:’,’TEST.TXT’,’A’);
UTL_FILE.PUT_LINE(FILE_HANDLE,’
HELLO,IT’S A TEST TXT FILE’);
UTL_FILE.FCLOSE(FILE_HANDLE);
END;
13.在數(shù)據(jù)庫(kù)觸發(fā)器中使用列的新值與舊值
----在數(shù)據(jù)庫(kù)觸發(fā)器中幾乎總是要使用觸發(fā)器基表的列值,如果某條語(yǔ)句需要某列修改前的值,使用:OLD就可以了,使用某列修改后的新值,用:NEW就可以了。如:OLD.DEPT_NO,:NEW.DEPT_NO。
14.?dāng)?shù)據(jù)庫(kù)文件的移動(dòng)方法
當(dāng)想將數(shù)據(jù)庫(kù)文件移動(dòng)到另外一個(gè)目錄下時(shí),可以用ALTER DATABASE命令來(lái)移動(dòng)(比ALTER TABLESPACE適用性強(qiáng)):
1.使用SERVER MANAGER關(guān)閉實(shí)例.SVRMGR > connect internal;
SVRMGR > shutdown;
SVRMGR >exit;
2.使用操作系統(tǒng)命令來(lái)移動(dòng)數(shù)據(jù)庫(kù)文件位置(假設(shè)這里操作系統(tǒng)為SOLARIS 2.6).在UNIX中用 mv命令可以把文件移動(dòng)到新的位置,#mv /ora13/orarun/document.dbf /ora12/orarun
3.裝載數(shù)據(jù)庫(kù)并用alter database命令來(lái)改變數(shù)據(jù)庫(kù)中的文件名.SVRMGR > connect internal;
SVRMGR > startup mount RUN73;
SVRMGR > alter database rename file
> ‘/ ora13/orarun/document.dbf’
> ‘/ ora12/orarun/document.dbf’;
4.啟動(dòng)實(shí)例.SVRMGR > alter database open;
15.連接查詢結(jié)果:
表a 列 a1 a2
記錄 1 a
b
x
y
z
用select能選成以下結(jié)果:
ab
xyz
下面有兩個(gè)例子:
1.使用pl/sql代碼實(shí)現(xiàn),但要求你組合后的長(zhǎng)度不能超出oracle varchar2長(zhǎng)度的限制
create or replace type strings_table is table of varchar2(20);
/
create or replace function merge(pv in strings_table)return varchar2
is
ls varchar2(4000);
begin
for i in 1..pv.count loop
ls := ls || pv(i);
end loop;
return ls;
end;
/
create table t(id number,name varchar2(10));
insert into t values(1,'Joan');
insert into t values(1,'Jack');
insert into t values(1,'Tom');
insert into t values(2,'Rose');
insert into t values(2,'Jenny');
column names format a80;
select t0.id,merge(cast(multiset(select name from t where t.id = t0.id)as strings_table))names
from(select distinct id from t)t0;
drop type strings_table;
drop function merge;
drop table t;
2.純粹用sql:
表dept, emp
要得到如下結(jié)果
deptno, dname, employees
--
10, accounting, clark;king;miller
20, research, smith;adams;ford;scott;jones
30, sales, allen;blake;martin;james;turners
每個(gè)dept的employee串起來(lái)作為一條記錄返回
This example uses a max of 6, and would need more cut n pasting to do more than that:
SQL> select deptno, dname, emps
from(3 select d.deptno, d.dname, rtrim(e.ename ||', '||
lead(e.ename,1)over(partition by d.deptno
order by e.ename)||', '||
lead(e.ename,2)over(partition by d.deptno
order by e.ename)||', '||
lead(e.ename,3)over(partition by d.deptno
order by e.ename)||', '||
lead(e.ename,4)over(partition by d.deptno
order by e.ename)||', '||
lead(e.ename,5)over(partition by d.deptno
order by e.ename),', ')emps,14 row_number()over(partition by d.deptno
order by e.ename)x
from emp e, dept d
where d.deptno = e.deptno
18)
where x = 1
/
DEPTNO DNAME EMPS
---------------------------
ACCOUNTING CLARK, KING, MILLER
RESEARCH ADAMS, FORD, JONES, ROONEY, SCOTT, SMITH
SALES ALLEN, BLAKE, JAMES, MARTIN, TURNER, WARD
16.在Oracle中建一個(gè)編號(hào)會(huì)自動(dòng)增加的字段,以利于查詢
1、建立序列:
CREATE SEQUENCE checkup_no_seq
NOCYCLE
MAXVALUE 9999999999
START WITH 2;
2、建立觸發(fā)器:
CREATE OR REPLACE TRIGGER set_checkup_no
BEFORE INSERT ON checkup_history
FOR EACH ROW
DECLARE
next_checkup_no NUMBER;
BEGIN
--Get the next checkup number from the sequence
SELECT checkup_no_seq.NEXTVAL
INTO next_checkup_no
FROM dual;
--use the sequence number as the primary key
--for the record being inserted
:new.checkup_no := next_checkup_no;
END;
17.查看對(duì)象的依賴關(guān)系(比如視圖與表的引用)
查看視圖:dba_dependencies 記錄了相關(guān)的依賴關(guān)系
查東西不知道要查看哪個(gè)視圖時(shí),可以在DBA_Objects里看,select object_name from dba_objects where object_name like '%ROLE%'(假如查看ROLE相關(guān))
然后DESC一下就大體上知道了。
18.要找到某月中所有周五的具體日期
select to_char(t.d,'YY-MM-DD')from(select trunc(sysdate, 'MM')+rownum-1 as d
from dba_objects
where rownum
相關(guān)文章
Oracle中實(shí)現(xiàn)數(shù)據(jù)遷移和數(shù)據(jù)共享
在Oracle中大數(shù)據(jù)量的導(dǎo)入和導(dǎo)出
用JSP導(dǎo)出ORACLE的數(shù)據(jù)表DDL
探討Oracle數(shù)據(jù)庫(kù)的數(shù)據(jù)導(dǎo)入方法
心得共享:Oracle經(jīng)驗(yàn)技巧集錦
BS結(jié)構(gòu)中使用PHP訪問(wèn)ORACLE LOB
Oracle備份的分類總結(jié)分析
第三篇:學(xué)習(xí)oracle的6條經(jīng)驗(yàn)
來(lái)自: 推動(dòng)者社區(qū)
1、如果有一定的數(shù)據(jù)庫(kù)基礎(chǔ),知道SQL是怎么回事,即使寫不出來(lái)簡(jiǎn)單的SQL,但可以看懂它們,你就可以跳到2。否則請(qǐng)先看一下數(shù)據(jù)庫(kù)基礎(chǔ)和SQL語(yǔ)言,不需要很深,更不需要去記憶那些復(fù)雜的SQL命令,這些可以留在以后邊應(yīng)用邊學(xué)習(xí)、記憶。
2、要想學(xué)好ORACLE,首先要學(xué)習(xí)ORACLE的體系結(jié)構(gòu),現(xiàn)在你不需要深入理解它們,但要分清幾個(gè)關(guān)鍵的概念:instance&database, memory structure,process&those files,such as data file, control file, init parameter file etc以及database ,tablespace,data file和tablespace,segmnet,extent & block它們之間的關(guān)系。當(dāng)然還要分清undo tablespace & redo log file等,對(duì)于很多初學(xué)者來(lái)說(shuō),能夠?qū)@些概念有個(gè)較為清晰的認(rèn)識(shí)并不是一件容易的事,而這些并非Oracle的全部。
3、有關(guān)Oracle的一些基本概念,下面要學(xué)習(xí)的是一些簡(jiǎn)單的的實(shí)際操作,就是如何去管理Oracle數(shù)據(jù)庫(kù),當(dāng)然不是管理全部的Oracle。在此過(guò)程中你將對(duì)SQL和Oracle體系結(jié)構(gòu)有個(gè)更深入的了解。
4、到了這一步你基本上算是初步掌握了ORACLE,下面將要根據(jù)你的方向來(lái)具體學(xué)習(xí)其它的ORACLE知識(shí)了。如果你是開(kāi)發(fā)人員,則需要更多地去學(xué)習(xí)PL/SQL以及DEVELOPER,而這將是一門新的課程。如果你是一名DBA,請(qǐng)繼續(xù)。
5、現(xiàn)在你可以根據(jù)自己的實(shí)際情況,進(jìn)行有選擇的學(xué)習(xí),也就是說(shuō)下面的內(nèi)容沒(méi)有特別順序要求??梢赃x擇深入學(xué)習(xí)ORACLE的管理、備份與恢復(fù)、性能調(diào)整、網(wǎng)絡(luò)等。當(dāng)然在學(xué)習(xí)這些知識(shí)的過(guò)程中,如果有實(shí)際的工作更好,這樣你可以在實(shí)際中成長(zhǎng),學(xué)會(huì)TROUBLE SHOOTING。
6、當(dāng)然在學(xué)習(xí)的過(guò)程中,你可以在網(wǎng)站或論壇中與他人進(jìn)行交流,可以看別人的一些經(jīng)驗(yàn)文章,也可以自己寫一些心得體會(huì)。技術(shù)進(jìn)步的本身就是經(jīng)驗(yàn)的積累和提煉過(guò)程,希望大家共同成長(zhǎng),歡迎大家相互交流。
360oracle專業(yè)數(shù)據(jù)庫(kù)運(yùn)維
專業(yè)的Oracle技術(shù)運(yùn)維服務(wù)。
承包數(shù)據(jù)庫(kù)運(yùn)維
竭誠(chéng)為您服務(wù)!
第四篇:如何學(xué)習(xí)Oracle
如何學(xué)習(xí)Oracle-給我的朋友們
很多朋友經(jīng)常問(wèn)起學(xué)習(xí)Oracle的方法,在這里我把寫在《Oracle數(shù)據(jù)庫(kù)性能優(yōu)化》一書前面的話貼在這里,供大家參考,希望能對(duì)來(lái)這里的朋友有所幫助。
-----------------
經(jīng)常有朋友會(huì)問(wèn),應(yīng)該如何學(xué)習(xí)Oracle,怎樣才能快速提高?我把自己的一點(diǎn)心得寫在這里,供大家參考。
其實(shí)學(xué)習(xí)任何東西都是一樣,沒(méi)有太多的捷徑可走,必須打好了堅(jiān)實(shí)的基礎(chǔ),才有可以在進(jìn)一步學(xué)習(xí)中得到快速提高。
王國(guó)維在他的《人間詞話》中曾經(jīng)概括了為學(xué)的三種境界,我在這里套用一下:
古今之成大事業(yè)、大學(xué)問(wèn)者,罔不經(jīng)過(guò)三種之境界。
“昨夜西風(fēng)凋碧樹(shù)。獨(dú)上高樓,望盡天涯路?!贝说谝痪辰缫病?/p>
“衣帶漸寬終不悔,為伊消得人憔悴?!贝说诙辰缫病?/p>
“眾里尋他千百度,驀然回首,那人卻在燈火闌珊處。”此第三境界也。
學(xué)習(xí)Oracle,這也是你必須經(jīng)歷的三種境界。
第一層境界是說(shuō),學(xué)習(xí)的路是漫漫的,你必須做好充分的思想準(zhǔn)備,如果半途而廢還不如不要開(kāi)始。
這里,注意一個(gè)“盡”字,在開(kāi)始學(xué)習(xí)的過(guò)程中,你必須充分閱讀Oracle的基礎(chǔ)文檔,概念手冊(cè)、管理手冊(cè)、備份恢復(fù)手冊(cè)等(這些你都可以在http://tahiti.oracle.com 上找到);OCP認(rèn)證的教材也值得仔細(xì)閱讀。打好基礎(chǔ)之后你才具備了進(jìn)一步提升的能力,萬(wàn)丈高樓都是由地而起。
第二層境界是說(shuō),盡管經(jīng)歷挫折、打擊、灰心、沮喪,也都要堅(jiān)持不放棄,具備了基礎(chǔ)知識(shí)之后,你可以對(duì)自己感興趣或者工作中遇到的問(wèn)題進(jìn)行深入的思考,由淺入深從來(lái)都不是輕而易舉的,甚至很多時(shí)候你會(huì)感到自己停滯不前了,但是不要?jiǎng)訐u,學(xué)習(xí)及理解上的突破也需要時(shí)間。
第三次境界是說(shuō),經(jīng)歷了那么多努力以后,你會(huì)發(fā)現(xiàn),那苦苦思考的問(wèn)題,那百思不得其解的算法原理,原來(lái)答案就在手邊,你的思路豁然開(kāi)朗,宛如撥云見(jiàn)月。這個(gè)時(shí)候,學(xué)習(xí)對(duì)你來(lái)說(shuō),不再是個(gè)難題,也許是種享受,也許成為藝術(shù)。所以如果你想問(wèn)我如何速成,那我是沒(méi)有答案的。
不經(jīng)一番寒徹骨,哪得梅花撲鼻香。
當(dāng)然這三種境界在實(shí)際中也許是交叉的,在不斷的學(xué)習(xí)中,不斷有驀然回首的收獲。我自己在學(xué)習(xí)的過(guò)程中,經(jīng)常是采用“由點(diǎn)及面法”。
當(dāng)遇到一個(gè)問(wèn)題后,一定是深入下去,窮究根本,這樣你會(huì)發(fā)現(xiàn),一個(gè)簡(jiǎn)單的問(wèn)題也必定會(huì)帶起一大片的知識(shí)點(diǎn),如果你能對(duì)很多問(wèn)題進(jìn)行深入思考和研究,那么在深處,你會(huì)發(fā)現(xiàn),這些面逐漸接合,慢慢的延伸到oracle的所有層面,逐漸的你就能融會(huì)貫通。這時(shí)候,你會(huì)主動(dòng)的去嘗試全面學(xué)習(xí)Oracle,掃除你的知識(shí)盲點(diǎn),學(xué)習(xí)已經(jīng)成為一種需要。
由實(shí)踐觸發(fā)的學(xué)習(xí)才最有針對(duì)性,才更能讓你深入的理解書本上的知識(shí),正所謂:
“紙上得來(lái)終覺(jué)淺,絕知此事要躬行”。實(shí)踐的經(jīng)驗(yàn)于我們是至為寶貴的。如果說(shuō)有,那么這,就是我的捷徑。
想想自己,經(jīng)常是“每有所獲,便欣然忘食”,興趣才是我們最好的老師。
Oracle的優(yōu)化是一門學(xué)問(wèn),也是一門藝術(shù),理解透徹了,你會(huì)知道,優(yōu)化不過(guò)是在各種條件之下做出的均衡與折中。
內(nèi)存、外存;CPU、IO...對(duì)這一切你都需要有充分的認(rèn)識(shí)和相當(dāng)?shù)牧私?,管理?shù)據(jù)庫(kù)所需要的知識(shí)并不單純。
作為一個(gè)數(shù)據(jù)庫(kù)管理人員,你需要做的就是能夠根據(jù)自己的知識(shí)以及經(jīng)驗(yàn)在各種復(fù)雜情況下做出快速正確的判斷。當(dāng)問(wèn)題出現(xiàn)時(shí),你需要知道使用怎樣的手段發(fā)現(xiàn)問(wèn)題的根本;找到問(wèn)題之后,你需要運(yùn)用你的知識(shí)找到解決問(wèn)題的方法。
這當(dāng)然并不容易,舉重若輕還是舉輕若重,取決于你具備怎樣的基礎(chǔ)以及經(jīng)驗(yàn)積累。在網(wǎng)絡(luò)上,Howard J.Rogers最近創(chuàng)造了一個(gè)新詞組:Voodoo Tuning,用以形容那些沒(méi)有及時(shí)更新自己的知識(shí)技能的所謂的Oracle技術(shù)專家。由于知識(shí)的陳舊或者理解的膚淺,他們提供的很多調(diào)整建議是錯(cuò)誤的、容易使人誤解的,甚至是荒誕的。他們提供的某些建議在有些情況下也許是正確的,如果你愿意回到Oracle5版或者6版的年代;但是這些建議在Oracle7.0,8.0 或者 Oracle8i以后往往是完全錯(cuò)誤的。
后來(lái)基于類似問(wèn)題觸發(fā)了互聯(lián)網(wǎng)內(nèi)Oracle頂級(jí)高手的一系列深入討論,TOM、Jonathan Lewis、HJR等人都參與其中,在我的網(wǎng)站上()上對(duì)這些內(nèi)容及相關(guān)鏈接作了簡(jiǎn)要介紹,有興趣的可以參考。
HJR給我們提了很好的一個(gè)提示:對(duì)你所需要調(diào)整的內(nèi)容,你必須具有充分的認(rèn)識(shí),否則你做出的判斷就有可能是錯(cuò)誤的。
這也是我想給自己和大家的一個(gè)建議:學(xué)習(xí)和研究Oracle,嚴(yán)謹(jǐn)和認(rèn)真必不可少。當(dāng)然你還需要勤奮,我所熟悉的在Oracle領(lǐng)域有所成就的技術(shù)人員,他們共同的特點(diǎn)就是勤奮。
如果你覺(jué)得掌握的東西沒(méi)有別人多,那么也許就是因?yàn)?,你不如別人勤奮。
要是你覺(jué)得這一切過(guò)于復(fù)雜了,那我還有一句簡(jiǎn)單的話送給大家:不積跬步,無(wú)以至千里。學(xué)習(xí)正是在逐漸積累過(guò)程中的提高。
現(xiàn)在Itpub給我們提供了很好的交流場(chǎng)所,很多問(wèn)題都可以在這里找到答案,互相討論,互相學(xué)習(xí)。這是我們的幸運(yùn),我也因此非常感謝這個(gè)網(wǎng)絡(luò)時(shí)代。
Itpub的第二本書即將出版,謹(jǐn)以此祝愿Itpub越來(lái)越好,也愿我們的書能給大家?guī)?lái)知識(shí)和幫助。
第五篇:ORACLE學(xué)習(xí)心得體會(huì)
表xyz a b c 1 m hj 1 m hjk 1 n jk 2 u we 2 u wert 3 q s 4 a ds 4 a dsaa 怎么刪掉第1、5、8條記錄?(字段a、b相同的幾條記錄只留一條,留下字段c較短的一條)delete from lianxi where length(c)not in(select min(length(c))from lianxi group by a, b)oracle數(shù)據(jù)庫(kù)常用的命令集錦 今日開(kāi)始研究oracle,搜索到了一個(gè)好東東,拿出來(lái)與大家一同分享。
下面是摘抄的部分 :[local]2[/local] oracle相關(guān)語(yǔ)法及命令
一、oracle入門
理論知識(shí):
oracle的物理組件有三個(gè):(1)數(shù)據(jù)文件 數(shù)據(jù)文件是用于存儲(chǔ)數(shù)據(jù)庫(kù)數(shù)據(jù)的文件,如表、索引數(shù)據(jù)。每個(gè)oracle數(shù)據(jù)庫(kù)有一個(gè)或多個(gè)物理數(shù)據(jù)文件,一個(gè)數(shù)據(jù)文件只能與一個(gè)數(shù)據(jù)庫(kù)關(guān)聯(lián)。(2)日志文件 用于記錄對(duì)數(shù)據(jù)庫(kù)進(jìn)行的修改信息,日志文件主要用于在數(shù)據(jù)庫(kù)出現(xiàn)故障時(shí)實(shí)施數(shù)據(jù)庫(kù)恢復(fù)。(3)控制文件 控制文件是記錄數(shù)據(jù)庫(kù)物理結(jié)構(gòu)的二進(jìn)制文件,每個(gè)oracle數(shù)據(jù)庫(kù)都含有一個(gè)控制文件。
oracle的邏輯組件:
表空間(tablespace)表空間是數(shù)據(jù)庫(kù)最大的邏輯單位,一個(gè)數(shù)據(jù)庫(kù)至少包含一個(gè)表空間,一個(gè)表空間包含一個(gè)或多個(gè)段等等。
段(segment)段存在于表空間中,分成4類,數(shù)據(jù)段、索引段、回退段、臨時(shí)段。區(qū)(extent)區(qū)是磁盤空間分配最小單位,由連續(xù)的數(shù)據(jù)塊組成,一個(gè)或多個(gè)區(qū)構(gòu)成段,區(qū)只能存在于一個(gè)數(shù)據(jù)文件中。
數(shù)據(jù)塊(data block)數(shù)據(jù)塊是數(shù)據(jù)庫(kù)中最小的數(shù)據(jù)組織單位與管理單位,oracle數(shù)據(jù)庫(kù)中的數(shù)據(jù)存儲(chǔ)于數(shù)據(jù)塊中,取值范圍2k-64k之間。
模式(schema)模式是對(duì)用戶所創(chuàng)建的數(shù)據(jù)庫(kù)對(duì)象的總稱,又稱為用戶模式。
概念:
內(nèi)存 oracle內(nèi)存結(jié)構(gòu)包含以下兩個(gè)內(nèi)存區(qū)。
1、系統(tǒng)全局區(qū)(sga)實(shí)例啟動(dòng)時(shí)分配該內(nèi)存區(qū),是oracle實(shí)例的一個(gè)基本組件。又稱為共享全局區(qū),它用來(lái)存儲(chǔ)數(shù)據(jù)庫(kù)信息,并由多個(gè)數(shù)據(jù)庫(kù)進(jìn)程共享??煞譃楣蚕沓?、數(shù)據(jù)緩沖區(qū)及日志緩沖區(qū)。(1)共享池 是對(duì)sql、plsql程序進(jìn)行語(yǔ)法分析、編譯、執(zhí)行的內(nèi)存區(qū)域。共享池由庫(kù)緩存和數(shù)據(jù)字典緩存組成。其中,庫(kù)緩存含有最近執(zhí)行的sql、plsql語(yǔ)句的分析碼和執(zhí)行計(jì)劃;數(shù)據(jù)字典緩存含有從數(shù)據(jù)字典中得到的表、索引、列定義和權(quán)限等信息。(2)數(shù)據(jù)緩沖區(qū) 數(shù)據(jù)緩沖區(qū)用于存儲(chǔ)從磁盤數(shù)據(jù)文件中讀入的數(shù)據(jù),所有用戶共享。(3)日志緩沖區(qū) 日志記錄數(shù)據(jù)庫(kù)的所有修改信息,主要用于恢復(fù)數(shù)據(jù)。
2、程序全局區(qū)(pga)服務(wù)器進(jìn)程啟動(dòng)時(shí)分配該內(nèi)存區(qū)。pga為非共享區(qū),只能單個(gè)進(jìn)程使用,當(dāng)一個(gè)用戶會(huì)話結(jié)束后,pga釋放。
用戶進(jìn)程(pga)發(fā)送sql語(yǔ)句到共享全局區(qū)(sga),先在共享池的庫(kù)緩存中查詢是否存在所需的數(shù)據(jù)塊,如果存在就在數(shù)據(jù)字典中讀取相應(yīng)的數(shù)據(jù)塊,如果不存在就由服務(wù)器進(jìn)程(dbwr)來(lái)io數(shù)據(jù)庫(kù)
語(yǔ)法知識(shí):
創(chuàng)建表空間的語(yǔ)法如下:
create tablespace tablespacename datafile d:filename.dbf [size int [kb|mb]] [autoextend [off|on]];tablespacename 是需創(chuàng)建的表空間名稱。datafile 指定組成表空間的一個(gè)或多個(gè)數(shù)據(jù)文件,當(dāng)有多個(gè)數(shù)據(jù)文件時(shí)使用逗號(hào)分隔。
filename 是表空間中數(shù)據(jù)文件的路徑和名稱。size 指定文件的大小,用k指定千字節(jié)大小,用m指定兆字節(jié)大小。autoextend子句用來(lái)啟用或禁用數(shù)據(jù)文件的自動(dòng)擴(kuò)展。oracle默認(rèn)用戶:
用戶名:sys 默認(rèn)密碼:chage_on_install 用來(lái)管理?yè)碛衞racle數(shù)據(jù)字典文件 用戶名:system 默認(rèn)密碼:manager 用來(lái)管理?yè)碛袛?shù)據(jù)字典視圖對(duì)象 用戶名:scott 默認(rèn)密碼:tiger 示例用戶,包括emp、dept等表
連接oracle: 在控制臺(tái)下輸入 sqlplus 用戶名/密碼 回車或 sqlplusw 回車
相關(guān)命令:
disconn //退出當(dāng)前登錄 conn 用戶名/密碼 //連接oracle alter user 用戶名 identified by 密碼 //修改用戶口令 drop user 用戶名 cascade;//刪除用戶 alter user 用戶名 account lock;//給某個(gè)用戶加鎖 alter user 用戶名 account unlock;//給某個(gè)用戶解鎖 ed 回車: //打開(kāi)緩沖區(qū)
/ 回車: //執(zhí)行緩沖區(qū)中的語(yǔ)句 create user 用戶名 identified by 密碼 [password expire] [default tablespace 表空間名] [temporary tablespace 臨時(shí)表空間名];//創(chuàng)建用戶
相關(guān)權(quán)限: grant connect to scott;//connect角色將允許用戶創(chuàng)建數(shù)據(jù)庫(kù)并在數(shù)據(jù)庫(kù)中創(chuàng)建表或其他對(duì)象 grant resource to scott;//resource角色將允許用戶使用數(shù)據(jù)庫(kù)中的空間 grant create sequence to scott;//create sequence權(quán)限將允許用戶創(chuàng)建序列,此權(quán)限包含在connect連接角色中 grant select on emp to scott;//將emp表的查詢權(quán)限授予用戶scott grant update(vencode,venname)on 表名 to scott;//將特定列的更新權(quán)限授予用戶scott grant 權(quán)限 on 表名 to 用戶名 with grant option;//接受該權(quán)限的用戶可以將此權(quán)限授予其他用戶 revoke select,update on 表名 from 用戶名;//收回相應(yīng)的權(quán)限
二、sql查詢和sql函數(shù) sql支持如下類別的命令:
數(shù)據(jù)控制語(yǔ)言: grant(授予)和revoke(回收)命令。
數(shù)據(jù)類型: char: 長(zhǎng)度在1到2000個(gè)字節(jié),聲明多少字節(jié)在內(nèi)存中就占用多少字節(jié),輸入的值小于指定的長(zhǎng)度時(shí)用空格填充。varchar2: 長(zhǎng)度在1到4000個(gè)字節(jié),輸入的值是多少字節(jié),就占用多少字節(jié)。long: 長(zhǎng)度在2gb,設(shè)置為此類型的列時(shí),要注意:一個(gè)表中只有一列可以為long類型,long類型列不能定義為唯一約束或主鍵約束,不能建立索引,過(guò)程或存儲(chǔ)過(guò)程不能接受long類型的參數(shù)。number(p,s): 其中p為精度,表示數(shù)字的總位數(shù),在1至38之間。s為范圍,表示小數(shù)點(diǎn)右邊數(shù)字的位數(shù),在-84至127之間。date: 日期類型,sysdate為當(dāng)前系統(tǒng)時(shí)間。格式為08-9月-07。timestamp: 用于存儲(chǔ)日期的年、月、日以及時(shí)間的時(shí)、分和秒。其中秒精確到小數(shù)點(diǎn)后6位,systimestamp返回當(dāng)前日期、時(shí)間。格式為08-9月-07 04.08.30.000000 下午。raw: 此數(shù)據(jù)類型用于存儲(chǔ)基于字節(jié)的數(shù)據(jù),如二進(jìn)制數(shù)據(jù)或字節(jié)串,該類型最多能存儲(chǔ)2000個(gè)字節(jié),可以建立索引。long raw: 此數(shù)據(jù)類型用于可變長(zhǎng)度的二進(jìn)制數(shù)據(jù),最多能存儲(chǔ)2gb。long數(shù)據(jù)類型的所有限制對(duì)long raw數(shù)據(jù)類型也同樣有效。lob又稱為大對(duì)象數(shù)據(jù)類型,最多能存儲(chǔ)4gb的非結(jié)構(gòu)化信息。包括: clob: clob代表character lob(字符lob),它能存儲(chǔ)大量字符數(shù)據(jù)。如xml文檔。blob: blob代表binary lob(二進(jìn)制lob),它能存儲(chǔ)較大的二進(jìn)制對(duì)象,如圖形、視頻剪輯和聲音剪輯。bfile: bfile代表binary file(二進(jìn)制文件),它能夠?qū)⒍M(jìn)制文件存儲(chǔ)在數(shù)據(jù)庫(kù)外部的操作系統(tǒng)文件中。
偽列:
rowid: select rowid,ename, from scott.emp where empno=7900;rownum: select * from scott.emp where rownum<11;//限制查詢返回的行數(shù)
語(yǔ)法知識(shí):
desc 表名;//查看表結(jié)構(gòu)
alter table 表名 modify(列名 varchar2(25));//修改列 alter table 表名 add(列名 varchar2(12),列名 number(12));//添加列 alter table 表名 drop column 列名;//刪除列 truncate table 表名;//中刪除記錄而不刪除結(jié)構(gòu),不使用事務(wù)處理,因此無(wú)法回滾
drop table 表名;//刪除表及其全部數(shù)據(jù) create table 新表名 as select * from 表名 where 1=2;//用現(xiàn)有的表創(chuàng)建一個(gè)新表 select deptno*2 new no,dname,loc from dept;//指定一個(gè)含有特殊字符(如空格)的列標(biāo)題
savepoint 標(biāo)記名;//標(biāo)記事務(wù)點(diǎn) rollback;//回滾整個(gè)事務(wù)處理 rollback to [savepoint] 標(biāo)記名;//回滾到事務(wù)中某個(gè)特定的保存點(diǎn)
集合操作符: union(聯(lián)合): 此操作符返回兩個(gè)查詢選定的所有不重復(fù)的行。
語(yǔ)法 select orderno from order_master union select orderno from order_detail;union all(聯(lián)合所有): 此操作符合并兩個(gè)查詢選定的所有行,包括重復(fù)的行。
語(yǔ)法:select orderno,ename from order_master union all select orderno,proname from order_detail order by 2;注意:在兩個(gè)select語(yǔ)句中指定的列名不必相同,但數(shù)據(jù)類型必須匹配。也可以對(duì)聯(lián)合查詢的結(jié)果進(jìn)行排序,使用order by子句時(shí),它必須放在最后
一個(gè)select語(yǔ)句之后,而且必須指定列索引來(lái)排序,而不是指定列名,列索引是從1開(kāi)始的整數(shù)。上述語(yǔ)法便是以proname的索引排序 intersect(交集): 此操作符只返回兩個(gè)查詢都有的行。
語(yǔ)法:select orderno from order_master intersect select orderno from order_detail;minus(減集): 此操作符中返回由第一個(gè)查詢選定但是第二個(gè)查詢中沒(méi)有選定的行,也就是在第一個(gè)查詢結(jié)果中排除第二個(gè)查詢結(jié)果中出現(xiàn)的行。
語(yǔ)法:select orderno from order_master minus select orderno from order_detail;查詢尚未交付的訂單
連接(||)操作符:
語(yǔ)法: select(供應(yīng)商||venname||的地址是||venadd1|| ||venadd2|| ||venadd3)地址 from vendor_master where vencode=v002;將多個(gè)字符串合并為一個(gè)字符串。sql函數(shù):
1、日期函數(shù): add_months: 此函數(shù)返回給指定的日期加上指定的月數(shù)后的日期值。語(yǔ)法為add_months(d,n),其中d是日期,n表示月數(shù)。
示例:select add_months(sysdate,2)from dual;將當(dāng)前時(shí)間加上2個(gè)月后的日期值。
months_between:
此函數(shù)返回兩個(gè)日期之間的月數(shù)。語(yǔ)法為months_between(d1,d2),其中d1和d2是日期,如果d1大于d2,則結(jié)果為正數(shù);否則為負(fù)數(shù)。last_day: 此函數(shù)返回指定日期當(dāng)月的最后一天的日期值,語(yǔ)法為last_day(d),其中d表示日期。
示例:select last_day(sysdate)from dual;返回當(dāng)前日期的月的最后一天,如果是9月就返回30-09月-07 round: 此函數(shù)返回日期值,將日期四舍五入為格式模型指定的單位。語(yǔ)法為round(d,[fmt])。其中d是日期,fmt是格式模型。fmt是一個(gè)可選項(xiàng),日期默認(rèn)舍入為最靠近的那一天。如果指定格式為年year,則舍入到年的開(kāi)始,即1月1日;如果格式為月month,則舍入到月的第一日;如果格式為周day,則舍入到最靠近的星期日。
示例:select round(sysdate,month)from dual;返回最接近的一個(gè)月。next_day: 此函數(shù)返回指定的下一個(gè)星期幾的日期。語(yǔ)法為next_day(d,day)。其中d表示日期,而day指周內(nèi)任何一天。
示例:select next_day(sysdate,星期日)from dual;返回下一個(gè)星期日的日期,也可以用1表示,以此類推,星期一以2表示。trunc: 此函數(shù)將指定日期截?cái)酁橛筛袷侥P椭付ǖ膯挝蝗掌冢cround函數(shù)不同的是它只舍不入,語(yǔ)法為trunc(d,[fmt]),與round格式相同。
示例:select trunc(sysdate,year)from dual;返回當(dāng)前年的第一天,也就是1月1日。示例:select trunc(sysdate,day)from dual;返回緊靠前面的星期日。如果為2005年1月27日就會(huì)返回2005年1月23日。extract: 此函數(shù)提取日期時(shí)間類型中的特定部分。語(yǔ)法為extract(fmt from d),其中d是日期時(shí)間表達(dá)式,fmt是要提取的部分的格式。格式的取值可以是year,month,day,hour,minute,second,注意此處的格式不使用單引號(hào)。
示例:select extract(year from sysdate)from dual;返回當(dāng)前的年份。
2、字符函數(shù): initcap(char): 首字母大寫,示例:select initcap(hello)from dual;輸出結(jié)果:hello。lower(char): 轉(zhuǎn)換為小寫,示例:select lower(fun)from dual;輸出結(jié)果:fun。upper(char): 轉(zhuǎn)換為大寫,示例:select upper(sun)from dual;輸出結(jié)果:sun。ltrim(char,set): 左剪裁,示例:select ltrim(xyzadams,xyz)from dual;輸出結(jié)果:adams。rtrim(char,set): 右剪裁,示例:select rtrim(xyzadams,ams)from dual;輸出結(jié)果:xyzad。
translate(char,from,to): 按字符翻譯,示例:select translate(jack,abcd,1234)from dual;輸出結(jié)果:j13k。replace(char,search_str,replace_str): 字符串替換,示例:select replace(jack and jue,j,bl)from dual;輸出結(jié)果:black and blue。instr(char,substr[,pos1,pos2]): 查找子字串位置。
示例:select instr(vorldwide,d)from dual;輸出結(jié)果:5。pos1為可選,表示從第幾個(gè)位置查找。pos2為可選,表示從第幾次出現(xiàn)的位置找。substr(char,pos,len): 取子字符串,示例:select substr(abcdefg,3,2)from dual;輸出結(jié)果:cd。concat(char1,char2): 連接字符串,示例:select concat(hello,world)from dual;輸出結(jié)果:helloworld。chr: 此函數(shù)根據(jù)ascii碼返回對(duì)應(yīng)的字符,示例:select chr(45788),chr(53671),chr(50167),chr(65)from dual;輸出結(jié)果:曹 學(xué) 明 a。ascii:
此函數(shù)返回gbk編碼值,示例:select ascii(曹)cao ,ascii(學(xué))xue,ascii(明)ming from dual;輸出結(jié)果:45788 53671 50167。lpad和rpad:
示例:select lpad(function,15,=)from dual;輸出結(jié)果:=======function。而rpad則相反,字符串填充在右邊。trim: 此函數(shù)從字符串的開(kāi)頭或結(jié)尾(或開(kāi)頭和結(jié)尾)剪裁特定的字符,默認(rèn)剪裁空格。如果加上leading選項(xiàng)時(shí)與ltrim函數(shù)相似。指定trailing時(shí)和 rtrim函數(shù)相似。示例: select trim(9 from 999992598899)from dual;輸出結(jié)果:25988。
示例: select trim(leading 9 from 999992598899)from dual;輸出結(jié)果:2598899。示例: select trim(trailing 9 from 999992598899)from dual;輸出結(jié)果:9999925988。length: 此函數(shù)返回字符串的長(zhǎng)度,示例:select length(frances)from dual;輸出結(jié)果:7。decode: 示例:select deptno,dname,decode(loc,new york,紐約,boston,波士頓)from scott.dept;篇二:oracle數(shù)據(jù)庫(kù)學(xué)習(xí)心得 oracle數(shù)據(jù)庫(kù)結(jié)課論文
一個(gè)好的程序,必然聯(lián)系著一個(gè)龐大的數(shù)據(jù)庫(kù)網(wǎng)路...今年我們學(xué)習(xí)了 oracle數(shù)據(jù)庫(kù)這門課程,起初的我,對(duì)這個(gè)字眼是要多陌生有多陌生,后來(lái)上課的時(shí)候聽(tīng)一會(huì)老師講課,偶爾再跟上上機(jī)課,漸漸的學(xué)會(huì)了不少東西,但我感覺(jué),我學(xué)到的仍是一些皮毛而已,懷著疑惑和求知的心態(tài),我在網(wǎng)上搜索了關(guān)于 oracle數(shù)據(jù)庫(kù)的一些知識(shí)。
1.oracle的特點(diǎn): 可移植性 oracle采用c語(yǔ)言開(kāi)發(fā)而成,故產(chǎn)品與硬件和操作系統(tǒng)具有很強(qiáng)的獨(dú)立性。從大型機(jī)到微機(jī)上都可運(yùn)行oracle的產(chǎn)品??稍趗nix、dos、windows等操作系統(tǒng)上運(yùn)行。可兼容性 由于采用了國(guó)際標(biāo)準(zhǔn)的數(shù)據(jù)查詢語(yǔ)言sql,與ibm的sql/ds、db2等均兼容。并提供讀取其它數(shù)據(jù)庫(kù)文件的間接方法。
可聯(lián)結(jié)性 對(duì)于不同通信協(xié)議,不同機(jī)型及不同操作系統(tǒng)組成的網(wǎng)絡(luò)也可以運(yùn)行oraˉcle數(shù)據(jù)庫(kù)產(chǎn)品。
2.oracle的總體結(jié)構(gòu)
(1)oracle的文件結(jié)構(gòu) 一個(gè)oracle數(shù)據(jù)庫(kù)系統(tǒng)包括以下5類文件:oracle rdbms的代碼文件。
數(shù)據(jù)文件 一個(gè)數(shù)據(jù)庫(kù)可有一個(gè)或多個(gè)數(shù)據(jù)文件,每個(gè)數(shù)據(jù)文件可以存有一個(gè)或多個(gè)表、視圖、索引等信息。
日志文件 須有兩個(gè)或兩個(gè)以上,用來(lái)記錄所有數(shù)據(jù)庫(kù)的變化,用于數(shù)據(jù)庫(kù)的恢復(fù)??刂莆募?可以有備份,采用多個(gè)備份控制文件是為了防止控制文件的損壞。參數(shù)文件 含有數(shù)據(jù)庫(kù)例程起時(shí)所需的配置參數(shù)。
(2)oracle的內(nèi)存結(jié)構(gòu) 一個(gè)oracle例程擁有一個(gè)系統(tǒng)全程區(qū)(sga)和一組程序全程區(qū)(pga)。
sga(system global area)包括數(shù)據(jù)庫(kù)緩沖區(qū)、日志緩沖區(qū)及共享區(qū)域。pga(program global area)是每一個(gè)server進(jìn)程有一個(gè)。一個(gè)server進(jìn)程起動(dòng)時(shí),就為其分配一個(gè)pga區(qū),以存放數(shù)據(jù)及控制信息。
(3)oracle的進(jìn)程結(jié)構(gòu)oracle包括三類進(jìn)程: ①用戶進(jìn)程 用來(lái)執(zhí)行用戶應(yīng)用程序的。
②服務(wù)進(jìn)程 處理與之相連的一組用戶進(jìn)程的請(qǐng)求。
③后臺(tái)進(jìn)程 oracle為每一個(gè)數(shù)據(jù)庫(kù)例程創(chuàng)建一組后臺(tái)進(jìn)程,它為所有的用戶進(jìn)程服務(wù),其中包括: dbwr(database writer)進(jìn)程,負(fù)責(zé)把已修改的數(shù)據(jù)塊從數(shù)據(jù)庫(kù)緩沖區(qū)寫到數(shù)據(jù)庫(kù)中。lgwr(log writer)進(jìn)程,負(fù)責(zé)把日志從sga中的緩沖區(qū)中寫到日志文件中。smon(system moniter)進(jìn)程,該進(jìn)程有規(guī)律地掃描sag進(jìn)程信息,注銷失敗的數(shù)據(jù)庫(kù)例程,回收不再使用的內(nèi)存空間。pmon(process moniter)進(jìn)程,當(dāng)一用戶進(jìn)程異常結(jié)束時(shí),該進(jìn)程負(fù)責(zé)恢復(fù)未完成的事務(wù),注銷失敗的用戶進(jìn)程,釋放用戶進(jìn)程占用的資源。arch(archiver)進(jìn)程。每當(dāng)聯(lián)機(jī)日志文件寫滿時(shí),該進(jìn)程將其拷貝到歸檔存儲(chǔ)設(shè)備上。另外還包括分布式db中事務(wù)恢復(fù)進(jìn)程reco和對(duì)服務(wù)進(jìn)程與用戶進(jìn)程進(jìn)行匹配的dnnn進(jìn)程等。3.oracle的邏輯結(jié)構(gòu)
構(gòu)成oracle的數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)包括:(1)表空間
(2)5種類型的段(segment)
①數(shù)據(jù)段;②索引段;③回滾(rollbock)段;④臨時(shí)段;⑤自舉(bootstrap)段。段的分配單位叫范圍(extent)
表空間(tablespace)一個(gè)數(shù)據(jù)庫(kù)劃分成的若干邏輯部分稱為表空間。一個(gè)數(shù)據(jù)庫(kù)可以有一個(gè)或多個(gè)表空間,初始的表空間命名為system,每一個(gè)邏輯表空間對(duì)應(yīng)于一個(gè)或多個(gè)物理文件。dba使用表空間做以下工作: 控制數(shù)據(jù)庫(kù)對(duì)象,如表、索引和臨時(shí)段的空間分配。為數(shù)據(jù)庫(kù)用戶設(shè)置空間配額。
利用個(gè)別表空間的在線或離線,控制數(shù)據(jù)的可用性。后備或恢復(fù)數(shù)據(jù)。
通過(guò)分配空間,以改進(jìn)性能。
在每個(gè)數(shù)據(jù)庫(kù)中都存在system表空間,它在建立數(shù)據(jù)庫(kù)時(shí)自動(dòng)建立。在該表空間中,包含數(shù)據(jù)庫(kù)的數(shù)據(jù)字典,其中存儲(chǔ)全部數(shù)據(jù)庫(kù)對(duì)象的名字和位置。system表空間總是在線的,像其它表空間一樣,可以通過(guò)增加新的數(shù)據(jù)庫(kù)文件來(lái)擴(kuò)大。一個(gè)表空間可包含許多表和索引。但一個(gè)表和索引不能跨越表空間,可跨越組成表空間的文件。在db的打開(kāi)的情況下,dba利用alter tablespace語(yǔ)句,可以實(shí)施表空間的在線或離線。system表空間必須在線。表空間離線有下列原因: 一般為了使部分?jǐn)?shù)據(jù)庫(kù)不能使用,而允許正常存取數(shù)據(jù)庫(kù)其余部分。執(zhí)行表空間離線備份。
一個(gè)離線的表空間,不能被應(yīng)用用戶讀或編輯。
可以增加數(shù)據(jù)文件擴(kuò)大已有的表空間,也可增加新的表空間使數(shù)據(jù)庫(kù)容量增大,或分配空間給某個(gè)應(yīng)用。使用alfer tablespace add file語(yǔ)句將另一個(gè)數(shù)據(jù)文件加入到已存在表空間中。使用create tablespace語(yǔ)句可建立一個(gè)新的表空間。段(segment)表空間中的全部數(shù)據(jù)存儲(chǔ)在以段劃分的數(shù)據(jù)庫(kù)空間中。一個(gè)段是分配給數(shù)據(jù)庫(kù)用于數(shù)據(jù)存儲(chǔ)的范圍的集合。數(shù)據(jù)可以是表、索引或rdbms所需要的臨時(shí)數(shù)據(jù)。段是表空間的下一個(gè)邏輯存儲(chǔ)的級(jí)別。一個(gè)段不能跨越一個(gè)表空間,但可跨越表空間內(nèi)的文件。一個(gè)數(shù)據(jù)庫(kù)最多需要五種段類型: 數(shù)據(jù)段 一個(gè)包含一個(gè)表(或聚集)的全部數(shù)據(jù),一個(gè)表(或聚集)總有一個(gè)單個(gè)數(shù)據(jù)段。
索引段 一個(gè)索引段包含對(duì)一個(gè)表(或聚集)建立的一個(gè)索引的全部索引數(shù)據(jù)。一個(gè)表可以有一個(gè)、多個(gè)或者沒(méi)有索引段,取決于它所擁有的索引個(gè)數(shù)。一個(gè)聚集必須至少有一個(gè)索引段,即在聚集碼上 建立聚集索引。
回滾段 每個(gè)db有一個(gè)或多個(gè)回滾段。一個(gè)回滾段是db的一部分,它記錄在某一情況下被撤消的動(dòng)作。回滾段用于事務(wù)控制和恢復(fù)。
臨時(shí)段 在處理查詢時(shí),oracle需要臨時(shí)工作空間,用于存儲(chǔ)語(yǔ)句處理的中間結(jié)果,這個(gè)區(qū)稱為臨時(shí)段。
自舉段 自舉段在system表空間中,在數(shù)據(jù)庫(kù)建立時(shí)建立。它包括數(shù)據(jù)字典定義,在數(shù)據(jù)庫(kù)打開(kāi)時(shí)裝入。4.用戶數(shù)據(jù)庫(kù)對(duì)象
由用戶建立的對(duì)象駐留在表空間中,含有真正的數(shù)據(jù)。數(shù)據(jù)庫(kù)對(duì)象有表、視圖、聚集、索引、偽列和序號(hào)生成器。
(1)聚集(cluster)聚集是存儲(chǔ)數(shù)據(jù)的一種可選擇的方法。聚集包括存儲(chǔ)在一起的一組表,它們共享公共列并經(jīng)常一起使用。由于內(nèi)容相關(guān)并且物理地存儲(chǔ)在一起,存取時(shí)間得到改進(jìn),存儲(chǔ)空間可以減少。聚集是一種優(yōu)化措施。
聚集對(duì)性能的改進(jìn),依賴于數(shù)據(jù)的分布和sql操作的內(nèi)容。特別是使用聚集對(duì)連接非常有利。可以明顯地提高連接的速度。建立聚集命令的基本格式: sql>create cluster〈聚集名〉(列定義[,?]);利用聚集建立表命令基本格式: sql>create table〈新表名〉(列定義[,?]cluster〈聚集名〉(聚集列);篇三:oracle學(xué)習(xí)心得
oracle rac 學(xué)習(xí)心得 1.概念 rac,全稱real application clusters,譯為“實(shí)時(shí)應(yīng)用集群”,是oracle新版數(shù)據(jù)庫(kù)中采用的一項(xiàng)新技術(shù),是高可用性的一種,也是oracle數(shù)據(jù)庫(kù)支持網(wǎng)格計(jì)算環(huán)境的核心技術(shù)。
在oracle9i之前,rac的名稱是ops(oracle parallel server)。rac 與 ops 之間的一個(gè)較大區(qū)別是,rac采用了cache fusion(高速緩存合并)技術(shù)。在 ops 中,節(jié)點(diǎn)間的數(shù)據(jù)請(qǐng)求需要先將數(shù)據(jù)寫入磁盤,然后發(fā)出請(qǐng)求的節(jié)點(diǎn)才可以讀取該數(shù)據(jù)。使用cache fusion時(shí),rac的各個(gè)節(jié)點(diǎn)的數(shù)據(jù)緩沖區(qū)通過(guò)高速、低延遲的內(nèi)部網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)塊的傳輸。2.優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
oracle rac主要支持oracle9i、10g、11g版本,可以支持24 x 7 有效的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),在低成本服務(wù)器上構(gòu)建高可用性數(shù)據(jù)庫(kù)系統(tǒng),并且自由部署應(yīng)用,無(wú)需修改代碼。在oracle rac環(huán)境下,oracle集成提供了集群軟件和存儲(chǔ)管理軟件,為用戶降低了應(yīng)用成本。當(dāng)應(yīng)用規(guī)模需要擴(kuò)充時(shí),用戶可以按需擴(kuò)展系統(tǒng),以保證系統(tǒng)的性能。(1)多節(jié)點(diǎn)負(fù)載均衡;(2)提供高可用:故障容錯(cuò)和無(wú)縫切換功能,將硬件和軟件錯(cuò)誤造成的影響最小化;(3)通過(guò)并行執(zhí)行技術(shù)提高事務(wù)響應(yīng)時(shí)間----通常用于數(shù)據(jù)分析系
統(tǒng);(4)通過(guò)橫向擴(kuò)展提高每秒交易數(shù)和連接數(shù)----通常對(duì)于聯(lián)機(jī)事務(wù)系
統(tǒng);(5)節(jié)約硬件成本,可以用多個(gè)廉價(jià)pc服務(wù)器代替昂貴的小型機(jī)或大
型機(jī),同時(shí)節(jié)約相應(yīng)維護(hù)成本;(6)可擴(kuò)展性好,可以方便添加刪除節(jié)點(diǎn),擴(kuò)展硬件資源。缺點(diǎn):(1)相對(duì)單機(jī),管理更復(fù)雜,要求更高;(2)在系統(tǒng)規(guī)劃設(shè)計(jì)較差時(shí)性能甚至不如單節(jié)點(diǎn);(3)可能會(huì)增加軟件成本(如果使用高配置的pc服務(wù)器,oracle一般 按照cpu個(gè)數(shù)收費(fèi))。3.rac 特點(diǎn)
每一個(gè)節(jié)點(diǎn)的linstance都有自己的sga 每一個(gè)節(jié)點(diǎn)的linstance都有自己的background process 每一個(gè)節(jié)點(diǎn)的linstance都有自己的redo logs 每一個(gè)節(jié)點(diǎn)的linstance都有自己的undo表空間
所有節(jié)點(diǎn)都共享一份datafiles和controlfiles 4.rac 組件
5.undo和redo讀書筆記
1)redo是什么?oracle的redo是如何工作的 redo是重做日志文件,是oracle數(shù)據(jù)庫(kù)的日志文件.oracle的重做日志有兩種:在線重做日志以及歸檔重做日志。
在線重做日志:主要用于由于數(shù)據(jù)庫(kù)主機(jī)掉電等原因?qū)е聦?shí)例失敗,此時(shí)oracle采用在線重做日志在數(shù)據(jù)庫(kù)啟動(dòng)時(shí)將數(shù)據(jù)庫(kù)恢復(fù)到斷電之前的時(shí)間點(diǎn)上。
歸檔重做日志:主要用于介質(zhì)失敗,比如:磁盤受損。此時(shí)需要使用對(duì)磁盤上的數(shù)據(jù)備份的歸擋重做日志文件將該磁盤上的數(shù)據(jù)恢復(fù)到該歸檔文件數(shù)據(jù)所在的時(shí)間點(diǎn)上,然后再使用在線重做日志文件將適合的時(shí)間點(diǎn)上。
歸檔重做日志文件實(shí)質(zhì)是被添滿的舊的在線重做日志的副本。歸檔重做日志文件是數(shù)據(jù)庫(kù)的歷史數(shù)據(jù)。
在線重做日志在每個(gè)數(shù)據(jù)庫(kù)中至少有兩個(gè)重做日志組,每個(gè)日志組中至少有一個(gè)重做日志文件,這些在線重做日志組是循環(huán)使用的,當(dāng)日志組1被寫到最后時(shí),然后自動(dòng)切換到日志組2;當(dāng)日志組2也被寫滿時(shí),再切換到日志組1。2)undo是什么?oracle的undo是如何工作的 undo與redo相反,redo是恢復(fù)數(shù)據(jù),用于在事務(wù)失敗時(shí)重放事務(wù),undo是撤消一條語(yǔ)句或者一組語(yǔ)句的作用。undo是存儲(chǔ)在數(shù)據(jù)庫(kù)內(nèi)部的段或者表空間中(undo如果是手動(dòng)管理,則使用undo段來(lái)管理;如果undo使用aum管理undo,則undo使用表空間來(lái)自動(dòng)管理)。注意:在undo并不是物理的恢復(fù)到執(zhí)行語(yǔ)句之前或者事務(wù)之前的樣子,只是邏輯的恢復(fù)到原來(lái)的樣子,所有修改只是邏輯的取消,但是數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)塊在回滾之后也大不相同。原因是在多用戶系統(tǒng)中,有很多事務(wù)是并發(fā)進(jìn)行的,當(dāng)一個(gè)事務(wù)修改一個(gè)數(shù)據(jù)并且被回滾,但是該數(shù)據(jù)在該用戶對(duì)該數(shù)據(jù)做過(guò)修改之后也有被其他用戶修改,這個(gè)時(shí)候如果是對(duì)該事務(wù)修改的數(shù)據(jù)塊回滾到原來(lái)數(shù)據(jù)的物理樣子,就有可能將后來(lái)的事務(wù)所做的修改給覆蓋掉。所以回滾不是
一個(gè)簡(jiǎn)單的物理的恢復(fù),而是邏輯恢復(fù)。3)undo和redo是如何協(xié)作工作的 4)6.篇四:oracle數(shù)據(jù)庫(kù)學(xué)習(xí)總結(jié) oracle數(shù)據(jù)庫(kù)學(xué)習(xí)總結(jié)
時(shí)間過(guò)的還真快,不知不覺(jué)中就在這里呆了半個(gè)月了。這段時(shí)間里都在學(xué)習(xí)oracle數(shù)據(jù)庫(kù)的編程,畢竟這是家軟件外包公司。像我們這樣的新員工也就只能接觸到些curd的操作。廢話不多說(shuō),趕緊來(lái)梳理下這半月來(lái)學(xué)習(xí)的知識(shí)點(diǎn).在來(lái)公司之前一直都是使用sql server數(shù)據(jù)庫(kù),用sql server也開(kāi)發(fā)了3個(gè)小型項(xiàng)目。所以對(duì)sql語(yǔ)句以及在數(shù)據(jù)庫(kù)中扮演重要作用的存儲(chǔ)過(guò)程,觸發(fā)器,視圖,主鍵/外鍵約束都很熟。但oracle是一個(gè)全新的環(huán)境,記得剛裝上oracle的時(shí)候,我都不知道在哪查看自己已經(jīng)建立好的表格。還好有師傅的幫忙,要不然我還真沒(méi)這么快就能入門oracle。學(xué)習(xí)東西就要學(xué)習(xí)些能改變自己思維的東西,只有這樣才能讓自己的眼光比別人更獨(dú)到,思維比別人更深邃,oracle就是這樣的東西。當(dāng)然做這樣的事是要很大的驅(qū)動(dòng)力的呀,如果公司不是都采用oracle來(lái)寫程序的話,我估計(jì)也就懶得學(xué)啦。對(duì)于一位程序員來(lái)說(shuō)并不需要完全掌握oracle的所有知識(shí),畢竟自己不是dba。在日常開(kāi)發(fā)中也用不到那些命令和工具,但是有些知識(shí)點(diǎn)我們還是必須得熟練的掌握它們。比如:一些基本的ddl和dml語(yǔ)句,存儲(chǔ)過(guò)程,函數(shù),視圖,觸發(fā)器,序列,游標(biāo),自定義類型和包。
下面我就把這段時(shí)間里學(xué)習(xí)oracle獲得的知識(shí)點(diǎn)羅列出來(lái),一是為了方便以后查閱,二是為了和搭檔交流學(xué)習(xí)經(jīng)驗(yàn)。
要適應(yīng)的一些細(xì)節(jié) 從sql server轉(zhuǎn)到oracle進(jìn)行數(shù)據(jù)庫(kù)編程,第一道門檻就是語(yǔ)法問(wèn)題。很多很多的問(wèn)題都是因?yàn)檎Z(yǔ)法而產(chǎn)生的,現(xiàn)將它們統(tǒng)統(tǒng)集合起來(lái)并將它們一網(wǎng)打盡之。pl結(jié)構(gòu)。在sql server中,采用的是批處理執(zhí)行任務(wù)的方式,所以可以將多條sql語(yǔ)句選中批量執(zhí)行,而不用顧忌要在專門的地方聲明變量,在專門的地方進(jìn)行邏輯編碼。在oracle中采用的是pl編程方式,必須在專門的地方聲明變
循環(huán)結(jié)構(gòu),要達(dá)到循環(huán)在oracle中有3種方式,各有各的好處,你懂的。它們分別如下: pl結(jié)構(gòu)中的錯(cuò)誤處理
就像c#中的try{} catch{}語(yǔ)句塊 能捕獲錯(cuò)誤。寫幾個(gè)例子: helloworld級(jí)別的錯(cuò)誤拋出例子 record類型
oracle中的record類型類似于c語(yǔ)言中的結(jié)構(gòu)體,主要用來(lái)接收select 語(yǔ)句或游標(biāo)中返回的數(shù)據(jù),下面寫個(gè)例子: ddl語(yǔ)句
這里的ddl語(yǔ)言主要是指能完成如下工作的ddl語(yǔ)言:創(chuàng)建表,創(chuàng)建表的主/外 鍵及級(jí)聯(lián)效果,dml語(yǔ)句
select語(yǔ)句。oracle中的select語(yǔ)句的使用方法與 sql server差不多,但還是有些不同之處。篇五:oracle學(xué)習(xí)體會(huì) oracle學(xué)習(xí)體會(huì)
王巖
2015年,為落實(shí)重點(diǎn)開(kāi)展“完善業(yè)務(wù)系統(tǒng),加強(qiáng)統(tǒng)計(jì)數(shù)據(jù)匯總分析”的工作要求,根據(jù)協(xié)會(huì)安排,我由政策信息部調(diào)整到統(tǒng)計(jì)部,在穩(wěn)步推進(jìn)業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫(kù)工作的基礎(chǔ)上,努力配合做好網(wǎng)絡(luò)及其他軟硬件管理等工作。對(duì)于曾經(jīng)負(fù)責(zé)信息宣傳工作的我來(lái)說(shuō),計(jì)算機(jī)技術(shù)還是一個(gè)全新的領(lǐng)域。
根據(jù)協(xié)會(huì)安排,我從今年的4月到11月利用周末時(shí)間學(xué)習(xí)專業(yè)知識(shí),旨在通過(guò)參加學(xué)習(xí)中心的linux系統(tǒng)和oracle數(shù)據(jù)庫(kù)等培訓(xùn)課程,承擔(dān)協(xié)會(huì)業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫(kù)的開(kāi)發(fā)和管理工作。在參加專業(yè)培訓(xùn)機(jī)構(gòu)課程的同時(shí),臧立副主任也會(huì)不定期針對(duì)協(xié)會(huì)的業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫(kù)為我們做一些內(nèi)訓(xùn)。通過(guò)這一年來(lái)的學(xué)習(xí)、回顧和梳理,讓我對(duì)oracle數(shù)據(jù)庫(kù)知識(shí)以及協(xié)會(huì)的業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫(kù)框架有了一定的了解,也對(duì)協(xié)會(huì)的數(shù)據(jù)庫(kù)管理工作方面有了一些建議。
一份總結(jié)和體會(huì) oracle數(shù)據(jù)庫(kù)分兩個(gè)方面,一塊是開(kāi)發(fā),一塊是管理。開(kāi)發(fā)主要是寫存儲(chǔ)過(guò)程、觸發(fā)器之類的編程工作,類似于程序員,需要有較強(qiáng)的邏輯思維能力和創(chuàng)造能力。數(shù)據(jù)庫(kù)管理則是需要對(duì)oracle數(shù)據(jù)庫(kù)的原理有深刻的認(rèn)識(shí),有全局操縱的能力和緊密的思維,而協(xié)會(huì)的業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫(kù)工作則是同時(shí)包含了開(kāi)發(fā)和管理的內(nèi)容。
在有一定的oracle專業(yè)知識(shí)之后,我開(kāi)始接手了遼寧省協(xié)會(huì)和 廣東省協(xié)會(huì)的業(yè)務(wù)數(shù)據(jù)分入處理工作。其中,根據(jù)每期不同的業(yè)務(wù)數(shù)據(jù),需要對(duì)數(shù)據(jù)導(dǎo)入的操作腳本進(jìn)行修改,遇到有問(wèn)題的數(shù)據(jù),需要根據(jù)錯(cuò)誤進(jìn)行邏輯分析,創(chuàng)建新的腳本來(lái)篩選出錯(cuò)誤數(shù)據(jù),并進(jìn)行修改整理,最終將正確、完整的業(yè)務(wù)數(shù)據(jù)導(dǎo)入到協(xié)會(huì)業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫(kù)中,為保費(fèi)結(jié)算工作提供了及時(shí)可靠的數(shù)據(jù)支持。
做計(jì)算機(jī)技術(shù)工作的人都知道,專業(yè)的知識(shí)只能稱得上打開(kāi)這項(xiàng)工作大門的一把鑰匙,要想真正邁進(jìn)協(xié)會(huì)數(shù)據(jù)庫(kù)管理工作這項(xiàng)領(lǐng)域,我們還需要學(xué)習(xí)掌握協(xié)會(huì)的業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫(kù)框架。協(xié)會(huì)的數(shù)據(jù)庫(kù)里面承載著一百多類表,包含著一千余個(gè)列,我們不僅要知道這些表的邏輯結(jié)構(gòu)和數(shù)據(jù)類型,還要知道各個(gè)表之間的關(guān)聯(lián),從而在數(shù)據(jù)庫(kù)中順利的實(shí)現(xiàn)增、刪、改、查我們所需要的數(shù)據(jù)。
一點(diǎn)不足和建議
協(xié)會(huì)的數(shù)據(jù)庫(kù)建設(shè)工作無(wú)論是邏輯結(jié)構(gòu)方面,還是軟件兼容方面,都做的很好,但是在硬件設(shè)備管理上,我們可能還有更好的選擇。2015年年末,我接手了一項(xiàng)篩查數(shù)據(jù)的工作,原因是山東數(shù)據(jù)庫(kù)服務(wù)器機(jī)房出現(xiàn)故障,導(dǎo)致丟失了部分業(yè)務(wù)數(shù)據(jù),我的任務(wù)就是要將這些丟失的數(shù)據(jù)文件名查找出來(lái),以便山東協(xié)會(huì)后期進(jìn)行補(bǔ)救工作。事后我對(duì)這件事進(jìn)行了思考,事故的主要原因是因?yàn)樗麄兊臄?shù)據(jù)庫(kù)服務(wù)器存放在省協(xié)會(huì)本部沒(méi)有專業(yè)管理的機(jī)房中,由于空調(diào)故障室溫過(guò)熱,導(dǎo)致硬盤燒毀,在此方面,國(guó)家協(xié)會(huì)目前的做法和省協(xié)會(huì)一樣,都將服務(wù)器存放在本部沒(méi)有專業(yè)管理的機(jī)房。2015年7月,由于協(xié)會(huì)網(wǎng)絡(luò)供應(yīng)商硬件設(shè)備出現(xiàn)嚴(yán)重故障,導(dǎo)
致我會(huì)辦公網(wǎng)絡(luò)以及業(yè)務(wù)系統(tǒng)全面癱瘓,雖然我部已在第一時(shí)間查明原因,但卻束手無(wú)策,只能敦促網(wǎng)絡(luò)供應(yīng)商盡快修復(fù)。
根據(jù)以上兩次實(shí)際案例,為了避免這類事故再次發(fā)生,我建議盡快將協(xié)會(huì)數(shù)據(jù)庫(kù)遷移至更加專業(yè)的托管機(jī)房,確保業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫(kù)服務(wù)器統(tǒng)一管理、規(guī)范管理,還有就是要進(jìn)一步加強(qiáng)協(xié)會(huì)機(jī)房和大興托管機(jī)房的巡檢工作,避免硬件設(shè)備出現(xiàn)故障,進(jìn)而確保業(yè)務(wù)系統(tǒng)高效、安全運(yùn)行。