Πώς μεταφέρουμε μαζικά datafiles online σε βάση δεδομένων της Oracle

- Πώς να γυρίσουμε μία Oracle Database πίσω στον χρόνο με χρήση restore point σε περιβάλλον Data Guard - 28 Απρίλιος 2025
- Πώς μπορούμε να αυξήσουμε την απόδοση στο target Replicat του Oracle GoldenGate με παραλληλία - 19 Μάρτιος 2025
- Πώς φτιάχνουμε χρήστες σε βάσεις δεδομένων που ανήκουν σε Always On Availability Group του SQL Server - 10 Φεβρουάριος 2025
Σε αυτό το άρθρο θα δούμε ένα script με το οποίο μπορούμε να μεταφέρουμε μαζικά datafiles online που μπορεί να τα έχουμε δημιουργήσει σε λάθος τοποθεσία είτε θέλουμε να τα αλλάξουμε storage σε μία βάση δεδομένων της Oracle.
Ο κώδικας
Εκτελώντας τον παρακάτω κώδικα θα δημιουργηθούν τα alter commands τα οποία αν τα εκτελέσουμε θα πραγματοποιήσουν online την μεταφορά στην καινούργια τοποθεσία.
Εμείς χρειάζεται μόνο να ορίσουμε τον destination folder και τον source folder που βρίσκονται τα datafiles, όπως επίσης μπορούμε να επιλέξουμε να μεταφέρουμε μόνα όσα datafiles ανήκουν σε συγκεκριμένο μόνο tablespace:
--need to change the to destination and filters select ('alter database move datafile '''||file_name ||''' to ''/oracle/oradata/'|| substr(file_name,instr(file_name, '/', -1)) ||''';') move_command --need to change the destination folder from dba_data_files where 1=1 and lpad(file_name, instr(file_name, '/', -1)) = '/oracle/logs/' --old source datafile location --and tablespace_name = 'USERS' --filter with tablespace name ;
Κατά την εκτέλεση του script θα δημιουργηθούν alter commands όπως τα παρακάτω που θα περιέχουν την προηγούμενη τοποθεσία και την καινούργια. Για να πραγματοποιηθεί η μεταφορά θα πρέπει να εκτελέσουμε τα δημιουργημένα αυτά alter statements:
alter database move datafile '/oracle/logs/users_19.DBF' to '/oracle/oradata/users_19.DBF';
alter database move datafile '/oracle/logs/users_20.DBF' to '/oracle/oradata/users_20.DBF';
alter database move datafile '/oracle/logs/users_21.DBF' to '/oracle/oradata/users_21.DBF';