欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

oracle的表空间是什么 有大用

oracle的表空间是什么

刚接触oracle不知道表空间到底是什么意思
创建用户的时候为什么要指定表空间 有什么意义??
是不是就类似sqlserver的数据库???
数据库里面装表?

这数据文件是个什么???


badkano
推荐于2017-09-29 · 知道合伙人体育行家            
关注            
  表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中。但主要存放的是表, 所以称作表空间。
  Oracle数据库中至少存在一个表空间,即SYSTEM的表空间。
  表空间设计注意事项:
  第一步:建立表空间。
  在设计数据库的时候,首先需要设计表空间。需要考虑,是只建立一个表空间,还是需要建立多个表空间,以及各个表空间的存放位置、磁盘限额等等。
  到底设计多少个表空间合理,没有统一的说法,这主要根据企业的实际需求去判断。如企业需要对用户进行磁盘限额控制的,则就需要根据用户的数量来设置表空间。当企业的数据容量比较大,而其又对数据库的性能有比较高的要求时,就需要根据不同类型的数据,设置不同的表空间,以提高其输入输出性能。
  第二步:建立用户,并制定用户的默认表空间。
  在建立用户的时候,建议数据库管理员要指定用户的默认表空间。因为在利用CREATE语句创建数据库对象,如数据库表的时候,其默认是存储在数据库的当前默认空间。若不指定用户默认表空间的话,则用户每次创建数据库对象的时候,都要指定表空间,这不是很合理。
  另外要注意,不同的表空间有不同的权限控制。用户对于表空间A具有完全控制权限,可能对于表空间B就只有查询权限,甚至连连接的权限的都没有。所以,合理为用户配置表空间的访问权限,也是提高数据库安全性的一个方法。
 19                           
 评论(1) 
分享
 举报
xiuxiu2779
2011-06-11                
关注                
Oracle数据库经过长时间的发展,很多用户都很了解Oracle用户表空间了,这里我发表一下个人理解,和大家讨论讨论。SQL Server数据库与Oracle数据库之间最大的区别要属表空间设计。Oracle数据库开创性地提出了表空间的设计理念,这为Oracle数据库的高性能做出了不可磨灭的贡献。可以这么说,Oracle中很多优化都是基于表空间的设计理念而实现的。
  Oracle表空间之基本概念
   ORACLE数据库被划分成称作为表空间的逻辑区域——形成ORACLE数据库的逻辑结构。一个ORACLE数据库能够有一个或多个Oracle,而一个表空间则对应着一个或多个物理的数据库文件。表空间是ORACLE数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。
  每个ORACLE数据库均有SYSTEM表空间,这是数据库创建时自动创建的。SYSTEM表空间必须总要保持联机,因为其包含着数据库运行所要求的基本信息(关于整个数据库的数据字典、联机求助机制、所有回退段、临时段和自举段、所有的用户数据库实体、其它ORACLE软件产品要求的表)。
  一个小型应用的ORACLE数据库通常仅包括SYSTEM表空间,然而一个稍大型应用的ORACLE数据库采用多个表空间会对数据库的使用带来更大的方便。
  Oracle表空间之作用
  表空间的作用能帮助DBA用户完成以下工作:
  1.决定数据库实体的空间分配;
  2.设置数据库用户的空间份额;
  3.控制数据库部分数据的可用性;
  4.分布数据于不同的设备之间以改善性能;
  5.备份和恢复数据。
  用户创建其数据库实体时其必须于给定的表空间中具有相应的权力,所以对一个用户来
  说,其要操纵一个ORACLE数据库中的数据,应该:
  1.被授予关于一个或多个表空间中的RESOURCE特权;
  2.被指定缺省表空间;
  3.被分配指定表空间的存储空间使用份额;
  4.被指定缺省临时段表空间。
编辑本段控制Oracle用户表空间配额
  在一些大型的数据库应用中,我们需要控制某个用户或者某一组用户其所占用的磁盘空间。这就好像在文件服务器中,需要为每个用户设置磁盘配额一样,以防止硬盘空间耗竭。所以,在数据库中,我们也需要限制用户所可以使用的磁盘空间大小。为了达到这个目的,我们就可以通过表空间来实现。
                       

  我们可以在Oracle数据库中,建立不同的表空间,为其设置最大的存储容量,然后把用户归属于这个表空间。如此的话,这个用户的存储容量,就受到这个表空间大小的限制。当然,表空间的优势还不仅仅这些,企业对于数据库的性能要求越高,或者数据库容量越大,则表空间的优势就会越大。


                       

