Oracle 11g 学习3——表空间操作
一、表空间概述
表空间是Oracle中最大的逻辑存储结构,与操作系统中的数据文件相相应;
基本表空间:一般指用户使用的永久性表空间,用于存储用户的永久性数据
暂时表空间: 主要用于存储排序或汇总过程中产生的暂时数据;
大文件表空间:用于存储大型数据(比如LOB)
非标准数据块表空间:用于在一个数据库实例中创建数据块大小不同的表空间;
撤销表空间:用于存储事务的撤销数据,在数据恢复时使用。
二、创建表空间
语法:
CREATE [ TEMPORARY | UNDO ] TABLESPACE tablespace_name
[ DATAFILE | TEMPFILE 'file_name' SIZE size K|M [ REUSE ] ]
[ AUTOEXTEND OFF|ON
[ NEXT number K|M MAXSIZE NULIMITED|number K|M ]
][,...]
[ MININUM EXTENT number K|M ]
[ BLOCKSIZE number K ]
[ ONLINE|OFFLINE ]
[ LOGGING|NOLOGGING ]
[ FORCE LOGGING ]
[ DEFAULT STORAGE storage ]
[ COMPRESS|NOCOMPRESS ]
[ PERMANENT|TEMPORARY ]
[ EXTENT MANAGEMENT DICTIONARY | LOCAL
[ AUTOALLOCATE|UNIFORM SIZE number K|M ] ]
[ SEGMENT SPACE MANAGEMENT AUTO|MANUAL ];
说明:
TEMPORARY:指定表空间为暂时表空间
UNDO:指定表空间为撤销表空间
假设不指定TEMPORARY或UNDO:表示指定的是基本表空间
tablespace_name:表空间的名称
DATAFILE:指定是基本表空间时,为表空间指定数据文件
TEMPFILE:指定是暂时表空间时。为表空间指定暂时文件
REUSE:标识文件已经存在
//对文件的设置
AUTOEXTEND :标识文件是否自己主动扩展
NEXT:标识文件下次扩展的大小
MAXSIZE:标识文件的最大容量,UNLIMITED:标识大小不受限制
MINIMUM EXTENT:标识盘区能够分配的最小容量
BLOCKSIZE:标准数据块大小(仅仅能用于标准表空间)
ONLINE: 标识创建的表空间马上可用 OFFLINE:不能马上使用
LOGGING: 生成日志记录项 NOLOGGING:不生成日志记录项
FORCE LOGGING:强制日志记录项
DEFAULT STORAGE:数据库对象默认的存储对象
COMPRESS: 压缩数据 NOCOMPRESS:不压缩
PERMANENT: 持久保存数据对象 TEMPORARY:暂时保存数据对象
EXTENT MANAGEMENT DICTIONARY:数据字典的管理方式为数据字典管理方式
LOCAL:数据字典的管理方式为本地化管理方式
AUTOALLOCATE:LOCAL管理方式时。盘区大小自己主动分配
UNIFORM SIZE :LOCAL管理方式时,盘区大小均匀分配。能够指定大小
SEGMENT SPACE MANAGEMENT :标识表空间中段的管理方式
AUTO:自己主动管理
MANUAL:人工管理
比如:
CREATE TABLESPACE myspace
DATAFILE 'E:\app\myspace\myspace.dbf'
SIZE 10M AUTOEXTEND ON NEXT 5M MAXSIZE 100M;
三、表空间状态设置
表空间的状态属性主要有:在线(ONLINE)、离线(OFFLINE)、仅仅读(READ ONLY)和读写(READ WRITE)这4种。
通过设置表空间的状态属性,能够对表空间的使用进行管理。
//1、在线
当表空间的状态为ONLINE时。才同意訪问该表空间中的数据
比如:
//改动表空间的状态为ONLINE
ALTER TABLESPACE tablespace_name ONLINE;
//2、离线
OFFLINE状态,不同意訪问该表空间中的数据。这时能够对表空间进行脱机备份。也能够相应用程序进行升级和维护等。
比如:
//将表空间状态改动为离线状态
ALTER TABLESPACE tablespace_name OFFLINE parameter;
说明:
parameter表示将表空间切换为OFFLINE状态能够使用的參数:
NORMAL: 正常方式切换。默认方式
TEMPORARY:暂时方式,Oracle在检查时不会检查数据文件是否可用
IMMEDIATE:马上方式,Oracle不会运行检查点
FOR RECOVER:以恢复方式,经常使用于基于时间恢复数据库
//3、仅仅读
仅仅能读取数据,不能进行不论什么更新或删除操作。目的是为了保证表空间的数据安全
比如:
//将表空间设置为READ ONLY
ALTER TABLESPACE tablespace_name READ ONLY;
说明:
将表空间设置为READ ONLY之前的注意事项:
-- 表空间必须处于ONLINE状态
-- 表空间不能包括不论什么事务的回退段
-- 表空间不能正处于在线数据库备份期间
//4、读写
能够对表空间进行正常訪问
比如:
//改动表空间为READ WRITE状态
ALTER TABLESPACE tablespace_name READ WRITE。
注意:改动表空间的状态为READ WRITE,也须要保证表空间处于ONLINE状态。
//查看表空间的状态
select tablespace_name, status from dba_tablespaces;
四、改动表空间
(1)、改动 表空间的大小
添加表空间的大小。详细实现时,能够採用添加数据文件的大小,也能够添加一个新的数据文件来增大表空间。
1**、改动表空间的大小
基本表空间的大小等于全部与其关联的数据文件的大小之和。当表空间大小不足时,须要添加表空间大小,详细实现,能够採用添加数据文件的大小,也能够添加一个新的数据问价来增大表空间。
//改动表空间中数据文件的大小
语法:
ALTER DATABASE DATAFILE file_name RESIZE newsize K|M;
说明:
file_name:数据文件的名称和路径
RESIZE newsize:改动数据文件的大小为newsize。
样例:
ALTER DATABASE DATAFILE 'E:\APP\MYSPACMYSPACE.DBF' RESIZE 30M;
2**、添加表空间的数据文件
语法:
ALTER TABLESPACE tablespace_name
ADD DATAFILE file_name SIZE number K|M
[ AUTOEXTEND OFF|ON
[NEXT number K|M MAXSIZE UNLIMITED|number K|M ]
][,...];
样例:
ALTER TABLESPACE myspace ADD DATAFILE 'E:\app\myspace\myspace02.dbf' SIZE 100M;
(2)、重命名表空间
改动表空间的名称,不会影响到表空间中的数据,但不能改动系统表空间system与sysaux的名称。
语法:
ALTER TABLESPACE tablespace_name RENAME TO new_tablespace_name;
说明:
注意:假设表空间的状态为OFFLINE,则无法重命名该表空间。
(3)、删除表空间
语法:
DROP TABLESPACE tablespace_name
[INCLUDING CONTENTS [AND DATAFILES ]]
说明:
INCLUDING CONTENTS:
表示删除表空间的同一时候,删除表空间中的全部数据库对象。
假设表空间中有数据库对象。则必须使用此选项。
AND DATAFILES
表示删除表空间的同一时候,删除表空间所相应的数据文件。假设不使用此选项,则删除表空间实际上仅是从数据字典和控制文件里将该表空间的有关信息删除。而不会删除操作系统中与该表空间相应的数据文件。
比如:
DROP TABLESPACE USERSPACE
INCLUDING CONTENTS AND DATAFILES;
五、改动表空间中数据文件
(1)、改动表空间数据文件的自己主动扩展性
语法:
ALTER DATABASE DATAFILE file_name AUTOEXTEND OFF|ON
[ NEXT number K|M MAXSIZE UNLIMITED|number K|M ]
比如:
ALTER DATABASE DATAFILE 'E:\APP\MYSPACE\MYSPACE02.DBF'
AUTOEXTEND ON
NEXT 5M MAXSIZE 50M;
(2)、改动表空间中数据文件的状态
数据文件主要有3种状态:ONLINE、OFFLINE和OFFLINE DROP。
ONLINE:表示联机状态,此时数据文件能够使用
OFFLINE:表示脱机状态。此时数据文件不可使用。用于数据库执行在归档模式下的情况
OFFLINE DROP:会删除数据文件,与OFFLINE一样用于设置数据文件不可用,但他用于数据库执行在非归档模式下的情况。
注:将数据文件设置为OFFLINE状态时。不会影响到表空间的状态;可是将表空间设置为OFFLINE状态时,属于该表空间的全部数据文件都被设置为OFFLINE状态。
语法:
ALTER DATABASE
DATAFILE file_name ONLINE|OFFLINE|OFFLINE DROP
样例:
ALTER DATABASE DATAFILE 'E:\APP\MYSPACE\MYSPACE02.DBF' OFFLINE;
(3)、移动表空间中的数据文件
数据文件的大小受所在磁盘空间大小的限制,当数据文件所在的磁盘空间不够时,须要将数据文件移动到新的磁盘中保存。
方法:
第一步:将对应的表空间设置为离线状态
第二步:进入磁盘。移动数据文件到新的位置,也能够改动文件名称
第三步:重命名数据文件
比如:ALTER TABLESPACE myspace
RENAME DATAFILE 'E:\APP\MYSPACE\MYSPACE02.DBF'
TO 'D:\ORACLEFILE\MYSPACE03.DBF'
第四步:将对应的表空间设置为在线状态
六、暂时表空间
//创建和改动暂时表空间
暂时表空间是一个磁盘空间,主要用于存储用户在运行ORDER BY等语句进行排序或汇总时产生的暂时数据。默认情况下,全部用户都使用temp作为默认暂时表空间。可是也同意使用其它暂时表空间作为默认暂时表空间。这须要在创建用户时指定。
创建暂时表空间时须要使用TEMPORARYkeyword,而且与暂时表空间相应的是暂时文件,由TEMPFILEkeyword指定,也就是说暂时表空间中不再使用数据文件,而使用暂时文件。
样例:
CREATE TEMPORARY TABLESPACE mytemp
TEMPFILE 'E:\app\myspace\mytemp.dbf'
SIZE 5M AUTOEXTEND ON NEXT 2M MAXSIZE 20M;
//改动暂时表空间
因为暂时文件里不存储永久性数据。仅仅存储排序等操作过程中产生的暂时数据,而且在用户操作结束后。暂时文件里存储的数据由系统删除,所以普通情况下不须要调整暂时表空间,可是当并发用户特别多。而且操作比价复杂时,可能会发生暂时表空间不足。
这时,数据库管理员能够添加暂时文件来增大暂时表空间。
假设须要添加暂时文件。能够使用ADD TEMPFILE子句。
假设须要改动暂时文件的大小。能够使用RESIZEkeyword。
还能够改动暂时文件的状态为OFFLINE或ONLINE。
//暂时表空间组
是指对多个暂时表空间组成的集合。针对集合操作
在Oracle 11g中。用户能够创建暂时表空间组。一个暂时表空间组中能够包括一个或多个暂时表空间。
暂时表空间组主要特征例如以下:
** 一个暂时表空间组必须由至少一个暂时表空间组成,而且无明白地最大数量限制。
** 假设删除一个暂时表空间组的全部成员。该组也自己主动被删除。
** 暂时表空间的名字不能与暂时表空间组的名字同样。
** 在给用户分配一个暂时表空间时能够使用暂时表空间组的名字取代实际的暂时表空间名;在给数据库分配默认暂时表空间时,也能够使用暂时表空间组的名字。
使用暂时表空间组的长处:
** 因为SQL查询能够并发使用几个暂时表空间进行排序操作。因此SQL查询非常少会出现排序空间超出,避免暂时表空间不足所引起的磁盘排序问题。
** 能够在数据库级指定多个默认暂时表空间。
** 一个并行操作的并行server将有效地利用多个暂时表空间
** 一个用户在不同会话中能够同一时候使用多个暂时表空间。
//操作暂时表空间组
1、创建暂时表空间组
仅仅须要在创建暂时表空间时,使用TABLESPACE GROUP语句为其制定一个组就可以。
样例:
CREATE TEMPORARY TABLESPACE tempgroup
TEMPFILE 'E:\app\myspace\tempgroup01.dbf' SIZE 5M
TABLESPACE GROUP group01;
2、查看暂时表空间组信息
数据字典dba_tablespace_groups
样例:
select * from dba_tablespace_groups;
3、移动暂时表空间
使用ALTER TABLESPACE 语句
样例:
ALTER TABLESPACE tempgroup TABLESPACE GROUP group02;
4、删除暂时表空间组
七、大文件表空间
//大文件表空间
大文件表空间是Oracle 10g引入的一个新表空间类型,主要用于解决存储文件大小不够的问题。与普通表空间不同的是,大文件表空间仅仅能相应唯一一个数据文件或暂时文件,而普通表空间则能够最多相应1022个数据文件或暂时文件。
尽管大文件表空间仅仅能相应一个数据文件或暂时文件,但其相应的文件可达4G个数据块大小。
而普通表空间相应的文件最大可达4M个数据块大小。
//创建大文件表空间
使用BIGFILEkeyword,并且仅仅能为其制定一个数据文件或暂时文件
普通表空间一般使用SMALLFILEkeyword表示,默认省略。
通过数据字典database_properties能够了解当前数据库默认的表空间类型。
比如:
CREATE BIGFILE TABLESPACE mybigspace
DATAFILE 'E:\app\myspace\bigspace.dbf'
SIZE 10M;
//查看表空间是否是大文件表空间
select tablespace_name, bigfile from dba_tablespaces;
//查看当前数据库默认的表空间类型
select property_name, property_value, description
from database_properties
where property_name = 'DEFAULT_TBS_TYPE';
八、非标准数据块表空间
//非标准数据块表空间
非标准(数据块)表空间。是指其数据块大小不基于标准数据块大小的表空间。
在创建表空间时,能够使用BLOCKSIZE子句,该子句用来另外设置表空间中的数据块大小,假设不指定该子句,则默认的数据块大小由系统初始化參数db_block_size决定。db_block_size參数指定的数据块大小即标准数据块大小。在数据库创建之后无法再改动该參数的值。
//创建非标准数据块表空间
Oracle 11g中同意用户创建非标准数据块表空间。使用BLOCKSIZE子句指定表空间中数据块的大小,可是必须有数据缓冲区參数db_nk_cache_size的值与BLOCKSIZE參数的值相匹配。例如以下:
BLOCKSIZE db_nk_cache_size
2KB db_2k_cache_size
4KB db_4k_cache_size
8KB db_8k_cache_size
16KB db_16k_cache_size
32KB db_32k_cache_size
//查看表空间的数据块大小
select tablespace_name, block_size from dba_tablespaces;
//创建撤销表空间
样例:
//第一步,改动 db_nk_cache_size參数
ALTER SYSTEM SET DB_16K_CACHE_SIZE = 16M;
//第二步,创建非标准表空间
CREATE TABLESPACE blockspace
DATAFILE 'E:\app\myspace\blockspace.dbf' SIZE 10M
AUTOEXTEND ON NEXT 5M
BLOCKSIZE 16K;
注意:BLOCKSIZE的值与db_nk_cache_size的參数值要相应。
九、撤销表空间
//撤销表空间
为了实现对数据回退、恢复、事务回滚以及撤销等操作。Oracle数据库提供了一部分存储空间,专门保存撤销记录,将改动前的数据保存到该空间中,所以这部分空间被称为撤销表空间。多个撤销表空间能够存在于一个数据库中,可是在不论什么给定的时间内仅仅有一个撤销表空间是能够获得的。
//创建撤销表空间
比如:
create undo tablespace undotbs
datafile 'e:\app\myspace\undo01.dbf' size 20m
autoextend on;
//改动撤销表空间的数据文件
//加入新的数据文件
alter tablespace undotbs
add datafile 'e:\app\muspace\undo02.dbf' size 10m
//改动撤销表空间的数据文件大小
alter database datafile 'e:\app\myspace\undo02.dbf' resize 15m;
//设置撤销表空间的数据文件的状态为ONLINE或OFFLINE
alter tablespace undotbs offline;
//操作撤销表空间
一个数据库中能够有多个撤销表空间。但数据库一次仅仅能使用一个撤销表空间。默认情况下,数据库使用的是系统自己主动创建的undotbs1撤销表空间。
假设将数据库使用的撤销表空间切换成其它表空间。使用ALTER SYSTEM语句改动參数undo_tablespace 的值就可以。
切换撤销表空间后。数据库中新事务的撤销数据将保存在新的撤销表空间中。
//切换表空间
alter system set undo_tablespace = undoetbs02;
在自己主动撤销记录管理方式中,能够指定撤销信息在提交之后须要保留的时间,以防止在长时间的查询过程中出现snapshot too old错误。
在自己主动撤销管理方式下,DBA使用UNDO_RESTENTION參数,指定撤销记录的表刘时间。
因为UNDO_RETENTION參数是一个动态參数。在Oracle实例的执行中,能够通过ALTER SYSTEM SET UNDO_RETENTION语句,来改动撤销记录保留的时间。
撤销记录保留时间的单位是秒,默认值为900,即15分钟。
比如。将撤销记录的保留时间改动为10分钟,例如以下:
alter system set undo_retention = 600;
show parameter undo;
//删除撤销表空间
删除撤销表空间之前。须要保证该撤销表空间不是系统正在使用的表空间。
比如:
drop tablespace undotbs02 including contents and datafiles;
//设置默认表空间
在Oracle中。用户的默认永久性表空间为system,默认暂时表空间为temp。假设全部用户都使用默认的表空间,无疑会添加system与temp表空间的竞争性。
Oracle同意使用自己定义的表空间作为默认永久性表空间。使用自己定义暂时表空间作为默认暂时表空间。
语法:
ALTER DATABASE DEFAULT [TEMPORARY] TABLESPACE tablespace_name;
说明:
使用TEMPORARYkeyword,则表示设置默认暂时表空间。假设不使用该keyword,则表示设置默认永久性表空间。
//查询默认表空间
select default_tablespace from user_users;
select property_name, property_value
from database_properties
where property_name IN ('DEFAULT_PERMANENT_TABLESPACE', 'DEFAULT_TEMP_TABLESPACE');
//创建日志文件
//创建日志文件组
语法:
ALTER DATAFILE database_name
ADD LOGFILE [GROUP group_number]
(file_name [,file_name[,...]])
[SIZE size] [REUSE];
说明:
*GROUP group_number:为日志文件组指定组编号
*file_name :为该组创建日志文件成员
*SIZE number:指定日志文件成员的大小
*REUSE :假设创建的日志文件成员已存在,能够使用REUSEkeyword覆盖已存在的文件。可是该文件不能已经属于其它日志文件组。否则无法替换。
//创建日志文件
通常是指向日志文件组中加入日志成员。须要使用ALTER DATABASE ... ADD LOGFILE MEMBER语句
比如:
alter database add logfile member
'f:\oraclefile\logfile\redo03.log'
to group 4;
//查看日志文件信息
select group#, member from v$logfile;
//创建日志文件
alter database add logfile group 4
(
'E:\app\myspace\redo01.log',
'E:\app\myspace\redo02.log'
) SIZE 10M;
Oracle 11g 学习3——表空间操作的更多相关文章
- oracle 11g数据库--创建表空间,创建用户,用户授权并指定表空间。
使用环境:我们安装完数据库后,查看以下服务是否启动 需要建库.实质上我们是建立表空间,从而进行库的还原工作. 根据本例情况,是在下面目录下进行的操作. D:\app\Administrator\ora ...
- Oracle数据库用户及表空间操作
//创建数据表空间 create tablespace test_data datafile '/u01/user_data.dbf' size 50m autoextend on next 50m ...
- oracle 基础知识(二)-表空间
一,表空间 01,表空间? Oracle数据库是通过表空间来存储物理表的,一个数据库实例可以有N个表空间,一个表空间下可以有N张表.有了数据库,就可以创建表空间.表空间(tablespace)是数据库 ...
- Oracle重建表空间操作实例
由于环境维护或者性能测试需要,经常需要对表空间进行重建操作.重建表空间操作主要分3中情况介绍,分别是业务表空间.临时表空间和回滚段表空间的重建. 重建业务表空间 由于业务规划要求,重建后的业务表空间名 ...
- ORACLE体系结构一 (逻辑结构)-表空间、段、区和数据块
一.Oracle的逻辑结构 Oracle的逻辑结构是一种层次结构.主要由:表空间.段.区和数据块等概念组成.逻辑结构是面向用户的,用户使用Oracle开发应用程序使用的就是逻辑结构.数据库存储层次结构 ...
- IMP-00003: 遇到 ORACLE 错误 959 ORA-00959: 表空间 '' 不存在
描述 在使用imp命令将dmp文件导入oracle中时,遇到如下错误: IMP: 遇到 ORACLE 错误 ORA: 表空间 'TBS_CDUSER' 不存在 IMP命令如下: IMP cduser/ ...
- SQLServer学习之表的操作
SQLServer学习之表的操作 关系数据库通常包含多个表.数据库实际上是表的集合,数据库的数据或者信息都是存储在表中的.表是对数据进行存储和操作的一种逻辑结构,每一个表都代表一个对用户意义的对象. ...
- 实例讲解Oracle数据库设置默认表空间问题
实例讲解Oracle数据库设置默认表空间问题 实例讲解Oracle数据库设置默认表空间问题,阅读实例讲解Oracle数据库设置默认表空间问题,DBA们经常会遇到一个这样令人头疼的问题:不知道谁在O ...
- Oracle数据库之创建表空间与用户
Oracle数据库之创建表空间与用户 一.创建表空间 基本语法表述: CREATE TABLESPACE tablespace_name [DATAFILE datafile_spec1 [,data ...
随机推荐
- getElementById和querySelector区别
1.常见的获取元素的方法有3种,分别是通过元素ID document.getElementById('idName');.通过标签名字document.getElementsByTagName(tag ...
- Android学习——利用RecyclerView编写聊天界面
1.待会儿会用到RecyclerView,首先在app/build.gradle(注意有两个build.gradle,选择app下的那个)当中添加依赖库,如下: dependencies { comp ...
- call by value 和 call by reference 的区别
引用自https://zhidao.baidu.com/question/340173099.html Call by Value就是传值的方式,函数调用时是把实参的值传给形参,函数调用结束后形参的值 ...
- hdu 1087 A Plug for UNIX 最大流
题意:http://www.phpfans.net/article/htmls/201012/MzI1MDQw.html 1.在一个会议室里有n种插座,每种插座一个: 2.每个插座只能插一种以及一个电 ...
- Redis入门笔记-redis内部数据结构(01)
redis是一个轻量级的Nodsql数据库,使用kev-value的形式存储数据,在redis的世界里,没有整数.浮点数等概念,大多数情况下数据以字符串形式展现,偶尔会出现Long类型数据的场景. 一 ...
- junit使用第一弹
知识点——断言 断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过. 1. 断言核心方法 assertArrayEquals(expecteds, actual ...
- 【Five-Minute Share】数据库内存分配设置
对于数据库分配的内存,经常会看到的一条准则是:将服务器75-80%的内存分配给数据库.这是一条比较常见的准则,但并不是绝对的.首先,我们需要保障操作系统运行本身所需的充足内存后,才能去考虑数据库所分配 ...
- nutz 自定义sql的使用
虽然提供了Cnd,但是用起来是觉得有点不方便,然后就直接编写Sql语句.nutz提供了一些方法. Nutz.Dao 的自定义 SQL 部分的解决方案是: // 不推荐使用 用户可以硬编码 SQL 语句 ...
- JS棋盘
有一个棋盘,有64个方格,在第一个方格里面放1粒芝麻重量是0.00001kg, 第二个里面放2粒,第三个里面放4,棋盘上放的所有芝麻的重量 <!DOCTYPE html> <html ...
- Linux常用命令速查
索引表格 命令 功能简述 目录与文件基本操作 pwd 显示当前目录 ls 列出目录和文件名称 cp 复制文件或目录 mv 移动或更名现有的文件或目录 rm 删除文件或目录 mkdir 新建目录 rmd ...