久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

oracle-11g-R2體系結(jié)構(gòu)和用戶管理

 耳語輕言 2017-08-23

1.1.  Oracle 11g R2體系結(jié)構(gòu)

安裝oracle軟件----創(chuàng)建數(shù)據(jù)庫(kù)----在數(shù)據(jù)庫(kù)中創(chuàng)建表----表里存儲(chǔ)信息---這些表文件需要存儲(chǔ)在物理硬盤上面,。

假如有一個(gè)用戶(這個(gè)用戶可以是遠(yuǎn)程用戶,也可以是本地的,,也可以是一個(gè)應(yīng)用程序)連接到oracle數(shù)據(jù)庫(kù)上面,,用戶是不能直接連接在硬盤上存儲(chǔ)的數(shù)據(jù)文件,所以在oracle中要運(yùn)行一個(gè)實(shí)例,,實(shí)例并不是保存在硬盤上面的,,實(shí)例是內(nèi)存的一部分,而庫(kù)和表文件是存放在硬盤上面的,,用戶不能直接訪問庫(kù)里面的數(shù)據(jù),,只能訪問實(shí)例,實(shí)例是一個(gè)特殊的內(nèi)存塊,,只有實(shí)例能和數(shù)據(jù)庫(kù)直接通信,,在咱們的實(shí)驗(yàn)環(huán)境中實(shí)例和數(shù)據(jù)庫(kù)是在同一臺(tái)機(jī)器上,,我們稱之為單實(shí)例環(huán)境,對(duì)于用戶而言所有的操作都是在實(shí)例中完成的,,oracle為實(shí)例劃分了一個(gè)內(nèi)存塊,,這個(gè)內(nèi)存塊我們稱之為SGA,其實(shí)oracle實(shí)例啟動(dòng)的時(shí)候,,將會(huì)分配一個(gè)SGA系統(tǒng)全局區(qū)并啟動(dòng)一些oracle的后臺(tái)進(jìn)程(守護(hù)進(jìn)程),。

SGA核心組件介紹:

oracle中內(nèi)存=SGA+PGA

一個(gè)實(shí)例只能有一個(gè)SGA,所有的服務(wù)器進(jìn)程和后臺(tái)進(jìn)程都共享一個(gè)SGA

PGA:

我們先看一下一個(gè)select語句是如何被執(zhí)行的,?

如果hr用戶寫了一個(gè)select  *  from scott.emp;

第一步:先做編譯,,編譯包含了語法的檢查和語義的檢查。

第二步:如果編譯沒有問題會(huì)進(jìn)入shared pool(共享池 )中,,而shared pool 是由library cachedata dictionary cache(數(shù)據(jù)字典緩存)組成,。Sql語句第一時(shí)間會(huì)進(jìn)入library cache中,即library cache中會(huì)存放被編譯過的正確的sql語句,,僅僅是sql語句而已,。library cache中沒有緩存的sql語句需要進(jìn)行硬解析(即需要耗費(fèi)設(shè)備的I/0資源從硬盤讀取),。假設(shè)library cache中有這個(gè)sql語句,,就不需要做硬解析,接著會(huì)查 data dictionary cache,。data dictionary cache中緩存了權(quán)限和對(duì)象數(shù)據(jù)及屬性,,所有data dictionary cache檢查hr用戶是否對(duì)scott.emp表是否具有訪問權(quán)限,如果有權(quán)限繼續(xù)往下執(zhí)行,,如果沒有權(quán)限,,直接給hr用戶返回一個(gè)結(jié)果。如果一條語句從來都沒有被執(zhí)行過,,這條語句首先被緩存在share pool中的library cache中,,下一次被執(zhí)行的時(shí)候直接從share pool中取sql語句。存放sql語句也需要占用空間,,share pool的空間也是有限的,,為了防止share pool空間不夠用,采用先進(jìn)先出的規(guī)則即后執(zhí)行的sql語句會(huì)覆蓋先執(zhí)行的sql語句來釋放空間,,當(dāng)然share pool的空間越大越好,。

我們通過企業(yè)管理器來查看share pool的相關(guān)信息

sql plus中可以用以下方式查看,圖中“0”表示自動(dòng)化管理

可以從v$sgainfo中查看shared pool size

SQL> select name,bytes/1024/1024||'MB' from v$sgainfo;

Shared Pool Size

256MB

Large Pool Size

16MB

Java Pool Size

16MB

第三步data buffer cache現(xiàn)在hr用戶可以訪問scott.emp表了,,data buffer cache的作用就是從磁盤或存儲(chǔ)中將數(shù)據(jù)塊調(diào)入內(nèi)存,,緩存在buffer cache中。

舉例:

用戶第一次訪問scott.emp的內(nèi)容

SQL> set timing on

SQL> select * from scott.emp;第一次執(zhí)行sql語句

已選擇14行。

已用時(shí)間:  00: 00: 00.05

SQL> /再次執(zhí)行上一條命令所用的時(shí)間為00: 00: 00.00

已選擇14行,。

已用時(shí)間00: 00: 00.00

總結(jié):buffer cache緩存數(shù)據(jù)本身,,library cache緩存sql語句本身。

可以通過show parameter db_cache_size查看buffer cache的大小

第四步:redo log buffer<重做日志緩沖區(qū)>當(dāng)用戶執(zhí)行insert,update,delete,create,alter等操作后,,數(shù)據(jù)發(fā)生了變化,,這些變化了的數(shù)據(jù)寫入數(shù)據(jù)緩沖區(qū)(buffer cache)之前,先寫入重做日志緩沖區(qū),,同時(shí)變化之前的數(shù)據(jù)也放入重做日志緩存中,,這樣做,是為了保證在數(shù)據(jù)恢復(fù)時(shí)oracle就知道哪些事務(wù)需要提交,,哪些事務(wù)需要撤回,。

1.2.  Oracle 進(jìn)程

1.       用戶進(jìn)程

Ps –elf | greporacleocl |grep–v grep

2.       數(shù)據(jù)庫(kù)進(jìn)程

Ps –elf |greporacleorcl

3.       守護(hù)進(jìn)程

Ps –elf |grep oha

大池:SGA中,大池是一個(gè)可選的緩沖區(qū)域,,管理員可以根據(jù)需要對(duì)其進(jìn)行配置,,在大規(guī)模輸入輸出及備份過程中需要大池作為緩存空間,例如,,大數(shù)據(jù)操作,、數(shù)據(jù)庫(kù)備份與恢復(fù)之類的操作。

Java池:Java池是一個(gè)可選的緩沖區(qū),,但是在安裝java或者java程序時(shí)必須設(shè)置Java池,,它用于編譯Java語言編寫指令。

 

六大核心進(jìn)程:

 

DBWn進(jìn)程:用來將buffer cache中的臟數(shù)據(jù)寫入到硬盤中數(shù)據(jù)文件中,。

 

什么是臟數(shù)據(jù),,例如我執(zhí)行如下語句

SQL> update emp set sal=sal+100;

此時(shí)修改過的數(shù)據(jù)存放在內(nèi)存中,并沒有保存到硬盤上的數(shù)據(jù)文件中,,這些數(shù)據(jù)緩存在buffer cache中,,該事務(wù)還沒有提交(commit),這樣修改過還沒有寫入硬盤數(shù)據(jù)文件的數(shù)據(jù)我們稱之為臟數(shù)據(jù),。其實(shí)此時(shí)在打開一個(gè)會(huì)話,使用SCOTT用戶連接查看emp表中數(shù)據(jù)是未修改過的數(shù)據(jù),。所以在oracle中這樣的操作是異步寫入,,多個(gè)進(jìn)程可以同時(shí)寫入,多個(gè)賬戶就會(huì)有多個(gè)DBWn進(jìn)程,其實(shí)進(jìn)程名叫DMW,,后面的n是產(chǎn)生的進(jìn)程標(biāo)識(shí)

SQL> update scott.emp set sal=sal+100;

已更新14行,。

SQL>

LGWR:日志寫入進(jìn)程只有一個(gè)

當(dāng)用戶commit(提交事務(wù))時(shí)觸發(fā)lgwr進(jìn)程