在一个房间里面这个房间可以存储很多箱子,箱子里面可以存储物品! 表空间可以看成房间 箱子可以看成数据文件 物品可以看成表。 用户指定表空间也就是你希望把属于这个用户的表放在那个房间(表空间)里面。
表空间是一个虚拟的概念可以无限大,但是需要由数据文件作为载体。                        


                       

一个表空间对会应一个文件
                       


如果同一个数据库下 有成百上千个表,
放在一个表空间,就相当于数据都放一个文件里,这个文件会很大
分成十个表空间,可放不同目录十个文件                        


                       

tablespace就是存放数据逻辑区域,可以建立在不同的数据文件上,并且分到不同的磁盘空间中,有利于区别用户和高效利用磁盘空间                        


                       

你可以先把它想象成文件夹,以后用户的所有操作必须在这个文件夹下进行,比如创建一个excel文件,文件就保存在这个文件下。慢慢的,你就更能明白表空间的意思的。                        


                       

表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中。但主要存放的是表, 所以称作表空间。
                       

创建用户的时候需要指定默认表空间和temp表空间,主要是为了当该用户创建对象不指定表空间时使用默认表空间来存储对象,而temp表空间是用户执行查询、排序、分组等操作时使用temp表空间来存储临时数据块                        


                       

表空间里ORACLE中的一个逻辑概念,它用于存放数据库文件,而数据库文件是存放在磁盘的数据文件,是物理概念,表空间里是后台的一个内存区域,通过它来连接到数据库文件,表空间只是一个虚拟的空间,但是它又没有实际的大小,表空间是恢复数据库的最小单元,表空间不能单独存在,它至少应该包涵一个数据库文件,可以把具有相同数据结构的数据库文件同时放到一个表空间里,而表空间用来逻辑的加以管理这些文件,可以想象成ORACLE是一个柜子,而表空间就是柜子上的空抽屉,而数据库文件就是文件夹,它放在抽屉里,嘿嘿                        


                       

ORACLE数据库被划分成称作为表空间的逻辑区域——形成ORACLE数据库的逻辑结构。一个ORACLE数据库能够有一个或多个Oracle表空间,而一个表空间则对应着一个或多个物理的数据库文件。表空间是ORACLE数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。   
                       

每个ORACLE数据库均有SYSTEM表空间,这是数据库创建时自动创建的。SYSTEM表空间必须总要保持联机,因为其包含着数据库运行所要求的基本信息(关于整个数据库的数据字典、联机求助机制、所有回退段、临时段和自举段、所有的用户数据库实体、其它ORACLE软件产品要求的表)。                        


                       

就是存放该用户表数据的地方 一般情况下默认就可以了                        


                       


                       


                       


                       


                       


                       


                       


                       


                       


                       

来自 https://zhidao.baidu.com/question/274472513.html



Oracle表空间(tablespaces)

2012-08-12 14:35  虫师  阅读(85962)  评论(4)  编辑  收藏  举报

 

  我们知道oarcle数据库真正存放数据的是数据文件(data files),Oarcle表空间(tablespaces)实际上是一个逻辑的概念,他在物理上是并不存在的,那么把一组data files 捻在一起就成为一个表空间。        

       

表空间属性:        

一个数据库可以包含多个表空间,一个表空间只能属于一个数据库

一个表空间包含多个数据文件,一个数据文件只能属于一个表空间

表这空间可以划分成更细的逻辑存储单元

 

Oracle数据库的存储结构:        

 

       

 

  从逻辑的角度来看,一个数据库(database)下面可以分多个表空间(tablespace);一个表空间下面又可以分多个段(segment);一个数据表要占一个段(segment),一个索引也要占一个段(segment )。 一个段(segment)由多个 区间(extent)组成,那么一个区间又由一组连续的数据块(data block)组成。这连续的数据块是在逻辑上是连续的,有可能在物理磁盘上是分散。        

  那么从物理的角度上看,一个表空间由多个数据文件组成,数据文件是实实在在存在的磁盘上的文件。这些文件是由oracle数据库操作系统的block 组成的。        

         

 

Segment(段) :段是指占用数据文件空间的通称,或数据库对象使用的空间的集合;段可以有表段、索引段、回滚段、临时段和高速缓存段等。

 

