select tablespace_name,file#,v.status,v.enabled from dba_files d,v$datafile v where d.file_id=v.file#;
alter tablespace <tablespace_name> read only|read write|offline|online;
tablespace online read only
system 必须online 必须read write
sysaux 可以offline 必须read write
undo 必须online 必须read write
只读表空间上的对象可以被删除
alter tablespace <old> rename to <new>;表空间重命名,system/sysaux/database_properties中定义的默认用户表空间/默认临时表空间/undo中undo_tablespace定义的不能重命名
表空间的大小
alter database set default smallfile|bigfile tablespace;
一个大表数据文件可以包括4G个os blocks,小表数据文件4m个os blocks
自动扩张:
alter tablespace datafile '<path & name>'|file# autoextend on|off [next <size>|maxsize <size‪>];
select tablespace_name, file_name, autoextensible from dba_data_files;
手动扩张:
alter tablespace datafile '<path & name>'|file# resize <size>;
alter tablespace datas add datafile '<path & name>' size <size>;
undo space=(undo_retention*undo_blocks_per_second * db_block_size) + db_block_size
show parameter undo_retention;--->undo_retention
show parameter db_block_size;--->db_block_size
select sum(undoblks)/sum((end_time - begin_time)*10800) from v$undostat;--->undo_blocks_per_second
查询当前undo表空间的大小:
max(block_id) * db_block_size
show parameter db_block_size;--->db_block_size
(单位k)
select max(block_id) from dba_extents where file_id=2;--->block_id
备份(归档模式) 有备份:rman或者热备
无备份:系统中是否有其他的undo,如果有,把损坏的脱机,用其他的替换,然后启动,删除损坏的表空间并建立新的。如果没有,设置参数undo_management=manual,使用隐藏参数让undo脱机(alter system set "_offline_rollback_segments"=true scope=spfile),然后启动,参看dba_rollback_Segs中搞的status中,损坏的表空间的段是否有recover,如果没有,删除损坏的表空间并建立新的;如果有,使用_corrupted_rollback_segments标记该段,然后删除损坏的表空间并建立新的。最后还原上面的参数。