當(dāng)red log buffer空間的三分之一空間被使用完時(shí)會(huì)觸發(fā)lgwr進(jìn)程

把臟數(shù)據(jù)寫入磁盤之前,該LGWR進(jìn)程將日志信息先寫入到日志文件中,,每隔3秒中執(zhí)行這樣的動(dòng)作,。

LGWR進(jìn)程不能有多個(gè),因?yàn)槿罩臼琼樞蚴菍懭氲模荒茏霾⑿袑懭?,否則無法做數(shù)據(jù)恢復(fù),。

CKPT進(jìn)程:檢查所有數(shù)據(jù)文件和控制文件的頭部是否一致,是確保在數(shù)據(jù)緩沖區(qū)中所有修改過的數(shù)據(jù)塊都被寫入到數(shù)據(jù)文件中的一種機(jī)制,,就是確保數(shù)據(jù)完整性的一種機(jī)制,。但檢查點(diǎn)完成后,CKPT進(jìn)程負(fù)責(zé)更新數(shù)據(jù)文件和控制文件的頭部信息,,并保存檢查點(diǎn)信息,,以保證數(shù)據(jù)庫(kù)日志文件和數(shù)據(jù)文件的同步。其原理是在數(shù)據(jù)庫(kù)恢復(fù)時(shí),,只需找到CKPT保存的最后一次檢查點(diǎn),,就可以根據(jù)它確定在日志文件中恢復(fù)數(shù)據(jù)的起始位置,重新執(zhí)行之后的日志信息即可,。

SMON進(jìn)程:如果數(shù)據(jù)文件和控制文件頭部不一致,,就會(huì)觸發(fā)SMON進(jìn)程。在實(shí)例啟動(dòng)時(shí)SMON進(jìn)程會(huì)檢查所有數(shù)據(jù)文件的同步信息與控制文件中記錄的檢查點(diǎn)信息是否一致,,不一致就啟動(dòng)實(shí)例恢復(fù)操作,。其實(shí)CKPT進(jìn)程是給SMON進(jìn)程使用的。

PMON進(jìn)程:進(jìn)程監(jiān)控進(jìn)程,,PMON進(jìn)程管理用戶會(huì)話,,這個(gè)進(jìn)程會(huì)在某個(gè)會(huì)話出現(xiàn)問題時(shí)執(zhí)行的適當(dāng)?shù)牟僮鳌@缬脩舻膫€(gè)人計(jì)算機(jī)在登錄到數(shù)據(jù)庫(kù)時(shí)重新啟動(dòng),,PMON就能能夠檢測(cè)到這個(gè)問題,,而且還會(huì)整理用戶正在進(jìn)行的任何操作。


 

1.3.  oracle存儲(chǔ)結(jié)構(gòu)

數(shù)據(jù)文件相關(guān)知識(shí)

想查看系統(tǒng)中有多少個(gè)數(shù)據(jù)文件我們可以通過動(dòng)態(tài)數(shù)據(jù)字典或靜態(tài)數(shù)據(jù)字典來查看:通過靜態(tài)數(shù)據(jù)字典查看數(shù)據(jù)文件

通過動(dòng)態(tài)數(shù)據(jù)字典來查看數(shù)據(jù)文件

直接查看數(shù)據(jù)文件的內(nèi)容是看不到的,,必須通過一個(gè)邏輯的結(jié)構(gòu)即表空間來查看數(shù)據(jù)文件的內(nèi)容,。表空間是一個(gè)邏輯存儲(chǔ)結(jié)構(gòu),而數(shù)據(jù)文件是一個(gè)物理的結(jié)構(gòu),。

如何查看表空間

也可以通過dba_tablespaces查看表空間

