2023年自學(xué)oracle(三篇)

格式:DOC 上傳日期:2023-05-24 07:32:52
2023年自學(xué)oracle(三篇)
時間:2023-05-24 07:32:52     小編:cyyllee

范文為教學(xué)中作為模范的文章,也常常用來指寫作的模板。常常用于文秘寫作的參考,也可以作為演講材料編寫前的參考。寫范文的時候需要注意什么呢?有哪些格式需要注意呢?這里我整理了一些優(yōu)秀的范文,希望對大家有所幫助,下面我們就來了解一下吧。

自學(xué)oracle篇一

exo userid=system/manager@myral1 owner=(system,scott)file;=d; 導(dǎo)出數(shù)據(jù)庫

exp userid=system/manager@myor full=y inctype=complete file=d; 導(dǎo)入用imp 語句(其他用戶到入表的時候不能有主外鍵關(guān)系)inp userid=scott/m123@myoral1 tables=(emp)file=file=d;scott/dmp 數(shù)據(jù)字典和動態(tài)性視圖

數(shù)據(jù)字典是oracle數(shù)據(jù)庫中最重要的組成部分,他提供了數(shù)據(jù)的一些系統(tǒng)信息(靜態(tài))數(shù)據(jù)字典是存放在基本表里,存在在system里面。其中基表存放數(shù)據(jù)庫的基本信息,普通用戶不能直接訪問數(shù)據(jù)字典的基表,數(shù)據(jù)字典視圖是基于數(shù)據(jù)字典基表所建立的視圖,普通用戶可以通過查詢數(shù)據(jù)字典視圖取得系統(tǒng)信息,數(shù)據(jù)字典視圖主要包括user_xxx,all_xxx,dba_xxx三個類型

user_table 用于顯示當(dāng)前用戶所擁有的所有表,它只返回用戶所對應(yīng)反感的所有表 select table_name from user_tables

all_table 顯示當(dāng)前用戶可以訪問的所有表,她不僅會返回當(dāng)前用戶可以訪問的其他方案表

select table_name from all_tables dba_table

他會顯示所有擁有的數(shù)據(jù)庫表,但是查詢這種數(shù)據(jù)庫字典視圖,必須是dba角色或是擁有select any table系統(tǒng)權(quán)限 用戶名,權(quán)限,角色

在建立用戶,oracle會把用戶的信息存放到數(shù)據(jù)字典中,當(dāng)給用戶授權(quán)或是角色時,oracle會將權(quán)限和角色的信息存放到數(shù)據(jù)字典中 顯示數(shù)據(jù)庫用戶

select username,from dba_users?

dba_sys_privs可以顯示用戶所具有的系統(tǒng)權(quán)限 dba_tab_privs 可以顯示用戶所具有的對象權(quán)限 dba_col_privs 可以顯示用戶具有的列權(quán)限 dba_role_privs 可以顯示用戶所具有的角色

查看scott具有的角色,可以查詢dba_role_privs select * from dba_role_privs where =?scott 如何查詢一個角色包括的權(quán)限 select * from ?

查詢oracle中所有的系統(tǒng)權(quán)限,一般用dba select * from sys_privilege_map 查詢oracle 中所有的角色,一般是dba select * from dba_roles 查詢oracle中所有對象權(quán),一般是dba select distnct privilege from dba_tab_privs 查詢數(shù)據(jù)的表空間

select tablespace_name from dba_tablespaces 查詢一個用戶包含的系統(tǒng)權(quán)限

select * from dba_sys_privs where grantee=?dba?

select * from role_sys_privs where role=?dba? 如何究竟有多少中角色 select * from dba_roles 顯示當(dāng)前用戶可以訪問的所有數(shù)據(jù)字典視圖

select * from dict where comment like ?%rant%? 顯示當(dāng)前數(shù)據(jù)全稱

select * from global_name

數(shù)據(jù)字典記錄有oracle 數(shù)據(jù)庫的所有系統(tǒng)信息,通過查詢數(shù)據(jù)字典可以取得以下的系統(tǒng)信息,比如

a 對象定義情況 b 對象所占用空間大小 c 列信息 等 但因為這些個信息,可以通過pl/sql developer 動態(tài)性能視圖記載了里程啟動后的相關(guān)信息

動態(tài)性能視圖用于記錄當(dāng)前歷程的活動信息,啟動oracle server時,系統(tǒng)會建立動態(tài)性能視圖,當(dāng)停止oracle server 時,系統(tǒng)會刪除動態(tài)性能視圖 管理表空間和數(shù)據(jù)文件

介紹,表空間時數(shù)據(jù)庫的邏輯組成部分,從物理上講,數(shù)據(jù)庫數(shù)據(jù)存放在數(shù)據(jù)文件中,從邏輯上講,數(shù)據(jù)則是存放在表空間中,表空間由一個或是多個數(shù)據(jù)文件組成oracle的邏輯結(jié)構(gòu)報考表空間,段,區(qū),和塊 表空間由段構(gòu)成,段由區(qū)構(gòu)成,區(qū)由塊構(gòu)成

表空間用于從邏輯上組織數(shù)據(jù)庫的數(shù)據(jù),數(shù)據(jù)庫邏輯上是由一個或是多個表空間組成的。作用

a控制數(shù)據(jù)占用的磁盤空間

b dba可以講不同數(shù)據(jù)類型部署到不同的位置,這樣由利于提高i/o性能

建立表空間 create tablespace 命令完成的,建表空間一般是特權(quán)用戶或是dba執(zhí)行 的 建立數(shù)據(jù)庫后方便管理,最好建立自己的表空間,create tablespace data01 datafile ?d:? size 20m uniform size 128 使用數(shù)據(jù)表空間

create table mypart(deptno number(4)),dname varchar2(14),loc varchar2(130)tablespace data01 查詢所在表空間 改變表空間狀態(tài),表空間處于聯(lián)機狀態(tài),此時表空間是可以訪問的,并且空間執(zhí)行各種語句,(1)使用表空間脫機

alter tablespace biaokongjian offline b 使用表空間脫機

alter tablespace biaokongjian o c 只讀 表空間或?qū)?,用write alter tablespace biaogongjian read only 知道表空間名,顯示該空間包括的所有的表

select * from all_tables where tablespace_name=?biaokongjianming? 知道表名,查看該表屬于哪個空間

select tablespace_name ,table_name from user_tables where table_name=?emp? 刪除表空間

drop tablesspace “biaokongjianming ” including contents and datafiles 擴展表空間

表空間是由數(shù)據(jù)文件組成,表空間的大小實際上就是數(shù)據(jù)文件相加的大小,那么我們可以想象

show users insert into mypart select * from mypart 拓展表空間由三種 增加數(shù)據(jù)文件

alter table tablespace sp01 add datafile ?d;? size 20m 增加數(shù)據(jù)文件大小

alter table tablespace biaokongjianming ?d;? size 20m 設(shè)置文件的自動增長

alter table tablespace biaokongjianming ?d;“ autoextend on next 10m maxsize 500m 移動數(shù)據(jù)文件

確定數(shù)據(jù)文件所在的表空間

select tablespace_name from dba_data_files where file_name=? d;? 使表空間脫機

alter tablespace sp01 offline

使用命令移動數(shù)據(jù)文件到指定位置

host move d; c; 移動數(shù)據(jù)文件

alter tablespace sp01 rename datafile ?d;?to “c;? 使空間聯(lián)機

alter tablespace sp001 online 其他表空間 索引表空間 undo 表空間 臨時表空間

