Việc thay đổi cấu trúc bảng trong production là công việc thường xuyên, nhưng khi CSDL chúng ta lớn và rất lớn thì việc thay đổi nhỏ cũng có thể làm treo toàn bộ DB vì phải xử lý 1 lượng lớn dữ liệu.
Giả sử chúng ta đang có bảng với 500tr records
alter table duong.table11 add salary number default 1000;
— để thực hiện lệnh này thì DB sẽ tiến hành lock bảng lại và sau đó thực hiện lệnh cho đến hết => sẽ rất lâu vì lượng dữ liệu lớn và phải set toàn bộ default cho col mới.
Giải pháp: Chia ra từng step để thực hiện riêng biệt
Step 1: add col thôi:
alter table duong.table11 add salary number;
Step 2: modify col đó cho giá trị default vào
alter table hr.employees modify salary default 1000;
Oracle sẽ tiến hành làm dần dần và đảm bảo không lock.