Oracle用戶和模式,表空間

oracle 用戶與表空間關係

oracle用戶與表空間關係
用戶=商家
表=商品
表空間=倉庫
1. 1個商家能有不少商品,1個商品只能屬於一個商家
2. 1個商品能夠放到倉庫A,也能夠放到倉庫B,但不能同時放入A和B
3. 倉庫不屬於任何商家
4. 商家都有一個默認的倉庫,若是不指定具體倉庫,商品則放到默認的倉庫中html

oracle中用戶的全部數據都是存放在表空間中的,不少個用戶能夠共用一個表空間,也能夠指定一個用戶只用某一個表空間。
表空間:建立表空間會在物理磁盤上創建一個數據文件,做爲數據庫對象(用戶、表、存儲過程等等)的物理存儲空間;
用戶:建立用戶必須爲其指定表空間,若是沒有顯性指定默認表空間,則指定爲users表空間;建立用戶後,能夠在用戶上,建立表、存儲過程等等其餘數據庫對象;
表:是數據記錄的集合;
建立過程: 表空間--->用戶--->表;
所屬關係: 表空間 包含 用戶 包含 表;java

http://www.cnblogs.com/cici-new/archive/2012/12/25/2831740.html
1.首先是ORACLE的總體結構。
oracle中的一個數據庫就是一個實例.
oracle的一個用戶就是一個Schema(即方案).
oracle的結構是===
          實例->用戶->表(用戶屬於數據庫實例,表屬於某個用戶)sql

因此在oracle下創建 建表空間,建用戶,設置用戶的默認表空間,在用戶下建表;數據庫

 

--建立數據表空間
create tablespace CICI
logging
datafile 'D:\oraclexe\app\oracle\oradata\CICI\CICI.DBF'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local;網絡

--建立用戶並指定表空間session

CREATE USER cici IDENTIFIED BY cici
PROFILE DEFAULT
DEFAULT TABLESPACE CICI 
ACCOUNT UNLOCK;
-- 爲用戶賦予權限
GRANT connect, resource TO cici;
grant create session to cici;數據結構

 

 查詢數據庫當前進程的鏈接數:
select count(*) from v$process;
查看數據庫當前會話的鏈接數:
select count(*) from v$session;
查看數據庫的併發鏈接數:
select count(*) from v$session where status='ACTIVE';
查看當前數據庫創建的會話狀況:
select sid,serial#,username,program,machine,status from v$session;
查詢數據庫容許的最大鏈接數:
select value from v$parameter where name = 'processes';併發

Oracle用戶和模式的區別

轉自:http://database.51cto.com/art/201010/231679.htm
Oracle用戶是Oracle數據庫中的重要概念,下面就爲您介紹Oracle用戶和模式的區別,但願對您學習Oracle用戶方面可以有所幫助。

(一)什麼Oracle叫用戶(user):

A user is a name defined in the database that can connect to and access objects.

Oracle用戶是用鏈接數據庫和訪問數據庫對象的。(用戶是用來鏈接數據庫訪問數據庫)。

(二)什麼叫模式(schema):

A schema is a collection of database objects (used by a user.).
Schema objects are the logical structures that directly refer to the database’s data.

模式是數據庫對象的集合。模式對象是數據庫數據的邏輯結構。
(把數據庫對象用模式分開成不一樣的邏輯結構)。

(三)用戶(user)與模式(schema)的區別:

Schemas and users help database administrators manage database security.

用戶是用來鏈接數據庫對象。而模式是用來建立管理對象的。模式跟用戶在oracle 是一對一的關係。

(不過db2卻不一樣,db2一個用戶能夠對應多個模式,db2用戶是系統,他首先必須得到系統用戶才能成爲數據庫用戶,也就是數據庫用戶就是系統用戶,只有模式纔是數據庫相似用戶。有興趣能夠去研究。這裏就不跑題了,這也是db2特有的)。

從定義中咱們能夠看出schema爲數據庫對象的集合,爲了區分各個集合,咱們須要給這個集合起個名字,這些名字就是咱們在企業管理器的方案下看到的許多相似用戶名的節點,這些相似用戶名的節點其實就是一個schema,schema裏面包含了各類對象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。

一個用戶通常對應一個schema,該用戶的schema名等於用戶名,並做爲該用戶缺省schema。這也就是咱們在企業管理器的方案下看到schema名都爲數據庫用戶名的緣由。

Oracle數據庫中不能新建立一個schema,要想建立一個schema,只能經過建立一個用戶的方法解決(Oracle中雖然有create schema語句,可是它並非用來建立一個schema的)。
在建立一個用戶的同時爲這個用戶建立一個與用戶名同名的schem並做爲該用戶的缺省shcema。即schema的個數同user的個數相同,並且schema名字同user名字一一對應而且相同,全部咱們能夠稱schema爲user的別名,雖然這樣說並不許確,可是更容易理解一些。

