查看数据文件在裸设备中的高水位
June 16th, 2009
No comments
问题来源于这样一个案例:需要把数据库从裸设备中迁移到文件系统上,裸设备大小为10000M一个,但实际占用非常小;
考虑到上面的情况,想到找到裸设备的高水位,然后把高水位下的块dd到文件系统中,从而缩短迁移时间。
如下:
SQL> l 1 select file_id,sum(blocks),min(block_id),max(block_id) from dba_extents 2 where tablespace_name='USERS' 3* group by file_id SQL> / FILE_ID SUM(BLOCKS) MIN(BLOCK_ID) MAX(BLOCK_ID) ---------- ----------- ------------- ------------- 4 7080 9 7689
users表空间只有file#为4的一个文件,最大的block_id是7689
SQL> select 7689*8/1024 Mb from dual; MB ---------- 60.0703125 SQL> alter database datafile '/dev/raw/raw4' resize 60m; alter database datafile '/dev/raw/raw4' resize 60m * ERROR at line 1: ORA-03297: file contains used data beyond requested RESIZE value SQL> alter database datafile '/dev/raw/raw4' resize 62m; Database altered.
经过上面确认,可以dd拷贝裸设备的数据到块7689即可。