Πώς αλλάζουμε το όνομα του user / schema σε μία βάση δεδομένων της Oracle
- Πώς συλλέγουμε to actual execution plan από τα queries με χρήση Extended Event και πως διαβάζουμε τα δεδομένα του - 2 Δεκέμβριος 2024
- Πώς βρίσκουμε τι δικαιώματα έχει ένας χρήστης σε βάση δεδομένων της Oracle - 1 Νοέμβριος 2024
- Πώς ενεργοποιούμε το Unified Auditing σε Oracle Database - 7 Οκτώβριος 2024
Κάνοντας χρήση μία 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.
alter user sys rename to louis identified by “change_on_install”;
its possible?