欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Oracle知識(shí)整理筆記

 更新時(shí)間:2015年09月17日 16:59:56   作者:wangyajin333  
這是一篇Oracle知識(shí)整理筆記,包括SQL Server和Oracle的比較、Oracle中基本的概念和關(guān)系、管理工具pl/sql Developer和如何分配權(quán)限和角色,需要的朋友可以參考下

小編整理的一篇關(guān)于Oracle知識(shí)的學(xué)習(xí)筆記,希望對(duì)大家有幫助。

1.簡(jiǎn)單對(duì)比一下SQL Server 和Oracle
  先給大家看一張我畫得圖:

  安裝完Sql Server后,我們打開、連接數(shù)據(jù)庫(kù)引擎后可以看到很多的數(shù)據(jù)庫(kù)有系統(tǒng)數(shù)據(jù)庫(kù)也有用戶數(shù)據(jù)庫(kù)。而Oracle安裝后,一個(gè)數(shù)據(jù)庫(kù)都對(duì)應(yīng)一個(gè)服務(wù),我們?cè)谑褂们靶枰谟?jì)算機(jī)服務(wù)中開啟相應(yīng)的服務(wù),如圖中所示,服務(wù)開啟,用戶登錄后看到的是一個(gè)數(shù)據(jù)庫(kù),一個(gè)數(shù)據(jù)庫(kù)中可以有表、視圖、存儲(chǔ)過程等數(shù)據(jù)對(duì)象。一個(gè)Oracle數(shù)據(jù)庫(kù)可以有多個(gè)用戶,用戶的權(quán)限不同,進(jìn)入到數(shù)據(jù)庫(kù)中看到的數(shù)據(jù)對(duì)象也是不同的。

2.Oracle中基本的概念和關(guān)系
  我總結(jié)了一下Oracle中有5個(gè)必須要知道的概念:用戶、權(quán)限、角色、方案和數(shù)據(jù)對(duì)象。
用戶的概念大家都知道不用贅述;權(quán)限就是能不能做某一件事的證明;而角色可以看做是某些權(quán)限的集合體。在Oracle中權(quán)限有很多種,如果挨個(gè)給用戶授權(quán)會(huì)很麻煩,所以就把一些權(quán)限分配給一個(gè)角色,那么給用戶授予這個(gè)角色就解決挨個(gè)授予權(quán)限的麻煩。方案這里和用戶相對(duì)應(yīng)。一個(gè)用戶,Oracle會(huì)默認(rèn)給它一個(gè)方案,這個(gè)方案里會(huì)存放數(shù)據(jù)對(duì)象。那么數(shù)據(jù)對(duì)象又是什么?一想便知,數(shù)據(jù)對(duì)象就是表、視圖、存儲(chǔ)過程等的總稱。他們之間的關(guān)系我用一張圖來(lái)說(shuō)明。

  

 系統(tǒng)權(quán)限是用戶對(duì)數(shù)據(jù)庫(kù)的相關(guān)權(quán)限,比如:登錄。對(duì)象權(quán)限是用戶對(duì)其他用戶的數(shù)據(jù)對(duì)象的操作權(quán)限。比如:更新其他方案的表??吹竭@張圖不知道大家有沒有疑問:Oracle的權(quán)限有哪些?角色有哪些?我們?cè)趺床僮鬟@個(gè)數(shù)據(jù)庫(kù)呢?后面的博客會(huì)介紹這些。

3.Oracle的一種管理工具pl/sql Developer 
   pl/sql developer 是用于開發(fā)pl/sql塊的集成開發(fā)環(huán)境,它是一個(gè)獨(dú)立的產(chǎn)品,而不是oracle的一個(gè)附帶品。pl/sql是procedural language/sql是Oracle在標(biāo)準(zhǔn)sql語(yǔ)言上的擴(kuò)展。pl/sql不僅允許嵌入sql語(yǔ)言,還可以定義變量和常量,允許使用例外處理各種錯(cuò)誤,使得它的功能變得更強(qiáng)大。
pl/sql塊由三部分構(gòu)成:定義部分、執(zhí)行部分、例外處理部分。定義部分和例外部分可選。

Declear 
/* 定義部分-----定義變量,常量,游標(biāo),例外,復(fù)雜數(shù)據(jù)類型*/ 
Begin 
/*執(zhí)行部分-----要執(zhí)行的pl/sql語(yǔ)句和sql語(yǔ)句*/ 
Exception 
/*例外處理部分-----處理運(yùn)行的各種錯(cuò)誤*/ 
End; 
舉個(gè)最簡(jiǎn)單的例子: 
Begin 
dbms_output.put_line('hello,world'); 
End; 

為什么會(huì)出現(xiàn)pl/sql中文亂碼問題?
   前提是:本機(jī)沒有安裝Oracle,采用pl/sql遠(yuǎn)程訪問Oracle數(shù)據(jù)庫(kù)。本機(jī)安裝了Oracle客戶端和pl/sql。
   服務(wù)器上的Oracle有一個(gè)字符設(shè)置,比如UTF-8或者簡(jiǎn)體中文,若沒有手動(dòng)修改那么會(huì)有一個(gè)默認(rèn)的。在本機(jī)上Oracle客戶端和pl/sql也需要字符設(shè)置.如果服務(wù)器和客戶端的字符編碼不一致,就會(huì)出現(xiàn)中文亂碼問題。所以,我們要做得就是修改他們使他們一致。(現(xiàn)在看來(lái)是如此簡(jiǎn)單,當(dāng)時(shí)怎么會(huì)那么糾結(jié)?。?br />    怎么解決pl/sql中文亂碼問題?
   首先,我們要先知道服務(wù)器端的Oracle是什么字符編碼。打開你的pl/sql,在命令窗口中輸入  select userenv('language') from dual;   就會(huì)先看到。如圖:

然后要做的就是設(shè)置本機(jī)的字符設(shè)置為 SIMPLIFIED CHINESE_CHINA.ZHS16GBK。辦法是設(shè)置環(huán)境變量。步驟:我的電腦-->右擊-->屬性-->環(huán)境變量-->系統(tǒng)變量-->把nls_lang修改成SIMPLIFIED CHINESE_CHINA.ZHS16GBK,然后需要重啟pl/sql。網(wǎng)上很多資料說(shuō)做到這一步就可以解決問題了。但是我的亂碼問題還是解決不了。若你的問題也解決不了,請(qǐng)這樣做:打開你的注冊(cè)表找到這樣的目錄:找到:HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE 中

設(shè)置右側(cè)NLS_LANG,將它的值也設(shè)置為SIMPLIFIED CHINESE_CHINA.ZHS16GBK。重啟pl/sql后,將已經(jīng)添加進(jìn)去的記錄刪除,重新添加一條再測(cè)試。以前添加的記錄很可能就是亂碼寫入的,看不到效果。

4、如何分配權(quán)限和角色
1).什么是權(quán)限,什么是角色?
   權(quán)限分為系統(tǒng)權(quán)限和對(duì)象權(quán)限。系統(tǒng)權(quán)限是指執(zhí)行特定類型sql命令的的權(quán)利。比如用戶具有了create table的權(quán)限,可以在其方案中建表;當(dāng)具有了create any table,可以在任何方案中建表。對(duì)象權(quán)限是指訪問其他方案的權(quán)利,用戶可以直接訪問自己方案的對(duì)象,但是如果要訪問別的方案的對(duì)象,則必須具有對(duì)象的權(quán)限。比如Scott用戶要訪問Jane.emp表(Jane方案,emp表),則必須在Jane.emp表上具有對(duì)象權(quán)限。
  角色是相關(guān)權(quán)限的命令集合,使用角色的目的主要是為了簡(jiǎn)化權(quán)限的管理。
2).常用的權(quán)限和角色分類
  這里我們只簡(jiǎn)單介紹最常用的即可,若想了解可查閱幫助文檔也可通過查詢語(yǔ)句獲得。
  a.系統(tǒng)權(quán)限:關(guān)于數(shù)據(jù)庫(kù)連接(database link)、會(huì)話(session)、用戶(User)、表空間(tablespace)、角色(role)、數(shù)據(jù)對(duì)象(表、視圖、存儲(chǔ)過程)等這些操作的create、drop和alter。
  b.對(duì)象權(quán)限:insert --添加 、delete --刪除 (數(shù)據(jù))、 Alter --修改(修改表結(jié)構(gòu)) 、Update --修改(更新數(shù)據(jù)) 、Select --查詢 。也就是增刪改查四大類。
  c.角色分為預(yù)定義和自定義兩種。預(yù)定義是指Oracle所提供的角色,常用的包括:connect,resource,dba.
    dba角色具有所有的系統(tǒng)權(quán)限,默認(rèn)的有dba角色的用戶是sys和system。 這兩個(gè)用戶可以將任何系統(tǒng)權(quán)限授予其他用戶。注意一點(diǎn)就是:dba角色沒有啟動(dòng)關(guān)閉數(shù)據(jù)庫(kù)的權(quán)利.Connect角色具有一般開發(fā)人員需要的大部分權(quán)限,多數(shù)情況下,只要給用戶授權(quán)connect和resource角色就夠了。那么connect和resource角色都有什么權(quán)限呢?這里沒有必要一一列舉。我們可通過查詢獲得。那么如何查詢呢?
