亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Oracle知識整理筆記

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

小編整理的一篇關于Oracle知識的學習筆記,希望對大家有幫助。

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

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

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

  

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

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

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

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

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

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

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

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

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

相關文章

最新評論