Extent (区间)分配给对象(如表)的任何连续块叫区间;区间也叫扩展,因为当它用完已经分配的区间后,再有新的记录插入就必须在分配新的区间(即扩展一些块);一旦区间分配给某个对象(表、索引及簇),则该区间就不能再分配给其它的对象.

查看表空间:

复制代码            
  SQL> select * from v$tablespace;
  
      TS#        NAME       INCLUD   BIGFIL   FLASHB    ENCRYP
  ---------- ------------------------------------------------------------ ------------ ------ ------
     0        SYSTEM        YES       NO       YES
     1        UNDOTBS1      YES       NO       YES
     2        SYSAUX        YES       NO       YES
      4        USERS         YES        NO       YES
     3        TEMP          NO        NO       YES
           
复制代码            

查看每个表空间有哪些数据文件:

复制代码            
  SQL> desc dba_data_files;
   Name                                      Null?    Type
   ----------------------------------------- -------- ----------------------------
   FILE_NAME                                          VARCHAR2(513)
   FILE_ID                                            NUMBER
   TABLESPACE_NAME                                    VARCHAR2(30)
   BYTES                                              NUMBER
   BLOCKS                                             NUMBER
   STATUS                                             VARCHAR2(9)
   RELATIVE_FNO                                       NUMBER
   AUTOEXTENSIBLE                                     VARCHAR2(3)
   MAXBYTES                                           NUMBER
   MAXBLOCKS                                          NUMBER
   INCREMENT_BY                                       NUMBER
   USER_BYTES                                         NUMBER
   USER_BLOCKS                                        NUMBER
   ONLINE_STATUS                                      VARCHAR2(7)
           
复制代码            

查看详细数据文件:

复制代码            
SQL> select file_name,tablespace_name from dba_data_files;
  
  FILE_NAME                                            TABLESPACE_NAME
  ----------------------------------------------------------------------------------------------------------------
  /ora10/product/oradata/ora10/users01.dbf                        USERS
  /ora10/product/oradata/ora10/sysaux01.dbf                        SYSAUX
  /ora10/product/oradata/ora10/undotbs01.dbf                        UNDOTBS1
   /ora10/product/oradata/ora10/system01.dbf                        SYSTEM
           
复制代码            

创建一个表空间:

 SQL> create tablespace paul datafile '/ora10/product/oradata/ora10/paul01.dbf' size 20m;
  
Tablespace created.  
       

查看我们创建的表空间:

复制代码            
[ora10@localhost ora10]$ pwd
  /ora10/product/oradata/ora10
  [ora10@localhost ora10]$ ls
  control01.ctl  control03.ctl  redo01.log  redo03.log    system01.dbf  undotbs01.dbf
  control02.ctl  paul01.dbf     redo02.log  sysaux01.dbf  temp01.dbf    users01.dbf
           
复制代码            

 

