Newsgroup: it.comp.software.database
Titolo: Insufficient privileges con Oracle 9i

Salve a tutti
mi sta capitando una cosa strana. Ho installato su PC1 Oracle 9i,creato un 
utente con i ruoli DBA,CONNECT e RESOURCE. Quando mi collego in remoto con 
l'utente creato in precedenza mi fa accedere tranquillamente come SYSDBA.
Ho installato la stessa versione di Oracle su altro PC2,creato stesso utente 
con stessi ruoli,e quando mi collego in remoto mi da questo errore 
"ORA-01031: Insufficient privileges"... Eppure sono identici i due DB sui 
due PC!!!
Ho provato anche ad eliminare completamente il DB su PC1 e ricreato,e mi fa 
sempre accedere da remoto come SYSDBA,fatta la stessa procedura per il 
PC2....sempre lo stesso errore....cosa mi può sfuggire? 

 due PC!!!
Prima cosa che mi viene in mente. Qual'e' il settaggio di 
REMOTE_LOGIN_PASSWORDFILE?
Hai un password file?
Anche il parametro SQLNET.AUTHENTICATION_SERVICES potrebbe essere la causa.
-- 
Fabrizio Magni
fabrizi...@mycontinent.com
replace mycontinent with europe


Scusa la mia ignoranza...ma da poco uso Oracle e non credo di aver impostato 
ne un pw file e ne SQLNET.AUTHENTICATION_SERVICES . Sotto Utenti->Ruolo non 
le trovo queste voci
Se mi dici dove posso trovarli li controllo e ti faccio sapere 

 Se mi dici dove posso trovarli li controllo e ti faccio sapere 
Hope this help!

 a SQLNET.AUTHENTICATION_SERVICES= (NONE)
Solo all'intenno di \pfile c'č un file .ora....ma non ha lo stesso nome che 
mi hai detto tu...cmq ti posto il contenuto:
##############################################################################
# Copyright (c) 1991, 2001, 2002 by Oracle Corporation
##############################################################################
###########################################
# Cache and I/O
###########################################
db_block_size=8192
db_cache_size=16777216
db_file_multiblock_read_count=32
###########################################
# File Configuration
###########################################
control_files=("C:\oracle\oradata\DBVRLAB\CONTROL01.CTL", 
"C:\oracle\oradata\DBVRLAB\CONTROL02.CTL", 
"C:\oracle\oradata\DBVRLAB\CONTROL03.CTL")
###########################################
# Cursors and Library Cache
###########################################
open_cursors=300
###########################################
# Diagnostics and Statistics
###########################################
background_dump_dest=C:\oracle\admin\DBVRLAB\bdump
core_dump_dest=C:\oracle\admin\DBVRLAB\cdump
timed_statistics=TRUE
user_dump_dest=C:\oracle\admin\DBVRLAB\udump
###########################################
# Database Identification
###########################################
db_domain=""
db_name=DBVRLAB
###########################################
# Instance Identification
###########################################
instance_name=DBVRLAB
###########################################
# Job Queues
###########################################
job_queue_processes=10
###########################################
# MTS
###########################################
dispatchers="(PROTOCOL=TCP) (SERVICE=DBVRLABXDB)"
###########################################
# Optimizer
###########################################
hash_join_enabled=TRUE
query_rewrite_enabled=TRUE
star_transformation_enabled=TRUE
###########################################
# Sort, Hash Joins, Bitmap Indexes
###########################################
hash_area_size=1048576
pga_aggregate_target=33554432
sort_area_size=1048576
###########################################
# Pools
###########################################
java_pool_size=33554432
large_pool_size=8388608
shared_pool_size=50331648
###########################################
# Processes and Sessions
###########################################
processes=150
###########################################
# Redo Log and Recovery
###########################################
fast_start_mttr_target=300
###########################################
# System Managed Undo and Rollback Segments
###########################################
undo_management=AUTO
undo_retention=10800
undo_tablespace=UNDOTBS1
###########################################
# Security and Auditing
###########################################
remote_login_passwordfile=EXCLUSIVE
###########################################
# Miscellaneous
###########################################
aq_tm_processes=1
compatible=9.2.0.0.0
 

Caro asterix,
quello che tu hai incollato è il pfile, ovvero il parameter file nel
quale puoi trovare i parametri di inizializzazione della tua istanza.
Se leggi bene ti dicevo di andare nella oracle_home, cartella Network e
poi aprire il file SQLNET.ORA..


