Qual è la differenza tra account di sistema e di sistema nei database Oracle?


39

Esistono due modi per connettersi a Oracle come amministratore utilizzando sqlplus:

  1. sqlplus sys as sysdba
  2. sqlplus system/manager

Questi account dovrebbero essere utilizzati per scopi diversi, suppongo.

A quali compiti sono destinati questi due schemi? Quando dovrei usare l'uno o l'altro tra loro?

Risposte:


43

SYS

  • Creato automaticamente quando è installato il database Oracle
  • Assegnato automaticamente il DBAruolo
  • Ha una password predefinita: CHANGE_ON_INSTALL (assicurati di cambiarla)
  • Possiede le tabelle e le viste di base per il dizionario dei dati del database
  • Lo schema predefinito quando ci si connette come SYSDBA

Le tabelle nello SYSschema sono manipolate solo dal database. Non dovrebbero mai essere modificati da alcun utente o amministratore del database e nessuno dovrebbe creare alcuna tabella nello schema dell'utente SYS. Gli utenti del database non devono connettersi al database Oracle utilizzando l' SYSaccount.

SYSTEM

  • Creato automaticamente quando è installato il database Oracle
  • Assegnato automaticamente il DBAruolo
  • Ha una password predefinita: MANAGER (assicurati di cambiarla)
  • Utilizzato per creare tabelle e viste aggiuntive che visualizzano informazioni amministrative
  • Utilizzato per creare tabelle e viste interne utilizzate da vari strumenti e opzioni del database Oracle

Non utilizzare mai lo SYSTEMschema per archiviare tabelle di interesse per utenti non amministrativi.

/attraverso


19
In pratica, ogni DBA fa sqlplus / as sysdbaper il lavoro quotidiano - in 15 anni lavorando con dozzine di DBA esperti non ho mai incontrato nessuno che si preoccupasse SYSTEMdell'account.
Caio

21

Dalla documentazione Oracle 11g :

Utenti SYS E SYSTEM

I seguenti account utente amministrativi vengono creati automaticamente quando si installa Oracle Database. Entrambi sono creati con la password fornita al momento dell'installazione e entrambi hanno automaticamente il ruolo DBA.

  • SYS

    Questo account può eseguire tutte le funzioni amministrative. Tutte le tabelle e le viste di base (sottostanti) per il dizionario dei dati del database sono memorizzate nello schema SYS. Queste tabelle e viste di base sono fondamentali per il funzionamento di Oracle Database. Per mantenere l'integrità del dizionario dei dati, le tabelle nello schema SYS sono manipolate solo dal database. Non devono mai essere modificati da alcun utente o amministratore del database. Non è necessario creare alcuna tabella nello schema SYS.

    All'utente SYS viene concesso il privilegio SYSDBA, che consente a un utente di eseguire attività amministrative di alto livello come backup e ripristino.

  • SYSTEM

    Questo account può eseguire tutte le funzioni amministrative tranne le seguenti:

    • Backup e ripristino

    • Aggiornamento del database

    Sebbene questo account possa essere utilizzato per eseguire attività amministrative quotidiane, Oracle consiglia vivamente di creare un account per utenti con nome per amministrare il database Oracle e consentire il monitoraggio dell'attività del database.

Privilegi di sistema SYSDBA e SYSOPER

SYSDBA e SYSOPER sono privilegi amministrativi richiesti per eseguire operazioni amministrative di alto livello come la creazione, l'avvio, l'arresto, il backup o il ripristino del database. Il privilegio di sistema SYSDBA è per gli amministratori di database pienamente abilitati e il privilegio di sistema SYSOPER consente a un utente di eseguire attività operative di base, ma senza la possibilità di esaminare i dati dell'utente.

I privilegi di sistema SYSDBA e SYSOPER consentono l'accesso a un'istanza di database anche quando il database non è aperto. Il controllo di questi privilegi è quindi completamente al di fuori del database stesso. Questo controllo consente a un amministratore a cui è concesso uno di questi privilegi di connettersi all'istanza del database per avviare il database.

È inoltre possibile considerare i privilegi SYSDBA e SYSOPER come tipi di connessioni che consentono di eseguire determinate operazioni del database per le quali non è possibile concedere i privilegi in nessun altro modo. Ad esempio, se si dispone del privilegio SYSDBA, è possibile connettersi al database utilizzando AS SYSDBA.

All'utente SYS viene automaticamente concesso il privilegio SYSDBA al momento dell'installazione. Quando si accede come utente SYS, è necessario connettersi al database come SYSDBA o SYSOPER. La connessione come utente SYSDBA invoca il privilegio SYSDBA; la connessione come SYSOPER invoca il privilegio SYSOPER. Oracle Enterprise Manager Database Control non ti consente di accedere come SYS utente senza collegarti come SYSDBA o SYSOPER.

Quando ti connetti con il privilegio SYSDBA o SYSOPER, ti connetti con uno schema predefinito, non con lo schema generalmente associato al tuo nome utente. Per SYSDBA questo schema è SYS; per SYSOPER lo schema è PUBBLICO.


8

Un esempio di una grande differenza tra SYS (o qualsiasi altra connessione SYSDBA) e ogni altro utente: SYS non può eseguire letture coerenti . Una conseguenza di ciò (ce ne sono altri) è che non puoi fare un'esportazione CONSISTENTE = Y come SYS usando la vecchia utility exp.

Tom Kyte, dipendente ed esperto Oracle, è del parere che non dovresti mai usare nessuno dei due . Per quanto riguarda SYS, sottolinea che funziona diversamente come indicato nell'esempio sopra, ma più in generale li considera "di proprietà" di Oracle Corporation. Se si apporta una modifica o si aggiunge qualcosa in uno degli schemi e si verifica un problema (ad esempio, un aggiornamento del database non riesce), sospetto che la risposta del supporto Oracle sarebbe: "Non avresti dovuto farlo".


0

Sembra che il poster stia dicendo che ci sono solo due modi per connettersi:

"Esistono due modi per connettersi a Oracle come amministratore utilizzando sqlplus:

sqlplus sys as sysdba
sqlplus system/manager"

Un account amministratore è qualsiasi account utente Oracle con privilegio SYSDBA o ruolo DBA. SYS è un utente predefinito con SYSDBA e SYSTEM è un utente predefinito con DBA. Se in un database ci sono n account account, allora ci sono n utenti che possono connettersi con i privilegi di amministratore (per definizione) - non ce ne sono solo due.

Un altro punto riguarda SQL * Plus. È possibile connettersi come SYS utilizzando l'autenticazione del sistema operativo al prompt del sistema operativo: sqlplus / as sysdba. È inoltre possibile avviare SQL * Plus e quindi CONNECT / AS SYSDBA. È possibile specificare una password al prompt del sistema operativo, in un'istruzione CONNECT, oppure richiedere a SQL * Plus di richiederlo. È possibile utilizzare un nome di servizio di rete. Puoi (e dovresti) cambiare la password di SISTEMA. E così via.

Ciò che il poster intendeva dire, penso, è che ci sono almeno due account amministratore in un database Oracle e se SYSTEM ha la password predefinita e se è impostata l'autenticazione del sistema operativo, questi sono due (di molti) esempi di come SYS e SYSTEM possono accedere al database usando SQL * Plus.

La domanda sulla differenza tra SYS e SYSTEM è diversa ed è stata risolta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.