Inhaltsverzeichnis
Mit Password File an der DB als sysdba anmelden und den „ORA-01031: insufficient privileges vermeiden“
Ziel ist es sich bei einer gestoppten Datenbank als SYS User anzumelden, um diese remote starten zu können.
Vorbereitung
listener.ora
Listener.ora mit einem statischen Eintrag erweitern um die DB remote starten und stoppen zu können.
# Dedicated Service SID_LIST_LISTENER= (SID_LIST= (SID_DESC= (GLOBAL_DBNAME=GPITESTDB) (SID_NAME=GPITESTDB) (ORACLE_HOME=D:\oracle\product\11.2.0\dbhome_1)))
DB Parameter
Um die DB remote zu starten, muss der init.ora parameter auf *.remote_login_passwordfile='exclusive' gesetzt sein.
SHOW parameter remote_login_passwordfile
Password file
Eine Password Datei orapw<SID> muss in $ORACLE_HOME/dbs existieren.
Neu anlegen mit:
orapwd file=$ORACLE_HOME/dbs/orapwGPIDB password=abcd123 force=y nosysdba=n
Falls eine neue Password Datei erzeugt wurde, DB stoppen und wieder starten, erneut testen.
tnsname.ora eintrag (local und remote)
TNS Eintrag für die DB erstellen.
Connect testen
Fehler: ORA-01031: insufficient privileges
sqlplus sys@GPIDB_AUX AS sysdba SQL*Plus: Release 11.2.0.3.0 Production ON Sat DEC 14 12:09:57 2013 Copyright (c) 1982, 2011, Oracle. ALL rights reserved. Enter password: ERROR: ORA-01031: insufficient privileges
Tritt dieser Fehler auf sorgfältig die obigen Punkte prüfen, das auch alles richtig eingerichtet ist.
Weitere Fehler überprüfen:
DBA Gruppe prüfen
Über die Datei $ORACLE_HOME/rdbms/lib/config.c kann geprüft werden welche Gruppe bei der DB Installation als berechtigte Gruppe für den localen „/ as sysdba“ konfiguriert wurde. Unter der Gruppe sollte die DB auch laufen!
id orace uid=54321(oracle) gid=54321(oinstall) groups=54322(dba),54321(oinstall) cat $ORACLE_HOME/rdbms/lib/config.c ... #define SS_DBA_GRP "dba" #define SS_OPER_GRP "dba" #define SS_ASM_GRP "" char *ss_dba_grp[] = {SS_DBA_GRP, SS_OPER_GRP, SS_ASM_GRP}; ps uafx |grep smon oracle 29745 0.0 0.1 24878360 213632 ? Ss Dec15 0:06 ora_smon_DBGPI1 #Wem gehören die LIstenerprozesse? ps –ef| grep tns
Hier kann erkannt werden das die Datenbank mit der Gruppe DBA angelegt wurde und auch unter dem Oracle User läuft. Entsprechend muss die Berechtigung auf dem Password File geprüft werden.
PWD File mit SQL*Plus auslesen
SQL> SELECT * FROM V$PWFILE_USERS;
Permission auf der Password Datei prüfen
ls -la -rw-r----- 1 oracle oinstall 1536 Dec 16 00:30 orapwGPI1
Quellen
- Troubleshooting ORA-1031 Insufficient Privilege While Connecting As SYSDBA [ID 730067.1]
- UNIX: Diagnostic C program for ORA-1031 from CONNECT INTERNAL / AS SYSDBA (Doc ID 67984.1)