Jak zmienić przestrzeń tabel zarządzaną przez słownik na przestrzeń tabel zarządzaną lokalnie

  • Noah Scott
  • 0
  • 1543
  • 328

Pytanie: Jak przeprowadzić migrację obszaru tabel zarządzanego przez słownik (DMT) do obszaru tabel zarządzanego lokalnie (LMT) przy użyciu procedury DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL?

Ostrzeżenie: Zdecydowanie zaleca się przetestowanie kroków w podobnym środowisku testowym, aby oszacować czas potrzebny na migrację przed wdrożeniem w środowisku produkcyjnym.

Możesz użyć DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL procedura migracji obszaru tabel ze słownika zarządzanego do zarządzanego lokalnie. Wykonaj następujące kroki, aby przeprowadzić migrację obszarów tabel zarządzanych przez słownik do zarządzanych lokalnie. Przestrzeń tabel musi być utrzymywana w trybie online i mieć możliwość odczytu / zapisu podczas migracji. Zwróć uwagę, że tymczasowych obszarów tabel nie można migrować. Przed migracją obszaru tabel SYSTEM należy przeprowadzić migrację wszystkich obszarów tabel innych niż SYSTEM, jeśli zamierzasz używać tych obszarów tabel w trybie READ WRITE.

Migracja obszaru tabel innego niż SYSTEM

1. Wywołaj SQL * Plus.

2. Zapytanie DBA_TABLESPACES aby określić rodzaj zarządzania zakresami używanego w każdym obszarze tabel:

SQL> SELECT nazwa_obszaru_tabeli, zarządzanie_zakresem Z dba_tablespaces;

3. Zapytaj DBA_TABLESPACES, aby sprawdzić, czy obszar tabel, który chcesz migrować, jest w trybie online i w trybie ODCZYT ZAPISU:

SQL> SELECT tablespace_name, status FROM dba_tablespaces;

4. Wykonaj procedurę DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL i określ nazwę obszaru tabel, który chcesz migrować:

EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ('');

5. Zapytaj DBA_TABLESPACES, aby zweryfikować zmianę:

SQL> SELECT nazwa_obszaru_tabeli, status, zarządzanie_zakresem FROM dba_tablespaces;

Migracja obszaru tabel SYSTEM

Możesz użyć procedury TABLESPACE_MIGRATE_TO_LOCAL pakietu DBMS_SPACE_ADMIN, aby przeprowadzić migrację obszaru tabel SYSTEM z obszaru tabel zarządzanego przez słownik do obszaru tabel zarządzanego lokalnie. Przed migracją należy spełnić następujące warunki:

  • Baza danych musi mieć domyślny tymczasowy obszar tabel inny niż SYSTEM
  • Jeśli używasz segmentów wycofywania zmian: w obszarach tabel zarządzanych przez słownik nie ma segmentów wycofywania zmian. W lokalnie zarządzanym obszarze tabel istnieje co najmniej jeden segment wycofywania zmian online.
  • Jeśli używasz automatycznego zarządzania cofaniem, obszar tabel cofania musi być w trybie online
  • Wszystkie przestrzenie tabel, z wyjątkiem przestrzeni tabel zawierających segmenty wycofywania lub cofania segmentów, muszą być w trybie tylko do odczytu.
  • Baza danych musi być w trybie OGRANICZONYM

Wszystkie te warunki są egzekwowane przez procedurę TABLESPACE_MIGRATE_TO_LOCAL. Otrzymasz komunikat o błędzie, jeśli którykolwiek z warunków nie zostanie spełniony.

UWAGA: Po migracji obszaru tabel SYSTEM do obszaru zarządzanego lokalnie, żadne obszary tabel zarządzane przez słownik w bazie danych nie mogą zostać wykonane w trybie ODCZYT ZAPIS. Jeśli chcesz mieć możliwość korzystania z obszarów tabel zarządzanych przez słownik w trybie READ WRITE, przed migracją obszaru tabel SYSTEM należy przeprowadzić migrację tych obszarów tabel do zarządzanych lokalnie.

Możesz przeprowadzić migrację obszaru tabel SYSTEM z zarządzanego przez słownik do zarządzanego lokalnie, wykonując następujące czynności:

1. Użyj programu Recovery Manager lub poleceń systemu operacyjnego, aby utworzyć spójną (pełną lub pełną) kopię zapasową bazy danych przed rozpoczęciem migracji.

2. Wywołaj SQL * Plus. Połącz się jako użytkownik z uprawnieniami SYSDBA.

3. Sprawdź, czy masz tymczasowy obszar tabel inny niż SYSTEM, wysyłając zapytanie DBA_TABLESPACES w następujący sposób:

SQL> SELECT tablespace_name FROM dba_tablespaces WHERE content = 'TEMPORARY';

4. Jeśli używasz segmentów wycofywania zmian, sprawdź, czy żadne segmenty wycofywania nie znajdują się w obszarach tabel zarządzanych przez słownik, wysyłając zapytanie do DBA_SEGMENTS i DBA_TABLESPACES:

SQL> SELECT s.segment_name, s.tablespace_name, t.extent_management FROM dba_segments s, dba_tablespaces t WHERE s.tablespace_name = t.tablespace_name AND s.segment_type = 'ROLLBACK';

5. Jeśli używasz segmentów wycofywania, sprawdź, czy istnieje co najmniej jeden segment wycofywania w trybie online w lokalnie zarządzanym obszarze tabel, wysyłając zapytanie DBA_ROLLBACK_SEGS:

SQL> SELECT nazwa_segmentu, status
Z dba_rollback_segs
WHERE tablespace_name = '[tablespace_name]';

6. Jeśli używasz automatycznego zarządzania cofaniem, sprawdź, czy obszar tabel cofania jest w trybie online, wysyłając zapytanie DBA_TABLESPACES następująco:

SQL> SELECT tablespace_name, status FROM dba_tablespaces WHERE content = 'UNDO';

7. Sprawdź, czy wszystkie obszary tabel inne niż te, które zawierają segmenty wycofywania lub cofania segmentów, oraz tymczasowy obszar tabel są TYLKO DO ODCZYTU, wykonując następujące zapytanie DBA_TABLESPACES:

SELECT tablespace_name, status FROM dba_tablespaces;

8. Jeśli jakikolwiek obszar tabel inny niż obszar tabel zawierający segmenty cofania lub wycofywania zmian lub tymczasowy obszar tabel nie jest w trybie TYLKO DO ODCZYTU, wydaj następujące polecenie, aby ustawić go w trybie TYLKO DO ODCZYTU:

SQL> ALTER TABLESPACE [nazwa_tabeli] TYLKO ODCZYT;

Należy pamiętać, że to nie działa dla SYSAUX, więc musimy wyłączyć sysaux.

9. Sprawdź, czy baza danych jest w trybie OGRANICZONYM, wysyłając zapytanie do V $ INSTANCE:

SQL> SELECT loguje z instancji v $;

10. Jeśli baza danych nie jest w trybie OGRANICZONYM, wydaj następującą komendę, aby przełączyć ją w tryb OGRANICZONY:

SQL> ALTER SYSTEM ENABLE OGRANICZONA SESJA;

11. Wykonaj procedurę DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL, określając obszar tabel SYSTEM:

SQL> EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ('SYSTEM');

12. Sprawdź swoją zmianę, wysyłając zapytanie do DBA_TABLESPACES:

SQL> WYBIERZ zakres_zarządzania z dba_tablespaces WHERE tablespace_name = 'SYSTEM';

13. Wydaj następujące polecenie, aby wyłączyć tryb OGRANICZONY:

SQL> ALTER SYSTEM DISABLE OGRANICZONA SESJA;

14. Wydaj następujące polecenie dla każdego obszaru tabel umieszczonego w trybie TYLKO DO ODCZYTU, aby przywrócić go do ODCZYTU ZAPISU:

SQL> ALTER TABLESPACE  CZYTAJ PISZ;

Migracja tymczasowej przestrzeni tabel

Nie można użyć procedury DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL do migracji tymczasowego obszaru tabel zarządzanego przez słownik do obszaru tabel zarządzanego lokalnie. Należy usunąć tymczasowy obszar tabel zarządzany przez słownik i ponownie utworzyć go jako zarządzany lokalnie.

Ponieważ zarządzanie pamięcią masową jest znacznie prostsze i wydajniejsze w lokalnie zarządzanych obszarach tabel, idealnie nadają się one do tymczasowych obszarów tabel. Lokalnie zarządzane tymczasowe obszary tabel używają plików tymczasowych, które nie modyfikują danych poza tymczasowym obszarem tabel ani nie generują żadnego ponownego wykonania dla tymczasowych danych obszaru tabel.

1. Wywołaj SQL * Plus i połącz się jako użytkownik z uprawnieniem CREATE TABLESPACE.

2. Zapytaj do widoku DBA_TABLESPACES, aby określić nazwę tymczasowego obszaru tabel zarządzanego przez słownik:

SQL> SELECT nazwa_obszaru_tabeli, zarządzanie_zakresem Z dba_tablespaces WHERE content = 'TEMPORARY';

3. Użyj polecenia DROP TABLESPACE, aby usunąć tymczasowy obszar tabel zarządzany przez słownik. Możesz dołączyć klauzulę INCLUDING CONTENTS AND DATAFILES, aby usunąć plik z systemu operacyjnego. Alternatywnie możesz usunąć plik danych za pomocą poleceń systemu operacyjnego.

SQL> DROP TABLESPACE [nazwa_tabeli];

4. Użyj komendy CREATE TEMPORARY TABLESPACE, aby utworzyć lokalnie zarządzany tymczasowy obszar tabel, jak pokazano poniżej:

UTWÓRZ TYMCZASOWE MIEJSCE NA TABELE [temp_tablespace_name] TEMPFILE '[file_name]' SIZE 2M AUTOEXTEND ON;

5. Wykonaj zapytanie w widoku DBA_TABLESPACES, aby zweryfikować utworzenie lokalnie zarządzanego tymczasowego obszaru tabel:

SQL> SELECT nazwa_obszaru_tabeli, zarządzanie_zakresem Z dba_tablespaces WHERE content = 'TEMPORARY';

6. Zapytaj V $ TEMPFILE lub DBA_TEMP_FILES, aby określić nazwy plików tymczasowych:

SQL> SELECT ts #, nazwa FROM v $ tempfile;
SQL> SELECT tablespace_name, file_name FROM dba_temp_files;




Jeszcze bez komentarzy

Zbiór przydatnych informacji o systemie operacyjnym Linux i nowych technologiach
Świeże artykuły, praktyczne wskazówki, szczegółowe recenzje i poradniki. Poczuj się jak w domu w świecie systemu operacyjnego Linux