Chúng tôi thường cần theo dõi phiên cơ sở dữ liệu oracle vì lý do hiệu suất, kiểm tra khóa, lấy vị trí của tệp dữ liệu, làm lại tệp, lấy thông tin về db_links. Dưới đây là các tập lệnh oracle dba hàng đầu cho Cơ sở dữ liệu Oracle cho mục đích Quản trị và Giám sát
Tập lệnh để tìm bên lề của phiên bạn đã đăng nhập
chọn phân biệt (sid) từ v $ mystat;
Tập lệnh để xem tất cả phiên hoạt động
chọn tên người dùng, osuser, sid, serial #, chương trình, sql_hash_value, mô-đun từ phiên v $ trong đó tên người dùng không phải là nulland status ='ACTIVE' và mô-đun không phải là null;
Kịch bản để gặp người phục vụ
đặt kích thước dòng tiêu đề 1000 cột wait_session ‘WAITING | SESSION’column hold_session tiêu đề‘ HOLDING | SESSION’column lock_type format a15column mode_held format a15column mode_requested format a15selectwaiting_session, hold_session, lock_type, mode_held, mode_frequested / Tập lệnh cho cách giao dịch đang hoạt động trong cơ sở dữ liệucol Định dạng RBS a15 trunccol Định dạng SID 9999col Định dạng NGƯỜI DÙNG a15 trunccol Định dạng COMMAND a60 Định dạng trạng thái trunccol a8 truncselect r.name "RBS", s.sid, s.serial #, s.username "USER", t.status, t.cr_get, t.phy_io, t.used_ublk, t.noundo, substr (s.program, 1, 78) "COMMAND" từ v $ phiên s, v $ giao dịch t, v $ rollname rwhere t.addr =s. taddrand t.xidusn =r.usnorder bởi t.cr_get, t.phy_io /Tập lệnh để theo dõi các truy vấn đang chạy lâu dài
đặt kích thước dòng 1000selectOPNAME, sid, SOFAR / TOTALWORK * 100, to_char (start_time, 'dd-mon-yy hh:mi') started, elapsed_seconds / 60, time_remaining / 60fromv $ session_longopswheresid =&sidTập lệnh để xem tất cả các đối tượng khóa
đặt thuật ngữ trên; đặt dòng 130; cột sid_ser định dạng a12 tiêu đề 'session, | serial #'; định dạng tên người dùng cột a12 tiêu đề 'os user / | db user'; định dạng quy trình cột a9 tiêu đề 'os | process'; cột định dạng spid a7 tiêu đề 'theo dõi | số'; định dạng chủ_đề cột a35 tiêu đề 'owner.object'; định dạng chế độ cột a13 tiêu đề 'bị khoá | chế độ'; định dạng trạng thái cột a8 tiêu đề 'status'; selectsubstr (to_char (l.session_id) | | ',' || to_char (s.serial #), 1,12) sid_ser, substr (l.os_user_name || '/' || l.oracle_username, 1,12) tên người dùng, l.process, p.spid, substr (o.owner || '.' || o.object_name, 1,35) owner_object, decode (l.locked_mode, 1, 'No Lock', 2, 'Row Share', 3, 'Row Exclusive', 4 , 'Share', 5, 'Share Row Excl', 6, 'Exclusive', null) lock_mode, substr (s.status, 1,8) statusfromv $ lock_object l, all_objects o, v $ session s, v $ process pwherel .object_id =o.object_idand l.session_id =s.sidand s.paddr =p.addrand s.status! ='KILLED' /Tập lệnh để xem các sự kiện chờ
thiết lập kích thước dòng 1000 định dạng bên sid 999 định dạng tên người dùng cột a15 định dạng spid cột a8 định dạng sự kiện cột a30 định dạng người dùng bọc cột a12 định dạng máy cột a25 định dạng chương trình cột a30 bọc lại chọn sw.sid sid, p.spid spid, s.username tên người dùng, s.osuser osuser, sw.event event, s.machine machine, s.program programfrom v $ session_wait sw, v $ session s, v $ process pwhere s.paddr =p.addrand event not in ('pipe get', 'client message' ) và sw.sid =s.sid /Tập lệnh để xem các phiên cụ thể đang chờ
select sid, seq #, wait_time, event, seconds_in_wait, state from v $ session_wait where sid in (&sid);Tập lệnh để xem tất cả người dùng truy cập các đối tượng đó
định dạng đối tượng cột a30 định dạng chủ sở hữu cột a10select * từ v $ access where object ='&object_name' /Tập lệnh cung cấp thông tin về các phiên người dùng khóa một đối tượng cụ thể
đặt kích thước dòng 1000 định dạng chương trình cột a15 định dạng đối tượng cột a15 chọn substr (tên người dùng || '(' || se0.sid || ')', 1,5) "Phiên người dùng", substr (chủ sở hữu, 1,5) "Đối tượng Owner ", substr (object, 1,15)" Object ", se0.sid, substr (serial #, 1,6)" Serial # ", substr (chương trình, 1,15)" Chương trình ", logon_time" Thời gian đăng nhập " , xử lý "Quy trình Unix" từ v $ access ac, v $ session se0where ac.sid =se0.sidand Object ='&PACKAGE'order by logon_time, "Object Owner", "Object" /Tập lệnh để xem kế hoạch giải thích trong Oracle cho câu lệnh trong bộ đệm thư viện
đặt kích thước dòng 9999 định dạng cột. độ sâu || '.' || nvl (vị trí, 0) || '' || hoạt động || '' || tùy chọn || '' || object_name || ' '||' chi phí ='|| to_char (chi phí) || ' '|| trình tối ưu hóa "QUERY" từ v $ sql_planwhere hash_value =&sql_hash_valueorder bởi child_number, id /Tập lệnh để tìm vị trí máy chủ
select nvl (tên người dùng, 'ORACLE SHADOW PROCESS'), máy từ phiên $ v trong đó tên người dùng là nulland rownum <2 /Tập lệnh để xem việc sử dụng phân đoạn sắp xếp hàng đầu
định dạng col sid 999999col định dạng spid a6col định dạng vùng bảng a10col định dạng tên người dùng a25col định dạng noexts 9999 head Định dạng EXTScol proginfo a25 trunccol định dạng mbused 999.999.90col định dạng trạng thái a1 truncset xác minh ngoài chọn * from (select s.sid, s.status, b.spid , s.sql_hash_value sesshash, u.SQLHASH sorthash, s.username, u.tablespace, sum (u.blocks * p.value / 1024/1024) mbused, sum (u.extents) noexts, u.segtype, s.module || '-' || s. chương trình proginfofrom v $ sort_usage u, v $ session s, v $ tham số p, v $ process ở đâu u.session_addr =s.saddrand p.name ='db_block_size'and b.addr =s .paddrgroup theo s.sid, s.status, b.spid, s.sql_hash_value, u.sqlhash, s.username, u.tablespace, u.segtype, s.module || '-' || s.programorder theo 8 desc, 4) nơi rownum <11;Tập lệnh để kiểm tra lần cuối được phân tích cho các bảng trong câu lệnh sql
set lin 1000set verify offcol owner format a15col object_name format a25col object_type format a12col "LAST ANALYZED" format a13 select do.OWNER, do.OBJECT_NAME, OBJECT_TYPE, decode (OBJECT_TYPE, 'TABLE', (Select LAST_ANALYZED from dba_tables where owner =do.owner và TABLE_NAME =do.object_name), 'INDEX', (Chọn LAST_ANALYZED từ dba_indexes nơi owner =do.owner và INDEX_NAME =do.object_name), 'UNKNOWN') "PHÂN TÍCH CUỐI CÙNG", STATUS từ DBA_OBJECTS ở đâu đó TABLE ',' INDEX ') và (OWNER, OBJECT_NAME) trong (chọn OBJECT_OWNER, OBJECT_NAME từ V $ SQL_PLAN trong đó HASH_VALUE =&1) /Để kiểm tra khóa và ghim của Bộ đệm thư viện
select / * + all_rows * / w1.sid wait_session, h1.sid hold_session, w.kgllktype lock_or_pin, w.kgllkhdl address, decode (h.kgllkmod, 0, 'None', 1, 'Null', 2, 'Chia sẻ', 3, 'Độc quyền', 'Không xác định') mode_held, giải mã (w.kgllkreq, 0, 'Không có', 1, 'Null', 2, 'Chia sẻ', 3, 'Độc quyền', 'Không xác định') mode_requestedfrom dba_kgllock w, dba_kgllock h, v $ session w1, v $ session h1where (((h.kgllkmod! =0) and (h.kgllkmod! =1) and ((h.kgllkreq =0) or (h.kgllkreq =1))) và (((w.kgllkmod =0) hoặc (w.kgllkmod =1)) và ((w.kgllkreq! =0) và (w.kgllkreq! =1)))) và w.kgllktype =h.kgllktypeand w.kgllkhdl =h.kgllkhdland w.kgllkuse =w1.saddrand h.kgllkuse =h1.saddr /Để kiểm tra vị trí Tệp Kiểm soát
định dạng col name a60 tiêu đề "Control Files" chọn tên từ sys.v_ $ controlfile /Để kiểm tra lại vị trí nhật ký
col Định dạng Grp 9999col Định dạng thành viên a50 tiêu đề "Nhật ký REDO trực tuyến" col Tập tin # định dạng 9999col định dạng tên a50 tiêu đề "Nhật ký REDO trực tuyến" ngắt trên Grpselect nhóm #, memberfrom sys.v_ $ logfile /Để kiểm tra vị trí tệp dữ liệu
col Định dạng khoảng trống a25col Định dạng trạng thái a3 Tiêu đề Stacol Định dạng Id 9999col Định dạng Mbyte 999999999col Định dạng tên a50 Tiêu đề "Tệp Dữ liệu Cơ sở dữ liệu" col Định dạng đọc 99.999.999col Viết định dạng 99.999.999 điểm vỡ trên máy tính tổng nhãn 'Tổng (MB)' của Mbyte trên báo cáo chọn F.file_id Id, F.file_name name, F.bytes / (1024 * 1024) Mbyte, decode (F.status, 'AVAILABLE', 'OK', F.status) trạng thái, F.tablespace_name Tspacefrom sys.dba_data_files Forder by không gian_bảng tên_bảng;Kiểm tra bật / tắt tự động lập chỉ mục cho Không gian bảng:
select substr (file_name, 1,50), AUTOEXTENSIBLE từ dba_data_files (OR) SQL> chọn tablepace_name, AUTOEXTENSIBLE từ dba_data_files;Cách kiểm tra thông số Dấu gạch dưới
CHỌN TÊN X.KSPPINM, DECODE (BITAND (KSPPIFLG / 256, 1), 1, 'TRUE', 'FALSE') SESMOD, DECODE (BITAND (KSPPIFLG / 65536, 3), 1, 'NGAY LẬP TỨC', 2 , 'DEFERRED', 3, 'NGAY LẬP TỨC', 'FALSE') TRIỆU CHỨNG, KSPPDESC DESCRIPTIONFROM SYS.X_ $ KSPPI X WHERE X.INST_ID =USERENV ('INSTANCE') ANDTRANSLATE (KSPPINM, '_', '#') THÍCH ' #% 'ĐẶT HÀNG THEO 1;Cách hiển thị liên kết DBA
set linesize 128 trang 1000col owner format a15col db_link format a15col username format a20col host format a15col name format a30Prompt Database Links:chọn chủ sở hữu, db_link, tên người dùng, máy chủ từ dba_db_links thứ tự theo chủ sở hữu, db_link, tên người dùng / Nhắc từ đồng nghĩa Liên kết:chọn phân biệt chủ sở hữu, db_link từ dba_synonyms trong đó db_link không phải là null / Nhắc nhở Liên kết Ảnh chụp nhanh:chọn chủ sở hữu, tên, thay thế (master_link, '@', '') db_link từ dba_snapshots ở nơi master_link không rỗng /Xác định phân đoạn theo DBA_extents bằng tệp-id và khối
CHỌN tên_khoảng_khoảng ,_tên_kết_phânLiệt kê các công việc đang chạy từ DBMS_SCHEDULER
ĐẶT LINESIZE 300SET TRANG ĐIỂM CHÍNH HÃNG 60COLUMN chủ sở hữu FORMAT A20SELECT chủ sở hữu, job_name, running_instance, elapsed_timeFROM dba_scheduler_running_jobsORDER BỞI chủ sở hữu, job_name /Danh sách thông tin DBMS_SCHEDULER CÔNG VIỆC
SET HEADING ONSET LINESIZE 300SET PAGESIZE 60COLUMN chủ sở hữu FORMAT A20COLUMN next_run_date FORMAT A35SELECT chủ sở hữu, job_name, đã bật, job_class, next_run_dateFROM dba_scheduler_jobsORDER BY chủ sở hữu, job_name /Cách tải gói Lịch sử cho SQL_ID từ AWR
ĐẶT PAGESIZE 60SET LINESIZE 300SELECT * TỪ BẢNG (dbms_xplan.display_awr ('&SQL_ID')) /Cách thực hiện phân tích chờ của cơ sở dữ liệu
chọn sự kiện, trạng thái, số lượng (*) từ nhóm v $ session_wait theo sự kiện, thứ tự trạng thái theo 3 mô tả;Cách tìm Bộ đệm cao được sql
select * from (CHỌN địa chỉ, hash_value, buffer_gets, thực thi, đệm_gets / thực thi "Gets / Exec", sql_textFROM v $ sqlareaWHERE buffer_gets> 500000 và thực thi> 0ORDER BY 3 desc) trong đó rownum <20;Danh sách các tập lệnh oracle dba cho cơ sở dữ liệu oracle cho mục đích giám sát này chưa hoàn chỉnh. Còn rất nhiều script khác để theo dõi, tôi sẽ trình bày chúng trong các bài viết tiếp theo
Cũng đã đọc
Tham gia băm trong Oracle:Hãy xem bài đăng này để biết mô tả chi tiết về Tham gia băm trong Oracle, Nó khác với tham gia Vòng lặp lồng nhau trong oracle
Các khóa bảng Oracle như thế nào:Oracle Enqueue, Cấp hàng &DDL, bảng khóa, cách khóa oracle hoạt động, Các truy vấn hữu ích để tìm ra người phục vụ và trình chặn trong oracle
v $ active_session_history:Tìm hiểu về Lịch sử phiên hoạt động, cách nó được định cấu hình, cách tìm nút thắt cổ chai hiệu suất bằng ASH, tạo báo cáo ASH, Truy vấn ASH
https://en.wikipedia.org/wiki/Oracle_Database