Ciao Asterix,
e scusa la precedente risposta un po' frettolosa.
Come soulsacrifire ti ha gia' detto il parametero 
SQLNET.AUTHENTICATION_SERVICES si trova nel file sqlnet.ora (per default 
in %ORACLE_HOME%\network\admin dove per te %ORACLE_HOME% dovrebbe 
corrispondere a c:\oracle).
Personalmente suggerisco di levarlo o commentarlo in quanto il settaggio 
a NONE impedisce l'autenticazione via sistema operativo che e' comoda 
soprattutto quando le cose vanno male.
Ma e' un parere decisamente personale e altri possono reputare migliore 
una soluzione in cui tale utenticazione non e' permessa.
Per quanto riguarda il parametro REMOTE_LOGIN_PASSWORDFILE lo trovi nel 
"parameter file" o spfile (a seconda di quale stai usando) che si trova 
in %ORACLE_HOME%\dbs (stesso path anche per il "password file").
Il pfile che stai guardando e' quello che solitamente viene usato solo 
in fase di creazine del DB.
Dalla 9i in avanti, dopo la fase di creazione, viene generato un spfile 
quindi le modifiche devi eseguirle con il comando "alter system set" 
dopo esserti connesso come sysdba.
Tieni infine presente che alcuni DBA, per ragioni di sicurezza, 
disabilitano l'autenticazione remota via password file.


"soulsacrifire" <soulsa...@yahoo.ie.invalid> ha scritto nel messaggio 
news:0FGgf.10376$tc5....@tornado.fastwebnet.it...

Si si...me ne sono accorto.... cmq ho cambiato e scritto così il file
# SQLNET.ORA Network Configuration File: 
C:\oracle\ora92\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
SQLNET.AUTHENTICATION_SERVICES= (NONE)
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
ma sempre lo stesso prob :-(
Tra le altre cose anche l'altro PC ha la stessa configurazione originale 
ovvero
# SQLNET.ORA Network Configuration File: 
D:\oracle\ora90\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
ma funziona anche se non è messo su NONE

 ha scritto nel messaggio 
news:4383396b$0$84150$892e...@authen.yellow.readfreenews.net...

Grazie mille per le tue info... ho provato a commentare la riga che mi hai 
suggerito, in questo modo
# SQLNET.ORA Network Configuration File: 
C:\oracle\ora92\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
# SQLNET.AUTHENTICATION_SERVICES= (NONE)
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
ma cmq non va...

 
A dire il vero ritengo che il tuo problema risieda nel parametro 
REMOTE_LOGIN_PASSWORDFILE.
Prova questo su entrambe le istanze:
show parameter REMOTE_LOGIN_PASSWORDFILE
e
select * from V$PWFILE_USERS;
Controlla inoltre che esista un file chiamato orapwSID (dove sid e' il 
nome della tua istanza) in c:\oracle\dbs (o ovunque sia la tua cartella 
dbs).
Posta poi i risultati.
Ciao


 dbs).
L'unico file sotto dbs è initdw.ora

 
Strano.
Sinceramente non lavoro con windows e non so se per quel sistema 
operativo i file vengono messi da qualche altra parte.
Le informazioni su dove si trovino i file dovrebbero trovarsi nel tuo 
registry.
In ogni caso il problema e' che il tuo user non e' SYSDBA!


 ha scritto nel messaggio 
news:43834b57$0$84181$892e...@authen.yellow.readfreenews.net...

Io ho copiato le varie istruzioni sql nello stesso momento in cui creavo il 
DB e per quanto riguarda la creazione dell'utente ho questo script:
CREATE USER "DBVRLAB"  PROFILE "DEFAULT"
    IDENTIFIED BY "dbvrlab" DEFAULT TABLESPACE "DBVRLAB"
    ACCOUNT UNLOCK;
GRANT "CONNECT" TO "DBVRLAB";
GRANT "DBA" TO "DBVRLAB";
GRANT "RESOURCE" TO "DBVRLAB";
Ho provato a mettere anche SYSDBA ma mi dice che non esiste.
Ma la cosa strana, è che su un altro pc con installato Oracle, stessa 
versione, e generato il db con gli stessi file, si collega come SYSDBA!!! 

Asterix, segui l'esempio sotto (ho usato le tue istruzione).
SQL> CREATE USER "DBVRLAB"  PROFILE "DEFAULT"
     IDENTIFIED BY "dbvrlab"
     ACCOUNT UNLOCK;
GRANT "CONNECT" TO "DBVRLAB";
GRANT "DBA" TO "DBVRLAB";
GRANT "RESOURCE" TO "DBVRLAB";  2    3
User created.
SQL>
Grant succeeded.
SQL>
Grant succeeded.
SQL>
Grant succeeded.
SQL>
SQL> select * from V$PWFILE_USERS;
USERNAME                       SYSDB SYSOP
------------------------------ ----- -----
SYS                            TRUE  TRUE
PIPPO                          TRUE  FALSE
C:\>sqlplus DBVRLAB/dbvrlab@test4k
SQL*Plus: Release 9.2.0.5.0 - Production on Tue Nov 22 17:56:03 2005
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 
10.1.0.3.0 - 64
bit Production
With the Partitioning, OLAP and Data Mining options
C:\>sqlplus "DBVRLAB/dbvrlab@test4k as sysdba"
SQL*Plus: Release 9.2.0.5.0 - Production on Tue Nov 22 17:56:14 2005
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
ERROR:
ORA-01031: insufficient privileges
SQL> grant sysdba to DBVRLAB;
Grant succeeded.
SQL> select * from V$PWFILE_USERS;
USERNAME                       SYSDB SYSOP
------------------------------ ----- -----
SYS                            TRUE  TRUE
PIPPO                          TRUE  FALSE
DBVRLAB                        TRUE  FALSE
C:\>sqlplus "DBVRLAB/dbvrlab@test4k as sysdba"
SQL*Plus: Release 9.2.0.5.0 - Production on Tue Nov 22 17:57:14 2005
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
Come vedi dopo "grant sysdba to DBVRLAB;" tutto funziona correttamente.
DBA e SYSDBA sono due cose diverse.
DBA e' un ruolo mentre SYSDBA e' un privilegio di sistema.
Tempo per me di abbandonare l'ufficio. Al massimo ti rispondo da casa.
Buona serata.


 DBA e' un ruolo mentre SYSDBA e' un privilegio di sistema.
grazie della tua disponibilità 

 
Bhe, a questo punto il problema sta tutto qui.
Posta l'istruzione e l'errore che ti da' e vediamo di risolverlo.
Non rinunciare. Questo e' il miglior modo per farsi le ossa su sistemi 
di questo tipo.
Ciao


 User created.
Ti dico già da subito che gli ulimi due numeri 2 e 3 mi danno errore, li 
devo eliminare per far accettare l'istruzione 

 
Scusa asterix,
quelli sono numeri sporchi rimasti nel copia e incolla dal sqlplus.
L'istruzione termina sempre con il ";"
Il resto e' "sporcizia".


 Il resto e' "sporcizia".
Infatto immaginavo....ma anche se poteva sembrare una domanda banale, data 
la mia poca esperienza, ho preferito cmq chiedere 

[CUT]
Tutto risolto..
Ho ripristinato il file sqlnet.ora com'era originariamente
# SQLNET.ORA Network Configuration File: 
C:\oracle\ora90\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
avevo lasciato ancora il file con le modifiche suggeritemi
# SQLNET.ORA Network Configuration File: 
D:\oracle\ora90\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
# SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
Ho ricreato l'utente da SYSTEM inserendo già il privilegio sysdba in questo 
modo
CREATE USER "DBVRLAB"  PROFILE "DEFAULT"
    IDENTIFIED BY "dbvrlab" DEFAULT TABLESPACE "DBVRLAB"
    ACCOUNT UNLOCK;
GRANT "CONNECT" TO "DBVRLAB";
GRANT "DBA" TO "DBVRLAB";
GRANT "RESOURCE" TO "DBVRLAB";
grant sysdba to DBVRLAB;
Ora tutto OK....però non capisco come mai su un Pc senza inserire il 
privilegio "grant sysdba to DBVRLAB" si collega perfettamente da remoto come 
sysdba mentre da altri no.....i misteri dell'informatica
Grazie ancora per il tuo aiuto
P.S.
avrei altre domande sempre su oracle ma di altro genere.... apro un altra 
discussione oppure posso continuare qui?

 
Ti conviene aprire un altro post. Questo e' ormai chilometrico.
Fuggo a pranzo.



Va bene.... spero di avere sempre il tuo aiuto ;-)
Grazie ancora 

 Fai un controllo e fammi sapere.
