Oracle8i Supplied Packages Reference Release 8.1.5 A68001-01 |
|
The DBMS_SPACE_ADMIN
package provides functionality for locally managed tablespaces.
This package runs with SYS
privileges; therefore, any user who has privilege to execute the package can manipulate the bitmaps.
This procedure verifies that the extent map of the segment is consistent with the bitmap.
DBMS_SPACE_ADMIN.SEGMENT_VERIFY ( tablespace_name IN VARCHAR2, header_relative_file IN POSITIVE, header_block IN POSITIVE, verify_option IN POSITIVE DEFAULT SEGMENT_VERIFY_EXTENTS);
Anomalies are output as dba-range, bitmap-block, bitmap-block-range, anomaly-information, in the trace file for all dba-ranges found to have incorrect space representation. The kinds of problems which would be reported are free space not considered free, used space considered free, and the same space considered used by multiple segments.
The following example verifies that the segment with segment header at relative file number 4, block number 33, has its extent maps and bitmaps in sync.
SQLPLUS > EXECUTE DBMS_SPACE_ADMIN.SEGMENT_VERIFY('USERS', 4, 33, 1);
This procedure marks the segment corrupt or valid so that appropriate error recovery can be done.
DBMS_SPACE_ADMIN.SEGMENT_CORRUPT ( tablespace_name IN VARCHAR2, header_relative_file IN POSITIVE, header_block IN POSITIVE, corrupt_option IN POSITIVE DEFAULT SEGMENT_MARK_CORRUPT);
The following example marks the segment as corrupt:
SQLPLUS > EXECUTE DBMS_SPACE_ADMIN.SEGMENT_CORRUPT('USERS', 4, 33, 3);
Alternately, the next example marks a corrupt segment valid:
SQLPLUS > EXECUTE DBMS_SPACE_ADMIN.SEGMENT_CORRUPT('USERS', 4, 33, 4);
This procedure drops a segment currently marked corrupt (without reclaiming space). For this to work, the segment should have been marked temporary. To mark a corrupt segment as temporary, issue a DROP
command on the segment.
The space for the segment is not released, and it must be fixed by using the TABLESPACE_FIX_BITMAPS
or TABLESPACE_REBUILD_BITMAPS
procedure. These are described later in this chapter.
DBMS_SPACE_ADMIN.SEGMENT_DROP_CORRUPT ( tablespace_name IN VARCHAR2, header_relative_file IN POSITIVE, header_block IN POSITIVE);
Parameter | Description |
---|---|
tablespace_name |
Name of tablespace in which segment resides. |
header_relative_file |
Relative file number of segment header. |
header_block |
Block number of segment header. |
SQLPLUS > EXECUTE DBMS_SPACE_ADMIN.SEGMENT_DROP_CORRUPT('USERS', 4, 33);
This procedure dumps the segment header and extent map blocks of the given segment.
DBMS_SPACE_ADMIN.SEGMENT_DUMP ( tablespace_name IN VARCHAR2, header_relative_file IN POSITIVE, header_block IN POSITIVE, dump_option IN POSITIVE DEFAULT SEGMENT_DUMP_EXTENT_MAP);
SQLPLUS > EXECUTE DBMS_SPACE_ADMIN.SEGMENT_DUMP('USERS', 4, 33);
This procedure verifies that the bitmaps and extent maps for the segments in the tablespace are in sync.
DBMS_SPACE_ADMIN.TABLESPACE_VERIFY ( tablespace_name IN VARCHAR2, verify_option IN POSITIVE DEFAULT TABLESPACE_VERIFY_BITMAP);
Parameter | Description |
---|---|
tablespace_name |
Name of tablespace. |
verify_option |
|
SQLPLUS > EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_VERIFY('USERS');
This procedure marks the appropriate DBA range (extent) as free or used in bitmap.
DBMS_SPACE_ADMIN.TABLESPACE_FIX_BITMAPS ( tablespace_name IN VARCHAR2, dbarange_relative_file IN POSITIVE, dbarange_begin_block IN POSITIVE, dbarange_end_block IN POSITIVE, fix_option IN POSITIVE);
The following example marks bits for 50 blocks for relative file number 4, beginning at block number 33 and ending at 83, as USED
in bitmaps.
SQLPLUS > EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_FIX_BITMAPS('USERS', 4, 33, 83, 7);
Alternately, specifying an option of 8 marks the bits FREE
in bitmaps. The BEGIN
and END
blocks should be in extent boundary and should be extent multiple. Otherwise, an error is raised.
This procedure rebuilds the appropriate bitmap(s). If no bitmap block DBA is specified, then it rebuilds all bitmaps for the given tablespace.
DBMS_SPACE_ADMIN.TABLESPACE_REBUILD_BITMAPS ( tablespace_name IN VARCHAR2, bitmap_relative_file IN POSITIVE DEFAULT NULL, bitmap_block IN POSITIVE DEFAULT NULL);
Parameter | Description |
---|---|
tablespace_name |
Name of tablespace. |
bitmap_relative_file |
Relative file number of bitmap block to rebuild. |
bitmap_block |
Block number of bitmap block to rebuild. |
The following example rebuilds bitmaps for all the files in the USERS
tablespace.
SQLPLUS > EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_REBUILD_BITMAPS('USERS');
This procedure rebuilds quotas for the given tablespace.
DBMS_SPACE_ADMIN.TABLESPACE_REBUILD_QUOTAS ( tablespace_name IN VARCHAR2);
Parameter | Description |
---|---|
tablespace_name |
Name of tablespace. |
SQLPLUS > EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_REBUILD_QUOTAS('USERS');
This procedure migrates a locally-managed tablespace to a dictionary-managed tablespace.
DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_FROM_LOCAL ( tablespace_name IN VARCHAR2);
Parameter | Description |
---|---|
tablespace_name |
Name of tablespace. |
The tablespace must be kept online and read write during migration.
Migration of temporary tablespaces and migration of SYSTEM
tablespaces are not supported.
SQLPLUS > EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_FROM_LOCAL('USERS');
TABLESPACE_VERIFY
has discovered that some segment has allocated blocks which are marked free in the bitmap, but no overlap between segments was reported. In this case, the following actions are recommended:
TABLESPACE_VERIFY
has reported some overlaps. In this case, some of the real data will need to be sacrificed, perhaps, based on the previous internal errors. After the victim object is chosen, table T1
, do the following: