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

- Πώς μπορούμε να συνδέσουμε SQL Server με άλλον SQL Server με τη χρήση Linked Server - 3 Νοέμβριος 2025
- Πώς απελευθερώνουμε δεσμευμένο χώρο από datafiles / tempfiles μίας βάσης δεδομένων της Oracle - 1 Σεπτέμβριος 2025
- Πώς μετατρέπουμε μια βάση δεδομένων από Physical Standby σε Logical Standby σε Oracle Data Guard - 2 Ιούνιος 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';

