Oracle 表空間和用戶許可權管理

来源:http://www.cnblogs.com/LonelyShadow/archive/2017/01/05/6254294.html
-Advertisement-
Play Games

一、 表空間 Oracle資料庫包含邏輯結構和物理結構。 資料庫的物理結構指的是構成資料庫的一組操作系統文件。 資料庫的邏輯結構是指描述數據組織方式的一組邏輯概念以及它們之間的關係。 表空間是資料庫邏輯結構的一個重要組件。 表空間可以存放各種應用對象,如表、索引等。 而每一個表空間由一個或多個數據文 ...


一、 表空間

  Oracle資料庫包含邏輯結構和物理結構。
  資料庫的物理結構指的是構成資料庫的一組操作系統文件。
  資料庫的邏輯結構是指描述數據組織方式的一組邏輯概念以及它們之間的關係。

 

  表空間是資料庫邏輯結構的一個重要組件。
  表空間可以存放各種應用對象,如表、索引等。
  而每一個表空間由一個或多個數據文件組成。

 

  1. 表空間的分類
  表空間可分為3類:

  • 永久性表空間:一般保存表、上天、過程和索引等數據。system、sysaux、users、example表空間是預設安裝的。
  • 臨時性表空間:只用於保存系統中短期活動的數據,如排序數據等。
  • 撤銷表空間:用來幫助回退未提交的事務數據,已提交了的數據在這裡是不可以恢復的。一般不需要創建臨時和撤銷表空間,除非把它們轉移到其它磁碟中以提高性能。

 

  2. 表空間的目的
  (1) 對不同的用戶分配不同的表空間,對不同的模式對象分配不同的表空間,方便對用戶數據的操作、對模式對象的管理。
  (2) 可以將不同數據文件創建到不同的磁碟中,有利於管理磁碟空間、有利於提高I/O性能、有利於備份和回覆數據等。
  (3) 一般在完成Oracle系統的安裝並創建Oracle實例後,Oracle系統會自動建立多個表空間。


  3. 創建表空間
  創建表空間,語法如下:

1 CREATE TABLESPACE tablespaceName
2 DATAFILE 'filename'
3 [SIZE integer [K | M]]
4 [AUTOEXTEND [OFF | ON]];

  在語法中:

  • tablespaceName是需創建的表空間名稱;
  • DATAFILE指定組成表空間的一個或多個數據文件,當有多個數據文件時使用逗號分隔;
  • filename是數據文件的路徑和名稱;
  • SIZE指定文件的大小,用K指定千位元組大小,用M指定兆位元組大小;
  • AUTOEXTEND子句用來啟用或禁用數據文件的自動擴展,設置為ON則空間使用完畢會自動擴展,設置為OFF則很容易出現表空間剩餘容量為0的情況,使數據不能存儲到資料庫中。


  實例:創建一個自動增長的表空間geeksss的SQL語句如下:

1 CREATE TABLESPACE geeksss
2 DATAFILE 'D:\ORACLE\DATA\GEEKSSS.DBF'
3 SIZE 10M 
4 AUTOEXTEND ON;

 

  4. 刪除表空間
  可以通過DROP語句(DROP TABLESPACE 加上表空間的名稱)來刪除用戶自定義的表空間。
  語法:

1 DROP TABLESPACE tablespaceName;

  刪除表空間之前最好對資料庫進行備份。

 

二、 自定義用戶管理

  當創建一個新資料庫時,Oracle將創建一些預設資料庫用戶,如sys、system和scott等。
  sys和system用戶都是Oracle的系統用戶,而scott用戶是Oracle資料庫的一個示範賬戶,裡面包含一些測試樣例表。

 

  下麵簡單介紹一個sys、system和scott用戶的模式。

  1. sys
  sys用戶是Oracle中的一個超級用戶。

 

  資料庫中的所有數據字典和視圖都存儲在sys模式中。
  數據字典存儲了用來管理資料庫對象的所有信息,是Oracle資料庫中非常重要的系統信息。

 

  sys用戶主要用來維護系統信息和管理實例。sys用戶只能以sysoper或sysdba角色登錄系統。

 


  2. system
  system用戶是Oracle中預設的系統管理員,它擁有dba許可權。
  該用戶擁有Oracle管理工具使用的內部表和視圖,通常通過system用戶管理Oracle資料庫的用戶、許可權和存儲等。

 

  不建議system模式中創建用戶表,system用戶不能以sysoper或sysdba角色登錄系統,只能以預設的方式登錄。

 


  3. scott
  scott用戶是Oracle資料庫的一個示範用戶,一般在資料庫安裝時創建。
  scott用戶模式包含4個示範表,其中一個是emp表,使用USERS表空間存儲模式對象。

 

  通常情況下,出於安全考慮,對於不同的數據表需要設置不同的訪問許可權。

  此時,就需要創建不同的用戶。Oracle中的CREATE USER命令用於創建新用戶。

 

  每個用戶都有一個預設表空間和一個臨時表空間。
  如果沒有指定,Oracle就將USERS設為預設表空間,將TEMP設為臨時表空間。

 

  創建用戶語法如下所示:

1 CREATE USER username
2 IDENTIFIED BY password
3 [DEFAULT TABLESPACE tablespaceName]
4 [TEMPORARY TABLESPACE tablespaceName]

  在語法中:

  • username是用戶名,用戶名必須是一個標識符;
  • password是用戶口令,口令必須是一個標識符,且不區分大小寫;
  • DEFAULT或TEMPORARY TABLESPACE為用戶確定預設表空間或臨時表空間。


  實例:一下代碼演示瞭如何創建名稱為martin的用戶:

1 CREATE USER martin
2 IDENTIFIED BY martinpwd
3 DEFAULT TABLESPACE geeksss
4 TEMPORARY TABLESPACE temp;

  上述命令將創建一個名為martin、口令為martinpwd的用戶,預設表空間為geeksss,臨時表空間為temp。

 

 

  實例:將martin的口令修改為mpwd:

1 ALTER USER martin
2 IDENTIFIED BY mpwd;

 

  Oracle的DROP USER命令可用於刪除用戶,但當用戶擁有模式對象時則無法刪除用戶。
  而必須使用CASCADE選項刪除用戶和用戶模式對象。

 

 

  實例:如何刪除用戶martin:

1 DROP USER martin CASCADE;

 

 

三、 資料庫許可權管理

  許可權是用戶對一項功能的執行權利。
  在Oracle中,根據系統管理方式的不同,可將許可權氛圍系統全新啊與對象許可權兩類。

 

 

  1. 系統許可權
  系統許可權是指被授權用戶是否可以連接到資料庫上及在資料庫中可以進行哪些系統操作。
  系統許可權是在資料庫中執行某種系統級別的操作,或者針對某一類的對象執行某種操作的權利。

 

  例如:在資料庫中創建表空間的權利,或者在資料庫中創建表的權利,這些都屬於系統許可權。

 

  常見的系統許可權如下:

  • CREATE SESSION:鏈接到資料庫
  • CREATE TABLE:創建表
  • CREATE VIEW:創建視圖
  • CREATE SEQUENCE:創建序列


  2. 對象許可權
  對象許可權是指用戶對資料庫中具體對象所擁有的許可權。
  對象許可權是針對某個特定的模式對象執行操作的權利。

 

  只能針對模式對象未設置和管理對象許可權,如資料庫的表、視圖、序列、存儲過程、存儲函數等。

 

  Oracle資料庫用戶有兩種途徑獲得許可權:
  (1) 管理員直接向用戶授予許可權。
  (2) 管理員將許可權授予角色,然後再將角色授予給一個或多個用戶。

 

  使用角色能夠更加方便和高效地對許可權進行管理,所以資料庫管理員通常使用角色向用戶授予許可權,而不是直接向用戶授予許可權。

 

  在Oracle資料庫系統中預定義了很多的角色,其中最常用的有CONNECT角色、RESOURCE角色、DBA角色等等。
  一般程式使用的用戶只要授予CONNECT和RESOURCE兩個角色即可。
  DBA角色具有所有的系統許可權,並且可以給其他用戶、角色授權。由於DBA角色許可權比較多,這裡就不列出來了。

 

  Oracle中常用的系統預定義角色如下:

  • CONNECT:需要連接上資料庫的用戶,特別是那些不需要創建表的用戶,通常授予該角色。
  • RESOURCE:更為可靠和正式的資料庫用戶可以授予該角色,可以創建表、觸發器、過程等。
  • DBA:資料庫管理員角色,擁有管理資料庫的最高許可權,一個具有DBA角色的用戶可以撤銷任何別的用戶甚至別的DBA許可權,這是很危險的,所以不要輕易授予該角色。


  (1) 授予許可權語法如下:

1 GRANT 許可權|角色 TO 用戶名;

 

  (2) 撤銷許可權的語法如下:

1 REVOKE 許可權|角色 FROM 用戶名;

 

  實例:如何授予和撤銷martin用戶的CONNECT和RESOURCE兩個角色:

1 GRANT connection,resource to martin; -- 授予CONNECTION和RESOURCE兩個角色
2 REVOKE connection, resource FROM martin; -- 撤銷CONNECTION和RESOURCE兩個角色
3 GRANT SELECT ON SCOTT.emp TO martin; -- 允許用戶查看emp表中的記錄
4 GRANT UPDATE ON SCOTT.emp TO martin; -- 允許用戶更新emp表中的記錄

 

  資料庫用戶安全設計原則:

  • 資料庫用戶許可權授權按照最小分配原則;
  • 資料庫用戶要分為管理、應用、維護、備份四類用戶;
  • 不允許使用sys和system建立資料庫應用對象;
  • 禁止GRANT dba TO user。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 該視頻意在讓所有學員一次通過考試,避免重覆考試而承擔的巨額考試費用! 目前MongDB發展迅猛,有趕超mysql,和oracle看齊的苗頭。在這個時候MongoDB也適時的推出了官方的認證考試“MongoDB Certified DBA Associate Level”。該證書和OCP一樣,值得擁有 ...
  • 在逝去的2016後半年,由於項目需要支持數據的快速更新和多用戶的高併發負載,我試水SQL Server 2016的In-Memory OLTP,創建記憶體資料庫實現項目的負載需求,現在項目接近尾聲,系統運行穩定,寫一篇博客,記錄一下使用記憶體資料庫的經驗。 SQL Server 2016的In-Memo ...
  • 大數據離線部分 1、HDFS 1:HDFS的架構部分及工作原理 NameNode:負責管理元素據,將信息保存在記憶體中 DataNode:保存數據,以塊的形式保存。啟動後需要定時的向NameNode發送心跳,報告自身存儲的塊信息 2:HDFS的上傳過程 3:HDFS的下載 4:NameNode的元數據 ...
  • 在資料庫的遷移和升級場景中,我們經常會遇到一個問題:在做壓力測試時,如何模擬真實的業務壓力,解決這個問題的方法有很多,比如:應用方開發模擬程式或者使用壓力測試工具模擬,如load runner,但是,如果要說哪種方法能最大限度地模擬真實業務壓力,我認為還是Oracle的Database Replay ...
  • 嗯,遇見了表中存在重覆的記錄的問題,直接寫sql刪除時最快的,才不要慢慢的複製到excel表中慢慢的人工找呢。哼。 如下sql,找出重覆的記錄,和重覆記錄中ID值最小的記錄(表中ID為自增長) 然後就可以直接刪除,基本原理就是,找到重覆記錄的每一條記錄,排除掉重覆id最小的記錄,刪除剩餘的重覆記錄。 ...
  • sqlcmd -s DESKTOP-Q3VQ7U1 -U sa -P 123456 -d db_test -r -i G:\test.sql 黑色字體為關鍵命令,其他顏色(從左至右):伺服器名稱,用戶名,密碼,資料庫,文件路徑 通過select @@servername獲取服務名稱:DESKTOP- ...
  • --允許將顯示值插入表的標識列中-ON:允許 OFF:不允許set identity_insert T_shell ONset identity_insert T_Shell OFF ...
  • 一、負責收集數據的工具:Sqoop(關係型數據導入Hadoop)Flume(日誌數據導入Hadoop,支持數據源廣泛)Kafka(支持數據源有限,但吞吐大) 二、負責存儲數據的工具:HBaseMongoDBCassandraAccumulo MySqlOracleDB2 HDFS(Hadoop Di ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...