數(shù)據(jù)字典是一個(gè)邏輯的存儲(chǔ)結(jié)構(gòu),,而數(shù)據(jù)文件是一個(gè)真實(shí)的存儲(chǔ)結(jié)構(gòu),如果有了表空間,而沒有數(shù)據(jù)文件是不可以,表空間和數(shù)據(jù)文件是相對(duì)應(yīng)的,,如果沒有數(shù)據(jù)文件,表空間不可能獨(dú)立存在,,如果只有表空間沒有數(shù)據(jù)文件也是不行的,就好比如果電腦沒有硬盤,,你不能再邏輯上看到CD盤,,在這里硬盤就相當(dāng)于是數(shù)據(jù)文件,,而C盤就相當(dāng)于是表空間。我們可以把多個(gè)數(shù)據(jù)文件組成一個(gè)表空間,,然后在表空間里面存儲(chǔ)數(shù)據(jù),,表空間和數(shù)據(jù)文件是對(duì)應(yīng)的,一個(gè)表空間可以是由一個(gè)或多個(gè)數(shù)據(jù)文件組成的,,但是一個(gè)數(shù)據(jù)文件只能在一個(gè)表空間當(dāng)中,,我們?nèi)绾尾榭幢砜臻g和數(shù)據(jù)文件之間的對(duì)應(yīng)關(guān)系呢?

也可以查看表空間的大小

也可以在上述的表空間中創(chuàng)建新的數(shù)據(jù)文件,。如果表空間不夠用了,,只需創(chuàng)建相應(yīng)的數(shù)據(jù)文件即可。表空間大小就是組成數(shù)據(jù)文件的大小的總和,,最終數(shù)據(jù)文件存放在硬盤里的,,但是我們可以把數(shù)據(jù)文件存放在不同的硬盤里面,只要在一個(gè)表空間即可,,這樣就解決了硬盤大小對(duì)文件的限制,,可以將多個(gè)硬盤中的數(shù)據(jù)文件組成一個(gè)表空間。

所以在表空間中DBA會(huì)存放很多的表,,視圖,,索引,同義詞等對(duì)象,。

段:例如在xx表空間DBA創(chuàng)建了一個(gè)名為test的表,,這張表表空間所占用的空間,我們稱之為段,。根據(jù)段中存儲(chǔ)的對(duì)象的不同分為了數(shù)據(jù)段,,索引段,回退段,,臨時(shí)段等

可以查看段的信息

對(duì)于段又有個(gè)更小的單位,,稱之為“區(qū)”

區(qū)(extent):區(qū)是磁盤空間分配的最小單位,磁盤按區(qū)劃分,,每次至少分配一個(gè)區(qū),,區(qū)由連續(xù)的數(shù)據(jù)塊組成,段主要由一個(gè)或多個(gè)區(qū)構(gòu)成,,當(dāng)段創(chuàng)建時(shí),,它至少包含一個(gè)區(qū),當(dāng)段中所有空間已經(jīng)使用完成時(shí),,系統(tǒng)自動(dòng)為該段分配一個(gè)新區(qū),區(qū)不能跨數(shù)據(jù)文件存在,,只能存在于一個(gè)數(shù)據(jù)文件中,。

段是由區(qū)組成的,段必須是區(qū)的整數(shù)倍,假如一張表是25MB,,一個(gè)區(qū)大小是4MB,那么段的大小是28MB,,如果在表里添加了3MB的數(shù)據(jù),此時(shí)段的空間還能容納表,,現(xiàn)在表的大小是28MB,如果又添加了1MB,,此時(shí)29MB,那么段的空間是32MB.

查看EXAMPLE表空間的區(qū)和段的分布情況

oracle數(shù)據(jù)庫(kù)中最小的存儲(chǔ)單位是塊(block--8KBoracle數(shù)據(jù)庫(kù)中的數(shù)據(jù)存儲(chǔ)于數(shù)據(jù)塊中,。數(shù)據(jù)塊是oracle服務(wù)器所能讀取或?qū)懭氲淖钚〈鎯?chǔ)單元,,oracle服務(wù)器以數(shù)據(jù)塊為單位管理數(shù)據(jù)文件的存儲(chǔ)空間,數(shù)據(jù)塊的取值范圍為2-64KB,,其默認(rèn)大小與oracle版本有關(guān),。

查看操作系統(tǒng)的最小存儲(chǔ)單元

[root@orclsrv ~]# tune2fs -l /dev/sda1

