Di chuyển datafile online

Bài này là bài đầu tiên về series các tính năng mới của Oracle Database từ bản 12c trở đi. Thực ra thì bản 12c cũng ra mắt hơn chục năm rồi, cũng chẳng còn mới nữa đâu. Tuy nhiên ở Việt Nam, mình thấy có nhiều công ty vẫn dùng bản 11g, nên mình làm series này để anh em cân nhắc các  tính năng mới có đáng để nâng cấp hay không?

Ngoài ra, nếu anh em muốn mình review hay demo các tính năng gì, anh em có thể gửi vào group Facebook cho mình nhé

https://www.facebook.com/groups/khotailieukienthucdatabase

Trước phiên bản 12c, mỗi khi bạn muốn di chuyển 1 datafile từ nơi này sang nơi khác, thủ tục di chuyển thường có nhiều bước tương đối phức tạp, và nhất là phải offline datafile (tức là trong thời gian thực hiện di chuyển datafile, mọi truy cập đến nó phải dừng lại).

Bắt đầu từ bản 12c trở đi, chúng ta đã có thể làm điều này cực kỳ đơn giản, chỉ với một câu lệnh duy nhất. Hãy cùng thử nhé:

Tình huống thực tế mà tôi gặp phải như sau:

SQL> select file_name from dba_data_files; 

FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/ORCL12C/datafile/o1_mf_users_j0nnjs5r_.dbf
/u01/app/oracle/oradata/ORCL12C/datafile/o1_mf_undotbs1_j0nnjr3l_.dbf
/u01/app/oracle/oradata/ORCL12C/datafile/o1_mf_system_j0nngkq3_.dbf
/u01/app/oracle/oradata/ORCL12C/datafile/o1_mf_sysaux_j0nnhyxy_.dbf
/home/oracle/data_01.dbf

Như các bạn thấy datafile data_01.dbf hiện đang nằm ở /home/oracle. Đây là thư mục home của user oracle, không nên sử dụng để lưu datafile.

Bây giờ, nhiệm vụ của tôi là phải di chuyển datafile này từ /home/oracle sang /u01/app/oracle/oradata/ORCL12C/datafile. Tôi sẽ làm việc này bằng 1 câu lệnh duy nhất như sau:

SQL> ALTER DATABASE MOVE DATAFILE '/home/oracle/data_01.dbf' TO '/u01/app/oracle/oradata/ORCL12C/datafile/data_01.dbf';
Database altered.

Đơn giản không nào, các bạn thử kiểm tra lại nhé!

SQL> select file_name from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/ORCL12C/datafile/o1_mf_users_j0nnjs5r_.dbf
/u01/app/oracle/oradata/ORCL12C/datafile/o1_mf_undotbs1_j0nnjr3l_.dbf
/u01/app/oracle/oradata/ORCL12C/datafile/o1_mf_system_j0nngkq3_.dbf
/u01/app/oracle/oradata/ORCL12C/datafile/o1_mf_sysaux_j0nnhyxy_.dbf
/u01/app/oracle/oradata/ORCL12C/datafile/data_01.dbf

Bạn kiểm tra xem file data_01.dbf còn nằm trong /home/oracle nữa không

$ ls -l /home/oracle/data_01.dbf
ls: cannot access /home/oracle/data_01.dbf: No such file or directory

File đó đã được di chuyển sang thư mục mới rồi

$ ls -l /u01/app/oracle/oradata/ORCL12C/datafile/data_01.dbf
-rw-r-----. 1 oracle oinstall 10493952 Jun 29 23:27 /u01/app/oracle/oradata/ORCL12C/datafile/data_01.dbf

   Chú ý:

Đọc thêm  Thủ tục Failover/Switchover Streaming Replication trên PostgreSQL
   Bạn có thể sử dụng cách này để di chuyển datafile từ file system sang ASM cũng được. Giả sử, tôi sẽ di chuyển datafile data_01.dbf vào trong diskgroup DATA:

SQL> ALTER DATABASE MOVE DATAFILE '/home/oracle/data_01.dbf' TO '+DATA';
   Nếu datafile có kích thước lớn, mất nhiều thời gian để di chuyển, bạn cũng có thể theo dõi tiến độ của nó tại dynamic view v$session_longops.

Nguồn: https://dangxuanduy.com/

Xin cho tôi được biết, bạn cảm thấy bài viết này như thế nào? Ý kiến của bạn sẽ giúp tôi nâng cao chất lượng bài viết của mình.

    Hãy chia sẻ bài viết này nếu bạn thấy có ích nhé
    0 0 votes
    Article Rating
    Subscribe
    Notify of
    guest
    0 Comments
    Inline Feedbacks
    View all comments