Oracle表空间和数据⽂件
多个表空间的优势:
1.能够将数据字典与⽤户数据分离出来,避免由于字典对象和⽤户对象保存在同⼀个数据⽂件中⽽产⽣的I/O冲突
2.能够将回退数据与⽤户数据分离出来,避免由于硬盘损坏⽽导致永久性的数据丢失
3.能够将表空间的数据⽂件分散保存到不同的硬盘上,平均分布物理I/O操作
4.能够将某个表空间设置为脱机状态或联机状态,以便对数据库的⼀部分进⾏备份和恢复
5.能够将某个表空间设置为只读状态,从⽽将数据库的⼀部分设置为只读状态
6.能够为某种特殊⽤途专门设置⼀个表空间,⽐如临时表空间等,以优化表空间的使⽤效率
7.能够更佳灵活的为⽤户设置表空间限额
SYSTEM表空间内存储:
1.数据库的数据字典
2.所有PL/SQL程序的源代码和解析代码
3.数据库对象的定义
(所有表空间的数据⽂件总和不能超过创建数据库时指定的maxdatafiles参数的限制)
本地管理表空间:
1.在存储分配过程中不需要访问数据库,可以提⾼存储分配操作的速度
2.能够避免在表空间的存储管理操作中产⽣的递归现象
3.不会产⽣重做和撤销记录
4.简化DBA对表空间的管理操作
5.降低⽤户对数据字典的依赖性
字典管理⽅式的表空间:
表空间中所有存储空间的管理信息都保存在数据字典中,在进⾏存储空间管理时会产⽣回退和重做记录
本地管理⽅式的表空间:
表空间中所有存储空间的管理信息都保存在数据⽂件头部的位图中
(在9i中创建表空间默认就是本地管理⽅式.8i以前的版本,只能⽤字典管理⽅式的表空间.)
创建表空间(字典管理⽅式)
create tablespace dmusertbs
datafile 'i:\oracle\oradata\dmusertbs.dbf' size 50M
extent management dictionary;
多个数据⽂件(字典管理⽅式)
create tablespace dmusertbs
datafile 'i:\oracle\oradata\dmusertbs01.dbf' size 50M,
关于爱情的一段话'i:\oracle\oradata\dmusertbs02.dbf' size 50M,
'i:\oracle\oradata\dmusertbs03.dbf' size 50M
extent management dictionary;
指定默认存储参数(字典管理⽅式)
create tablespace dmusertbs
datafile 'i:\oracle\oradata\dmusertbs.dbf' size 50M
default storage(
initial 256K
next 256K
minextents 2
pctincrease 0
maxextents 4096)
minimum extent 128K
logging
online
permanent
extent management dictionary;
创建表空间(本地管理⽅式)
datafile 'i:\oracle\oradata\lmusertbs.dbf' size 50M
extent management local autoallocate;
(oracle对区的分配进⾏⾃动管理,这是默认的设置,在autoallocate⽅式下, 表空间中最⼩的区为64K)
datafile 'i:\oracle\oradata\lmusertbs.dbf' size 50M
什么古装电视剧好看extent management local uniform size 512K;
(所有的区必须具有统⼀的⼤⼩,Uniform⽅式带来的最⼤优点是在表空间中不会产⽣任何存储碎⽚,
如果在uniform关键字后⾯没有指定size参数的值,SIZE参数将使⽤1MB做为默认值)
datafile 'i:\oracle\oradata\lmusertbs.dbf' size 50M
extent management local uniform size 512K
segment space management auto;
(具有⾃动段存储管理⽅式的表空间)
创建临时表空间(字典管理⽅式)
⼀个临时表空间可以被多个数据库⽤户共享, oracle只会为⼀个实例创建⼀个临时段,这个临时段被实
例中所有的排序操作共享使⽤,但是临时段中的每⼀个区只能由⼀个事务使⽤.临时段在数据库启动后执⾏第⼀次排序操作时被创建.
注意:字典管理⽅式的临时表空间可以象普通表空间那样使⽤ alter tablespace 来进⾏更改
建议将initial和next参数设置成相同的值,并且应当是初始化参数sort_area_size和db_block_size
两个值之和的整数倍,pctincrease参数应当设置成0
create tablespace usertemp
datafile 'i:\oracle\oradata\sort01.dbf' size 50M
extent management dictionary
default storage(
initial 192K
next 192K
minextents 1
pctincrease 0)
temporary;
创建临时表空间(本地管理⽅式,区的分配管理⽅式只能是uniform)
(在Oracle 9i中,强烈建议使⽤本地管理⽅式的临时表空间来代替字典管理⽅式的临时表空间)
create temporary tablespace lmtemp
tempfile 'i:\oracle\oradata\lmtemp01.dbf' size 50M
extent management local uniform size 136K
(必须使⽤tempfile⼦句,tempfile为临时数据⽂件,与普通数据⽂件相⽐,临时数据⽂件不能⽤alter database来创建)
对于本地管理⽅式的临时表空间,alter tablespace语句的作⽤仅仅是为临时表空间添加新的临时⽂件.
增加新的临时⽂件
alter tablespace lmtemp
add tempfile 'i:\oracle\oradata\lmtemp02.dbf' size 50M
(对于本地管理⽅式的表空间,alter tablespace语句的作⽤仅仅是为临时表空间添加新的临时⽂件,⽽不能对临时表空间进⾏其它任何修改)
表空间的管理主要包括修改默认存储参数,⼿⼯合并碎⽚,设置表空间的可⽤性等⼏个⽅⾯。尽量让表空间使⽤较少的数据⽂件,因为在某些操作系统中对⼀个进程可以同时打开的系统⽂件数量进⾏限制,由此会影响到同时处于联机状态的表空间数量。
修改表空间的默认存储参数
alter tablespace duusertbs
default storage(
next 128K
maxextents unlimited
pctincrease 20);
(表空间创建之后不能对initial和minextents参数进⾏修改)
如果表空间的默认存储参数pctincrease不为0,oracle将定期启动SMON后台进程,合并表空间相邻的存储碎⽚,
如果pctincrease是0,SMON进程不会执⾏合并操作.
如果表空间中所有的区都具有相同的⼤⼩,则不需要⼿⼯合并存储碎⽚.
本地管理⽅式的表空间不需要进⾏存储碎⽚的合并操作,因为oracle会⾃动利⽤位图⾃动合并.
只需要在字典管理⽅式的表空间中⼿⼯合并存储碎⽚.
alter tablespace dmusertbs coalesce
(如果使⽤了coalesce⼦句,则不能在使⽤其它任何⼦句)
利⽤下⾯的查询可以看到表空间users中存在哪些存储碎⽚
SQL> select block_id,bytes,blocks
2 from dba_free_space
3 where tablespace_name='users'
4 order by block_id;
改变表空间的可⽤性:
1.alter tablespace user01 offline normal(正常⽅式)
oracle会执⾏⼀次检查点,将SGA区中与该表空间相关的脏缓存块都写⼊数据⽂件中,然后再关闭表空间对应的数据⽂件,下⼀次将表空间。恢复为联机状态时,不需要进⾏数据库恢复.
2.alter tablespace user01 offline temporary(临时⽅式)
oracle执⾏检查点的时候并不会检查各个数据⽂件的状态,即使某些数据⽂件不可⽤,oracle也会忽视这些错误,下⼀次将表空间恢复为联机状态时,可能需要进⾏数据库恢复.如果数据⽂件可⽤,oracle会将与该表空间相关的脏缓存块都写⼊数据⽂件中.
3.alter tablespace user01 offline immediate(⽴即⽅式)
oracle不会执⾏检查点,也不会检查各个数据⽂件的状态,⽽是直接将属于表空间的数据⽂件设置成
脱机状态,下⼀次将表空间恢复为联机状态时,需要进⾏数据库恢复.运⾏在noarchivelog⽅式下的数据库不允许⽤这种⽅式切换到脱机状态.
恢复表空间为联机状态
alter tablespace user01 online;
设置表空间为只读状态
清明节的好词好句alter tablespace user01 read only
设置表空间为读写状态
alter tablespace user01 read write
删除表空间(不包括对应的数据⽂件)
drop tablespace users including contents;
删除表空间(包括对应的数据⽂件)
drop tablespace users including contents and datafiles;
表空间数据字典
v$tablespace 控制⽂件中获取的表空间的名称和编号信息
v$datafile 控制⽂件中获取的数据⽂件的名称和编号信息
v$tempfile 所有临时数据⽂件的基本信息
v$sort_segment 实例所创建的排序区的信息
v$sort_user 排序区的⽤户使⽤情况信息
dba_tablespaces 数据库中表空间的名称和编号信息
dba_segments 表空间中段的信息
dba_extents 表空间中区的信息
dba_free_space 表空间中空闲区的信息
dba_data_files 数据⽂件亦即所属表空间的信息
dba_temp_files 临时数据⽂件亦即所属表空间的信息
包括为表空间添加新的数据⽂件,更改已有数据⽂件的⼤⼩,名称或者位置。初始化参数db_files指定在SGA区中能够保存的数据⽂件信息的最⼤数量,也就是⼀个实例所能⽀持的数据⽂件的最⼤数量,能够在实例运⾏过程中修改它.
1. 创建表空间lmusertbs时将数据⽂件设置为⾃动增长⽅式
create tablespace lmusertbs
datafile 'i:\oracle\oradata\lmusertbs01.dbf' size 50M
autoextend on
next 5M
maxsize 500M
extent management local;
(next参数指定每次⾃动增长的⼤⼩,maxsize为数据⽂件的最⼤⼤⼩)
2. 在表空间lmusertbs上添加⼀个⾃动增长⽅式的数据⽂件
alter tablespace lmusertbs
add datafile 'i:\oracle\oradata\lmusertbs02.dbf' size 50M
autoextend on
next 5M
maxsize 500M;
3.如果数据⽂件已经创建,将它设置成⾃动增长⽅式
alter database
datafile 'i:\oracle\oradata\dmusertbs01.dbf'
autoextend on
next 5M
maxsize 500M;
4.取消已有数据⽂件的⾃动增长⽅式
alter database观看烟花爆竹至少距离
datafile 'i:\oracle\oradata\dmusertbs01.dbf'
autoextend off;
光遇心之灵在哪5.⼿⼯改变数据⽂件的⼤⼩:
将数据⽂件dmusertbs01.dbf增⼤为500MB
alter database datafile 'i:\oracle\oradata\dmusertbs01.dbf' resize 500M;
单独改变数据⽂件的可⽤性(数据库运⾏在归档模式下):
alter database datafile 'i:\oracle\oradata\dmusertbs01.dbf' online;(联机状态)
alter database datafile 'i:\oracle\oradata\dmusertbs01.dbf' offline;(脱机状态)
单独改变数据⽂件的可⽤性(数据库运⾏在不归档模式下):
alter database datafile '/u02/oracle/oradata/user01.dbf' offline drop;
⽤offline drop可以确保使数据⽂件脱机时⽴即丢掉
6.改变数据⽂件的名称和位置:
A.要改变的数据⽂件属于同⼀个表空间
1.将包含数据⽂件的表空间设置为脱机状态
alter tablespace users offline normal
2.在操作系统中重新命名或者移动数据⽂件
3.在数据库内部修改数据⽂件的名称或者位置(⽤alter tablespace ... rename datafile⼦句,to⼦句后的数据⽂件必须存在)改变名称:
alter tablespace users
rename datafile
'i:\oracle\oradata\user01.dbf',
'i:\oracle\oradata\user02.dbf'
to
'i:\oracle\oradata\lmuser01.dbf',
'i:\oracle\oradata\lmuser02.dbf';
改变位置:
alter tablespace users
rename datafile
'i:\oracle\oradata\user01.dbf',
'i:\oracle\oradata\user02.dbf'
to
'h:\oracle\oradata\user01.dbf',
'h:\oracle\oradata\user02.dbf';
宇智波斑是谁4.重新将表空间设置为联机状态
alter tablespace users online
5.备份控制⽂件
B.要改变的数据⽂件属于多个表空间
1.关闭数据库
2.在操作系统中重新命名或者移动数据⽂件
3.加载数据库,startup mount
4.在数据库内部修改数据⽂件的名称或者位置(⽤alter database ... rename file⼦句,to⼦句后的数据⽂件必须存在)
alter database
rename file
'i:\oracle\oradata\user01.dbf',
'i:\oracle\oradata\temp01.dbf'
to
'i:\oracle\oradata\lmuser01.dbf',
'i:\oracle\oradata\lmtemp01.dbf';
5.alter database open;
6.备份控制⽂件
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论