通過OEM也可以查看這些信

 

創(chuàng)建表空間和數(shù)據(jù)文件

SQL> create tablespace xx datafile '/u01/xx.dbf' size 100m autoextend on

2  next 5m maxsize 200m;

 

表空間已創(chuàng)建。

修改表空間的名字為yy

為了好管理,,我們希望表空間的名字和數(shù)據(jù)文件的名字一致,。

解決辦法:

1.       使用操作系統(tǒng)命令將數(shù)據(jù)文件拷貝一份

2.       把表空間offline

3.       然后對(duì)數(shù)據(jù)文件重命名

將表空間offline

對(duì)數(shù)據(jù)文件重命名

查看修改情況

將表空間online

提示需要恢復(fù)/u01/yy.dbf

將表空間online

如何擴(kuò)展表空間大小

1.       直接改變數(shù)據(jù)文件大小

2.       給表空間增加數(shù)據(jù)文件

如果表空間所在的分區(qū)的空間不夠用了

刪除表空間

創(chuàng)建臨時(shí)表空間

創(chuàng)建臨時(shí)表空間

刪除臨時(shí)表空間與刪除表空間的命令是一樣的。

1.4.  oracle 用戶管理

如果想查看oracle系統(tǒng)中存在用戶可以查看dba_users視圖

如果使用sqlplus查詢需要提前格式化

SQL> col username for a20

SQL> col account_status for a20

SQL> col default_tablespace for a20

SQL> set linesize 120

SQL> set pagesize 120

SQL> select username,account_status,default_tablespace from dba_users;

 

USERNAME      ACCOUNT_STATUS        DEFAULT_TABLESPACE

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

MGMT_VIEW            OPEN                  SYSTEM

SYS              OPEN                   SYSTEM

SYSTEM                     OPEN                  SYSTEM

DBSNMP                    OPEN                  SYSAUX

SYSMAN                    OPEN                  SYSAUX

SCOTT                   OPEN                   USERS

OUTLN                       EXPIRED & LOCKED        SYSTEM

FLOWS_FILES            EXPIRED & LOCKED        SYSAUX

MDSYS                       EXPIRED & LOCKED        SYSAUX

ORDSYS                     EXPIRED & LOCKED        SYSAUX

EXFSYS                      EXPIRED & LOCKED        SYSAUX

 

Oracle 用戶管理---

要想訪問數(shù)據(jù)庫(kù),,任何人都必須成為能夠通過oracle身份驗(yàn)證的有效數(shù)據(jù)庫(kù)用戶,,我們可以配置應(yīng)用程序要求每個(gè)需要進(jìn)行訪問的個(gè)體都具有不同的數(shù)據(jù)庫(kù)賬戶,也可以配置應(yīng)用程序自身作為公共用戶連接數(shù)據(jù)庫(kù)并在內(nèi)部處理應(yīng)用程序級(jí)別的權(quán)限,。無論選用哪種方法,,在數(shù)據(jù)庫(kù)內(nèi)部都需要?jiǎng)?chuàng)建一個(gè)或多個(gè)允許操作數(shù)據(jù)的用戶。