非標(biāo)準(zhǔn)塊的表空間 第二十一講

數(shù)據(jù)的完整性用于確保數(shù)據(jù)遵從一定的商業(yè)和邏輯規(guī)則,數(shù)據(jù)完整性可以使用約束,觸發(fā)器,應(yīng)用程序,三種方法。

約束用于確保數(shù)據(jù)庫數(shù)據(jù)滿足特定的商業(yè)規(guī)則,約束包括

not null 不為空

unique 唯一 可以為空

primary key 主鍵 唯一的標(biāo)示表行的數(shù)據(jù),不能重復(fù)而且不能為空 只能一個主鍵 foreign key 外鍵

外鍵列數(shù)據(jù)必須在主表的主鍵列存在或是為null check 檢查 強制執(zhí)行數(shù)據(jù)必須滿足的條件 增加約束

alter table 命令

在增加not null 用midify

alter table goods modify goosname not null alter table customer add constraint aa unique(cardid)刪除約束

alter table emp drop constraint 約束名稱

刪除主鍵約束時候,存在主從關(guān)系,那么要在刪除主表的主鍵約束的時候 必須帶上cascade alter table emp drop primary key cascade 顯示約束信息

通過查詢user_constraints 可以顯示所有約束信息

select constraint_name,constraint_type,from user_constraints where table_name=表名 索引是用于加速數(shù)據(jù)存取的數(shù)據(jù)對象,合理使用索引可以大大的降低io的次數(shù) 創(chuàng)建索引

create index suoyi on customer(列名1,列名2)使用原則 1 在大表上建立索引才有意義 在where 子句或是鏈接跳上 經(jīng)常用的列

缺點,建立索引,系統(tǒng)要占用大約表的1.2倍的硬盤和內(nèi)存空間來保存索引 更新數(shù)據(jù)的時候,系統(tǒng)必須要有額外的時間來同時對索引進行更新。以維持?jǐn)?shù)據(jù)和索引的一致性。權(quán)限和角色 創(chuàng)建和授予

create user ken identified by ken

grant create session,create table to ken with admin option 對象權(quán)限,常用有

alter 修改 delete 刪除 select查詢 insert 添加 update 修改 index 索引 references 引用 execute 希望monkey 授權(quán)scott 可以查詢

grant select on emp to monkey with grant option 只能授予用戶,不能授予角色 第23講

預(yù)定義角色,是指oracle所提供的角色 1 connect角色resource 角色dba 角色

自定義角色 一般是dba設(shè)定

建立角色

create role jueseming not identified(不驗證)create role 角色名 identity by shunp 賦予權(quán)限

grant create session to jueseming with admin option conn scott/tiger@myoral grant select on scott,emp to jueseming grant insert,update,delete on 分配角色給某個用戶 conn system/manager grant jueseming to blake with admin option 刪除 角色

drop role juese 第25講

pl/sql是oracle在標(biāo)準(zhǔn)語言上的擴展,不僅允許嵌入sql語言還可以定義變量和常量。過程,函數(shù),觸發(fā)器是pl/sql編寫,過程,函數(shù),觸發(fā)器是在oracle中,pl/qsl是非常強大的數(shù)據(jù)庫語言,過程函數(shù),可以在java程序中可以調(diào)用。編寫一個存儲過程,該過程可以插入 create or replace procedure so_spro1 is begin--執(zhí)行部分

insert into mytest values(?寒暑平?,?m123?);end.;/ 查看錯誤

show error 如何調(diào)用該過程 exec 過程名(參數(shù)值1,參數(shù)值2。。)2 call 過程名(參數(shù)值1,參數(shù)值2)刪除某表記錄

create or replace sp_pro2 is begin delete from mytess where name=?hanshupin? end.分類,塊 a 過程

b函數(shù)

c 觸發(fā)器

d 包 注釋

單行注釋

--多行注釋

/*…*/劃分 標(biāo)識符號的命名的規(guī)范 定義變量時 建議用v_前綴 2 定義常量時,建議用c_前綴 定義游標(biāo)時候,建議用—cursor作為后綴 4定義例外時

pl/sql 由三個部分構(gòu)成,定義部分,執(zhí)行部分,例外處理部分 如下所示 declear(可選)定義部分—定義變量,常量,游標(biāo),例外,復(fù)雜數(shù)據(jù)類型 begin(必選)執(zhí)行部分----要執(zhí)行的語句 exception(可選)

例外處理部分----處理運行的各種錯誤 end.最簡單的塊 begin _line(??hello world”)end

declare

v_ename varchar2(4)begin

select ename into v_name from emp where empno=&noend

有定義和執(zhí)行部分的塊 declare ==定義變量

v_ename varchar2(4)v_sal number(7.2)begin---執(zhí)行部分

select ename,sal into v_name,v_sal from emp where empno=&aa---在控制臺顯示用戶名 _line(t….)exception when no_data_found then _line(有誤)end;過程用于執(zhí)行特定的操作,當(dāng)建立過程時,既可以制定輸入?yún)?shù)in ,可以指定輸出參數(shù)??梢詫?shù)據(jù)傳遞到執(zhí)行部分,通過使用輸出參數(shù),可以將執(zhí)行部分的數(shù)據(jù)傳遞到應(yīng)用環(huán)境 1 請考慮編寫一個過程,可以輸入雇員名,新工資,可修改雇員的工資 2 如何調(diào)用兩種方法

答 1 create procedure sp_pro3(spname varchar2,newsal number(3,2))is begin update emp set sal=newsal where ename=spname end 如何使用過程返回值?

函數(shù)用于返回特定的數(shù)據(jù),當(dāng)建立函數(shù)時,在函數(shù)頭部必須包含return 顯示雇員的年薪

create function sp_fun2(spname varchar2)return number is yearsal begin

select sal*12+nvl(comm.,0)*12 into yearsal from emp where ename=spname return yearsal end 包是用于邏輯上組合過程和函數(shù),它由包規(guī)范和包體兩部分 實例

create package sp_package is

procedure update_sal(name varchar2,newsal number)is begin update emp set sal=newsal where ename=name end

function annual_incom(name varchar)return number return number is annuan_salary number begin end 變量類型 標(biāo)量類型

定義可變長字符串 v_ename varchar2(10)定義一個小數(shù) v_sal number(6.2)定義一個小數(shù)和初始值 v_sal2 number(9,2)=6.4 定義一個日期類型的數(shù)據(jù) v_hiredate date 定義一個布爾變量,不能為空,初始值為false v_valid boolean not null default false declare

c_tax_rate number(3,2):=0.03 v_ename varchar2(7,2)v_sal number(7,2)v_tax_sal number(7,2)begin select ename,sal into v_ename,v_sal from emp where empno=&no v_tax_sal;=v_sal*v_tax_rate end 標(biāo)量%tyoe 符合類型

用于存放多個值的變量,主要包括 記錄 表 嵌套表 嵌套表 varry 記錄 類似與高級語言中的結(jié)構(gòu)體

記錄實例 declare--定義一個plsql記錄類型

emp_record_typ,類型包括三個數(shù)據(jù)name ,salary,title

type emp_record_type is record(name %type,salary %type,title %type)--定義一個變量emp_record_typ, sp_record emp_record_type begin select ename,sal,job into sp_record from emp where empno=7788 end plsql表

declare

定義了一個表類型sp-table-type 該類型用于存放emp,ename%type, index by binary_integer標(biāo)示下標(biāo)是整數(shù)

tysp sp_table_type is table of emp,ename%type index by binary_integer sp_table sp_table_type/ begin

select ename into sp_tabel(0)from emp where empno=7788 end 參照類型

參照變量是指用于存放數(shù)值指針的變量,可以使用游標(biāo)標(biāo)量(ref cursor)參照變量-ref cursor 使用游標(biāo)時,當(dāng)定義游標(biāo)時不需要制定相應(yīng)的select語句 但使用游標(biāo)時open時需要指定select 語句,這樣一個游標(biāo)就與一個select 語句結(jié)合了 編寫使用plsql編寫一個存儲過程,可以輸入部門號,并顯示 declare 定義游標(biāo)類型sp_emp_cirsor type sp_emp_cirsor is ref cursor test_cursor sp_emp_cirsor:-定義變量

v-ename &pyte v_sal &type begin-執(zhí)行

-把 test_cursor和一個select結(jié)合

open test_cursor for select ename,sal,from emp where deptno=&no =循環(huán)取出 loop

fet test_cursor into v_ename,v_sal?-判斷是否test_cursor為空

exit when test_cursor &notfound end loop end

create or replace procedure spr_column is

--定義游標(biāo)

sp_column_cursor is ref cursor;sp_column sp_column_cursor;

--定義變量

declare

v_table_name _name%type v_column_name _name%type v_data_type _type%type v_data_length _length%type v_count_table1 number(2000)v_count_table2 number(2000)v_sql varchar2(4000)v_rom_count(100)c_count number;=0 begin

create table user_tab_columns_new as select * from user_tab_columns select t1.*, rownum rn from user_tab_columns_new select count(*)into v_count_table from user_tab_columns_new

select table_name into v_from(select a1.*,rownum rn from(select * from user_tab_columns_new)a1 where rownum=1)end

自學(xué)oracle篇二

如何學(xué)習(xí)oracle-給我的朋友們

很多朋友經(jīng)常問起學(xué)習(xí)oracle的方法,在這里我把寫在《oracle數(shù)據(jù)庫性能優(yōu)化》一書前面的話貼在這里,供大家參考,希望能對來這里的朋友有所幫助。

-----------------

經(jīng)常有朋友會問,應(yīng)該如何學(xué)習(xí)oracle,怎樣才能快速提高?我把自己的一點心得寫在這里,供大家參考。

其實學(xué)習(xí)任何東西都是一樣,沒有太多的捷徑可走,必須打好了堅實的基礎(chǔ),才有可以在進一步學(xué)習(xí)中得到快速提高。

王國維在他的《人間詞話》中曾經(jīng)概括了為學(xué)的三種境界,我在這里套用一下:

古今之成大事業(yè)、大學(xué)問者,罔不經(jīng)過三種之境界。

“昨夜西風(fēng)凋碧樹。獨上高樓,望盡天涯路?!贝说谝痪辰缫?。

“衣帶漸寬終不悔,為伊消得人憔悴?!贝说诙辰缫病?/p>

“眾里尋他千百度,驀然回首,那人卻在燈火闌珊處。”此第三境界也。

學(xué)習(xí)oracle,這也是你必須經(jīng)歷的三種境界。

第一層境界是說,學(xué)習(xí)的路是漫漫的,你必須做好充分的思想準(zhǔn)備,如果半途而廢還不如不要開始。

這里,注意一個“盡”字,在開始學(xué)習(xí)的過程中,你必須充分閱讀oracle的基礎(chǔ)文檔,概念手冊、管理手冊、備份恢復(fù)手冊等(這些你都可以在http:// 上找到);ocp認(rèn)證的教材也值得仔細(xì)閱讀。打好基礎(chǔ)之后你才具備了進一步提升的能力,萬丈高樓都是由地而起。

第二層境界是說,盡管經(jīng)歷挫折、打擊、灰心、沮喪,也都要堅持不放棄,具備了基礎(chǔ)知識之后,你可以對自己感興趣或者工作中遇到的問題進行深入的思考,由淺入深從來都不是輕而易舉的,甚至很多時候你會感到自己停滯不前了,但是不要動搖,學(xué)習(xí)及理解上的突破也需要時間。

第三次境界是說,經(jīng)歷了那么多努力以后,你會發(fā)現(xiàn),那苦苦思考的問題,那百思不得其解的算法原理,原來答案就在手邊,你的思路豁然開朗,宛如撥云見月。這個時候,學(xué)習(xí)對你來說,不再是個難題,也許是種享受,也許成為藝術(shù)。所以如果你想問我如何速成,那我是沒有答案的。

不經(jīng)一番寒徹骨,哪得梅花撲鼻香。

當(dāng)然這三種境界在實際中也許是交叉的,在不斷的學(xué)習(xí)中,不斷有驀然回首的收獲。我自己在學(xué)習(xí)的過程中,經(jīng)常是采用“由點及面法”。

當(dāng)遇到一個問題后,一定是深入下去,窮究根本,這樣你會發(fā)現(xiàn),一個簡單的問題也必定會帶起一大片的知識點,如果你能對很多問題進行深入思考和研究,那么在深處,你會發(fā)現(xiàn),這些面逐漸接合,慢慢的延伸到oracle的所有層面,逐漸的你就能融會貫通。這時候,你會主動的去嘗試全面學(xué)習(xí)oracle,掃除你的知識盲點,學(xué)習(xí)已經(jīng)成為一種需要。

由實踐觸發(fā)的學(xué)習(xí)才最有針對性,才更能讓你深入的理解書本上的知識,正所謂:

“紙上得來終覺淺,絕知此事要躬行”。實踐的經(jīng)驗于我們是至為寶貴的。如果說有,那么這,就是我的捷徑。

想想自己,經(jīng)常是“每有所獲,便欣然忘食”,興趣才是我們最好的老師。

oracle的優(yōu)化是一門學(xué)問,也是一門藝術(shù),理解透徹了,你會知道,優(yōu)化不過是在各種條件之下做出的均衡與折中。

內(nèi)存、外存;cpu、io...對這一切你都需要有充分的認(rèn)識和相當(dāng)?shù)牧私?,管理?shù)據(jù)庫所需要的知識并不單純。

作為一個數(shù)據(jù)庫管理人員,你需要做的就是能夠根據(jù)自己的知識以及經(jīng)驗在各種復(fù)雜情況下做出快速正確的判斷。當(dāng)問題出現(xiàn)時,你需要知道使用怎樣的手段發(fā)現(xiàn)問題的根本;找到問題之后,你需要運用你的知識找到解決問題的方法。

這當(dāng)然并不容易,舉重若輕還是舉輕若重,取決于你具備怎樣的基礎(chǔ)以及經(jīng)驗積累。在網(wǎng)絡(luò)上,howard 最近創(chuàng)造了一個新詞組:voodoo tuning,用以形容那些沒有及時更新自己的知識技能的所謂的oracle技術(shù)專家。由于知識的陳舊或者理解的膚淺,他們提供的很多調(diào)整建議是錯誤的、容易使人誤解的,甚至是荒誕的。他們提供的某些建議在有些情況下也許是正確的,如果你愿意回到oracle5版或者6版的年代;但是這些建議在oracle7.0,8.0 或者 oracle8i以后往往是完全錯誤的。

后來基于類似問題觸發(fā)了互聯(lián)網(wǎng)內(nèi)oracle頂級高手的一系列深入討論,tom、jonathan lewis、hjr等人都參與其中,在我的網(wǎng)站上()上對這些內(nèi)容及相關(guān)鏈接作了簡要介紹,有興趣的可以參考。

