佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > Oracle知識整理筆記

Oracle知識整理筆記

熱門標(biāo)簽:網(wǎng)站排名優(yōu)化 鐵路電話系統(tǒng) 地方門戶網(wǎng)站 AI電銷 呼叫中心市場需求 百度競價排名 Linux服務(wù)器 服務(wù)外包

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

1.簡單對比一下SQL Server 和Oracle
  先給大家看一張我畫得圖:

  安裝完Sql Server后,我們打開、連接數(shù)據(jù)庫引擎后可以看到很多的數(shù)據(jù)庫有系統(tǒng)數(shù)據(jù)庫也有用戶數(shù)據(jù)庫。而Oracle安裝后,一個數(shù)據(jù)庫都對應(yīng)一個服務(wù),我們在使用前需要在計算機(jī)服務(wù)中開啟相應(yīng)的服務(wù),如圖中所示,服務(wù)開啟,用戶登錄后看到的是一個數(shù)據(jù)庫,一個數(shù)據(jù)庫中可以有表、視圖、存儲過程等數(shù)據(jù)對象。一個Oracle數(shù)據(jù)庫可以有多個用戶,用戶的權(quán)限不同,進(jìn)入到數(shù)據(jù)庫中看到的數(shù)據(jù)對象也是不同的。

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

  

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

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

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

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

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

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

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

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

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

您可能感興趣的文章:
  • Oracle RMAN快速入門指南
  • Oracle PL/SQL入門慨述
  • Oracle PL/SQL入門案例實踐
  • 基于Oracle的面向?qū)ο蠹夹g(shù)入門基礎(chǔ)簡析開發(fā)者網(wǎng)絡(luò)Oracle
  • Oracle PL/SQL語言入門基礎(chǔ)
  • PL/SQL Number數(shù)字類型函數(shù)
  • PL/SQL 日期時間類型函數(shù)及運算
  • PL/SQL 類型格式轉(zhuǎn)換
  • PL/SQL數(shù)據(jù)類型及操作符
  • PL/SQL number型數(shù)據(jù)
  • Oracle存儲過程入門學(xué)習(xí)基本語法
  • Oracle 數(shù)組的學(xué)習(xí) 小知識也要積累,養(yǎng)成好的學(xué)習(xí)態(tài)度
  • 比較SQL Server與Oracle、DB2數(shù)據(jù)庫的一些知識
  • oracle 合并查詢 事務(wù) sql函數(shù)小知識學(xué)習(xí)
  • PL/SQL DEVELOPER 使用的一些技巧
  • PL/SQL Dev連接Oracle彈出空白提示框的解決方法分享
  • oracle復(fù)習(xí)筆記之PL/SQL程序所要了解的知識點

標(biāo)簽:仙桃 崇左 銅川 衡水 湘潭 湖南 蘭州 黃山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Oracle知識整理筆記》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    鹤壁市| 宾川县| 宁陕县| 思南县| 屏东县| 桦甸市| 三原县| 内乡县| 秦皇岛市| 昌平区| 兴义市| 濉溪县| 西和县| 东辽县| 新津县| 天长市| 丘北县| 西峡县| 巴林右旗| 宾阳县| 陵水| 定兴县| 平乡县| 临漳县| 岗巴县| 文山县| 咸阳市| 个旧市| 桐柏县| 高平市| 双牌县| 股票| 老河口市| 库尔勒市| 武城县| 辉南县| 商城县| 平罗县| 拜泉县| 和静县| 屏东市|