Πώς αλλάζουμε το όνομα του user / schema σε μία βάση δεδομένων της Oracle

Πώς αλλάζουμε το όνομα του user / schema σε μία βάση δεδομένων της Oracle
Πώς αλλάζουμε το όνομα του user / schema σε μία βάση δεδομένων της Oracle

Κάνοντας χρήση μία Oracle Database μπορεί κάποια στιγμή να χρειαστεί να αλλάξουμε όνομα σε έναν χρήστη και ένα schema. Μέχρι την έκδοση 11g δεν ήτανε αυτό δυνατό και θα έπρεπε να φτιάξουμε καινούργιο χρήστη και export/import με remap_schema. Μπορούμε όμως πλέον να κάνουμε rename τον χρήση αφού όμως πρώτα ενεργοποιήσουμε μία παράμετρο. Στο άρθρο αυτό θα δούμε πώς γίνεται βήμα βήμα.

Για αρχή συνδεόμαστε στη βάση με sqlplus:

[oracle@dp-gr ~]$ sqlplus / as sysdba

Έπειτα τρέχουμε την παρακάτω εντολή ώστε να ενεργοποιηθεί η παράμετρος στο επόμενο restart του instance:

alter system set "_enable_rename_user"=true scope=spfile;
System altered

Σταματάμε το instance:

shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

Ξεκινάμε το instance σε restrict mode (μπορεί να συνδεθεί μόνο sysdba χρήστης):

startup restrict;
ORACLE instance started.

Total System Global Area  411041792 bytes
Fixed Size                  2925024 bytes
Variable Size             327159328 bytes
Database Buffers           75497472 bytes
Redo Buffers                5459968 bytes
Database mounted.
Database opened.

Στο παράδειγμα μας θέλουμε το χρήστη / schema “stratos” να το αλλάξουμε σε “nikos“. Αν τρέξουμε τώρα ένα select πάνω σε πίνακα που του ανήκει θα δούμε ότι θα επιτρέψει αποτελέσματα:

select * from stratos.dept;
    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     FLORIDA

Τρέχουμε την παρακάτω εντολή που αλλάζει το όνομα:

alter user stratos rename to nikos identified by "kwdikos";

User altered.

Στην περίπτωση που μας εμφανίσει σφάλμα και δεν μας αφήνει να αλλάξουμε το όνομα του χρήστη, μπορούμε να δοκιμάσουμε τα παρακάτω αντι της προηγούμενης εντολής:

update sys.user$ set name= 'nikos' where name = 'stratos';
commit;

alter user stratos identified by "kwdikos";

shutdown immediate;

startup restrict;

Αν ξανά τρέξουμε το ίδιο select θα δούμε ότι αναφέρει ότι πίνακας δεν υπάρχει:

select * from stratos.dept;
select * from stratos.dept
                      *
ERROR at line 1:
ORA-00942: table or view does not exist

Αν το τρέξουμε κάτω από το schema “nikos” όμως θα δούμε ότι έχει ολοκληρωθεί η αλλαγή και το select επιστρέφει αποτελέσματα κανονικά:

select * from nikos.dept;
    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     FLORIDA

Για να ανοίξουμε την βάση ώστε να είναι προσβάσιμη από όλους τους χρήστες, τρέχουμε το παρακάτω:

alter system disable restricted session;

System altered.

Μοιράσου το

Το 1 σκέφτηκε το "Πώς αλλάζουμε το όνομα του user / schema σε μία βάση δεδομένων της Oracle"

Αφήστε μία απάντηση