hjr給我們提了很好的一個提示:對你所需要調(diào)整的內(nèi)容,你必須具有充分的認(rèn)識,否則你做出的判斷就有可能是錯誤的。

這也是我想給自己和大家的一個建議:學(xué)習(xí)和研究oracle,嚴(yán)謹(jǐn)和認(rèn)真必不可少。當(dāng)然你還需要勤奮,我所熟悉的在oracle領(lǐng)域有所成就的技術(shù)人員,他們共同的特點就是勤奮。

如果你覺得掌握的東西沒有別人多,那么也許就是因為,你不如別人勤奮。

要是你覺得這一切過于復(fù)雜了,那我還有一句簡單的話送給大家:不積跬步,無以至千里。學(xué)習(xí)正是在逐漸積累過程中的提高。

現(xiàn)在itpub給我們提供了很好的交流場所,很多問題都可以在這里找到答案,互相討論,互相學(xué)習(xí)。這是我們的幸運,我也因此非常感謝這個網(wǎng)絡(luò)時代。

itpub的第二本書即將出版,謹(jǐn)以此祝愿itpub越來越好,也愿我們的書能給大家?guī)碇R和幫助。

自學(xué)oracle篇三

表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ù)庫常用的命令集錦 今日開始研究oracle,搜索到了一個好東東,拿出來與大家一同分享。

下面是摘抄的部分 :[local]2[/local] oracle相關(guān)語法及命令

一、oracle入門

理論知識:

oracle的物理組件有三個:(1)數(shù)據(jù)文件 數(shù)據(jù)文件是用于存儲數(shù)據(jù)庫數(shù)據(jù)的文件,如表、索引數(shù)據(jù)。每個oracle數(shù)據(jù)庫有一個或多個物理數(shù)據(jù)文件,一個數(shù)據(jù)文件只能與一個數(shù)據(jù)庫關(guān)聯(lián)。(2)日志文件 用于記錄對數(shù)據(jù)庫進行的修改信息,日志文件主要用于在數(shù)據(jù)庫出現(xiàn)故障時實施數(shù)據(jù)庫恢復(fù)。(3)控制文件 控制文件是記錄數(shù)據(jù)庫物理結(jié)構(gòu)的二進制文件,每個oracle數(shù)據(jù)庫都含有一個控制文件。

oracle的邏輯組件:

表空間(tablespace)表空間是數(shù)據(jù)庫最大的邏輯單位,一個數(shù)據(jù)庫至少包含一個表空間,一個表空間包含一個或多個段等等。

段(segment)段存在于表空間中,分成4類,數(shù)據(jù)段、索引段、回退段、臨時段。區(qū)(extent)區(qū)是磁盤空間分配最小單位,由連續(xù)的數(shù)據(jù)塊組成,一個或多個區(qū)構(gòu)成段,區(qū)只能存在于一個數(shù)據(jù)文件中。

數(shù)據(jù)塊(data block)數(shù)據(jù)塊是數(shù)據(jù)庫中最小的數(shù)據(jù)組織單位與管理單位,oracle數(shù)據(jù)庫中的數(shù)據(jù)存儲于數(shù)據(jù)塊中,取值范圍2k-64k之間。

模式(schema)模式是對用戶所創(chuàng)建的數(shù)據(jù)庫對象的總稱,又稱為用戶模式。

概念:

內(nèi)存 oracle內(nèi)存結(jié)構(gòu)包含以下兩個內(nèi)存區(qū)。

1、系統(tǒng)全局區(qū)(sga)實例啟動時分配該內(nèi)存區(qū),是oracle實例的一個基本組件。又稱為共享全局區(qū),它用來存儲數(shù)據(jù)庫信息,并由多個數(shù)據(jù)庫進程共享??煞譃楣蚕沓?、數(shù)據(jù)緩沖區(qū)及日志緩沖區(qū)。(1)共享池 是對sql、plsql程序進行語法分析、編譯、執(zhí)行的內(nèi)存區(qū)域。共享池由庫緩存和數(shù)據(jù)字典緩存組成。其中,庫緩存含有最近執(zhí)行的sql、plsql語句的分析碼和執(zhí)行計劃;數(shù)據(jù)字典緩存含有從數(shù)據(jù)字典中得到的表、索引、列定義和權(quán)限等信息。(2)數(shù)據(jù)緩沖區(qū) 數(shù)據(jù)緩沖區(qū)用于存儲從磁盤數(shù)據(jù)文件中讀入的數(shù)據(jù),所有用戶共享。(3)日志緩沖區(qū) 日志記錄數(shù)據(jù)庫的所有修改信息,主要用于恢復(fù)數(shù)據(jù)。

2、程序全局區(qū)(pga)服務(wù)器進程啟動時分配該內(nèi)存區(qū)。pga為非共享區(qū),只能單個進程使用,當(dāng)一個用戶會話結(jié)束后,pga釋放。

用戶進程(pga)發(fā)送sql語句到共享全局區(qū)(sga),先在共享池的庫緩存中查詢是否存在所需的數(shù)據(jù)塊,如果存在就在數(shù)據(jù)字典中讀取相應(yīng)的數(shù)據(jù)塊,如果不存在就由服務(wù)器進程(dbwr)來io數(shù)據(jù)庫

語法知識:

創(chuàng)建表空間的語法如下:

create tablespace tablespacename datafile d: [size int [kb|mb]] [autoextend [off|on]];tablespacename 是需創(chuàng)建的表空間名稱。datafile 指定組成表空間的一個或多個數(shù)據(jù)文件,當(dāng)有多個數(shù)據(jù)文件時使用逗號分隔。

filename 是表空間中數(shù)據(jù)文件的路徑和名稱。size 指定文件的大小,用k指定千字節(jié)大小,用m指定兆字節(jié)大小。autoextend子句用來啟用或禁用數(shù)據(jù)文件的自動擴展。oracle默認(rèn)用戶:

用戶名:sys 默認(rèn)密碼:chage_on_install 用來管理擁有oracle數(shù)據(jù)字典文件 用戶名:system 默認(rèn)密碼:manager 用來管理擁有數(shù)據(jù)字典視圖對象 用戶名:scott 默認(rèn)密碼:tiger 示例用戶,包括emp、dept等表

連接oracle: 在控制臺下輸入 sqlplus 用戶名/密碼 回車或 sqlplusw 回車

相關(guān)命令:

disconn //退出當(dāng)前登錄 conn 用戶名/密碼 //連接oracle alter user 用戶名 identified by 密碼 //修改用戶口令 drop user 用戶名 cascade;//刪除用戶 alter user 用戶名 account lock;//給某個用戶加鎖 alter user 用戶名 account unlock;//給某個用戶解鎖 ed 回車: //打開緩沖區(qū)

/ 回車: //執(zhí)行緩沖區(qū)中的語句 create user 用戶名 identified by 密碼 [password expire] [default tablespace 表空間名] [temporary tablespace 臨時表空間名];//創(chuàng)建用戶

相關(guān)權(quán)限: grant connect to scott;//connect角色將允許用戶創(chuàng)建數(shù)據(jù)庫并在數(shù)據(jù)庫中創(chuàng)建表或其他對象 grant resource to scott;//resource角色將允許用戶使用數(shù)據(jù)庫中的空間 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ù)控制語言: grant(授予)和revoke(回收)命令。

