-
Oracle数据库空间管理
1.数据库存储空间介绍
存储空间是数据库系统中非常重要的资源,无论是数据库中的对象还是数据库中的数据都常要空间进行存储,一旦数据库空间被全部占用,那么该数据库系统就不能再接受任何对象和数据,数据库系统的运行基本上会处于停滞状态。
合理利用空间不但能节省空间,还可以提高数据库系统的效率和工作性能。
管理数据库空间的方法:
(1)建立数据库时分配存储空间,建立数括库可以指定SYSTEM表空间和其他表空间的大小;
(2)空间充足时,通过动态空间监视和增加数据文件的方法管理数据库空间;
(3)空间不够用时,需要增加存储空间,增加存储空间的方法主要包括:改变系统表空间数据文件的大小、 创建新表空间和增加表空间大小;
(4)减少存储空间的使用,主要方法包括:为表中的列设置合适的数据类型和长度、为对象设置合适的存储参数。
(5)回收存储空间,主要方法包括:对历史数据进行存档并回收相应的空间,删除无用的对象和表空间。
2.空间充足时的管理
(1)使用数据字典动态监视
SQL> select * from dba_free_space; #查看表空间的空间信息
TABLESPACE_NAME FILE_ID BLOCK_ID BYTES BLOCKS
------------------------------ ---------- ---------- ---------- ----------
RELATIVE_FNO
------------
SYSTEM 1 86616 327680 40
...
(2)向表空间中增加数据文件
语法:
alter tablespace 表名 add datafile '表空间路径' size 大小;
3.解决空间不足的方法
(1)改变SYSTEM表空间数据文件的大小可以用ALTER DATABASE命令
语法:
ALTER DATABASE 数据库名
mount[standby | close database]
|open [resetlogs | noresetlogs]
|archivelog|noarchivelog
|add logfile[thread 数值]{[group 数值]文件名,...}
|add logfile member{{文件名[reuse], ...} to group 数值|文件名}
|drop logfile{group 数值|文件名, ...}
|drop logfile member{文件名, ...}
|clear[unarchived] logfile{group 数值文件名, ...}
|rename file 旧文件名 to 新文件名
|create standby controlfile as 文件名 [reuse]
|backup controlfile {to 文件名 [reuse] |to trace}
|reset compatability
|enable | disable [public] thread 数值
|create datafile {文件名...}
|datafile {文件名...} {online | offline [drop] resize 数值}
|end backup
|autoextend off|on;
解释:
mount:只在未安装数据库启动方式下使用,它使数据装入现场,其中standby项是装配数据库备份;
open:使数据库打开,只在安装启动数据库方式下使用;
archivelog|noarchivelog:改变数据库日志归档状态为有效或无效;
add logfile:增加一个或多个日志组;
add logfile member:为指定日志组培加日志成员;
drop logfile:删除日志组;
drop logfile member:删除日志组成员;
clear logfile:重新初始化日志组内容;
renamefile...to...:将数据文件或日志组成员文件更名;
create standby:创建一个用来维护备用数据库的控制文件;
backup controlfile:备份控制文件;
reset comparability:在数据库下次启动时,标记数据库恢复到早期版本;
enable | disable thread:使线程有效或无效;
create datafile:在旧数据文件上创建一个新的空数据文件;
datafile:改变数据文件的一些内容,例如脱机或联机以及重新定义其大小;
end backup:在一个联机表空间备份被系统或现场错误中断后,避免在数据库启动时做介质恢复;
autoextend:允许或禁止自动扩充数据文件;
(2)创建新的表空间
语法:
create tablespace 表空间名
datafile {文件名 [autoextend {off|on next 数值 maxsize 数 值}], ...}
minimum extent 数值
logging|nologging
default storage {...}
online|offline
permanent|temporary
解释:
datafile:为此表空间指定数据文件的名字;
autoextend:使自动扩展数据文件为有效或无效,并在有效时指定next值为下次分配给数据文件的磁盘空间,maxsize为可分配的朵大磁盘空间,若用unlimited则表示不受限制;
minimum extent:控制表空间中的自由空间,方法是保证表空间中每个使用的或自由的扩充尺寸至少是指定数值的倍数;
logging|nologging:指定该表空间的所有表、索引和分区的默认日志使用方式,其中logging表示数据操作需要记录到日志,而nologging表示数据操作不做日志;
default storage:为在该表空间中建立的全部对象指定默认的存储参数;
online|offline:使表空间联机或脱机;
permanent|temporary:指定表空间用来包含永久对象或暂时对象;
4.动态增加表空间
表空间中的数据文件大小是在创建表空间时就指定了的,在数据库运行过程中不能超过此限制,一旦表空间的数据文件被占满,则不能继续增加数据。解决办法是:向表空间中增加新的数据文件,以此来扩充表空间的存储能力。
语法:
alter tablespace 表空间名
logging|nologging
add datafile {数据文件名 [autoextend], ...}
rename datafile 源文件 to 新文件名
coalesce
default storage
minimun extent 数值
online|offline [normal | temporary | immediate | for recover]
{begin | end} backup
read only | write
permanent | temporary
解释:
add datafile:用于增加衷空间的数据文件,可在联机或脱机时增加, 但所增加的数据文件不能是其他表空间或数据库已经使用的。它同样可带autoextend参数选项;
coalesce:用于将所有相连的空间范围合并到相邻的较大的范围中去, 这一项不能被其他命令指定;
{begin | end} backup:用于开始和结束备份联机表空间中的数据文件,在备份过程中用户可以继续访问该表空间,但备份过程中不能将表空间脱机,也不能关闭数据库;
read only | write:其中read only表示此表空间内容是只读的,不能向其中写入任何数据,而read write则表示可以对此表空间的数据进行读写操作。
-
Oracle数据库备份与恢复机制
1.备份与恢复的方法
数据库的备份是对数据库信息的一种操作系统备份。这些信息可能是数据库的物理结构文件,也可能是某一部分数据。在数据库正常运行时,就应该考虑到数据库可能出现故障,而对数据库实施有效的备份,保证可以对数据库进行恢复。数据库恢复是基于数据库备份的。数据库恢复的方法取决于故障类型、备份方法。
在不同条件下需要使用不同的备份与恢复方法,某种条件下的备份信息只能由对应方法进行还原或恢复。备份与恢复主要有三种方法:逻辑备份与恢复、脱机备份与恢复、联机备份与恢复。
(1)逻辑备份与恢复:用Oracle提供的实用工具软件,如导出/导入工具(exp,imp)、数据泵导入/导出工具(impdp, expdp)、装入器(SQL*Loader),将数据库中的数据进行卸出与装入。
(2)脱机备份与恢复:指在关闭数据库的情况下对数据库文件的物理备份与恢复,是最简单、最直接的方法。也称为冷备份与恢复。
(3)联机备份与恢复:指在数据库处于打开的状态下(归档模式)对数据库进行的备份与恢复。只有能进行联机备份与恢复的数据库才能实现不停机地使用,也称为备份与恢复。
2.使用expdp导出数据
语法:
expdp username/password parameter1 [,parameter2, ...]
解释:username为用户名, password为用户密码, parameter1、 parameter2为参数。
expdp参数的名称和功能:
3.使用impdp导出数据
语法:
pdp username/password parameter1 [,parameter2, ...]
解释:username为用户名, password为用户密码, parameter1、 parameter2为参数。
pdp参数的名称和功能:
参考:《Oracle 11G从入门到精通》