12.1.TEMPORARY SEGMENTS
Temporary
segments được sử dụng khi Oracle server thực các hiện câu lệnh sắp xếp mà không
thể sử dụng vùng không gian trong bộ nhớ do không đủ, ví dụ như:
§ SELECT. . . ORDER BY
§ CREATE INDEX
§ SELECT DISTINCT
§ SELECT. . . GROUP BY
§ SELECT. . . UNION
Dung
lượng bộ nhớ cần thiết cho tiến trình sắp xếp được xác định dựa trên tham số khởi
tạo SORT_AREA_SIZE.
Trong một số trường hợp, nhiều thao tác sắp xếp cùng được sử dụng và cần nhiều
bộ nhớ hơn. Khi này bộ nhớ trong của máy là không thể đáp ứng được và kết quả của
việc sắp xếp đó cần phải được tạm thời lưu lên đĩa. Vùng đĩa lưu trữ các dữ liệu
trung gian này chính là temporary segments.
Temporary
segments trong tablespace được Oracle server tạo lập với mục đích sử dụng làm
vùng nhớ trung gian hỗ trợ thao tác sắp xếp.
12.1.1. Phân
loại temporary segments
Các
temporary segments có thể được tạo trên một permanent tablespace hoặc trên một
temporary tablespace. User có thể sử dụng một trong các kiểu tablespaces này để
sắp xếp.
Temporary
Tablespace
Một
temporary tablespace được sử cho các temporary segments tương ứng và không chứa
bất kỳ segment nào có kiểu khác. Ta có thể tạo các temporary tablespace theo
câu lệnh SQL sau:
CREATE TABLESPACE
tablespace_name TEMPORARY
DATAFILE filespec
[autoextend_clause]
[ , filespec
[autoextend_clause]] ...
Một
permanent tablespace có thể chuyển đổi thành dạng temporary tablespace bằng
cách sử dụng câu lệnh:
ALTER TABLESPACE
tablespace_name TEMPORARY
Lưu
ý: với câu lênh trên, tablespace không được phép chứa bất kỳ một đối tượng thường
trú nào (như: table, store procedure, ...). Một temporary tablespace có thể
chuyển đổi lại thành permanent tablespace thông qua câu lệnh SQL dưới đây:
ALTER TABLESPACE
tablespace_name PERMANENT
Oracle
server có thể tạo một temporary segment trong một permanent tablespace với số
điều kiện sau:
§ User thực
hiện câu lệnh sắp xếp cần đến vùng không gian trên đĩa.
§ User chạy
câu lệnh mà nó đã được gán cho một permanent tablespace để thực hiện sắp xếp.
Khi
một permanent tablespace được sử dụng cho việc sắp xếp, một instance có thể có
một hoặc nhiều temporary segment trong tablespace.
Một
temporary segment sẽ được hủy bởi tiến trình nền SMON khi kết thúc câu lệnh sắp
xếp và vùng không gian đã cấp phát sẽ được giải phóng để cho các đối tượng khác
của database sử dụng. Permanent tablespaces được sử dụng cho việc sắp xếp, có
ba vùng không gian trong tablespace có thể được phân vùng khác nhau. Thông thường,
mỗi tablespace nên được sử dụng cho từng tiến trình sắp xếp khác nhau.
Khi
một temporary tablespaces được sử dụng cho các temporary segments, Instance chỉ
tạo một segment dùng để sắp xếp cho tablespace. Một vài transactions cần đến sắp
xếp trên ổ đĩa có thể sử dụng cùng segment. Tuy nhiên, một extent thì không thể
cùng chia sẻ đồng thời cho nhiều transactions khác nhau.
12.1.2. Sử
dụng các Sort Segments
Sort
segment được tạo bởi câu lệnh sắp xếp đầu tiên sử dụng tới temporary tablespace
cho việc sắp xếp. Và sort segment chỉ bị hủy khi tắt (shutdown) database. Việc
này làm giảm bớt số lần cấp phát và thu hồi các sort segments phục vụ cho công
việc sắp xếp, làm tăng năng suất hệ thống. Oracle không hạn chế số lượng các
extents cấp phát cho mỗi sort segment thuộc một temporary tablespace.
12.1.3. Sort
Extent Pool
Oracle
server lưu lại chi tiết sort segment trong vùng Sort Extent Pool của vùng nhớ
SGA, mỗi câu lệnh cần tới các vùng trống để thực hiện sắp xếp có thể tìm các
extent rỗi trong vùng nhớ này.
12.2.CẤP PHÁT KHÔNG GIAN CHO TEMPORARY
SEGMENT
Temporary
tablespaces được sử dụng để tăng hiệu quả sắp xếp dữ liệu. Kích thước của các
extents trong temporary segment được xác định bởi DEFAULT STORAGE
clause của tablespace tương ứng.
Do
lượng dữ liệu ghi lên temporary segment bằng phần nguyên lần giá trị SORT_AREA_SIZE.
Do vậy, ta nên đặt INITIAL
= NEXT = (n*SORT_AREA_SIZE)+ DB_BLOCK_SIZE
Giá
trị PCTINCREASE=0,
để đảm bảo các extents có cùng kích thước.
12.3.THÔNG TIN VỀ CÁC TEMPORARY SEGMENT
Ta
có thể lấy được các thông tin về temporary segment trong một số bảng từ điển dữ
liệu:
DBA_SEGMENTS: chứa thông tin về
tất cả các loại segments trong database.
V$SORT_SEGMENT: cho biết trạng
thái của các sort extent pool (vùng không gian sắp xếp). Với từ điển dữ liệu
này, ta có thể biết được những thông tin sau:
Ví
dụ:
SVRMGR> SELECT
tablespace_name, extent_size,
2>
total_extents, max_sort_blocks
3> FROM
v$sort_segment;
TABLESPACE_NAME
EXTENT_SIZ TOTAL_EXTE MAX_SORT_B
---------------
---------- ---------- ----------
TEMP
128 1 128
1
row selected.
MAX_SORT_SIZE và MAX_SORT_BLOCKS
là số lượng các extents và các blocks sử dụng bởi phép sắp xếp lớn nhất. Thông
tin này là hữu ích trong việc điều chỉnh kích thước của temporary tablespace
V$SORT_USAGE: cho biết thông
tin về các sắp xếp hiện có của instance, ta kết hợp với V$SESSION
để biết thêm các thông tin:
Ví
dụ:
SVRMGR> SELECT
s.username, u."USER", u.tablespace,
2> u.contents,
u.extents, u.blocks
3> FROM
v$session s,v$sort_usage u
4> WHERE
s.saddr=u.session_addr;
USERNAME USER TABLESPACE CONTENTS EXTENTS BLOCKS
-------- ----- ---------- --------- ------- ------
SYSTEM
SYS TEMP TEMPORARY
1 128
1
row selected.
Website không bao giờ chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn muốn tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ kinh nghiệm, thủ tục, quy trình, bí kíp thực chiến mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- 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
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin1_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 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: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Đị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 CƠ BẢN TỪ A-Z - BÀI 12: QUẢN LÝ TEMPORARY SEGMENT, Soracle tutorial, 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,sql tutorial, khóa học pl/sql tutorial, 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 RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty