Co się dzieje i co zrobić, gdy SPFILE został ręcznie zmodyfikowany

  • Matthew Stevenson
  • 0
  • 1266
  • 85

Problem

Plik SPFILE był wcześniej edytowany ręcznie podczas otwierania instancji.

$ ls -l $ ORACLE_HOME / dbs / spfileRel14.ora -rw-rw ---- 1 sme dba 907 19 marca 09:17 /ora9i/dbs/spfileRel14.ora

za. Przy próbie zapisania nowych wartości parametrów pojawia się następujący błąd:

SQL> zmień zestaw systemowy procesów = 70 scope = spfile; zmiana zestawu procesów = 70 zasięg = spfile * BŁĄD w wierszu 1: ORA-27046: rozmiar pliku nie jest wielokrotnością rozmiaru bloku logicznego Dodatkowe informacje: 1

b. Gdy spróbujesz uruchomić bazę danych, gdy nie ma już żadnego pliku parametrów initSID.ora, pojawia się następujący błąd, ponieważ instancja oczekuje, że domyślnie użyje pliku spfile, ale nie będzie on użyteczny:

Uruchomienie SQL> ORA-01078: błąd podczas przetwarzania parametrów systemu 

Rozwiązanie

SPFILE to plik binarny. Można go zmodyfikować tylko za pomocą polecenia ALTER SYSTEM SQL lub odtworzyć z istniejącego pliku parametrów init.ora i nie wolno go zmieniać / edytować bezpośrednio. Wykonaj czynności opisane poniżej, aby ponownie utworzyć plik spfile.

Odtwórz plik binarny SPFILE ze starego pliku init.ora, jeśli taki istnieje:

SQL> utwórz plik spfile z pfile = "initRel14bis.ora"; Plik został utworzony.

Jeśli nie istnieje plik init.ora, utwórz go ponownie, a następnie utwórz binarny plik SPFILE z niego, a następnie będzie dostępny nowy użyteczny plik spfileRel14.ora.

$ ls -l sp * -rw-r ----- 1 sme dba 2560 19 marca 15:30 spfileRel14.ora 
Uwaga że rozmiar pliku się zmienił, chociaż zawiera tę samą listę parametrów i wartości.

Jeśli nie istnieje stary plik init.ora, nadal możesz spróbować pobrać parametry z uszkodzonego pliku spfile za pomocą polecenia strings (natywne w systemie Unix i dostępne z narzędziami GNU dla Win32 pod adresem http://unxutils.sourceforge.net/)

Przykład (w systemie Linux / Unix)

$ cd $ ORACLE_HOME / dbs $ strings spfileRel14.ora> initRel14.ora $ mv spfileRel14.ora spfileRel14.ora_CORRUPT 

Za pomocą dowolnego odpowiedniego edytora tekstu zapewnij / zweryfikuj poprawność zawartości initRel14.ora (dla wszelkich nieistotnych ciągów lub znaków - które mogą się zdarzyć lub istnieć z powodu konwersji znaków CR lub dowolnych znaków podczas konwersji)

$ export ORACLE_SID = Rel14 $ sqlplus / as sysdba SQL> utwórz plik spfile z pliku pfile; SQL> zakończ

Od teraz masz zdrowy plik spfile.




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