3).查詢
如何查詢Oracle有多少種角色? select * from dba_roles;
如何查詢Oracle有多少種系統(tǒng)權(quán)限和對(duì)象權(quán)限? select * from system_privilege_map order by name; select  distinct privilege  from dba_tab_privs;
如何查看某個(gè)用戶有什么樣的角色?  select * from dba_role_privs where grantee='用戶名';
如何查看一個(gè)角色包括什么系統(tǒng)權(quán)限和對(duì)象權(quán)限? select * from dba_sys_privs where grantee='角色名'; select * from dba_tab_privs where grantee='角色名';
4).授予和回收
   這部分知識(shí)在學(xué)習(xí)過程中是按一條一條規(guī)則來(lái)的,學(xué)完覺得特別亂。我把這里的東西按照一個(gè)正常的操作過程編成了一條操作線。感覺知識(shí)比較清晰了。
   a.現(xiàn)在我要使用Oracle,必須要有用戶才行。Oracle默認(rèn)創(chuàng)建兩個(gè)用戶sys和system.我們可以使用這兩個(gè)用戶登錄上去,建立自己的用戶,如:create user Ken identified by ken.現(xiàn)在我們使用Ken來(lái)登錄會(huì)給出錯(cuò)誤信息。為什么?因?yàn)镵en用戶沒有登錄的權(quán)限?,F(xiàn)在我們需要給Ken授權(quán):grant create session  to Ken  with admin option.這樣Ken用戶登錄就ok了。那么with admin option能起到什么作用?這說(shuō)明被授權(quán)的用戶或者是角色還可以將該系統(tǒng)權(quán)限給其他用戶或者角色。
    回收系統(tǒng)權(quán)限操作:依然采用上面的例子:回收登錄權(quán)限:revoke  create session  from Ken;  系統(tǒng)權(quán)限的回收不是級(jí)聯(lián)的。比如:Ken又將登錄權(quán)限授予Jane,那么回收Ken的權(quán)限后,Jane依然可以登錄。
    b.對(duì)于對(duì)象權(quán)限來(lái)說(shuō),我們舉個(gè)例子:如果我的方案中有一張表emp,現(xiàn)在我想讓Ken用戶有權(quán)限來(lái)操作我的表。那我怎么辦?第一種辦法是用dba用戶將操作我的表emp的權(quán)限給Ken,這里需要說(shuō)明一點(diǎn):dba用戶可以將任何對(duì)象上的對(duì)象權(quán)限授予其他用戶。第二種辦法是我自己來(lái)做。  如何做? grant select on emp to Ken with grant option.這里我用到了 with grant option.這能起到這樣的作用:Ken用戶可以將操作我的表emp的權(quán)限在授予別的用戶。這里注意一點(diǎn)。它跟with admin option 不同,with grant option只能授予用戶,不能授予角色。
    回收對(duì)象權(quán)限操作:revoke select on emp from Ken ;對(duì)象權(quán)限的回收是級(jí)聯(lián)的。比如:Ken將對(duì)emp表查詢的權(quán)限授予Jane,那么回收Ken的權(quán)限后,Jane也不能對(duì)emp表進(jìn)行查詢。
    c.角色授權(quán)這里需要兩步:1給角色授權(quán)2將角色給某一個(gè)用戶?,F(xiàn)在我們將登錄權(quán)限給一個(gè)角色:grant  create session  to 角色名;然后把這個(gè)角色給用戶Ken:grant 角色名 to Ken.刪除角色采用 drop role 角色名。

總結(jié):這篇博客側(cè)重于介紹Oracle的基本機(jī)制,是最基本的知識(shí),最后還介紹了如何分配權(quán)限和角色,包括它們是什么,分類以及如何去用它們。這里我們要搞明白一個(gè)前提就很好理解:我們要做某一件事必須要有權(quán)限。當(dāng)我們沒有權(quán)限的時(shí)候可以使用系統(tǒng)用戶去做,如果系統(tǒng)授予我們權(quán)限那我們也可以做了。

