![Oracle表空间](http://img.gansulong.com/220810/145G05244-1.jpg)
文章插图
Oracle表空间之作用表空间的作用能帮助DBA用户完成以下工作:1.决定资料库实体的空间分配;2.设定资料库用户的空间份额;3.控制资料库部分数据的可用性;4.分布数据于不同的设备之间以改善性能; 5.备份和恢複数据 。用户创建其资料库实体时,必须给予表空间中具有相应的权力,所以对一个用户来说,其要操纵一个ORACLE资料库中的数据,应该:1.被授予关于一个或多个表空间中的RESOURCE特权;2.被指定预设表空间;3.被分配指定表空间的存储空间使用份额;4.被指定预设临时段表空间,建立不同的表空间,设定最大的存储容量 。控制空间在一些大型的资料库套用中,我们需要控制某个用户或者某一组用户其所占用的磁碟空间 。这就好像在档案伺服器中,需要为每个用户设定磁碟配额一样,以防止硬碟空间耗竭 。所以,在资料库中,我们也需要限制用户所可以使用的磁碟空间大小 。为了达到这个目的,我们就可以通过表空间来实现 。我们可以在Oracle资料库中,建立不同的表空间,为其设定最大的存储容量,然后把用户归属于这个表空间 。如此的话,这个用户的存储容量,就受到这个表空间大小的限制 。当然,表空间的优势还不仅仅这些,企业对于资料库的性能要求越高,或者资料库容量越大,则表空间的优势就会越大 。下面,我们就具体来看看Oracle资料库中表空间的处理方式,看其在性能与安全性方面是否有足够的优势与SQL Server资料库抗衡 。Oracle空间在资料库设计的时候,我们建议资料库管理员按如下顺序设定表空间 。第一步:建立Oracle用户表空间 。在设计资料库的时候,首先需要设计表空间 。我们需要考虑,是只建立一个表空间呢,还是需要建立多个表空间,以及各个表空间的存放位置、磁碟限额等等 。到底设计多少个表空间合理,没有统一的说法,这主要根据企业的实际需求去判断 。如企业需要对用户进行磁碟限额控制的,则就需要根据用户的数量来设定表空间 。当企业的数据容量比较大,而且又对资料库的性能有比较高的要求时,就需要根据不同类型的数据,设定不同的表空间,以提高其输入输出性能 。第二步:建立Oracle用户,并指定用户的默认表空间 。在建立用户的时候,我们建议资料库管理员要指定用户的默认表空间 。因为我们在利用CREATE语句创建资料库对象,如资料库表的时候,其默认是存储在资料库的当前默认空间 。若不指定用户默认表空间的话,则用户每次创建资料库对象的时候,都会存储在资料库默认表空间中,如果想存储在自己建的表空间中,最好自己指定自己建的表空间为默认表空间 。另外要注意,不同的表空间有不同的许可权控制 。用户对于表空间A具有完全控制许可权,可能对于表空间B就只有查询许可权,甚至连连线的许可权的都没有 。所以,合理为用户配置表空间的访问许可权,也是提高资料库安全性的一个方法 。空间恢複方案用户表空间ORACLE表空间错误现象:在启动资料库时出现ORA-01157,ORA-01110或作业系统级错误例如ORA-07360,在关闭资料库(使用shutdown normal或shutdown immediate) 时将导致错误ORA-01116,ORA-01110以及作业系统级错误ORA-07368解决:以下有两种解决方案:方案一、用户的表空间可以被轻易地重建 导出的对象是可用的或表空间中的对象可以被轻易地重建等 。在这种情况下,最简单的方法是offline并删除该数据档案,删除表空间并重建表空间以及所有的对象 。svrmgrl> startup mountsvrmgrl> alter database datafile filename offline drop;svrmgrl> alter database open;svrmgrl> drop tablespace tablespace_name including contents;重建表空间及所有对象 。方案二、用户的表空间不能够被轻易地重建在大多数情况下,重建表空间是不可能及太辛苦的工作.方法是倒备份及做介质恢复.如果您的系统运行在NOARCHIVELOG模式下,则只有丢失的数据,在online redo log中方可被恢复 。步骤如下:1)Restore the lost datafile from a backup2)svrmgrl> startup mount3)svrmgrl> select v1.group#,member,sequence#,first_change# from v$log v1,v$logfile v2 where v1.group#=v2.group#;4)如果资料库运行在NOARCHIVELOG模式下则:svrmgrl> select file#,change# from v$recover_file;如果 CHANGE# 大于最小的FIRST_CHANGE#则数据档案可以被恢复 。如果 CHANGE# 小于最小的FIRST_CHANGE#则数据档案不可恢复 。恢复最近一次的全备份或採用方案一 。5)svrmgrl> recover datafile filename;6)确认恢复成功7)svrmgrl> alter database open resetlogs;唯读表空间无需做介质恢复,只要将备份恢复即可 。唯一的例外是:表空间在最后一次备份后被改为read-write 模式表空间在最后一次备份后被改为read-only 模式在这种情况下,均需进行介质恢复 。临时表空间临时表空间并不包含真正的数据,恢复的方法是删除临时表空间并重建即可 。系统表空间如果备份不可用,则只能採用重建资料库的方法回滚表空间有三种种情况:1、资料库已经完全关闭(使用shutdown immediate或shutdown命令)1) 确认资料库完全关闭2) 修改init.ora档案,注释"rollback-segment"3) svrmgrl> startup restrict mount 4) svrmgrl> alter database datafile filename offline drop;5) svrmgrl> alter database open;基于出现的结果:"statement PRocessed" 转(7);"ORA-00604,ORA-00376,ORA-01110"转(6)6) svrmgrl> shutdown immediate修改init.ora档案,增加如下一行:_corrupted_rollback_segments = (<roll1>,...<rolln>)svrmgrl> startup restrict7) svrmgrl> drop tablespace tablespace_name including contents;8) 重建表空间及回滚段9) svrmgrl> alter system disable restricted session;10) 修改init.ora档案2、资料库未完全关闭(资料库崩溃或使用shutdown abort命令关闭资料库)1) 恢复备份2) svrmgrl> startup mount3) svrmgrl> select file#,name,status from v$datafile;svrmgrl> alter database datafile filename online;4) svrmgrl> select v1.group#,member,sequence#,first_change# from v$log v1,v$logfile v2 where v1.group#=v2.group#;5) svrmgrl> select file#,change# from v$recover_file; #参见方案2-46) svrmgrl> recover datafile filename;7) svrmgrl> alter database open;3、资料库处于打开状态1) 删除回滚段和表空间2) 重建表空间和回滚段
- 包装盒印表机
- 装饰效果图表现技法
- 兔斯基qq表情包
- 高职高专规划教材:环境工程仪表及自动化
- Beep
- Oracle达人修炼秘籍
- Oracle Database 10g XML与SQL开发指南
- 空间态势可视化与分析技术
- 能源统计报表制度
- 辽宁省第十二届人民代表大会代表 马晓红