數(shù)據(jù)類型: char: 長度在1到2000個字節(jié),聲明多少字節(jié)在內(nèi)存中就占用多少字節(jié),輸入的值小于指定的長度時用空格填充。varchar2: 長度在1到4000個字節(jié),輸入的值是多少字節(jié),就占用多少字節(jié)。long: 長度在2gb,設(shè)置為此類型的列時,要注意:一個表中只有一列可以為long類型,long類型列不能定義為唯一約束或主鍵約束,不能建立索引,過程或存儲過程不能接受long類型的參數(shù)。number(p,s): 其中p為精度,表示數(shù)字的總位數(shù),在1至38之間。s為范圍,表示小數(shù)點右邊數(shù)字的位數(shù),在-84至127之間。date: 日期類型,sysdate為當(dāng)前系統(tǒng)時間。格式為08-9月-07。timestamp: 用于存儲日期的年、月、日以及時間的時、分和秒。其中秒精確到小數(shù)點后6位,systimestamp返回當(dāng)前日期、時間。格式為08-9月-07 04.08.30.000000 下午。raw: 此數(shù)據(jù)類型用于存儲基于字節(jié)的數(shù)據(jù),如二進制數(shù)據(jù)或字節(jié)串,該類型最多能存儲2000個字節(jié),可以建立索引。long raw: 此數(shù)據(jù)類型用于可變長度的二進制數(shù)據(jù),最多能存儲2gb。long數(shù)據(jù)類型的所有限制對long raw數(shù)據(jù)類型也同樣有效。lob又稱為大對象數(shù)據(jù)類型,最多能存儲4gb的非結(jié)構(gòu)化信息。包括: clob: clob代表character lob(字符lob),它能存儲大量字符數(shù)據(jù)。如xml文檔。blob: blob代表binary lob(二進制lob),它能存儲較大的二進制對象,如圖形、視頻剪輯和聲音剪輯。bfile: bfile代表binary file(二進制文件),它能夠?qū)⒍M制文件存儲在數(shù)據(jù)庫外部的操作系統(tǒng)文件中。

偽列:

rowid: select rowid,ename, from where empno=7900;rownum: select * from where rownum<11;//限制查詢返回的行數(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ù)處理,因此無法回滾

drop table 表名;//刪除表及其全部數(shù)據(jù) create table 新表名 as select * from 表名 where 1=2;//用現(xiàn)有的表創(chuàng)建一個新表 select deptno*2 new no,dname,loc from dept;//指定一個含有特殊字符(如空格)的列標(biāo)題

savepoint 標(biāo)記名;//標(biāo)記事務(wù)點 rollback;//回滾整個事務(wù)處理 rollback to [savepoint] 標(biāo)記名;//回滾到事務(wù)中某個特定的保存點

集合操作符: union(聯(lián)合): 此操作符返回兩個查詢選定的所有不重復(fù)的行。

語法 select orderno from order_master union select orderno from order_detail;union all(聯(lián)合所有): 此操作符合并兩個查詢選定的所有行,包括重復(fù)的行。

語法:select orderno,ename from order_master union all select orderno,proname from order_detail order by 2;注意:在兩個select語句中指定的列名不必相同,但數(shù)據(jù)類型必須匹配。也可以對聯(lián)合查詢的結(jié)果進行排序,使用order by子句時,它必須放在最后

一個select語句之后,而且必須指定列索引來排序,而不是指定列名,列索引是從1開始的整數(shù)。上述語法便是以proname的索引排序 intersect(交集): 此操作符只返回兩個查詢都有的行。

語法:select orderno from order_master intersect select orderno from order_detail;minus(減集): 此操作符中返回由第一個查詢選定但是第二個查詢中沒有選定的行,也就是在第一個查詢結(jié)果中排除第二個查詢結(jié)果中出現(xiàn)的行。

語法:select orderno from order_master minus select orderno from order_detail;查詢尚未交付的訂單

連接(||)操作符:

語法: select(供應(yīng)商||venname||的地址是||venadd1|| ||venadd2|| ||venadd3)地址 from vendor_master where vencode=v002;將多個字符串合并為一個字符串。sql函數(shù):

1、日期函數(shù): add_months: 此函數(shù)返回給指定的日期加上指定的月數(shù)后的日期值。語法為add_months(d,n),其中d是日期,n表示月數(shù)。

示例:select add_months(sysdate,2)from dual;將當(dāng)前時間加上2個月后的日期值。

months_between:

此函數(shù)返回兩個日期之間的月數(shù)。語法為months_between(d1,d2),其中d1和d2是日期,如果d1大于d2,則結(jié)果為正數(shù);否則為負(fù)數(shù)。last_day: 此函數(shù)返回指定日期當(dāng)月的最后一天的日期值,語法為last_day(d),其中d表示日期。

示例:select last_day(sysdate)from dual;返回當(dāng)前日期的月的最后一天,如果是9月就返回30-09月-07 round: 此函數(shù)返回日期值,將日期四舍五入為格式模型指定的單位。語法為round(d,[fmt])。其中d是日期,fmt是格式模型。fmt是一個可選項,日期默認(rèn)舍入為最靠近的那一天。如果指定格式為年year,則舍入到年的開始,即1月1日;如果格式為月month,則舍入到月的第一日;如果格式為周day,則舍入到最靠近的星期日。

示例:select round(sysdate,month)from dual;返回最接近的一個月。next_day: 此函數(shù)返回指定的下一個星期幾的日期。語法為next_day(d,day)。其中d表示日期,而day指周內(nèi)任何一天。

示例:select next_day(sysdate,星期日)from dual;返回下一個星期日的日期,也可以用1表示,以此類推,星期一以2表示。trunc: 此函數(shù)將指定日期截斷為由格式模型指定的單位日期,與round函數(shù)不同的是它只舍不入,語法為trunc(d,[fmt]),與round格式相同。

示例:select trunc(sysdate,year)from dual;返回當(dāng)前年的第一天,也就是1月1日。示例:select trunc(sysdate,day)from dual;返回緊靠前面的星期日。如果為2005年1月27日就會返回2005年1月23日。extract: 此函數(shù)提取日期時間類型中的特定部分。語法為extract(fmt from d),其中d是日期時間表達(dá)式,fmt是要提取的部分的格式。格式的取值可以是year,month,day,hour,minute,second,注意此處的格式不使用單引號。

示例: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為可選,表示從第幾個位置查找。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碼返回對應(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ù)從字符串的開頭或結(jié)尾(或開頭和結(jié)尾)剪裁特定的字符,默認(rèn)剪裁空格。如果加上leading選項時與ltrim函數(shù)相似。指定trailing時和 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ù)返回字符串的長度,示例:select length(frances)from dual;輸出結(jié)果:7。decode: 示例:select deptno,dname,decode(loc,new york,紐約,boston,波士頓)from ;篇二:oracle數(shù)據(jù)庫學(xué)習(xí)心得 oracle數(shù)據(jù)庫結(jié)課論文

一個好的程序,必然聯(lián)系著一個龐大的數(shù)據(jù)庫網(wǎng)路...今年我們學(xué)習(xí)了 oracle數(shù)據(jù)庫這門課程,起初的我,對這個字眼是要多陌生有多陌生,后來上課的時候聽一會老師講課,偶爾再跟上上機課,漸漸的學(xué)會了不少東西,但我感覺,我學(xué)到的仍是一些皮毛而已,懷著疑惑和求知的心態(tài),我在網(wǎng)上搜索了關(guān)于 oracle數(shù)據(jù)庫的一些知識。