一個用戶有一個缺省的schema,其schema名就等於用戶名,固然一個用戶還可使用其餘的schema。若是咱們訪問一個表時,沒有指明該表屬於哪個schema中的,系統就會自動給咱們在表上加上缺省的sheman名。

好比咱們在訪問數據庫時,訪問scott用戶下的emp表,經過select * from emp;
其實,這sql語句的完整寫法爲select * from scott.emp。

在數據庫中一個對象的完整名稱爲schema.object,而不屬user.object。相似若是咱們在建立對象時不指定該對象的schema,在該對象的schema爲用戶的缺省schema。這就像一個用戶有一個缺省的表空間,可是該用戶還可使用其餘的表空間,若是咱們在建立對象時不指定表空間,則對象存儲在缺省表空間中,要想讓對象存儲在其餘表空間中,咱們須要在建立對象時指定該對象的表空間。

oracle


如下來自另外一文:


oracle模式的概念

轉自:http://hi.baidu.com/yuyumilk/item/8c6ed580247402ede496e09f

模式是一系列邏輯數據結構或者對象的集合。一個數據庫用戶擁有一個模式,模式的名字和數據庫用戶的名字相同。每一個用戶有一個單獨的模式,用戶建立的對象放在本身的模式中,這個對象叫作模式對象。

Oracle中有如下模式對象:

聚簇(clusters)
數據庫連接(database links)
觸發器(triggers)
維(dimensions)
序列(sequence)
函數(function)
存儲過程(procedures)
包(package)
同義詞(synonyms)
表(table)
索引組織表(index - organized -table)
視圖(views)
外部過程(external procedure libraries)
索引(indexes)
索引類型(index types)
java類 (java classes)
java資源(java resources )
java 源(java sources)
物化視圖(materialized views)
對象表(object table )
操做符(operators)

此外,在數據庫中還有一些其餘對象,可是這些對象不屬於模式對象,咱們把這些對象叫非模式對象,非模式對象有:

上下文(contexts)
目錄(directories)
資源限制文件(profiles)
角色(roles)
表空間(tablespaces)
用戶(users)

模式對象存儲在表空間中,可是模式對象與表空間、數據文件沒有對應關係。模式和表空間、數據文件也沒有對應關係。app

 

 

 

A用戶是表table1的屬主,B用戶要查詢table1中的數據

1、用戶A給用戶B受權查詢權限(用戶B登陸數據後能夠查詢,select * from A.table1,必須顯示寫上屬主才能查詢)

2、用戶Atable1建同義詞,查詢table1時,能夠直接select * from table1,隱藏掉table1的屬主

create orreplace  synonym   lsfapcopr.tsysparameter for   lsfapdata.tsysparameter;

 

 

 

一、屬主(owner)用簡單的話來講就是數據庫的用戶。

2Schema是數據庫對象的集合,一個用戶通常對應一個schema,該用戶的schema名等於用戶名,並做爲該用戶的缺省schema,這也是爲何程序中的schema名都爲數據庫用戶名的緣由。注意:Oracle數據庫中不能新建立一個schema,要想建立一個schema,只能經過建立一個用戶的方法解決。

3、同義詞(synonyms)從字面上理解就是別名的意思,和試圖的功能相似,就是一種映射關係。設置同義詞後,用有權限的用戶訪問時,能夠隱蔽掉user

 

 

有的人仍是對schema的真正含義不太理解,如今我再次整理了一下,但願對你們有所幫助。

咱們先來看一下他們的定義:

Aschema is a collection of database objects (used by a user.).

Schemaobjects are the logical structures that directly refer to the database’s data.

Auser is a name defined in the database that can connect to and access objects.

Schemasand users help database administrators manage database security.

從定義中咱們能夠看出schema爲數據庫對象的集合,爲了區分各個集合,咱們須要給這個集合起個名字,這些名字就是咱們在企業管理器的方案下看到的許多相似用戶名的節點,這些相似用戶名的節點其實就是一個schema,schema裏面包含了各類對象如tables,views, sequences, stored procedures, synonyms, indexes, clusters, and databaselinks。

一個用戶通常對應一個schema,該用戶的schema名等於用戶名,並做爲該用戶缺省schema。這也就是咱們在企業管理器的方案下看到schema名都爲數據庫用戶名的緣由。Oracle數據庫中不能新建立一個schema,要想建立一個schema,只能經過建立一個用戶的方法解決(Oracle中雖然有createschema語句,可是它並非用來建立一個schema的),在建立一個用戶的同時爲這個用戶建立一個與用戶名同名的schem並做爲該用戶的缺省shcema。即schema的個數同user的個數相同,並且schema名字同user名字一一 對應而且相同,全部咱們能夠稱schema爲user的別名,雖然這樣說並不許確,可是更容易理解一些。