1.5.  用戶與模式(schema

創(chuàng)建用戶的語法:

Create user用戶名 identified by 密碼 default tablespace表空間 quota 大小 on 表空間,;

注意:在創(chuàng)建用戶的時(shí)候雖然用戶名寫的時(shí)小寫的,,但是存儲(chǔ)到數(shù)據(jù)字典的時(shí)候卻是大寫的,比如create user tom.如果非要使用小寫的話,,用戶名需要使用雙引號(hào)括起來 create user “tom”

創(chuàng)建的用戶沒有任何權(quán)限,,連登陸數(shù)據(jù)庫(kù)的權(quán)限都沒有。

如果沒有設(shè)置用戶對(duì)某個(gè)表空間的配額,,那么即使這個(gè)用戶對(duì)該表空間有寫權(quán)限,,也是無法寫入的。

舉例說明:

查看HR用戶的狀態(tài)

修改HR用戶的密碼為oracle

手工設(shè)置密碼過期:設(shè)置用戶密碼在用戶第一次使用時(shí)作廢,,需要重新設(shè)置該用戶的密碼,。

解鎖用戶

解鎖用scott用戶的同時(shí)為scott用戶設(shè)置密碼:

舉例說明oracle的授予權(quán)限和撤銷權(quán)限

在創(chuàng)建用戶之前,創(chuàng)建一個(gè)表空間xxx

創(chuàng)建一個(gè)表空間xxx

Create tablespace xxx datafile '/u01/xxx.dbf' size 100m autoextend on next 10m maxsize unlimited;

創(chuàng)建用戶tom

create user tom identified by oracle;

查詢創(chuàng)建的用戶tom

雖然創(chuàng)建的時(shí)是小寫tom,,但存儲(chǔ)到數(shù)據(jù)字典中的是大寫,,所以查詢時(shí)也需要寫大寫

使用sql devoloper查詢更清晰

刪除tom用戶

創(chuàng)建一個(gè)小寫的tom用戶需要使用” ”

create user"tom" identified by oracle;

 

刪除tom用戶

正確的刪除方式應(yīng)該是:

drop user"tom";

創(chuàng)建用戶tom,默認(rèn)的表空間是”XXX”,,并沒有指定配額,,所以tom用戶也無法在xxx表空間上創(chuàng)建對(duì)象

使用tom用戶連接數(shù)據(jù)庫(kù)的結(jié)果

SQL>conn sys/oracle as sysdba

Drop user tom; 刪除tom用戶

創(chuàng)建tom用戶的同時(shí)指定默認(rèn)的表空間是xxx,,tom用戶的磁盤配額是10m

可以使用dba_ts_quotas視圖查看每個(gè)用戶的磁盤配額

剛才我們測(cè)試創(chuàng)建的tom用戶連創(chuàng)建會(huì)話的權(quán)限都沒

1.6.  為用戶授予權(quán)限

tom用戶授予session權(quán)限

SQL>conn sys/oracle as sysdba

SQL> grant create session to tom;

 

授權(quán)成功。

測(cè)試一下連接

測(cè)試tom用戶是否能夠創(chuàng)建表

tom用戶授予創(chuàng)建表的權(quán)限

創(chuàng)建aa

測(cè)試tom用戶能否為表插入記錄,,可以插入記錄了,。

1.7.  撤銷權(quán)限

查看tom用戶當(dāng)前擁有的權(quán)限

撤銷tom用戶的create table 權(quán)限

測(cè)試tom用戶能夠查看SCOTT用戶下的emp

使用sys用戶連接數(shù)據(jù)庫(kù)

tom用戶授權(quán)select scott用戶下的emp表的權(quán)限

使用tom用戶連接數(shù)據(jù)庫(kù)

 

驗(yàn)證沒有磁盤配合的用戶無法使用表空間的實(shí)驗(yàn)

創(chuàng)建一個(gè)名為lilei的用戶,默認(rèn)表空間是xxx

使用lilei賬戶連接數(shù)據(jù)庫(kù),,提示沒有create session權(quán)限,,即創(chuàng)建會(huì)話的權(quán)限。

賦予lilei用戶創(chuàng)建會(huì)話的權(quán)限

使用lilei用戶連接

使用lilei創(chuàng)建bb表,,提示沒有創(chuàng)建表的權(quán)限

使用sys用戶連接,,為lilei用戶授予創(chuàng)建表的權(quán)限

使用lilei用戶連接數(shù)據(jù)庫(kù),創(chuàng)建表bb

bb表插入記錄,,提示lilei用戶沒用使用表空間的權(quán)限,,原因是沒有為lilei用戶做磁盤配額的原因

使用sys用戶連接,修改lilei用戶的磁盤配額為10m.

使用lilei賬戶連接數(shù)據(jù)庫(kù),,為bb表插入記錄,,此時(shí)就可以插入成功了。

總結(jié):如果沒有設(shè)置用戶對(duì)某個(gè)表空間的配額,,那么即使這個(gè)用戶對(duì)該表空間有寫權(quán)限,,也是無法寫入的。

 

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多