表空间根据对区间(extents的管理分为两种类型
       

         

词典管理表空间(Dictionary-managed tablespaces)        

    在表空间里,有的区间被占用了,有的没被占用,这些数据是放在数据字典里的。当你对这个表空间进行分配或释放的时候,数据文件里相关的表就会做修改。

 

本地管理表空间locally managed tablespace        

      本地管理表空间不是在数据词典里存储表空间的,由自由区管理的表空间。用位图来自由的管理区间。一个区间对一个位,如果这个位是1表示已经被占用,0表示未被占用。        

  词典管理空间表示“中央集权治”,本地管理表空间表示“省市自治区”,一个databases表示中国,tablespaces表示一个省或直辖市。词典管理统一由中央调配。而本地管理表示有高度的自治权利,自己各种资源的分配不用上报中央。        

 

 

Undo  tablespace        

  Undo 类型的表空间,当你对一张表或一条记录进行修改的时候,它会对修改之前的信息进行保存,这样可以保证数据的回滚。Undo 只包含undo类型的对象,不能包含任何其他对象,只适合于数据文件和区间管理。        

创建undo 类型的表空间:        

 SQL>create undo tablespace  undo1 datafile '/ora10/product/oradata/ora10/paul01.dbf' size 20m;        

         

         

Temporary  Tablespaces        

   临时表空间,相当于一个临时的垃圾场。用于排序操作,比如你要做一次大数据量的查询,但在内存无法存储这么大量的数据,然后会在磁盘上建立一个临时的表空间用记存放这些数据。Oracle就会用这个临时表空间做排序,存储中间结果。        

一个全局的临时表空间,可以由多个用户共享,谁需要谁使用。但它只能存放临时的数据,不能包含任何永久性对象。 建议用本地管理方式创建这个表空间。

创建临时表空间:

 SQL>create temporary tablespace  temp datafile '/ora10/product/oradata/ora10/paul01.dbf' size 20m  extent management local uniform size 4m;        

  

删除表空间:        

删除表空间,使用命令drop tablespace ‘表空间名’  但是有3个选项需要注意:

INCLUDING CONTENTS:指删除表空间中的segments;

INCLUDING CONTENTS AND DATAFILES:指删除segments和datafiles;

CASCADE CONSTRAINTS:删除所有与该空间相关的完整性约束条件。

例:

DROP TABLESPACE FESCO ‘表空间名’ CONTENTS AND DATAFILES CASCADE CONSTRAINTS;        


来自 https://www.cnblogs.com/fnng/archive/2012/08/12/2634485.html



数据库、表空间、表都什么什么意思?????(急)

zfd2004-04-07 09:08:19                            
小弟我刚接触oracle,我以前用的是sql server 和mysql,但那里只有数据库和表,但在oracle里有库,表空间,表,而且安装时说要添加全局数据库名sid,那个是干什么的,是不是全局数据库只能有一个,其他再建库的话,就不能是全局的了,还是全局数据库是对一个库来说的啊????
574点赞收藏16                
分享
               
 写回复                
16 条回复
 切换为时间正序        
当前发帖距今超过3年,不再开放新的回复
发表回复
                       
smallcrocodile 2004-07-05                                
数据库如果是一栋房子的话,表空间就是一间房间,表就是一个衣柜                                
                               
                       
dinya2003 2004-07-05                                
表空间是逻辑概念,便于数据文件的组织和管理,表空间总是和一个或多个数据文件相对应.每个数据文件可以对应一个或多个数据库对象,表或视图等等.
一个机器上可以同时建有几个数据库实例.
                               
                               
                       
Arockroll 2004-07-04                                
我的QQ:362895966
欢迎一起OK
                               
                               
                       
leexiaotian 2004-07-04                                
不错,不错,学习                                
                               
                       
Arockroll 2004-07-04                                
表空间: 是你的数据实际保存的地方,要机器上,有实际的文件,表空间也有多种类别,如索引表空间等
表:是你登录进ORACLE后所能看到的你自己建立的表,表可能通过ORACLE图形化工具建立,也可以在SQLPLUS中用SQL语言/脚本创建;在机器上是看不到表这个东西的,所有的东西全在表空间中
数据库:是一个总称,他包含表,表空间,索引,用户名以及与之相关的一切东西,你可以这样来理解,他只是一个代码,通过这个代码你可以把你的资料以ORACLE的方式存入电脑,并可能按照要求操作你的数据
数据库可以创建任意个,一般情况下,全局数据库ID只能是一个,如果你在LINUX下装过ORACLE对这个概念就有了解
正常使用数据库的一般情况:
1:安装,配置,建立连接符号(其实就是我们直观上的数据库)
2:创建表空间(数据表空间,索引表空间),也可以不创建,让他全在系统表空间中
3:创建用户,创建用户时确定把用户放在哪个表空间下,不指定要在系统表空间中,(也就是说你用这个用户登录进ORACLE时默认使用的表空间就是你指定的表空间)
3:用创建的用户建表,操作等等
4:对用户授权
5:对用的表授权(一个用户,自己用则不用)
6:在ORACLE中,要用不同用户的表,不同的表空间都要授权,有些要用系统用户,有些是OWNER
                               
                               
                       
clning 2004-07-04                                
我感觉大家回答问题的时候,没有理解楼主的意思,因为我也是和楼主相同的问题,看完各位大虾的回答,感觉还是不明白,例如oracle和sql server数据库的区别,在sql server中不用的项目,需要建立不同的数据库,但是在一个oracle数据库(同一个sid),只是建立不同的表空间就可以拉                                
                               
                       
zfd 2004-04-08                                
那照大家的意思就是说,全局数据库名,其实也可以说就是数据库的名字。只不过全局数据库名是数据库名加上网络域名。
                               
                               
                       
welyngj 2004-04-07                                
表空间物理上是有数据文件组成的。表空间是逻辑概念                                
                               
                       
welyngj 2004-04-07                                
是不是每建一个数据库就应该有一个全局数据库名啊???
-------------------------------------------------
是的。
                               
                               
                       
welyngj 2004-04-07                                
应该可以建很多。                                
                               
                       
zfd 2004-04-07                                
那我的机器里允许有几个全局数据库名啊????是不是每建一个数据库就应该有一个全局数据库名啊???                                
                               
                       
welyngj 2004-04-07                                
那些数据库是随便建的,而且里面只有表
-------------------------------------
sqlserver里,不仅仅有表,还有视图,索引,约束,触发器。

oracle也是一样。不过oracle的对象比sqlserver多罢了。oracle有同义词,sqlserver没有。
oracle有分区表,sqlerver没有。等等
                               
                               
                       
zfd 2004-04-07                                
我还是不明白,那如果我把我的机器做为服务器,我可以建几个数据库,几个全局数据库名啊,还有表空间,和表他们都有什么区别,我感觉和sql server那些数据库不一样呢,那些数据库是随便建的,而且里面只有表                                
                               
                       
welyngj 2004-04-07                                
全局数据库名是数据库名加上网络域名。                                
                               
                       
welyngj 2004-04-07                                
A database is divided into logical storage units called tablespaces, which group related logical structures together. For example, tablespaces commonly group all of an application's objects to simplify some administrative operations.

一个数据库被分开成逻辑存储单元叫做表空间,它有相关的逻辑结构一起组成。
Tables are the basic unit of data storage in an Oracle database. Data is stored in rows and columns
表是数据存储的基本单元。数据存储在行和列中
                               
                               
                       
welyngj 2004-04-07                                
An Oracle database is a collection of data that is treated as a unit. The purpose of a database is to store and retrieve related information. The database has logical structures and physical structures。Because the physical and logical structures are separate, the physical storage of data can be managed without affecting the access to logical storage structures
一个oracle数据库是被看作为一个单元的数据的集合。数据库的目的是存储和获取相关的信息。数据库有逻辑结构和物理结构。因为物理结构和逻辑结构是分开的,物理数据的存储可以被管理而不影响逻辑存储结构的访问。
                               

来自 https://bbs.csdn.net/topics/50282621


Oracle表空间

       

一、概念

Oracle表空间(tablespaces)是一个逻辑的概念,真正存放数据的是数据文件(data files)。一个Oracle数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件。表空间是Oracle数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。

1.Oracle表空间的特性:

(1)控制数据库数据磁盘分配;

(2)限制用户在表空间中可以使用的磁盘空间大小;

(3)表空间具有 online, offline, readonly, readwrite属性。

2.表空间的分类:

永久表空间:数据库中要永久化存储的一些对象,如:表、视图、存储过程

临时表空间:数据库操作当中中间执行的过程,执行结束后,存放的内容会被自动释放

UNDO表空间:用于保存事务所修改数据的旧值,可以进行数据的回滚


           

Segment(段)是指占用数据文件空间的通称,或数据库对象使用的空间的集合;段可以有表段、索引段、回滚段、临时段和高速缓存段等。

Extent(区间/扩展),分配给对象(如表)的任何连续块叫区间;区间也叫扩展,因为当它用完已经分配的区间后,再有新的记录插入就必须在分配新的区间(即扩展一些块);一旦区间分配给某个对象(表、索引及簇),则该区间就不能再分配给其它的对象.

               
结构图
               
datafile、segment、extend关系图

二、相关视图

select * from dba_data_files;   --describes database files  数据文件信息
select * from dba_temp_files;   --describes all temporary files (tempfiles) in the database 临时数据文件信息
select * from dba_free_space;   --describes the free extents in all tablespaces in the database 数据库中所有表空间中的空闲扩展区
select * from dba_segments;     --describes the storage allocated for all segments in the database 数据库中的所有段分配的存储
           
           
           
           

三、相关操作

1.创建表空间

--语法:
create [temporary] tablespace tablespace_name tempfile|datafile ‘xx.dbf’ size xx;
--创建临时表空间时,加上temporary关键字;
           

2.扩大表空间,当某个表空间被用完以后,就不能再对数据库表进行insert操作,此时我们需要扩大表空间,即可通过增加datafile文件来扩大表空间。

select f.* from dba_data_files f where f.tablespace_name='MLT';--查看表空间信息

alter tablespace MLT --表空间名
     add datafile '/home/oracle/oradata/crm/mlt04.dbf'  --datafile文件路径
     size 100M --表空间大小
     autoextend on --自动扩展
           
           


           

3.修改表空间的状态

alter tablespace tablespace_name online|offline;--表空间是脱机时不可用,默认是联机的
           

4.删除表空间

drop tablespace tablespace_name[including contents];
--including contents 表示删除表空间包括datafile数据文件,不加则不删除相关数据文件;
--删除数据文件时,不能删除表空间当中第一个数据文件,如果要删除就需要删除整个表空间。
           


5.表空间使用情况查看

--查询表空间使用情况
SELECT Upper(F.TABLESPACE_NAME)         "表空间名",
       D.TOT_GROOTTE_MB                 "表空间大小(M)",
       D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
       To_char(Round(( D.TOT_GROOTTE_MB - F.TOTAL_BYTES ) / D.TOT_GROOTTE_MB * 100, 2), '990.99')
       || '%'                           "使用比",
       F.TOTAL_BYTES                    "空闲空间(M)",
       F.MAX_BYTES                      "最大块(M)"
FROM   (SELECT TABLESPACE_NAME,
               Round(Sum(BYTES) / ( 1024 * 1024 ), 2) TOTAL_BYTES,
               Round(Max(BYTES) / ( 1024 * 1024 ), 2) MAX_BYTES
        FROM   SYS.DBA_FREE_SPACE
        GROUP  BY TABLESPACE_NAME) F,
       (SELECT DD.TABLESPACE_NAME,
               Round(Sum(DD.BYTES) / ( 1024 * 1024 ), 2) TOT_GROOTTE_MB
        FROM   SYS.DBA_DATA_FILES DD
        GROUP  BY DD.TABLESPACE_NAME) D
WHERE  D.TABLESPACE_NAME = F.TABLESPACE_NAME

--查询表空间的空闲扩展区
select tablespace_name, count(*) AS extends,round(sum(bytes) / 1024 / 1024, 2) AS 大小/MB
,sum(blocks) AS blocks 
from dba_free_space group BY tablespace_name;

--查询表空间的总容量
select tablespace_name, sum(bytes) / 1024 / 1024 as MB 
from dba_data_files group by tablespace_name;
--查询表空间使用率
SELECT total.tablespace_name,
       Round(total.MB, 2)           AS   总量/MB,
       Round(total.MB - free.MB, 2) AS  已使用/MB,
       Round(( 1 - free.MB / total.MB ) * 100, 2) || '%'                  AS  使用率
FROM   (SELECT tablespace_name,
               Sum(bytes) / 1024 / 1024 AS MB
        FROM   dba_free_space
        GROUP  BY tablespace_name) free,
       (SELECT tablespace_name,
               Sum(bytes) / 1024 / 1024 AS MB
        FROM   dba_data_files
        GROUP  BY tablespace_name) total
WHERE  free.tablespace_name = total.tablespace_name;
           


           

发布于 2018-11-03
           
           
           
               

文章被以下专栏收录

推荐阅读


来自 https://zhuanlan.zhihu.com/p/48446222



什么是表空间


terryhuang 2007-05-17 16:37:00  5742  收藏 2

分类专栏: [分类11]oracle 文章标签: oracle 磁盘 语言

版权


[分类11]oracle

专栏收录该内容

50 篇文章0 订阅

订阅专栏


ORACLE物理上是由磁盘上的以下几种文件:数据文件和控制文件和LOGFILE构成

的.............

这里讨论表空间........就只谈相关的数据文件吧..............控制文件和

LOGFILE的具体用途有空了再说吧..................

首先明确概念:表空间是ORACLE内部定义的一个概念,是为了统一ORACLE物理和逻辑

上的结构而专门建立的,从物理上来说,一个表空间是由具体的一个或多个磁盘上数

据文件构成的(至少1对1,可以1对多),从逻辑上来说一个表空间是由具体的一个或

多个用户模式下的表,索引等等里面的数据所构成的.............


因此从用户的角度来看是不应该看到磁盘上物理的数据文件的,其从小到大的视角是

这样的关系:

字段值 --> 记录值 --> 表数据 --> 用户 --> 表空间 --> ORACLE

而从一个ORACLE DBA的视角来看应是这样的关系:

数据文件 --> 表空间 --> ORACLE  


综合一下,也就是说在ORACLE中表不可能单独存在,一定隶属于某一个用户,而某一

用户的数据必定存在于某个表空间中................


当然,上面我是用最通俗的语言介绍的............

实际上来说中间还存在很多技术术语和概念,比如说SEGMENTS,EXTENTS,BLOCK等

等...

————————————————

来自 https://blog.csdn.net/guo_cw/article/details/80530726



Oracle表空间概念详解


疯狂的咸鸭蛋 2018-05-31 21:51:30  14977  收藏 18

分类专栏: Linux学习笔记 数据库 文章标签: Oracle Dataspace

版权


Linux学习笔记

同时被 2 个专栏收录

9 篇文章0 订阅

订阅专栏


数据库

10 篇文章0 订阅

订阅专栏


表空间概念详解

1.使用系统用户登录SQL Plus:

sys,system;sysman;scott

用户登录格式:[username/password] [@server] [as sysdba|sysoper]

                        system/orcl @orcl as sysdba 


                        备注:orcl 就是自己设置的服务名system/orcl


如果已经使用某个用户登录了SQL Plus,切换登录用户:

                        connect sys/orcl as sysdba 


                        备注:书写不区分大小写


2. 查看登录用户

show user 


备注:sqlplus 中输入的命令不需要分号,当输入的是sql语句时需要加分号


通过”数据字典”—dba_users(数据库提供的表,也是由很多的字段组成)查看用户的其他字段信息

查看数据字典中的字段:


desc dba_users

通过数据字典查看有多少个用户:


select username from dba_users;

3. 启用(scott)用户的语句:

使用scott用户登录sqlplus:(scott用户的默认密码是tiger)

connect scott/tiger

4. 表空间概述:

表空间:


        数据库的逻辑存储空间,可以理解为在数据库中开辟的空间用来存储数据库对象;


表空间和数据文件的关系:


        表空间由一个或多个数据文件组成;数据文件的大小和位置可以自己定义;


表空间的分类:

    永久表空间:数据库中要永久化存储的一些对象,如:表、视图、存储过程

    临时表空间:数据库操作当中中间执行的过程,执行结束后,存放的内容会被自动释放

    UNDO表空间:用于保存事务所修改数据的旧值,可以进行数据的回滚

5. 查看用户的表空间:

①数据字典


dba_tablespaces(系统管理员级别查看的数据字典)


user_tablespaces(普通用户查看的数据字典)


②.查看表空间的字段

desc dba_tablespaces

③.查看有几个表空间

select tablespace_name from dba_tablespaces; 

⑤.查看用户的字段信息

desc dba_users

⑥.查看用户的默认表空间、临时表空间等等

select default_tablespace from dba_users where username=’SYS’;

6. 设置用户的默认或临时表空间

alter user username default|tempporart tablespace tablespace_name;

 备注:普通用户没有设置表空间的权限

7. 创建、修改、删除表空间

①.创建表空间

create [temporary] tablespace tablespace_name tempfile|datafile ‘xx.dbf’ size xx;

备注:如果创建的是临时表空间,需要加上temporary关键字;

②.查看表空间的具体路径:(通过dba_data_files 和 dba_temp_files这个数据字典)

desc dba_data_files

select file_name from dba_data_files where tablespace_name=”;(条件是表空间的名字,需要大写)

③.修改表空间的状态

设置联机或脱机的状态(表空间是脱机时不可用,默认是联机的)

alter tablespace tablespace_name online|offline;

如何知道表空间所处的状态?(通过这个dba_tablespaces数据字典)

desc dba_tablespaces

select status from dba_tablespaces where tablespace_name=”;(条件是表空间的名字,需要大写)

设置只读或可读写的状态(只有在联机状态才可以更改,默认的联机状态就是读写状态)

alter tablespace tablespace_name read only | read write;

④.修改数据文件

增加数据文件

alter tablespace tablespace_name add datafile ‘xx.dbf’ size xx;

select file_name from dba_data_files where tablespace_name=”;(条件是表空间的名字,需要大写)

备注:通过这条select语句就查询到当前表空间中的数据文件

删除数据文件(不能删除表空间当中第一个数据文件,如果要删除就需要删除整个表空间)

alter tablespace tablespace_name drop datafile ‘xx.dbf’;

⑤.删除表空间

drop tablespace tablespace_name[including contents];

备注:如果只是删除表空间不删除该表空间下的数据文件,则不加including contents;

————————————————


来自 https://blog.csdn.net/guo_cw/article/details/80530726



普通分类: