Изменение размера приращения табличного пространства

Один из наших файлов данных достиг максимума в 32G. Итак, мы создали второй файл данных в этом табличном пространстве.

Однако мы забыли указать размер NEXT по умолчанию. Итак, файл 1 имеет NEXT 50 МБ. И файл 2 имеет NEXT 8k.

Они управляются локально, поэтому я предполагаю, что единственное, что нужно сделать, это создать новое табличное пространство и переместить все объекты. Или есть другое решение? Один вопрос: как переместить ТИПЫ? Мне нужно удалить и воссоздать их? Что аннулирует массу вещей.......

Какие-либо предложения? Могу ли я изолировать объекты только в этом файле данных?

Благодарю вас.


person Landon Statis    schedule 27.05.2017    source источник
comment
вместо добавления 2 файлов данных вы можете создать БОЛЬШОЙ ФАЙЛ, который может вырасти до очень больших размеров. а BIGFILE поддерживает значение chan NEXT ALTER TABLESPACE my_TBS_name AUTOEXTEND ON NEXT 20G;   -  person Ramki    schedule 29.05.2017


Ответы (1)


Всегда следует сначала обращаться к документации Oracle. Вы запрашиваете простую, одну SQL-команду -включающее действие. Важнейшее знание, которое вы упустили, заключается в том, что вы не изменяете табличное пространство, а "noreferrer">изменить файл данных.

Подтверждение концепции

Во-первых, я просто запросю размер блока своего табличного пространства example, так как я буду использовать это значение для доказательства того, что мой файл данных был изменен правильно.

SQL> select tablespace_name, block_size
SQL> from dba_tablespaces
SQL> where tablespace_name = 'EXAMPLE';

TABLESPACE_NAME                BLOCK_SIZE
------------------------------ ----------
EXAMPLE                              8192

Хорошо, tbs использует размер блока 8 КБ.

Теперь, как выглядят мои example файлы данных?

SQL> select file_name, file_id, tablespace_name, autoextensible, increment_by * &example_tbs_block_size_b / 1048576 as increment_by_mbytes
SQL> from dba_data_files
SQL> where tablespace_name = 'EXAMPLE';

FILE_NAME                          FILE_ID    TABLESPACE_NAME AUTOEXTENSIBLE INCREMENT_BY_MBYTES
---------------------------------- ---------- --------------- -------------- -------------------
D:\ORA\MY_CDB\MY_PDB\EXAMPLE01.DBF         10 EXAMPLE         YES                              1

Хорошо, я вижу только один файл данных с авторасширением 1 МБ.

Теперь измените файл данных...

SQL> alter database datafile 10 autoextend on next &target_autoextend maxsize unlimited;

Database altered

И еще раз проверьте файлы данных tbs.

SQL> select file_name, file_id, tablespace_name, autoextensible, increment_by * &example_tbs_block_size_b / 1048576 as increment_by_mbytes
SQL> from dba_data_files
SQL> where tablespace_name = 'EXAMPLE';

FILE_NAME                          FILE_ID    TABLESPACE_NAME AUTOEXTENSIBLE INCREMENT_BY_MBYTES
---------------------------------- ---------- --------------- -------------- -------------------
D:\ORA\MY_CDB\MY_PDB\EXAMPLE01.DBF         10 EXAMPLE         YES                              8

И, вуаля, у меня авторасширение 8 МБ.

person peter.hrasko.sk    schedule 29.05.2017
comment
Будет ли это работать и в случае временных файлов? - person kamalpreet; 21.12.2020
comment
@kamalpreet, да, будет, просто помните, что в этом случае вы не изменяете файл данных, а изменяете временный файл. Остальное остается прежним. - person peter.hrasko.sk; 22.12.2020