一個用戶有一個缺省的schema,其schema名就等於用戶名,固然一個用戶還可使用其餘的schema。若是咱們訪問一個表時,沒有指明該表屬於哪個schema中的,系統就會自動給咱們在表上加上缺省的sheman名。好比咱們在訪問數據庫時,訪問scott用戶下的emp表,經過select* from emp; 其實,這sql語句的完整寫法爲select * fromscott.emp。在數據庫中一個對象的完整名稱爲schema.object,而不屬user.object。相似若是咱們在建立對象時不指定該對象的schema,在該對象的schema爲用戶的缺省schema。這就像一個用戶有一個缺省的表空間,可是該用戶還可使用其餘的表空間,若是咱們在建立對象時不指定表空間,則對象存儲在缺省表空間中,要想讓對象存儲在其餘表空間中,咱們須要在建立對象時指定該對象的表空間。

 

SQL>Gruant dba to scott

SQL>create table test(name char(10));

Tablecreated.

SQL>create table system.test(name char(10));

Tablecreated.

SQL>insert into test values('scott');

1row created.

SQL>insert into system.test values('system');

1row created.

SQL>commit;

Commitcomplete.

SQL>conn system/manager

Connected.

SQL>select * from test;

NAME

----------

system

SQL>ALTER SESSION SET CURRENT_SCHEMA = scott; --改變用戶缺省schema名

Sessionaltered.

SQL>select * from test;

NAME

----------

scott

SQL>select owner ,table_name from dba_tables where table_name=upper('test');

OWNERTABLE_NAME

------------------------------------------------------------

SCOTTTEST

SYSTEMTEST

  

表空間:

一個表空間就是一片磁盤區域,他又一個或者多個磁盤文件組成,一個表空間能夠容納許多表、索引或者簇等

每一個表空間又一個預製的打一磁盤區域稱爲初始區間(initialextent)用完這個區間厚在用下一個,知道用完表空間,這時候須要對錶空間進行擴展,增長數據文件或者擴大已經存在的數據文件

 

schema:

通常而言,一個用戶就對應一個schema,該用戶的schema名等於用戶名,並做爲該用戶缺省schema,用戶是不能建立schema的,schema在建立用戶的時候建立,並能夠指定用戶的各類表空間(這點與PostgreSQL是不一樣,PostgreSQL是能夠建立schema並指派給某個用戶)。當前鏈接到數據庫上的用戶建立的全部數據庫對象默認都屬於這個schema(即在不指明schema的狀況下),好比若用戶scott鏈接到數據庫,而後create table test(id int not null)建立表,那麼這個表被建立在了scott這個schema中;但若這樣create kanon.table test(id int notnull)的話,這個表被建立在了kanon這個schema中,固然前提是權限容許。

建立用戶的方法是這樣的:

create user 用戶名identified by 密碼

default tablespace 表空間名

temporary tablespace 表空間名

quota 限額 (建議建立的時候指明表空間名)

由此來看,schema是一個邏輯概念。

但必定要注意一點:schema好像並非在建立user時就建立的,而是在該用戶建立了第一個對象以後纔將schema真正建立的,只有user下存在對象,他對應的schema纔會存在,若是user下不存在任何對象了,schema也就不存在了;

 

 

「咱們能夠把Database看做是一個大倉庫,倉庫分了不少不少的房間,Schema就是其中的房間,一個Schema表明一個房間,Table能夠看做是每一個Schema中的牀,Table(牀)被放入每一個房間中,不能放置在房間以外,那豈不是晚上睡覺無家可歸了,而後牀上能夠放置不少物品,就比如 Table上能夠放置不少列和行同樣,數據庫中存儲數據的基本單元是Table,現實中每一個倉庫放置物品的基本單位就是牀, User就是每一個Schema的主人,(因此Schema包含的是Object,而不是User),user和schema是一一對應的,每一個user在沒有特別指定下只能使用本身schema(房間)的東西,若是一個user想使用其餘schema(房間)的東西,那就要看那個schema(房間)的user(主人)有沒有給你這個權限了,或者看這個倉庫的老大(DBA)有沒有給你這個權限了。換句話說,若是你是某個倉庫的主人,那麼這個倉庫的使用權和倉庫中的全部東西都是你的(包括房間),你有徹底的操做權,能夠扔掉不用的東西從每一個房間,也能夠放置一些有用的東西到某一個房間,你還能夠給每一個User分配具體的權限,也就是他到某一個房間能作些什麼,是隻能看(Read-Only),仍是能夠像主人同樣有全部的控制權(R/W),這個就要看這個User所對應的角色Role了。」---摘自網絡

相關文章
相關標籤/搜索