Oracle 用戶 表 表空間之間的關係和管理

文獻地址: https://blog.csdn.net/jmilk/article/details/51599260html

https://www.cnblogs.com/roger112/p/7685307.htmlsql

https://www.cnblogs.com/summary-2017/p/7866005.html數據庫

https://www.cnblogs.com/kevinanni/p/3688921.html服務器

https://www.cnblogs.com/roger112/p/7685307.htmlsession

Oracle數據庫介紹:   完整的Oracle數據庫一般由兩部分組成:Oracle數據庫和數據庫實例。 1) 數據庫是一系列物理文件的集合(數據文件,控制文件,聯機日誌,參數文件等); 2) Oracle數據庫實例則是一組Oracle後臺進程/線程以及在服務器分配的共享內存區。oracle

在啓動Oracle數據庫服務器時,其實是在服務器的內存中建立一個Oracle實例(即在服務器內存中分配共享內存並建立相關的後臺內存),而後由這個Oracle數據庫實例來訪問和控制磁盤中的數據文件。Oracle有一個很大的內存快,成爲全局區(SGA)。ide

用Oracle官方描述:實例是訪問Oracle數據庫所需的一部分計算機內存和輔助處理後臺進程,是由進程和這些進程所使用的內存(SGA)所構成一個集合。
其實就是用來訪問和使用數據庫的一塊進程,它只存在於內存中。就像Java中new出來的實例對象同樣。
咱們訪問Oracle都是訪問一個實例,但這個實例若是關聯了數據庫文件,就是能夠訪問的,若是沒有,就會獲得實例不可用的錯誤。
實例名指的是用於響應某個數據庫操做的數據庫管理系統的名稱。她同時也叫SID。實例名是由參數instance_name決定的。
spa

 

用戶介紹:Oracle數據庫建好後,要想在數據庫裏建表,必須先爲數據庫創建用戶,併爲用戶指定表空間。上面咱們建好了數據庫和表空間,接下來建用戶,能夠在建表時和建表後對用戶指定表空間。
.net

 

權限:在pl/sql developer 即便沒有作權限也能夠進行相關操做,可是自己沒權限是在其餘編譯的時候是行不通的,用戶權限的管理很重要。線程

 

表空間概述

Oracle的表空間屬於Oracle中的存儲結構,是一種用於存儲數據庫對象(如:數據文件)的邏輯空間,是Oracle中信息存儲的最大邏輯單元,其下還包含有段、區、數據塊等邏輯數據類型。表空間是在數據庫中開闢的一個空間,用於存放數據庫的對象,一個數據庫能夠由多個表空間組成。能夠經過表空間來實現對Oracle的調優。(Oracle數據庫獨特的高級應用)

表空間的分類

  • 永久表空間:存儲數據庫中須要永久化存儲的對象,好比二維表、視圖、存儲過程、索引。
  • 臨時表空間:存儲數據庫的中間執行過程,如:保存order by數據庫排序,分組時產生的臨時數據。操做完成後存儲的內容會被自動釋放。臨時表空間是通用的,所的用戶都使用TEMP做爲臨時表空間。通常只有tmp一個臨時表空間,若是還須要別的臨時表空間時,能夠本身建立。
  • UNDO表空間:保存數據修改前的副本。存儲事務所修改的舊址,即被修改以前的數據。當咱們對一張表中的數據進行修改的同時會對修改以前的信息進行保存,爲了對數據執行回滾、恢復、撤銷的操做。

 

有關用戶的操做:

1、建立用戶

oracle內部有兩個建好的用戶:system和sys。用戶可直接登陸到system用戶以建立其餘用戶,由於system具備建立別 的用戶的 權限。 在安裝oracle時,用戶或系統管理員首先能夠爲本身創建一個用戶。

語法[建立用戶]: create user 用戶名 identified by 口令[即密碼];

例子: create user test identified by test;

語法[更改用戶]: alter user 用戶名 identified by 口令[改變的口令];

例子: alter user test identified by 123456;

 

2、刪除用戶

語法:drop user 用戶名;

例子:drop user test;

若用戶擁有對象,則不能直接刪除,不然將返回一個錯誤值。指定關鍵字cascade,可刪除用戶全部的對象,而後再刪除用戶。

語法: drop user 用戶名 cascade;

例子: drop user test cascade;

 

3、受權角色

oracle爲兼容之前版本,提供三種標準角色(role):connect/resource和dba.

(1)講解三種標準角色:

1》. connect role(鏈接角色)

--臨時用戶,特指不須要建表的用戶,一般只賦予他們connect role. 

--connect是使用oracle簡單權限,這種權限只對其餘用戶的表有訪問權限,包括select/insert/update和delete等。

--擁有connect role 的用戶還可以建立表、視圖、序列(sequence)、簇(cluster)、同義詞(synonym)、回話(session)和其餘  數據的鏈(link)

 

2》. resource role(資源角色)

--更可靠和正式的數據庫用戶能夠授予resource role。

--resource提供給用戶另外的權限以建立他們本身的表、序列、過程(procedure)、觸發器(trigger)、索引(index)和簇(cluster)。

 

3》. dba role(數據庫管理員角色)

--dba role擁有全部的系統權限

--包括無限制的空間限額和給其餘用戶授予各類權限的能力。system由dba用戶擁有

 

(2)受權命令

語法: grant connect, resource to 用戶名;

 例子: grant connect, resource to test;

   (3)撤銷權限

      語法: revoke connect, resource from 用戶名;

      列子: revoke connect, resource from test;

 

4、建立/受權/刪除角色

除了前面講到的三種系統角色----connect、resource和dba,用戶還能夠在oracle建立本身的role。用戶建立的role能夠由表或系統權限或二者的組合構成。爲了建立role,用戶必須具備create role系統權限。

1》建立角色

語法: create role 角色名;

例子: create role testRole;

2》受權角色

語法: grant select on class to 角色名;

列子: grant select on class to testRole;

注:如今,擁有testRole角色的全部用戶都具備對class表的select查詢權限

3》刪除角色

語法: drop role 角色名;

例子: drop role testRole;

注:與testRole角色相關的權限將從數據庫所有刪除

 

有關表空間的操做:

1. 建立表空間
create tablespace SIRM2 
datafile 'D:\oracle\product\10.2.0\oradata\orcl\SIRM2.dbf' size 1024M --存儲地址 初始大小1G
autoextend on next 10M maxsize unlimited   --每次擴展10M,無限制擴展
EXTENT MANAGEMENT local  autoallocate
segment space management auto;
2.建立用戶
 create user test  identified by test 
default tablespace SIRM2
  temporary tablespace TEMP
  profile DEFAULT;
3.受權
grant dba to test;
grant connect to test;
grant resource to test;
 
SYS用戶在CMD下以DBA身份登錄: 
 
在CMD中打sqlplus /nolog 
 
而後再 
 
conn / as sysdba 
 
//建立臨時表空間   
 
  
 
create temporary tablespace user_temp   
 
tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf'  
 
size 50m   
 
autoextend on   
 
next 50m maxsize 20480m   
 
extent management local;   
 
  
 
//建立數據表空間   
 
create tablespace test_data   
logging   
 
datafile 'D:\oracle\oradata\Oracle9i\user_data.dbf'  
size 50m   
 
autoextend on   
 
next 50m maxsize 20480m   
 
extent management local;   
 
  
 
//建立用戶並指定表空間   
 
create user username identified by password   
 
default tablespace user_data   
temporary tablespace user_temp;   
 
  
 
//給用戶授予權限   
 
  
 
grant connect,resource to username;   
 
  
 
//之後以該用戶登陸,建立的任何數據庫對象都屬於user_temp 和user_data表空間, 
這就不用在每建立一個對象給其指定表空間了  
 
撤權:   
 
       revoke   權限...   from  用戶名; 
 
刪除用戶命令 
 
drop user user_name cascade; 
 
創建表空間 
 
CREATE TABLESPACE data01 
DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M 
UNIFORM SIZE 128k; #指定區尺寸爲128k,如不指定,區尺寸默認爲64k 
 
刪除表空間 
 
DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES; 
1、創建表空間 
 
CREATE TABLESPACE data01 
DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M 
UNIFORM SIZE 128k; #指定區尺寸爲128k,如不指定,區尺寸默認爲64k 
 
2、創建UNDO表空間 
 
CREATE UNDO TABLESPACE UNDOTBS02 
 
DATAFILE '/oracle/oradata/db/UNDOTBS02.dbf' SIZE 50M 
 
#注意:在OPEN狀態下某些時刻只能用一個UNDO表空間,若是要用新建的表空間,必須切換到該表空間: 
 
ALTER SYSTEM SET undo_tablespace=UNDOTBS02; 
 
3、創建臨時表空間 
 
CREATE TEMPORARY TABLESPACE temp_data 
TEMPFILE '/oracle/oradata/db/TEMP_DATA.dbf' SIZE 50M 
4、改變表空間狀態 
 
1.使表空間脫機 
 
ALTER TABLESPACE game OFFLINE; 
 
若是是意外刪除了數據文件,則必須帶有RECOVER選項 
 
ALTER TABLESPACE game OFFLINE FOR RECOVER; 
 
2.使表空間聯機 
 
ALTER TABLESPACE game ONLINE; 
3.使數據文件脫機 
 
ALTER DATABASE DATAFILE 3 OFFLINE; 
 
4.使數據文件聯機 
 
ALTER DATABASE DATAFILE 3 ONLINE; 
5.使表空間只讀 
 
ALTER TABLESPACE game READ ONLY; 
6.使表空間可讀寫 
 
ALTER TABLESPACE game READ WRITE; 
 
5、刪除表空間 
 
DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES; 
6、擴展表空間 
 
首先查看錶空間的名字和所屬文件 
 
select tablespace_name, file_id, file_name, 
 
round(bytes/(1024*1024),0) total_space 
 
from dba_data_files 
order by tablespace_name; 
 
1.增長數據文件 
 
ALTER TABLESPACE game 
 
ADD DATAFILE '/oracle/oradata/db/GAME02.dbf' SIZE 1000M; 
 
2.手動增長數據文件尺寸 
 
ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf'
 
RESIZE 4000M; 
 
3.設定數據文件自動擴展 
 
ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf 
 
AUTOEXTEND ON NEXT 100M 
 
MAXSIZE 10000M; 
 
設定後查看錶空間信息 
 
SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE, 
 
(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"
 
FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C 
 

WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE

相關文章
相關標籤/搜索