以上就是對(duì)Oracle知識(shí)的整理,還有許多知識(shí)點(diǎn)未涉及到,在將來(lái)的文章更新中會(huì)陸續(xù)補(bǔ)充,希望大家繼續(xù)關(guān)注。

相關(guān)文章

  • oracle中add_months()函數(shù)及用法總結(jié)

    oracle中add_months()函數(shù)及用法總結(jié)

    這篇文章主要介紹了oracle中add_months()函數(shù)及用法總結(jié),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Oracle數(shù)據(jù)庫(kù)表空間超詳細(xì)介紹

    Oracle數(shù)據(jù)庫(kù)表空間超詳細(xì)介紹

    Oracle數(shù)據(jù)庫(kù)的數(shù)據(jù)存放在表空間中,表空間是一個(gè)邏輯的概念,它是由數(shù)據(jù)文件組成,表空間大小由數(shù)據(jù)文件的數(shù)量和大小決定,下面這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫(kù)表空間的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • oracle 11g的警告日志和監(jiān)聽日志的刪除方法

    oracle 11g的警告日志和監(jiān)聽日志的刪除方法

    這篇文章主要介紹了oracle 11g的警告日志和監(jiān)聽日志的刪除方法,需要的朋友可以參考下
    2014-07-07
  • Oracle 10g利用amdu抽取數(shù)據(jù)文件的方法教程

    Oracle 10g利用amdu抽取數(shù)據(jù)文件的方法教程

    這篇文章主要給大家介紹了關(guān)于Oracle 10g利用amdu抽取數(shù)據(jù)文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • Oracle顯示游標(biāo)的使用及游標(biāo)for循環(huán)

    Oracle顯示游標(biāo)的使用及游標(biāo)for循環(huán)

    本篇文章給大家介紹oracle顯示游標(biāo)的使用及游標(biāo)for循環(huán),當(dāng)查詢返回單行記錄時(shí)使用隱式游標(biāo),查詢返回多行記錄并逐行進(jìn)行處理時(shí)使用顯式游標(biāo),對(duì)本文感興趣的朋友一起學(xué)習(xí)吧
    2015-11-11
  • Oracle如何實(shí)現(xiàn)like多個(gè)值的查詢

    Oracle如何實(shí)現(xiàn)like多個(gè)值的查詢

    這篇文章主要給大家介紹了關(guān)于Oracle如何實(shí)現(xiàn)like多個(gè)值的查詢的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • Oracle根據(jù)時(shí)間查詢的一些常見情況匯總

    Oracle根據(jù)時(shí)間查詢的一些常見情況匯總

    根據(jù)時(shí)間查詢是我們?nèi)粘i_發(fā)中經(jīng)常會(huì)遇到的一個(gè)功能,下面這篇文章主要給大家介紹了關(guān)于Oracle根據(jù)時(shí)間查詢的一些常見情況,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 登錄oracle數(shù)據(jù)庫(kù)時(shí)密碼忘記的解決方法

    登錄oracle數(shù)據(jù)庫(kù)時(shí)密碼忘記的解決方法

    登錄本地oracle數(shù)據(jù)庫(kù)時(shí),忘記密碼了,這種情況時(shí)有發(fā)生,下面有個(gè)不錯(cuò)的解決方法,希望對(duì)大家有所幫助
    2014-01-01
  • Oracle用戶密碼含特殊字符時(shí)登陸失敗問題

    Oracle用戶密碼含特殊字符時(shí)登陸失敗問題

    當(dāng)Oracle數(shù)據(jù)庫(kù)用戶的密碼含特殊字符如 @ 時(shí),默認(rèn)會(huì)將@后的字符解析為網(wǎng)絡(luò)服務(wù)名而導(dǎo)致登陸失
    2014-07-07
  • Oracle刪除當(dāng)前用戶下所有表的方法適用于有或沒有刪除權(quán)限

    Oracle刪除當(dāng)前用戶下所有表的方法適用于有或沒有刪除權(quán)限

    如果有plsql客戶端,則可以使用該用戶登錄,選中所有表 右鍵Drop即可,如果有或沒有刪除用戶的權(quán)限都可以使用下面的方法
    2014-06-06

最新評(píng)論