的特點: 可移植性 oracle采用c語言開發(fā)而成,故產(chǎn)品與硬件和操作系統(tǒng)具有很強的獨立性。從大型機到微機上都可運行oracle的產(chǎn)品??稍趗nix、dos、windows等操作系統(tǒng)上運行??杉嫒菪?由于采用了國際標(biāo)準(zhǔn)的數(shù)據(jù)查詢語言sql,與ibm的sql/ds、db2等均兼容。并提供讀取其它數(shù)據(jù)庫文件的間接方法。

可聯(lián)結(jié)性 對于不同通信協(xié)議,不同機型及不同操作系統(tǒng)組成的網(wǎng)絡(luò)也可以運行oraˉcle數(shù)據(jù)庫產(chǎn)品。

的總體結(jié)構(gòu)

(1)oracle的文件結(jié)構(gòu) 一個oracle數(shù)據(jù)庫系統(tǒng)包括以下5類文件:oracle rdbms的代碼文件。

數(shù)據(jù)文件 一個數(shù)據(jù)庫可有一個或多個數(shù)據(jù)文件,每個數(shù)據(jù)文件可以存有一個或多個表、視圖、索引等信息。

日志文件 須有兩個或兩個以上,用來記錄所有數(shù)據(jù)庫的變化,用于數(shù)據(jù)庫的恢復(fù)??刂莆募?可以有備份,采用多個備份控制文件是為了防止控制文件的損壞。參數(shù)文件 含有數(shù)據(jù)庫例程起時所需的配置參數(shù)。

(2)oracle的內(nèi)存結(jié)構(gòu) 一個oracle例程擁有一個系統(tǒng)全程區(qū)(sga)和一組程序全程區(qū)(pga)。

sga(system global area)包括數(shù)據(jù)庫緩沖區(qū)、日志緩沖區(qū)及共享區(qū)域。pga(program global area)是每一個server進程有一個。一個server進程起動時,就為其分配一個pga區(qū),以存放數(shù)據(jù)及控制信息。

(3)oracle的進程結(jié)構(gòu)oracle包括三類進程: ①用戶進程 用來執(zhí)行用戶應(yīng)用程序的。

②服務(wù)進程 處理與之相連的一組用戶進程的請求。

③后臺進程 oracle為每一個數(shù)據(jù)庫例程創(chuàng)建一組后臺進程,它為所有的用戶進程服務(wù),其中包括: dbwr(database writer)進程,負(fù)責(zé)把已修改的數(shù)據(jù)塊從數(shù)據(jù)庫緩沖區(qū)寫到數(shù)據(jù)庫中。lgwr(log writer)進程,負(fù)責(zé)把日志從sga中的緩沖區(qū)中寫到日志文件中。smon(system moniter)進程,該進程有規(guī)律地掃描sag進程信息,注銷失敗的數(shù)據(jù)庫例程,回收不再使用的內(nèi)存空間。pmon(process moniter)進程,當(dāng)一用戶進程異常結(jié)束時,該進程負(fù)責(zé)恢復(fù)未完成的事務(wù),注銷失敗的用戶進程,釋放用戶進程占用的資源。arch(archiver)進程。每當(dāng)聯(lián)機日志文件寫滿時,該進程將其拷貝到歸檔存儲設(shè)備上。另外還包括分布式db中事務(wù)恢復(fù)進程reco和對服務(wù)進程與用戶進程進行匹配的dnnn進程等。的邏輯結(jié)構(gòu)

構(gòu)成oracle的數(shù)據(jù)庫的邏輯結(jié)構(gòu)包括:(1)表空間

(2)5種類型的段(segment)

①數(shù)據(jù)段;②索引段;③回滾(rollbock)段;④臨時段;⑤自舉(bootstrap)段。段的分配單位叫范圍(extent)

表空間(tablespace)一個數(shù)據(jù)庫劃分成的若干邏輯部分稱為表空間。一個數(shù)據(jù)庫可以有一個或多個表空間,初始的表空間命名為system,每一個邏輯表空間對應(yīng)于一個或多個物理文件。dba使用表空間做以下工作: 控制數(shù)據(jù)庫對象,如表、索引和臨時段的空間分配。為數(shù)據(jù)庫用戶設(shè)置空間配額。

利用個別表空間的在線或離線,控制數(shù)據(jù)的可用性。后備或恢復(fù)數(shù)據(jù)。

通過分配空間,以改進性能。

在每個數(shù)據(jù)庫中都存在system表空間,它在建立數(shù)據(jù)庫時自動建立。在該表空間中,包含數(shù)據(jù)庫的數(shù)據(jù)字典,其中存儲全部數(shù)據(jù)庫對象的名字和位置。system表空間總是在線的,像其它表空間一樣,可以通過增加新的數(shù)據(jù)庫文件來擴大。一個表空間可包含許多表和索引。但一個表和索引不能跨越表空間,可跨越組成表空間的文件。在db的打開的情況下,dba利用alter tablespace語句,可以實施表空間的在線或離線。system表空間必須在線。表空間離線有下列原因: 一般為了使部分?jǐn)?shù)據(jù)庫不能使用,而允許正常存取數(shù)據(jù)庫其余部分。執(zhí)行表空間離線備份。

一個離線的表空間,不能被應(yīng)用用戶讀或編輯。

可以增加數(shù)據(jù)文件擴大已有的表空間,也可增加新的表空間使數(shù)據(jù)庫容量增大,或分配空間給某個應(yīng)用。使用alfer tablespace add file語句將另一個數(shù)據(jù)文件加入到已存在表空間中。使用create tablespace語句可建立一個新的表空間。段(segment)表空間中的全部數(shù)據(jù)存儲在以段劃分的數(shù)據(jù)庫空間中。一個段是分配給數(shù)據(jù)庫用于數(shù)據(jù)存儲的范圍的集合。數(shù)據(jù)可以是表、索引或rdbms所需要的臨時數(shù)據(jù)。段是表空間的下一個邏輯存儲的級別。一個段不能跨越一個表空間,但可跨越表空間內(nèi)的文件。一個數(shù)據(jù)庫最多需要五種段類型: 數(shù)據(jù)段 一個包含一個表(或聚集)的全部數(shù)據(jù),一個表(或聚集)總有一個單個數(shù)據(jù)段。

索引段 一個索引段包含對一個表(或聚集)建立的一個索引的全部索引數(shù)據(jù)。一個表可以有一個、多個或者沒有索引段,取決于它所擁有的索引個數(shù)。一個聚集必須至少有一個索引段,即在聚集碼上 建立聚集索引。

回滾段 每個db有一個或多個回滾段。一個回滾段是db的一部分,它記錄在某一情況下被撤消的動作。回滾段用于事務(wù)控制和恢復(fù)。

臨時段 在處理查詢時,oracle需要臨時工作空間,用于存儲語句處理的中間結(jié)果,這個區(qū)稱為臨時段。

自舉段 自舉段在system表空間中,在數(shù)據(jù)庫建立時建立。它包括數(shù)據(jù)字典定義,在數(shù)據(jù)庫打開時裝入。4.用戶數(shù)據(jù)庫對象

由用戶建立的對象駐留在表空間中,含有真正的數(shù)據(jù)。數(shù)據(jù)庫對象有表、視圖、聚集、索引、偽列和序號生成器。

(1)聚集(cluster)聚集是存儲數(shù)據(jù)的一種可選擇的方法。聚集包括存儲在一起的一組表,它們共享公共列并經(jīng)常一起使用。由于內(nèi)容相關(guān)并且物理地存儲在一起,存取時間得到改進,存儲空間可以減少。聚集是一種優(yōu)化措施。

聚集對性能的改進,依賴于數(shù)據(jù)的分布和sql操作的內(nèi)容。特別是使用聚集對連接非常有利??梢悦黠@地提高連接的速度。建立聚集命令的基本格式: sql>create cluster〈聚集名〉(列定義[,?]);利用聚集建立表命令基本格式: sql>create table〈新表名〉(列定義[,?]cluster〈聚集名〉(聚集列);篇三:oracle學(xué)習(xí)心得

oracle rac 學(xué)習(xí)心得 1.概念 rac,全稱real application clusters,譯為“實時應(yīng)用集群”,是oracle新版數(shù)據(jù)庫中采用的一項新技術(shù),是高可用性的一種,也是oracle數(shù)據(jù)庫支持網(wǎng)格計算環(huán)境的核心技術(shù)。

在oracle9i之前,rac的名稱是ops(oracle parallel server)。rac 與 ops 之間的一個較大區(qū)別是,rac采用了cache fusion(高速緩存合并)技術(shù)。在 ops 中,節(jié)點間的數(shù)據(jù)請求需要先將數(shù)據(jù)寫入磁盤,然后發(fā)出請求的節(jié)點才可以讀取該數(shù)據(jù)。使用cache fusion時,rac的各個節(jié)點的數(shù)據(jù)緩沖區(qū)通過高速、低延遲的內(nèi)部網(wǎng)絡(luò)進行數(shù)據(jù)塊的傳輸。2.優(yōu)缺點

優(yōu)點:

oracle rac主要支持oracle9i、10g、11g版本,可以支持24 x 7 有效的數(shù)據(jù)庫應(yīng)用系統(tǒng),在低成本服務(wù)器上構(gòu)建高可用性數(shù)據(jù)庫系統(tǒng),并且自由部署應(yīng)用,無需修改代碼。在oracle rac環(huán)境下,oracle集成提供了集群軟件和存儲管理軟件,為用戶降低了應(yīng)用成本。當(dāng)應(yīng)用規(guī)模需要擴充時,用戶可以按需擴展系統(tǒng),以保證系統(tǒng)的性能。(1)多節(jié)點負(fù)載均衡;(2)提供高可用:故障容錯和無縫切換功能,將硬件和軟件錯誤造成的影響最小化;(3)通過并行執(zhí)行技術(shù)提高事務(wù)響應(yīng)時間----通常用于數(shù)據(jù)分析系

統(tǒng);(4)通過橫向擴展提高每秒交易數(shù)和連接數(shù)----通常對于聯(lián)機事務(wù)系

統(tǒng);(5)節(jié)約硬件成本,可以用多個廉價pc服務(wù)器代替昂貴的小型機或大

型機,同時節(jié)約相應(yīng)維護成本;(6)可擴展性好,可以方便添加刪除節(jié)點,擴展硬件資源。缺點:(1)相對單機,管理更復(fù)雜,要求更高;(2)在系統(tǒng)規(guī)劃設(shè)計較差時性能甚至不如單節(jié)點;(3)可能會增加軟件成本(如果使用高配置的pc服務(wù)器,oracle一般 按照cpu個數(shù)收費)。 特點

每一個節(jié)點的linstance都有自己的sga 每一個節(jié)點的linstance都有自己的background process 每一個節(jié)點的linstance都有自己的redo logs 每一個節(jié)點的linstance都有自己的undo表空間

所有節(jié)點都共享一份datafiles和controlfiles 組件

和redo讀書筆記

1)redo是什么?oracle的redo是如何工作的 redo是重做日志文件,的重做日志有兩種:在線重做日志以及歸檔重做日志。

在線重做日志:主要用于由于數(shù)據(jù)庫主機掉電等原因?qū)е聦嵗?,此時oracle采用在線重做日志在數(shù)據(jù)庫啟動時將數(shù)據(jù)庫恢復(fù)到斷電之前的時間點上。

歸檔重做日志:主要用于介質(zhì)失敗,比如:磁盤受損。此時需要使用對磁盤上的數(shù)據(jù)備份的歸擋重做日志文件將該磁盤上的數(shù)據(jù)恢復(fù)到該歸檔文件數(shù)據(jù)所在的時間點上,然后再使用在線重做日志文件將適合的時間點上。

歸檔重做日志文件實質(zhì)是被添滿的舊的在線重做日志的副本。歸檔重做日志文件是數(shù)據(jù)庫的歷史數(shù)據(jù)。

在線重做日志在每個數(shù)據(jù)庫中至少有兩個重做日志組,每個日志組中至少有一個重做日志文件,這些在線重做日志組是循環(huán)使用的,當(dāng)日志組1被寫到最后時,然后自動切換到日志組2;當(dāng)日志組2也被寫滿時,再切換到日志組1。2)undo是什么?oracle的undo是如何工作的 undo與redo相反,redo是恢復(fù)數(shù)據(jù),用于在事務(wù)失敗時重放事務(wù),undo是撤消一條語句或者一組語句的作用。undo是存儲在數(shù)據(jù)庫內(nèi)部的段或者表空間中(undo如果是手動管理,則使用undo段來管理;如果undo使用aum管理undo,則undo使用表空間來自動管理)。注意:在undo并不是物理的恢復(fù)到執(zhí)行語句之前或者事務(wù)之前的樣子,只是邏輯的恢復(fù)到原來的樣子,所有修改只是邏輯的取消,但是數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)塊在回滾之后也大不相同。原因是在多用戶系統(tǒng)中,有很多事務(wù)是并發(fā)進行的,當(dāng)一個事務(wù)修改一個數(shù)據(jù)并且被回滾,但是該數(shù)據(jù)在該用戶對該數(shù)據(jù)做過修改之后也有被其他用戶修改,這個時候如果是對該事務(wù)修改的數(shù)據(jù)塊回滾到原來數(shù)據(jù)的物理樣子,就有可能將后來的事務(wù)所做的修改給覆蓋掉。所以回滾不是

一個簡單的物理的恢復(fù),而是邏輯恢復(fù)。3)undo和redo是如何協(xié)作工作的 4)6.篇四:oracle數(shù)據(jù)庫學(xué)習(xí)總結(jié) oracle數(shù)據(jù)庫學(xué)習(xí)總結(jié)

時間過的還真快,不知不覺中就在這里呆了半個月了。這段時間里都在學(xué)習(xí)oracle數(shù)據(jù)庫的編程,畢竟這是家軟件外包公司。像我們這樣的新員工也就只能接觸到些curd的操作。廢話不多說,趕緊來梳理下這半月來學(xué)習(xí)的知識點.在來公司之前一直都是使用sql server數(shù)據(jù)庫,用sql server也開發(fā)了3個小型項目。所以對sql語句以及在數(shù)據(jù)庫中扮演重要作用的存儲過程,觸發(fā)器,視圖,主鍵/外鍵約束都很熟。但oracle是一個全新的環(huán)境,記得剛裝上oracle的時候,我都不知道在哪查看自己已經(jīng)建立好的表格。還好有師傅的幫忙,要不然我還真沒這么快就能入門oracle。學(xué)習(xí)東西就要學(xué)習(xí)些能改變自己思維的東西,只有這樣才能讓自己的眼光比別人更獨到,思維比別人更深邃,oracle就是這樣的東西。當(dāng)然做這樣的事是要很大的驅(qū)動力的呀,如果公司不是都采用oracle來寫程序的話,我估計也就懶得學(xué)啦。對于一位程序員來說并不需要完全掌握oracle的所有知識,畢竟自己不是dba。在日常開發(fā)中也用不到那些命令和工具,但是有些知識點我們還是必須得熟練的掌握它們。比如:一些基本的ddl和dml語句,存儲過程,函數(shù),視圖,觸發(fā)器,序列,游標(biāo),自定義類型和包。

