Карта всех файлов Вашей базы данных Oracle
Карта всех файлов Вашей базы данных Oracle
21 мая 2000 г.
Архив рекомендаций и кодов журнала "Oracle Magazine", 10 мая 1996, CODE05106.HTM
Этот скрипт прислал в Oracle Magazine Dennis Cheung, АБД Chalk River Laboratories управления Атомной энергетики, Канада (CHEUNGD@crl.aecl.ca).
Приведенный ниже скрипт генерирует перчень всех файлов, составляющих базу данных Oracle (файлы собственно данных, журнала регистрации изменений и управляющие), функционирующую под управлением ОС UNIX. Выходной листинг можно уподобить некой карте Oracle-ских файлов. Кроме того, в нем приводятся и другие сведения, характеризующие эти файлы (размер, количество физических операций ввода/вывода, если к файлу применим этот параметр).
Примечание редактора: Не смотря на то, что этот скрипт очень давний (1996), он не устарел, поскольку не изменилась файловая структура базы данных Oracle. И поэтому он применим не только на платформе UNIX, но и на платформе NT (надо только все "/", кроме знаков деления, заменить на ""), не только для Oracle7, но и для Oracle8. Более того, желающие АБД могут добавить в него еше параметры, например, STATUS, что покажет состояние каждого файла данных и журнала регистрации. Тоже не лишняя информация
Скрипт filemap.sql
--------------------------------------------------------------------------------
rem
rem File: filemap.sql
rem
rem Этот скрипт предоставляет: путь навигации, имя файла, размер в Мегабайтах,
rem число физических физических операций ввода/вывода (если применимо) для всех байлов
rem базы данных Oracle на платформе ОС UNIX.
rem
rem
rem
set pages 999
col path format a20 heading 'Path'
col fname format a15 heading 'File Name'
col fsize format 999b heading 'M bytes'
col pr format 999999b heading 'Phy. Reads'
col pw format 999999b heading 'Phy. Writes'
break on path skip 1
spool zzfilemap.rep
select substr(name,1,instr(name, '/', -1)-1 ) path,
substr(name,instr(name, '/', -1)+1 ) fname,
bytes/1048576 fsize,
phyrds pr,
phywrts pw
from v$datafile df, v$filestat fs
where df.file# = fs.file#
UNION
select substr(name,1,instr(name, '/', -1)-1 ) path,
substr(name,instr(name, '/', -1)+1 ) fname,
0 fsize,
0 pr,
0 pw
from v$controlfile
UNION
select substr(lgf.member,1,instr(lgf.member,'/', -1)-1) path,
substr(lgf.member,instr(lgf.member, '/', -1)+1 ) fname,
lg.bytes/1048576 fsize,
0 pr,
0 pw
from v$logfile lgf, v$log lg
where lgf.group# = lg.group#
order by 1,2
/
spool off
|