Os datafiles são estruturas físicas do banco, que estão ligados a uma unidade lógica chamada de tablespace. O crescimento dos datafiles pode ser limitado e controlado dentro do banco.
Para listar todas as tablespaces contidas no banco de dados utilizamos o seguinte script:
set lines 158Após a execução obtive o seguinte resultado:
set pages 100
column "Tablespace" format A20
column "Usado" format '9,999,990.00'
column "Livre" format '9,999,990.00'
column "Expansivel" format A12
column "Total" format '9,999,990.00'
column "Usado %" format '990.00'
column "Livre %" format '990.00'
column "Tipo Ger." format A12
select t.tablespace_name "Tablespace",
round(ar.usado, 2) "Usado",
round(decode(NVL2(cresc.tablespace, 0, sign(ar.Expansivel)),
1,
(ar.livre + ar.expansivel),
ar.livre),
2) "Livre",
round(ar.alocado,2) "Alocado Mb",
NVL2(cresc.limite, 'ILIMITADO', round(ar.expansivel, 2)) "Expansivel",
round(decode(NVL2(cresc.tablespace, 0, sign(ar.Expansivel)),
1,
ar.usado / (ar.total + ar.expansivel),
(ar.usado / ar.total)) * 100,
2) "Usado %",
round(decode(NVL2(cresc.tablespace, 0, sign(ar.Expansivel)),
1,
(ar.livre + ar.expansivel) / (ar.total + ar.expansivel),
(ar.livre / ar.total)) * 100,
2) "Livre %",
round(decode(NVL2(cresc.tablespace, 0, sign(ar.Expansivel)),
1,
(ar.total + ar.expansivel),
ar.total),
2) "Total",
t.Contents "Conteudo",
t.Extent_Management "Tipo Ger.",
FORCE_LOGGING
from dba_tablespaces t,
(select df.tablespace_name tablespace,
sum(nvl(df.user_bytes,0))/1024/1024 Alocado,
(sum(df.bytes) - sum(NVL(df_fs.bytes, 0))) / 1024 / 1024 Usado,
sum(NVL(df_fs.bytes, 0)) / 1024 / 1024 Livre,
sum(decode(df.autoextensible,
'YES',
decode(sign(df.maxbytes - df.bytes),
1,
df.maxbytes - df.bytes,
0),
0)) / 1024 / 1024 Expansivel,
sum(df.bytes) / 1024 / 1024 Total
from dba_data_files df,
(select tablespace_name, file_id, sum(bytes) bytes
from dba_free_space
group by tablespace_name, file_id) df_fs
where df.tablespace_name = df_fs.tablespace_name(+)
and df.file_id = df_fs.file_id(+)
group by df.tablespace_name
union
select tf.tablespace_name tablespace,
sum(nvl(tf.user_bytes,0))/1024/1024 Alocado,
sum(tf_fs.bytes_used) / 1024 / 1024 Usado,
sum(tf_fs.bytes_free) / 1024 / 1024 Livre,
sum(decode(tf.autoextensible,
'YES',
decode(sign(tf.maxbytes - tf.bytes),
1,
tf.maxbytes - tf.bytes,
0),
0)) / 1024 / 1024 Expansivel,
sum(tf.bytes) / 1024 / 1024 Total
from dba_temp_files tf, V$TEMP_SPACE_HEADER tf_fs
where tf.tablespace_name = tf_fs.tablespace_name
and tf.file_id = tf_fs.file_id
group by tf.tablespace_name) ar,
(select df.tablespace_name tablespace, 'ILIMITADO' limite
from dba_data_files df
where df.maxbytes / 1024 / 1024 / 1024 > 30
and df.autoextensible = 'YES'
group by df.tablespace_name
union
select tf.tablespace_name tablespace, 'ILIMITADO' limite
from dba_temp_files tf
where tf.maxbytes / 1024 / 1024 / 1024 > 30
and tf.autoextensible = 'YES'
group by tf.tablespace_name) cresc
where cresc.tablespace(+) = t.tablespace_name
and ar.tablespace(+) = t.tablespace_name
order by 1
/
Vamos utilizar como exemplo a tablespace "TBS_DADOS". Para verificar os datafiles ligados a está tablespace executaremos o script abaixo:
set pages 200
set lines 200
col file_name for a70
select file_name, maxbytes/1024/1024 as maxbytes, bytes/1024/1024 as bytes, autoextensible
from dba_data_files
where tablespace_name='TBS_DADOS'
order by FILE_NAME;
Conforme retorno do script, temos somente um datafile ligado a tablespace TBS_DADOS, este datafile está localizado em /u01/app/oracle/oradata/ORCL/datafile/tbd_dados.dbf e possui 100 megabytes, podendo se estender até 200 megabytes.
Agora iremos adicionar mais um datafile seguindo os padrões do datafile anterior. É importante validar se o disco possui espaço suficiente para alocar o novo datafile.
alter tablespace TBS_DADOS add datafile '/u01/app/oracle/oradata/ORCL/datafile/tbd_dados2.dbf ' size 100m autoextend on next 100m maxsize 200m;
Se executarmos novamente o script para verificação dos datafiles, podemos validar que o novo datafile já se encontra na tablespace:
Vimos de forma bem simples, como podemos adicionar um datafile a uma tablespace, é importante efetuar este procedimento com muita atenção, pois após adicionado para realizar alterações no datafile pode exigir a parada do banco de dados, abordaremos mais sobre datafiles e tablespace nas próximas postagens.
Fonte: https://docs.oracle.com/cd/B19306_01/server.102/b14220/physical.htm








Nenhum comentário:
Postar um comentário