一、表空间和数据文件的关系
一个数据文件只能属于一个表空间,一个表空间有多个数据文件。创建表空间时必须创建数据文件,增加数据文件时必须指定表空间。 DBA可以修改数据文件。
可以通过dba_data_files
查看表空间与数据文件的关系。
二、创建表空间
1.
在实际应用中,如果使用系统创建的这些表空间会加重它们的负担,严重影响系统的I/O性能,因此Oracle建议根据实际需求来创建不同的非系统表空间,用来存储所有的用户对象和数据。创建的表空间默认是是小文件,局部盘曲管理,自动管理
2.本地化管理方式创建表空间
1.指定等同的扩展大小256k
2.扩展大小系统自动指定
3.段空间管理方式创建表空间
1.手动段空间管理方式
手工段空间管理方式是为了往后兼容而保留,它使用自由块列表和PCT_FREE与PCT_USED参数来标识可供插入操作使用的数据块。在每个INSERT或UPDATE操作后,数据库都会比较该数据块中的剩余自由空间与该段的PCT_FREE设置。如果数据块的剩余自由空间少于PCT_FREE自由空间(也就是说剩余空间已经进入系统的下限设置),则数据库就会从自由块列表上将其取下,不再对其进行插入操作。剩余的空余空间保留给可能会增大该数据块中行大小的UPDATE操作。
2.自动段空间管理方式
如果采用自动段空间管理方式,那么数据库会使用位图而不是自由列表来标识哪些数据块可以用于插入操作,哪些数据块需要从自由块列表上将其取下。此时,表空间段的PCT_FREE和PCT_USED参数会被自动忽略。
3.创建非标准块表空间
在Oracle数据库中,通常的块大小为8192字节(基本块或标准块),即8KB,但Oracle 11g允许创建块大小与基本块不同的表空间,块大小可由创建表空间时的blocksize参数指定,这样有利于存储不同大小的对象,但用户需要注意以下三点:
(1)表空间的非标准块的大小为基本块的倍数。比如,大小为16KB, 64KB,128KB。
(2)Oracle 11g通常使用SGA自动共享内存管理,因此需要设置初始化参数db_16k_cache_size=16K。
(3)这种块较大的表空间通常用来存放大对象(LOB)类型。
创建一个非标准块的表空间,块的大小为标准块的2倍
4.建立大文件表空间
大文件表空间中只有一个数据文件,所以修改时不需要指定具体的数据文件
4.维护表空间与数据文件
1.设置默认表空间
Oracle数据库在创建用户时,若不指定表空间,则默认的临时表空间是TEMP,默认的永久表空间是SYSTEM,这样会导致应用系统与Oracle系统竞争使用SYSTEM表空间,极大地影响Oracle的效率。
alter database default temporary tablespace temp_1;
alter database default tablespace temp_1;
2.更改表空间的状态
表空间有只读(read only)和可读写(read write)两种状态,若设置某个表空间为只读状态,则用户就不能够对该表空间中的数据进行DML操作(INSERT、UPDATE、DELETE),但对某些对象的删除操作还是可以进行的,比如,索引和目录就可以被删除掉;若设置某个表空间为可读写状态,则用户就可以对表空间中的数据进行任何正常的操作,这也是表空间的默认状态
3.重命名表空间
只能对普通的表空间重命名,不能对系统表空间和已处于offline状态的表空间重命名
4.删除表空间
采用Oracle Managed Files方式管理文件时,删除某个表空间后,系统自动删除表空间中的物理文件 。
including contents
删除表空间的同时删除表空间中的数据
casacde constraints
删除当前表空间时页删除相关的完整性限制
5.维护表空间中的数据文件
1.向表空间中添加数据文件,给文件支持自动扩展,扩展能力为每次5m,该文件的最大空间不受限制’
2.从表空间中删除数据文件
alter tablespace mytables_name drop datdafile 'E:\OracleFiles\my_tablespace_add.dbf'
3.对数据文件的自动扩展设置
当数据文件剩余的自由空间不足时,会按照设定的扩展量自动扩展到指定的值
三、管理撤销表空间UNDO
1.作用
1.使读写一致
在不同的进程或用户模式下检索数据时,Oracle只能给用户提供被提交的数据,这样可以确保数据的一致性。
2.可以回退事务
当执行修改(UPDATE)数据操作时,旧的数据(即UNDO数据)被存放到UNDO段,而新的数据则被存放到数据段中。
3.事务恢复
事务恢复是例程恢复的一部分,它是由Oracle服务器自动完成的,如果在数据库运行过程中出现例程失败(如断电、内存故障等),那么当重启Oracle 服务器时,后台进程SMON会自动执行例程恢复。
4.闪回操作
Oracle 11g新增了强大的闪回功能,其中,很多闪回技术都是基于UNDO段实现的,比如:闪回表、闪回事务查询、闪回版本查询等
2.初始化参数
1.UNDO_TABLESPACE
该初始化参数用于指定例程所要使用的UNDO表空间,使用自动UNDO管理模式时,通过配置该参数可以指定例程所要使用的UNDO表空间
2.UNDO_MANAGEMENT
该初始化参数用于指定UNDO数据的管理模式,如果为AUTO,则为自动撤销管理模式,如果为MANUAL,则为回滚段管理模式。需要注意的是,使用自动撤销管理模式时,如果没有配置初始化参数UNDO_TABLESPACE,Oracle会自动选择第一个可用的UNDO表空间存放UNDO数据;如果没有可用的UNDO表空间,Oracle会使用SYSTEM回滚段存放UNDO记录,并在ALTER文件中记载警告
3.UNDO_RETENTION
该初始化参数用于控制UNDO数据的最大保留时间,默认为900秒,从9i版本开始,通过配置该初始化参数,可以指定UNDO数据的保留时间,从而也决定了基于UNDO数据的闪回操作能够闪回的最早时间点。系统默认为900秒
3.基本操作
1.创建UNDO表空间
2.向表空添加新的数据文件
3.切换UNDO空间
默认的UNDO表空间是UNDOTBS1
4.删除UNDO空间
若要删除的表空间正在使用,则要将其切换出来,然后删除。
5.查询undo的信息
select tablespace_name from dba_tablespace where contents='UNDO' //查询当前实例拥有的所有表空间
select name,status from V$transaction; //显示事务的名称和状态
统计”回退块“的生成信息
四、管理临时表空间
临时表空间是一个磁盘空间,主要用于内存排序区不够而必须将数据写到磁盘的那个逻辑区域,由于该空间在排序操作完成后可以由Oracle系统自动释放,所以也称作临时表空间 使用临时文件tempfile创建,不需要备份,对它的修改不会记录到重做日志中