Di chuyển datafile online

   Giới thiệu

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

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.

 

   Di chuyển 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  Bí kíp Linux #8: Tìm nguyên nhân hệ điều hành bị chậm bằng vmstat
   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/

 

Hiện tại, tôi có tổ chức đều đặn các khóa học về quản trị Oracle Database, tôi sẽ để thông tin ở đây để bạn nào quan tâm về lịch học cũng như chương trình học có thể theo dõi nhé.

 

    KHÓA HỌC: QUẢN TRỊ ORACLE DATABASE THẬT LÀ ĐƠN GIẢN  Xem ngay!

 

   Hãy tham gia group “Kho tài liệu kiến thức database” để cùng học hỏi và chia sẻ nhé.

0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận