Thứ Năm, 14 tháng 4, 2022

Hiểu rõ về tham số DDL_LOCK_TIMEOUT

Mục đích: Hiểu rõ tham số DDL_LOCK_TIMEOUT hoạt động như thế nào

Thuộc tính    

Mô tả

Parameter type 

Integer 

Default value 

0 

Modifiable 

ALTER SESSION 

Range of values 

0 to 1,000,000 (tính bằng giây) 

Basic 

Không

 
 DDL_LOCK_TIMEOUT là thời gian để câu lệnh DDL (ví dụ thêm cột, sửa cột, xóa cột,...) sẽ chờ khi có câu lệnh DML (insert, update, delete) chiếm đang lock.

Các giá trị có thể đặt:

* Giá trị mặc định là 0 tức là khi có câu lệnh DML thì câu lệnh DDL sẽ bắn ra lỗi luôn.

* Nếu giá trị là 1,000,000 giây tức là câu lệnh DDL gần như chờ mãi mãi khi gặp DML lock. 

Khuyến nghị: Để default là 0

Ví dụ: Chúng ta cần thêm 1 cột vào 1 bảng:

1.Gõ lệnh
alter table app_owner.tab1 add (desc varchar2(1000));

Sau khi gõ xong câu này treo đơ do tham số DDL_LOCK_TIMEOUT > 0

2. Check lock:

Tạo 1 cửa sổ khác để check xem bảng đó bị lock không thì thấy rất nhiều lock: SELECT /* lock table */ s.inst_id,s.sid, s.serial#,s.sql_id,username U_NAME, owner OBJ_OWNER, object_name, object_type, s.osuser, s.machine, DECODE(l.block, 0, 'Not Blocking', 1, 'Blocking', 2, 'Global') STATUS, DECODE(v.locked_mode, 0, 'None', 1, 'Null', 2, 'Row-S (SS)', 3, 'Row-X (SX)', 4, 'Share', 5, 'S/Row-X (SSX)', 6, 'Exclusive', TO_CHAR(lmode) ) MODE_HELD, decode(l.TYPE, 'MR', 'Media Recovery', 'RT', 'Redo Thread', 'UN', 'User Name', 'TX', 'Transaction', 'TM', 'DML', 'UL', 'PL/SQL User Lock', 'DX', 'Distributed Xaction', 'CF', 'Control File', 'IS', 'Instance State', 'FS', 'File Set', 'IR', 'Instance Recovery', 'ST', 'Disk Space Transaction', 'TS', 'Temp Segment', 'IV', 'Library Cache Invalidation', 'LS', 'Log Start or Switch', 'RW', 'Row Wait', 'SQ', 'Sequence Number', 'TE', 'Extend Table', 'TT', 'Temp Table',l.type) lock_type FROM gv$locked_object v, dba_objects d, gv$lock l, gv$session s WHERE v.object_id = d.object_id AND (v.object_id = l.id1) AND v.session_id = s.sid and object_name =upper('%TAB1') --and username like upper('binhtv') ORDER BY username, session_id;

3.Kill
Để kill đi chúng ta dùng câu lệnh, kill từ máy đang gõ câu lệnh DDL:
SELECT /*lock table*/ 'kill -9 ' || spid a, a.INST_ID,A.SQL_ID,A.SID, A.SERIAL#, a.USERNAME, a.STATUS,A.SCHEMANAME,a.OSUSER,A.MACHINE,A.PROGRAM,A.TYPE,A.LOGON_TIME,BACKGROUND FROM gv$session a, gv$process b WHERE b.addr = a.paddr AND a.inst_id=b.inst_id --and b.inst_id=3 AND (b.inst_id, a.sid) in (SELECT /*+ parallel(8)*/ s.inst_id,s.sid FROM gv$locked_object v, dba_objects d, gv$lock l, gv$session s WHERE v.object_id = d.object_id AND (v.object_id = l.id1) AND v.session_id = s.sid and object_name=upper('TAB1'))
and a.machine not like '%BINHTV%' --and type='USER' --ORDER BY username, session_id;

Khi kill xong sẽ thêm cột vào được

4. Rebuild invalid object
select 'ALTER '||OBJECT_TYPE||' '||OWNER||'.'||OBJECT_NAME||' COMPILE;' from dba_objects 
where object_type in ('PROCEDURE','FUNCTION','TRIGGER','PACKAGE') and status like 'INVALID'and OWNER  in ('APP_OWNER') 
UNION ALL
select 'ALTER PACKAGE '||OWNER||'.'||OBJECT_NAME||' COMPILE BODY;' from dba_objects
where object_type in ('PACKAGE BODY') and status like 'INVALID' and OWNER  in ('APP_OWNER');
 
=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master