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

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

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

自學(xué)oracle篇一

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

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

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

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

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

select table_name from all_tables dba_table

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

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

select username,from dba_users?

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

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

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

select tablespace_name from dba_tablespaces 查詢一個(gè)用戶包含的系統(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)前用戶可以訪問(wèn)的所有數(shù)據(jù)字典視圖

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

select * from global_name

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

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

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

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

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

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

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

建立表空間 create tablespace 命令完成的,建表空間一般是特權(quán)用戶或是dba執(zhí)行 的 建立數(shù)據(jù)庫(kù)后方便管理,最好建立自己的表空間,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)機(jī)狀態(tài),此時(shí)表空間是可以訪問(wèn)的,并且空間執(zhí)行各種語(yǔ)句,(1)使用表空間脫機(jī)

alter tablespace biaokongjian offline b 使用表空間脫機(jī)

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

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

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

drop tablesspace “biaokongjianming ” including contents and datafiles 擴(kuò)展表空間

表空間是由數(shù)據(jù)文件組成,表空間的大小實(shí)際上就是數(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è)置文件的自動(dòng)增長(zhǎng)

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

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

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

alter tablespace sp01 offline

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

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

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

alter tablespace sp001 online 其他表空間 索引表空間 undo 表空間 臨時(shí)表空間

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

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

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

not null 不為空

unique 唯一 可以為空

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

外鍵列數(shù)據(jù)必須在主表的主鍵列存在或是為null check 檢查 強(qiáng)制執(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 約束名稱

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

通過(guò)查詢user_constraints 可以顯示所有約束信息

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

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

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

create user ken identified by ken

grant create session,create table to ken with admin option 對(duì)象權(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(不驗(yàn)證)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 分配角色給某個(gè)用戶 conn system/manager grant jueseming to blake with admin option 刪除 角色

drop role juese 第25講

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

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

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

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

b函數(shù)

c 觸發(fā)器

d 包 注釋

單行注釋

--多行注釋

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

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

例外處理部分----處理運(yùn)行的各種錯(cuò)誤 end.最簡(jiǎn)單的塊 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---在控制臺(tái)顯示用戶名 _line(t….)exception when no_data_found then _line(有誤)end;過(guò)程用于執(zhí)行特定的操作,當(dāng)建立過(guò)程時(shí),既可以制定輸入?yún)?shù)in ,可以指定輸出參數(shù)??梢詫?shù)據(jù)傳遞到執(zhí)行部分,通過(guò)使用輸出參數(shù),可以將執(zhí)行部分的數(shù)據(jù)傳遞到應(yīng)用環(huán)境 1 請(qǐng)考慮編寫一個(gè)過(guò)程,可以輸入雇員名,新工資,可修改雇員的工資 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 如何使用過(guò)程返回值?

函數(shù)用于返回特定的數(shù)據(jù),當(dāng)建立函數(shù)時(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 包是用于邏輯上組合過(guò)程和函數(shù),它由包規(guī)范和包體兩部分 實(shí)例

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)量類型

定義可變長(zhǎng)字符串 v_ename varchar2(10)定義一個(gè)小數(shù) v_sal number(6.2)定義一個(gè)小數(shù)和初始值 v_sal2 number(9,2)=6.4 定義一個(gè)日期類型的數(shù)據(jù) v_hiredate date 定義一個(gè)布爾變量,不能為空,初始值為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 符合類型

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

記錄實(shí)例 declare--定義一個(gè)plsql記錄類型

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

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

declare

定義了一個(gè)表類型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)時(shí),當(dāng)定義游標(biāo)時(shí)不需要制定相應(yīng)的select語(yǔ)句 但使用游標(biāo)時(shí)open時(shí)需要指定select 語(yǔ)句,這樣一個(gè)游標(biāo)就與一個(gè)select 語(yǔ)句結(jié)合了 編寫使用plsql編寫一個(gè)存儲(chǔ)過(guò)程,可以輸入部門號(hào),并顯示 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和一個(gè)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)常問(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ú)上高樓,望盡天涯路。”此第一境界也。

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

“眾里尋他千百度,驀然回首,那人卻在燈火闌珊處?!贝说谌辰缫?。

學(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:// 上找到);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 最近創(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í)和幫助。

自學(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ù)庫(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: [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 where empno=7900;rownum: select * from 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椭付ǖ膯挝蝗掌?,與round函數(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 ;篇二: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í)。

的特點(diǎn): 可移植性 oracle采用c語(yǔ)言開(kāi)發(fā)而成,故產(chǎn)品與硬件和操作系統(tǒng)具有很強(qiáng)的獨(dú)立性。從大型機(jī)到微機(jī)上都可運(yùn)行oracle的產(chǎn)品。可在unix、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)品。

的總體結(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)程等。的邏輯結(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)作?;貪L段用于事務(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))。 特點(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 組件

和redo讀書筆記

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

在線重做日志:主要用于由于數(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)行。

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

全文閱讀已結(jié)束,如果需要下載本文請(qǐng)點(diǎn)擊

下載此文檔