oracle 表空间

来源:互联网 发布:永利国际中心 商业数据 编辑:程序博客网 时间:2024/06/05 16:48

我们知道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 RIVERCHECKloggingdatafile 'F:\Oracle\TABLESPACE\RIVERCHECK.ora' size 32m autoextend on next 32m maxsize 2048mextent management local;  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 RIVERCHECK INCLUDING CONTENTS AND DATAFILES;


为用户指定表空间

SQL>

create user bocodb identified by bocodb
default tablespace bocodbdbs
temporary tablespace bocodbtempdbs;

为用户授权:

SQL> GRANT CONNECT,RESOURCE TO NEWUSER;  --表示把 connect,resource权限授予news用户

SQL> GRANT DBA TO NEWUSER;  --表示把 dba权限授予给NEWUSER用户

    授权成功。

    OK! 数据库用户创建完成,现在你就可以使用该用户创建数据表了!

若不创建表空间

创建表格时,如果不指定所用的表空间,按照以下顺序使用用户的默认表空间。
1)创建用户时指定的默认表空间。
create user test identified by oracle default tablespace users;
2)创建数据库是指定的默认表空间。可以通过以下语句修改:
alter database default tablespace users;
如果创建用户时,不指定默认的tablespace,
则此用户则会以数据库的默认表空间作为默认表空间。
如果1)和2)都没有设置,会使用system表空间。

表空间相关sql

-------------数据表管理
select rownum nm_sid,table_name,num_rows from v_user_tables
select rownum nm_sid,table_name,num_rows from user_tables
-------------数据库状态
-------1.实例状态
 select instance_name,host_name,startup_time,status,database_status from v$instance;---实例状态
 select name,log_mode,open_mode from v$database;--实例状态
-------2.监听状态
 --2.1控制档状态
  select status,name from v$controlfile;
  select * from v$controlfile
 --2.2在线日志状态
 select group#,status,type,member from v$logfile;
 ----3.表空间状态
 select tablespace_name,status from dba_tablespaces  
select * from user_tablespaces  ;
select rownum nm_sid,tablespace_name,status from dba_tablespaces  ;
--3.1表空间名称和大小
SELECT a.tablespace_name 表空间名,
                          ROUND(total / (1024 * 1024 * 1024), 4) 表空间大小,
                          ROUND(free / (1024 * 1024 * 1024), 4) 表空间剩余大小,
                          ROUND((total - free) / (1024 * 1024 * 1024), 4) 表空间使用大小,
                          round((total - free) / total, 4) * 100 使用率
                     FROM (SELECT tablespace_name, SUM(bytes) free
                             FROM dba_free_space
                            GROUP BY tablespace_name) a,
                          (SELECT tablespace_name, SUM(bytes) total
                             FROM sys.dba_data_files
                            GROUP BY tablespace_name) b
                    WHERE a.tablespace_name = b.tablespace_name




原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 扣扣号有密码无法加好友怎么办 扣扣帐号忘记了怎么办 扣扣帐号被冻结怎么办 xp忘了开机密码怎么办 手机怎样知道好友qq密码怎么办 找回微信密码申诉失败怎么办 若微信号被盗钱怎么办 微信号被倒了怎么办 微信支付密码忘了怎么办 微信钱包密码忘了怎么办 忘记qq锁屏密码怎么办 微信里保密柜密码忘记了怎么办 qq漫游记录密码忘了怎么办 当你很烦的时候怎么办 当你烦的时候怎么办 面对刁蛮不讲理的老婆怎么办 老是想以前的事怎么办 被心机婊陷害了怎么办 分手了还被骚扰怎么办 苹果手机屏幕出现冷暖屏怎么办 我感觉媳妇不漂亮怎么办 90后赚不到钱怎么办 处对象感觉好累怎么办 谈朋友感觉好累怎么办 家庭条件不好娶老婆难办怎么办? 异地恋闹矛盾了怎么办 有人威胁要杀我全家怎么办 分手了借我的钱怎么办 脸打架打肿了怎么办 人家不加我qq好友怎么办 一个好友被删了怎么办 dnf脸黑怎么办还有办法 我想登别人微信怎么办 昌硕工资没到怎么办 昌硕离职不批怎么办 昌硕工资不到卡怎么办 上海人去苏州工作社保怎么办 娶个个脾气暴躁的媳妇怎么办 满脸的黑头痘痘怎么办 脚底磨起泡不敢走路怎么办 老婆老是找异性朋友怎么办