2017-05-27 5 views
1

Eine unserer Datendateien erreicht das Maximum von 32G. Also haben wir eine zweite Datendatei in diesem Tablespace erstellt.Ändern der Größe des Tablespace-Inkrements

Allerdings haben wir vergessen, eine Standardgröße NEXT anzugeben. Also, Datei 1 hat einen NEXT von 50MB. Und Datei 2 hat einen NEXT von 8k.

Diese sind lokal verwaltet, also, ich denke, das einzige, was zu tun ist, ist einen neuen Tablespace zu erstellen und alle Objekte zu verschieben. Oder gibt es eine andere Lösung? Eine Frage: Wie bewege ich TYPES? Muss ich diese & löschen? Was wird eine Menge Dinge ungültig machen .......

Irgendwelche Vorschläge? Kann ich die Objekte nur in dieser Datendatei isolieren?

Vielen Dank.

+0

Anstatt 2 Datendateien hinzuzufügen, können Sie "BIG FILE" erstellen, die sehr groß werden kann. und BIGFILE unterstützt chan NEXT-Wert ALTER TABLESPACE my_TBS_name AUTOEXTEND ON NEXT 20G; – Ramki

Antwort

2

Sie sollten immer zuerst Oracle documentation konsultieren. Was Sie fragen, ist eine einfache, single-SQL-command-involving action. Das entscheidende Wissen, das Sie verpasst haben, ist, dass Sie keinen Tablespace ändern, Sie alter a datafile.

Proof-of-Concept

Zuerst werde ich nur meine example Tabellen für seine Blockgröße abfragen, wie ich den Wert für den Nachweis verwenden werde, dass meine Daten-Datei korrekt geändert wurde.

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

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

OK, die TBS verwendet eine Blockgröße von 8KB.

Nun, wie sehen meine example Dateien aus?

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 

OK, ich sehe nur eine einzige Datei mit dem AutoExtend von 1MB.

ändern Sie nun die Daten-Datei ...

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

Database altered 

Und die tbs Datendateien erneut prüfen erneut

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 

Und voilá, ich eine autoextend von 8 MB.

Verwandte Themen