La situazione ha ancora di più dell'assurdo...almeno per me da profano e 
seguedo i tuoi suggerimenti...
Da remoto mi sono collegato al PC con il DB senza aver dato nessun 
privilegio di SYSDBA..... ed ecco cos'è venuto fuori...
C:\Documents and Settings\DiegoR>sqlplus "DBVRLAB/dbvrlab@dbvrlab_diego as 
sysdba"
SQL*Plus: Release 9.2.0.1.0 - Production on Mer Nov 23 16:30:04 2005
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
Connesso a:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
SQL> select * from V$PWFILE_USERS;
USERNAME                       SYSDB SYSOP
------------------------------ ----- -----
SYS                            TRUE  TRUE
SQL>
Si connette come sysdba ma alla fine lanciando select * from V$PWFILE_USERS 
non risulta essere sysdba.... Mha.... 

 
Scusami se lo dico ma mi sto divertendo.
Guarda questo:
C:\>sqlplus "pippo/pippo@unp as sysdba"
SQL*Plus: Release 8.1.7.0.0 - Production on Wed Nov 23 16:51:14 2005
(c) Copyright 2000 Oracle Corporation.  All rights reserved.
Connected to:
Oracle8i Release 8.1.7.4.1 - Production
JServer Release 8.1.7.4.1 - Production
SQL> select username from dba_users where username=upper('pippo');
no rows selected
SQL> select username from dba_users where username='pippo' or 
username='PIPPO';
no rows selected
Come spieghi che sia possibile la connessione come sysdba da un utente 
che nemmeno esiste?
Fai la prova anche tu e dimmi se riesci a connetterti da un utente 
inesistente.
:)



Ho fatto la prova, e non mi connetto con un utente che non esiste....
Ma infatti, anche da inesperto non capisco come sia possibile che riesco a 
collegarmi con un utente che non è sysdba... 

 
Qui mi prendi in contropiede.
Non dovresti essere in grado di connetterti se non hai il privilegio di 
sysdba!
Prova questa query:
select grantee, privilege, admin_option
from sys.dba_sys_privs where grantee='NOMEUTENTE';
dove il NOMEUTENTE e' il nome dell'utente con cui riesci a connetterti 
come SYSDBA.
Inoltre appena dopo esserti connesso dai il comando:
show user
Sono davvero curioso!


 show user
SQL> show user
USER Ş "SYS"
SQL> 

Ok, qui un'altra idea se hai ancora voglia di fare prove (e di imparare 
qualcosa di nuovo assieme).
Prova a commentare il parametro:
SQLNET.AUTHENTICATION_SERVICES
sul server e sul client e a riprovare la connessione esterna come SYSDBA.
Tutto quello che posso pensare e' che tu stia usando l'autenticazione 
nativa di windows (infatti tu hai il parametro settato a NTS).
a questo punto la differenza fra i tuoi due sistemi non e' da ricercare 
in oracle ma in windows (definizione utenti, domi, etc...).
Chiudo per oggi e a domani.


 oracle ma in windows (definizione utenti, domi, etc...).
Le autenticazioni Windows sono state create tutte allo stesso modo...come 
Administrator e tutti con XP 


Ho dovuto riprendere in mano il manuale delle autenticazioni sotto 
windows (si', esiste un manuale a parte solo per quello).
Esiste la windows native autentication e sembra che tu stia usando 
proprio quella.
Quindi niente password file per te.
La differenza fra i tuoi due server?
Forse negli utenti creati (administrator ha sempre la stessa password?) 
on un servizio che su uno gira e sull'altro no (NTLM se non erro).
Per i file di configurazione della parte di network. Per default e 
convenzione si trovano sempre sotto $ORACLE_HOME/network/admin.
Esiste il modo per spostarli ma non lo fa quasi nessuno (fortunatamente) .
Quindi il primo tentativo ti conviene eseguirlo proprio nella directory 
di default.
I tentatici che puoi fare:
- connetterti senza NTS settato (non dovresti poterti connettere),
- connetteri con vari utenti del DB con "as sysdba" anche se questi non 
hanno il privilegio.
Ci riesci? Allora e' il sistema operativo che ti autentica e non il 
passsword file.
Bel buco di sicurezza... a, no, scusa. Grande feature!!


 Forse negli utenti creati (administrator ha sempre la stessa password?)
Si, effettivamente hai ragione... i due pc che si riescono a collegare tra 
di loro vicendevolmente, anche se non sono SYSDBA hanno la stessa pw di 
WinXp
Svelato l'arcano mistero.... ho installato Oracle su un terzo PC3 con una pw 
di WinXP differente, e logicamente collegandomi ad un altro DB su PC1 con 
altra pw di XP mi diceva che non avevo i privilegi per collegarmi come 
SYSDBA.
Poi ho messo la stessa pw di XP del PC1 sul PC3.... e per magia PC3 si 
collegava come SYSDBA al db di PC1....logicamente senza aver dato "grant 
sysdba to UTENET_PC3"....
Buco di Oracle o di XP? 

 
Feature!
