Πώς μεταφέρουμε μαζικά datafiles online σε βάση δεδομένων της Oracle
- Πώς συλλέγουμε to actual execution plan από τα queries με χρήση Extended Event και πως διαβάζουμε τα δεδομένα του - 2 Δεκέμβριος 2024
- Πώς βρίσκουμε τι δικαιώματα έχει ένας χρήστης σε βάση δεδομένων της Oracle - 1 Νοέμβριος 2024
- Πώς ενεργοποιούμε το Unified Auditing σε Oracle Database - 7 Οκτώβριος 2024
Σε αυτό το άρθρο θα δούμε ένα 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';