下面我就把這段時間里學(xué)習(xí)oracle獲得的知識點羅列出來,一是為了方便以后查閱,二是為了和搭檔交流學(xué)習(xí)經(jīng)驗。

要適應(yīng)的一些細(xì)節(jié) 從sql server轉(zhuǎn)到oracle進行數(shù)據(jù)庫編程,第一道門檻就是語法問題。很多很多的問題都是因為語法而產(chǎn)生的,現(xiàn)將它們統(tǒng)統(tǒng)集合起來并將它們一網(wǎng)打盡之。pl結(jié)構(gòu)。在sql server中,采用的是批處理執(zhí)行任務(wù)的方式,所以可以將多條sql語句選中批量執(zhí)行,而不用顧忌要在專門的地方聲明變量,在專門的地方進行邏輯編碼。在oracle中采用的是pl編程方式,必須在專門的地方聲明變

循環(huán)結(jié)構(gòu),要達(dá)到循環(huán)在oracle中有3種方式,各有各的好處,你懂的。它們分別如下: pl結(jié)構(gòu)中的錯誤處理

就像c#中的try{} catch{}語句塊 能捕獲錯誤。寫幾個例子: helloworld級別的錯誤拋出例子 record類型

oracle中的record類型類似于c語言中的結(jié)構(gòu)體,主要用來接收select 語句或游標(biāo)中返回的數(shù)據(jù),下面寫個例子: ddl語句

這里的ddl語言主要是指能完成如下工作的ddl語言:創(chuàng)建表,創(chuàng)建表的主/外 鍵及級聯(lián)效果,dml語句

select語句。oracle中的select語句的使用方法與 sql server差不多,但還是有些不同之處。篇五:oracle學(xué)習(xí)體會 oracle學(xué)習(xí)體會

王巖

2015年,為落實重點開展“完善業(yè)務(wù)系統(tǒng),加強統(tǒng)計數(shù)據(jù)匯總分析”的工作要求,根據(jù)協(xié)會安排,我由政策信息部調(diào)整到統(tǒng)計部,在穩(wěn)步推進業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫工作的基礎(chǔ)上,努力配合做好網(wǎng)絡(luò)及其他軟硬件管理等工作。對于曾經(jīng)負(fù)責(zé)信息宣傳工作的我來說,計算機技術(shù)還是一個全新的領(lǐng)域。

根據(jù)協(xié)會安排,我從今年的4月到11月利用周末時間學(xué)習(xí)專業(yè)知識,旨在通過參加學(xué)習(xí)中心的linux系統(tǒng)和oracle數(shù)據(jù)庫等培訓(xùn)課程,承擔(dān)協(xié)會業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫的開發(fā)和管理工作。在參加專業(yè)培訓(xùn)機構(gòu)課程的同時,臧立副主任也會不定期針對協(xié)會的業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫為我們做一些內(nèi)訓(xùn)。通過這一年來的學(xué)習(xí)、回顧和梳理,讓我對oracle數(shù)據(jù)庫知識以及協(xié)會的業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫框架有了一定的了解,也對協(xié)會的數(shù)據(jù)庫管理工作方面有了一些建議。

一份總結(jié)和體會 oracle數(shù)據(jù)庫分兩個方面,一塊是開發(fā),一塊是管理。開發(fā)主要是寫存儲過程、觸發(fā)器之類的編程工作,類似于程序員,需要有較強的邏輯思維能力和創(chuàng)造能力。數(shù)據(jù)庫管理則是需要對oracle數(shù)據(jù)庫的原理有深刻的認(rèn)識,有全局操縱的能力和緊密的思維,而協(xié)會的業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫工作則是同時包含了開發(fā)和管理的內(nèi)容。

在有一定的oracle專業(yè)知識之后,我開始接手了遼寧省協(xié)會和 廣東省協(xié)會的業(yè)務(wù)數(shù)據(jù)分入處理工作。其中,根據(jù)每期不同的業(yè)務(wù)數(shù)據(jù),需要對數(shù)據(jù)導(dǎo)入的操作腳本進行修改,遇到有問題的數(shù)據(jù),需要根據(jù)錯誤進行邏輯分析,創(chuàng)建新的腳本來篩選出錯誤數(shù)據(jù),并進行修改整理,最終將正確、完整的業(yè)務(wù)數(shù)據(jù)導(dǎo)入到協(xié)會業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫中,為保費結(jié)算工作提供了及時可靠的數(shù)據(jù)支持。

做計算機技術(shù)工作的人都知道,專業(yè)的知識只能稱得上打開這項工作大門的一把鑰匙,要想真正邁進協(xié)會數(shù)據(jù)庫管理工作這項領(lǐng)域,我們還需要學(xué)習(xí)掌握協(xié)會的業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫框架。協(xié)會的數(shù)據(jù)庫里面承載著一百多類表,包含著一千余個列,我們不僅要知道這些表的邏輯結(jié)構(gòu)和數(shù)據(jù)類型,還要知道各個表之間的關(guān)聯(lián),從而在數(shù)據(jù)庫中順利的實現(xiàn)增、刪、改、查我們所需要的數(shù)據(jù)。

一點不足和建議

協(xié)會的數(shù)據(jù)庫建設(shè)工作無論是邏輯結(jié)構(gòu)方面,還是軟件兼容方面,都做的很好,但是在硬件設(shè)備管理上,我們可能還有更好的選擇。2015年年末,我接手了一項篩查數(shù)據(jù)的工作,原因是山東數(shù)據(jù)庫服務(wù)器機房出現(xiàn)故障,導(dǎo)致丟失了部分業(yè)務(wù)數(shù)據(jù),我的任務(wù)就是要將這些丟失的數(shù)據(jù)文件名查找出來,以便山東協(xié)會后期進行補救工作。事后我對這件事進行了思考,事故的主要原因是因為他們的數(shù)據(jù)庫服務(wù)器存放在省協(xié)會本部沒有專業(yè)管理的機房中,由于空調(diào)故障室溫過熱,導(dǎo)致硬盤燒毀,在此方面,國家協(xié)會目前的做法和省協(xié)會一樣,都將服務(wù)器存放在本部沒有專業(yè)管理的機房。2015年7月,由于協(xié)會網(wǎng)絡(luò)供應(yīng)商硬件設(shè)備出現(xiàn)嚴(yán)重故障,導(dǎo)

致我會辦公網(wǎng)絡(luò)以及業(yè)務(wù)系統(tǒng)全面癱瘓,雖然我部已在第一時間查明原因,但卻束手無策,只能敦促網(wǎng)絡(luò)供應(yīng)商盡快修復(fù)。

根據(jù)以上兩次實際案例,為了避免這類事故再次發(fā)生,我建議盡快將協(xié)會數(shù)據(jù)庫遷移至更加專業(yè)的托管機房,確保業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫服務(wù)器統(tǒng)一管理、規(guī)范管理,還有就是要進一步加強協(xié)會機房和大興托管機房的巡檢工作,避免硬件設(shè)備出現(xiàn)故障,進而確保業(yè)務(wù)系統(tǒng)高效、安全運行。

【本文地址:http://mlvmservice.com/zuowen/2997742.html】

全文閱讀已結(jié)束,如果需要下載本文請點擊

下載此文檔