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 bocodbdefault 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
- ORACLE 表空间管理
- oracle 表空间操作
- Oracle重建表空间
- Oracle的表空间
- Oracle创建表空间
- oracle表空间
- oracle创建表空间
- oracle表空间
- oracle 表空间/分区
- Oracle表空间
- Oracle的表空间
- ORACLE增加表空间
- Oracle 表空间操作
- Oracle 表空间
- oracle建表空间
- Oracle文件,表空间
- oracle创建表空间
- ORACLE表空间管理
- 《机器学习》周志华第一章参考答案
- osgEarth加载中文路径文件与文件名TMS服务
- 后端_第五课_添加route_todo各种功能、丰富SESSION_expired、初步涉及管理员权限
- im不丢消息设计
- MySQL预处理语句深入分析
- oracle 表空间
- css 底部局中
- MCTF 第一期winwin
- Hibernate 级联更新和外键维护-自我总结
- scrapy防禁止 设置user-agent的方法
- Android RSA加密,通过模数和指数生成秘钥在加密遇到的坑
- CodePlus 2017 11 月赛 div2 题解
- 习题6.13
- 学习swift做ios程序