januari 28, 2022

The Geek Diary

denna pos täcker nedanstående scenarier:

  • återställa från förlorat sys-lösenord med OS-autentisering på Unix.
  • återställa det förlorade sys-lösenordet med passwordfile-autentisering på Unix.
  • återställa från förlorat sys-lösenord med NTS-autentisering på Windows.
  • återställa det förlorade sys-lösenordet med passwordfile-autentisering på Windows.

metoderna som ska användas är beroende av:
1. OS-autentisering
2. passwordfile autentisering.

återställa från förlorat sys-lösenord med OS-autentisering på Unix

1. Se till att OS-användaren som är inloggad är medlem i dBA-gruppen. Om DBA-gruppen inte är känd, kontrollera filen:

$ ORACLE_HOME/rdbms/lib/config.c (or config.s)

2. Se till att sqlnet.ora-filen innehåller inte:

sqlnet.authentication_services

parameter. Om denna parameter finns, bör den kommenteras.

3. kontrollera parametrarna ORACLE_HOME, ORACLE_SID och PATH. De måste motsvara parametrarna i Oracle-instansen där SYS-lösenordet har gått förlorat.

4. Anslut till instansen med:

$ sqlplus /nologsql> connect / as sysdba

5. Ändra sys-lösenordet med:

sql> alter user sys identified by ;

om en passwordfil används, skulle kommandot Uppdatera lösenordsfilen också, så det finns inget behov av att återskapa den här filen.

återställa det förlorade sys-lösenordet med passwordfile-autentisering på Unix

om SYS-lösenordet inte är känt och OS-autentiseringen inte är ett alternativ kan den här metoden användas. Denna metod förutsätter att SYS-kontot inte är tillgängligt, varför en abrupt avstängning för databasen kan behövas.

1. Se till att initialiseringsparametern REMOTE_LOGIN_PASSWORDFILE är inställd på delad eller exklusiv. Om du ändrar detta parametervärde krävs en omstart av instansen.

2. Inaktivera OS-autentisering, om den är aktiverad av någon anledning, genom att ställa in:

sqlnet.authentication_services=(none)

i sqlnet.ora-fil (säkerhetskopiera befintliga sqlnet.ora-fil innan du gör några ändringar).

3. gå till OS-destinationen för passwordfile:

$ cd $ORACLE_HOME/dbs

4. Gör en säkerhetskopia av den tidigare lösenordsfilen:

$ cp orapw$ORACLE_SID orapw$ORACLE_SID.bak

5. Återskapa lösenordsfilen med kommandot orapwd:

$ orapwd file=orapw$ORACLE_SID password=

6. Försök att ansluta med det nya lösenordet.

$ sqlplus /nologconnect sys as sysdba

7. Som en extra kontroll, om ovanstående är framgångsrik, fråga:

sql> select * from v$pwfile_users;

om den returnerar minst en rad är allt ok och den nya lösenordsfilen används.

8. Ändra sys-lösenordet i dataordlistan med:

sql> alter user sys identified by ;

naturligtvis måste det nya lösenordet matcha det nya lösenordet för passwordfile, om det lösenordet ska hållas, eller det kan ställas in på något annat om det ursprungliga lösenordet ska ändras. Detta kommando skulle också uppdatera lösenordsfilen.

9. Om testet i steg inte lyckas måste instansen startas om. Det kan vara så att om ingen sysdba eller sysoper-åtkomst är möjlig, att instansen måste sänkas plötsligt, gör det här genom att:

– döda en bakgrundsprocess (helst döda SMON, så PMON kan fortfarande göra lite rengöring).
– ta bort de delade minnesresurserna med ipcrm om de inte tas bort av min PMON.

10. Efter omstart av instansen, kontrollera om SYS-lösenordet är i drift och om det finns minst en post i v$pwfile_users. Om andra användare tidigare hade poster i passwordfile, ge dem SYSDBA eller SYSOPER igen.

11. Återställ sqlnet.ora-fil från säkerhetskopian som körs i steg # 2, om det behövs.

återställa från förlorat sys-lösenord med NTS-autentisering på Windows

1. Se till att OS-användaren som är inloggad är medlem i Windows ORA_DBA-gruppen.

2. Se också till att sqlnet.ora-filen har följande rad:

sqlnet.authentication_services = (nts)

3. Anslut till instansen med:

$ sqlplus /nologconnect / as sysdba

4. Ändra sys-lösenordet med:

sql> alter user sys identified by ;

om en passwordfil används, skulle kommandot Uppdatera lösenordsfilen också, så det finns inget behov av att återskapa den här filen.

återställa det förlorade sys-lösenordet med passwordfile-autentisering i Windows

om SYS-lösenordet inte är känt och OS-autentiseringen inte är ett alternativ kan den här metoden användas. Denna metod förutsätter att SYS-kontot inte är tillgängligt, varför en avstängning för databasen kan behövas, detta kan åstadkommas genom att stoppa OracleServiceSID på ditt system.

1. Se till att initialiseringsparametern REMOTE_LOGIN_PASSWORDFILE är inställd på delad eller exklusiv.

2. inaktivera OS-autentisering, om den är aktiverad av någon anledning, genom att ställa in:

sqlnet.authentication_services=(none)

i sqlnet.ora-fil

3. gå till OS-destinationen för passwordfile:

cd %ORACLE_HOME%\database

4. Gör en säkerhetskopia av den tidigare lösenordsfilen:

cp pwd.ora pwd.ora.bak

5. Återskapa lösenordsfilen med kommandot orapwd:

orapwd file=pwd.ora password=

6. Försök att ansluta med det nya lösenordet.

sqlplus /nologconnect sys as sysdba

7. Som en extra kontroll, om ovanstående är framgångsrik, fråga:

sql> select * from v$pwfile_users;

om den returnerar minst en rad är allt ok och den nya lösenordsfilen används.

8. ändra sys-lösenordet i dataordlistan med:

sql> alter user sys identified by ;

naturligtvis måste det nya lösenordet matcha det nya lösenordet för passwordfile, om det lösenordet ska hållas, eller det kan ställas in på något annat om det ursprungliga lösenordet ska ändras. Detta kommando skulle också uppdatera lösenordsfilen.

9. Om testet i steg inte lyckas måste instansen startas om. Detta kan göras genom att starta om tjänsten.

10. Efter omstart av instansen, kontrollera om SYS-lösenordet är i drift och om det finns minst en post i v$pwfile_users. Om andra användare tidigare hade poster i passwordfile, ge dem SYSDBA eller SYSOPER igen.

11. återaktivera nts-autentisering genom att ställa in:

sqlnet.authentication_services=(nts)

om det behövs.

Lämna ett svar

Din e-postadress kommer inte publiceras.