Thứ Hai, 29 tháng 5, 2023

Thứ Tư, 17 tháng 5, 2023

[VIP5] Khi nào cần tạo lại online redo log, sizing như thế nào cho chuẩn trong Oracle Database?

Trong quá trình quản lý redo log, bạn có thể sẽ có những lăn tăn:
  • Sizing redo log như thế nào để phù hợp?
  • Tạo lại online redo log và cách tạo lại trong giờ hành chính có an toàn không?
  • Các lỗi có thể sẽ gặp nếu không sizing chuẩn: Treo DB khi DML dồn dập.

Hãy đọc hết bài viết này để tìm được câu trả lời thỏa đáng.

Vấn đề gặp phải

-- Monitor Alert log xuất hiện cảnh báo:
Thread 2 cannot allocate new log, sequence 362494
Checkpoint not complete

-- Số lần switch log quá nhiều, lên đến 95 lần/1 giờ:
-- Monitor số lần switch log theo từng giờ và so sánh với các ngày trước trong 31 ngày gần nhất
select
to_char(COMPLETION_TIME,'YYYY-MM-DD') day,
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'00',1,0)),'999') "00h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'01',1,0)),'999') "01h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'02',1,0)),'999') "02h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'03',1,0)),'999') "03h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'04',1,0)),'999') "04h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'05',1,0)),'999') "05h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'06',1,0)),'999') "06h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'07',1,0)),'999') "07h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'08',1,0)),'999') "08h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'09',1,0)),'999') "09h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'10',1,0)),'999') "10h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'11',1,0)),'999') "11h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'12',1,0)),'999') "12h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'13',1,0)),'999') "13h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'14',1,0)),'999') "14h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'15',1,0)),'999') "15h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'16',1,0)),'999') "16h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'17',1,0)),'999') "17h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'18',1,0)),'999') "18h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'19',1,0)),'999') "19h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'20',1,0)),'999') "20h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'21',1,0)),'999') "21h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'22',1,0)),'999') "22h",
to_char(sum(decode(substr(to_char(COMPLETION_TIME,'HH24'),1,2),'23',1,0)),'999') "23h",
round(sum(BLOCKS*BLOCK_SIZE)/1024/1024/1024,0)||' GB' "Total GB in a day",COUNT(*) "Total switch log in a day"
from v$archived_log
where to_date(COMPLETION_TIME) > sysdate-40
and dest_id=1
group by to_char(COMPLETION_TIME,'YYYY-MM-DD') 
order by day desc;


Nguyên nhân:

Size redo log quá nhỏ, các group đều ở trạng thái CURENT, ACTIVE

Khắc phục:

Sizing lại online redo log, do size online redo log quá nhỏ, tính toán lượng archived log sinh ra 1 ngày đảm bảo 1h từ 3 lần switch log, tất nhiên 4-6 lần vẫn OK., dùng 1 trong 2 cách sau:

    * Tăng size của online redo logs: Phải tạo lại chứ ko resize được

    * Bổ sung thêm redo log groups (cách này trong 1 số trường hợp switch log không quá lớn)

alter database add logfile   thread 1 group 1 ('+DATA','+RECO') size 1G;
alter database add logfile  thread 2 group 11  ('+DATA','+RECO') size 1G;

Chi tiết thủ tục như sau:

THỦ TỤC TẠO LẠI ONLINE REDO LOG

VỚI ASM

-- Note: Không càn cấu hình OMF
-- Monitor đảm bảo mỗi group tối thiểu 02 member trên 2 phân vùng khác nhau
--+FRA/OCSGWRPT/ONLINELOG/group_1.257.1077367961
--+DATA1/OCSGWRPT/ONLINELOG/group_1.262.1077367961
select * from v$logfile order by 1;

--Status đảm bảo luôn có group inactive
select * from v$log order by 1;

set echo off
set feedback off
set linesize 120
set pagesize 35
set trim on
set trims on
set lines 120
col group# format 999
col thread# format 999
col member format a70 wrap
col status format a10
col archived format a10
col fsize format 999 heading "Size (MB)"

select l.group#, l.thread#,
f.member,
l.archived,
l.status,
(bytes/1024/1024) fsize
from
v$log l, v$logfile f
where f.group# = l.group#
order by 1,2

alter database add logfile   thread 1 group 5 ('/u09/oracle/data/DBAViet/redo01a.log','/u10/oracle/data/DBAViet/redo01b.log') size 1G;

--FRA 897GB DATA1 con 41GB, DATA2 conf 61GB --> Ko them vao DATA1, DATA2; DATA3 conf 1.3TB
select * from v$asm_diskgroup;


alter database add logfile   thread 1 group 5 ('+DATA3','+FRA') size 2G;
alter database add logfile   thread 2 group 6 ('+DATA3','+FRA') size 2G;

alter database add logfile   thread 1 group 7 ('+DATA3','+FRA') size 2G;
alter database add logfile   thread 2 group 8 ('+DATA3','+FRA') size 2G;

alter database add logfile   thread 1 group 9 ('+DATA3','+FRA') size 2G;
alter database add logfile   thread 2 group 10 ('+DATA3','+FRA') size 2G;

alter database add logfile   thread 1 group 11 ('+DATA3','+FRA') size 2G;
alter database add logfile   thread 2 group 12 ('+DATA3','+FRA') size 2G;

select * from v$logfile order by 1;

--Status đảm bảo luôn có group inactive
select * from v$log order by 1;

alter system switch logfile;

select * from v$logfile order by 1;

--Status đảm bảo luôn có group inactive thi drop duoc
select * from v$log order by 1;

alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;
alter database drop logfile group 4;


VỚI FILE SYSTEM

--Method to drop and recreate online redolog files with 2 members to each group
--1.Firstly ORACLE will never allow you to drop the current ONLINE redolog file –

-- Size, status logfile group, thread
select * from v$log;
--Group# Thread# Sequence# BytesMembers Archived 
--1    1    17449    524288000    1    YES    INACTIVE    11950575940971    28/05/2017 1:36:20 AM
--2    1    17448    524288000    1    YES    INACTIVE    11949968296967    27/05/2017 2:05:34 AM
--3    2    26642    524288000    1    YES    INACTIVE    11951023181485    28/05/2017 6:30:26 PM
--4    2    26643    524288000    1    YES    INACTIVE    11951187419487    29/05/2017 1:35:35 AM
--5    2    26644    524288000    1    YES    INACTIVE    11951568250526    29/05/2017 3:17:19 PM
--6    2    26645    524288000    1    NO    CURRENT    11951840525221    30/05/2017 1:14:52 AM
--7    1    17450    524288000    1    YES    INACTIVE    11951187419492    29/05/2017 1:35:36 AM
--8    1    17451    524288000    1    NO    CURRENT    11951840525227    30/05/2017 1:14:53 AM

-- D/s duong dan logfile
select  * from v$logfile order by 1;

--1        ONLINE    /data/oradata/dbaviet/redo01.log    NO
--2        ONLINE    /data/oradata/dbaviet/redo02.log    NO
--3        ONLINE    /data/oradata/dbaviet/redo03.log    NO
--4        ONLINE    /data/oradata/dbaviet/redo04.log    NO
--5        ONLINE    /data/oradata/dbaviet/redo05.log    NO
--6        ONLINE    /data/oradata/dbaviet/redo06.log    NO
--7        ONLINE    /data/oradata/dbaviet/redo07.log    NO
--8        ONLINE    /data/oradata/dbaviet/redo08.log    NO
--10        STANDBY    /data/oradata/dbaviet/standby_redo10.log    NO
--11        STANDBY    /data/oradata/dbaviet/standby_redo11.log    NO
--12        STANDBY    /data/oradata/dbaviet/standby_redo12.log    NO
--13        STANDBY    /data/oradata/dbaviet/standby_redo13.log    NO
--14        STANDBY    /data/oradata/dbaviet/standby_redo14.log    NO
--15        STANDBY    /data/oradata/dbaviet/standby_redo15.log    NO

alter database drop logfile group 10;
alter database drop logfile group 11;
alter database drop logfile group 12;
alter database drop logfile group 13;
alter database drop logfile group 14;
alter database drop logfile group 15;

--Intention is to drop and recreate these online logs with a different size.
select * from v$log;

--Group# Thread# Sequence# BytesMembers Archived 
--1    1    17449    524288000    1    YES    INACTIVE    11950575940971    28/05/2017 1:36:20 AM
--2    1    17448    524288000    1    YES    INACTIVE    11949968296967    27/05/2017 2:05:34 AM
--3    2    26642    524288000    1    YES    INACTIVE    11951023181485    28/05/2017 6:30:26 PM
--4    2    26643    524288000    1    YES    INACTIVE    11951187419487    29/05/2017 1:35:35 AM
--5    2    26644    524288000    1    YES    INACTIVE    11951568250526    29/05/2017 3:17:19 PM
--6    2    26645    524288000    1    NO    CURRENT    11951840525221    30/05/2017 1:14:52 AM
--7    1    17450    524288000    1    YES    INACTIVE    11951187419492    29/05/2017 1:35:36 AM
--8    1    17451    524288000    1    NO    CURRENT    11951840525227    30/05/2017 1:14:53 AM

--+ Begin dropping the redolog groups with STATUS=’INACTIVE’ – As mentioned earlier Oracle will not allow you to drop a current online redolog file.
alter database drop logfile group 1;
alter database drop logfile group 2;
--alter database drop logfile group 3;
alter database drop logfile group 4;
alter database drop logfile group 5;

alter database drop logfile group 7;

cd /data/oradata/prepaid/
mv /data/oradata/prepaid/redo01.log /data/oradata/dbaviet/redo01.log.bkp
mv /data/oradata/dbaviet/redo01.log /data/oradata/dbaviet/redo02.log.bkp
mv /data/oradata/dbaviet/redo01.log /data/oradata/dbaviet/redo03.log.bkp
mv /data/oradata/dbaviet/redo01.log /data/oradata/dbaviet/redo04.log.bkp
mv /data/oradata/dbaviet/redo01.log /data/oradata/dbaviet/redo05.log.bkp
mv /data/oradata/dbaviet/redo01.log /data/oradata/dbaviet/redo06.log.bkp
mv /data/oradata/dbaviet/redo01.log /data/oradata/dbaviet/redo07.log.bkp
mv /data/oradata/dbaviet/redo01.log /data/oradata/dbaviet/redo08.log.bkp

--Recreate group with both members
select * from v$log;    

select * from v$logfile;

alter database drop logfile group 6;
alter database drop logfile group 7;

alter database add logfile thread 1 group 1 '/u02/oradata/dbaviet/redo01.log'  size 512m;
alter database add logfile thread 1 group 2 '/u02/oradata/dbaviet/redo02.log'  size 512m;

--alter database add logfile thread 2 group 3 '/u02/oradata/dbaviet/redo03.log'  size 512m;
alter database add logfile thread 2 group 4 '/u02/oradata/dbaviet/redo04.log'  size 512m;

alter database add logfile thread 2 group 5 '/u02/oradata/dbaviet/redo05.log'  size 512m;

alter database add logfile thread 2 group 6 '/u02/oradata/dbaviet/redo06.log'  size 512m;

alter database add logfile thread 1 group 7 '/u02/oradata/dbaviet/redo07.log'  size 512m;


-- Tao lai group 8 thread 1: Van con /data
-- Group# 8 INACTIVE thi drop logfile
select * from v$log;    

select * from v$logfile

alter database drop logfile group 8;

alter database add logfile thread 1 group 8 '/u02/oradata/dbaviet/redo08.log'  size 512m;

alter system switch logfile;

ĐỌC THÊM:


Hy vọng hữu ích cho bạn.
=============================
* 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/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

=============================
Khi nào cần tạo lại online redo log, sizing như thế nào cho chuẩn trong Oracle Database, oracle 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, 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

Thứ Năm, 11 tháng 5, 2023

Bí quyết sử dụng PGA của Oracle Database

Program Global Area (PGA) là vùng bộ nhớ chứa dữ liệu và thông tin điều khiển cho một tiến trình máy chủ (server process). Nó là vùng bộ nhớ không chia sẻ (SGA là vùng nhớ chia sẻ nhé) được tạo bởi Oracle khi một tiến trình máy chủ được bắt đầu chạy. Quyền truy cập vào PGA là dành riêng cho tiến trình máy chủ đó và nó chỉ được đọc và ghi bởi công cụ chuyên dụng của Oracle mà thôi. Nó chứa một vùng SQL riêng (private SQL area) và một vùng bộ nhớ theo phiên truy cập.

Thứ Ba, 2 tháng 5, 2023

Oracle GoldenGate 19c: Cách cấu hình EXTRACT/REPLICAT Intergrated

Trong bài viết này, chúng tôi sẽ giả sử rằng chúng tôi đã cài đặt phần mềm GoldenGate, nếu chưa, bạn có thể làm theo các bước sau tại đây:

Oracle GoldenGate 19c: Cách cài đặt

Đây sẽ là hướng dẫn về cách cài đặt GoldenGate trên máy chủ nguồn/đích của bạn, chỉ có cài đặt phần mềm.

Thứ Tư, 26 tháng 4, 2023

11 cách liệt kê và sắp xếp file trên Linux

Các lệnh Linux có thể cung cấp thông tin chi tiết về tệp và hiển thị các tùy chọn để tùy chỉnh danh sách tệp, nhưng cũng có thể tiếp cận sâu vào hệ thống tệp mà bạn quan tâm.

Timedatectl có thể kiểm soát thời gian và múi giờ Linux của bạn

Lệnh timedatectl cho phép bạn vừa truy vấn vừa thay đổi đồng hồ hệ thống và cài đặt của nó trên hệ thống Linux.

Thứ Năm, 13 tháng 4, 2023

Đăng ký Archive log file theo cách thủ công trong Cơ sở dữ liệu dự phòng (Standby database)

Đôi khi, archive redo log không được chuyển đến phân vùng lưu trữ của standby database do sự cố mạng hoặc đầy ổ. Có thể có  archive redo log đang chờ ở phân vùng lưu trữ của standby databse cho một archived redo log file.

CRS-0813:Cluster Ready Service aborted due to failure to initialize the network layer with error [clsclisten failed with ret 3

PHIÊN BẢN 

Oracle Database - Enterprise Edition - Version 11.2.0.4 và các phiên bản sau

TRIỆU TRỨNG

On : 11.2.0.4 version, Clusterware

Khi bật CRS gặp lỗi sau: 

alert<node_name>.log
-----------------------

2020-07-22 14:25:43.981:
[crsd(95614)]CRS-1012:The OCR service started on node <node_name>.
2020-07-22 14:25:43.994:
[evmd(94773)]CRS-1401:EVMD started on node <node_name>.
2020-07-22 14:25:44.934:
[crsd(95614)]CRS-0813:Cluster Ready Service aborted due to failure to initialize the network layer with error [clsclisten failed with ret 3
(File: caa_Socket.cpp, line: 525
]. Details at (:CRSD00133:) in /home/u01/app/11.2.0/grid/log/<node_name>/crsd/crsd.log.


SỰ THAY ĐỔI

$GI_HOME/network/admin/sqlnet.ora is gần đây được cập nhật, thêm/xóa IP

NGUYÊN NHÂN

Thiết lập sqlnet.ora sai, TCP.VALIDNODE_CHECKING được bật và không cho CRS bật lên
 

GIẢI PHÁP

Xóa dòng TCP.VALIDNODE_CHECKING từ /u01/grid/network/admin/sqlnet.ora

hoặc

Cấu hình đúng tham số TCP.INVITED_NODES trên các node RAC, ví dụ:

[oracle@dbaviet1 /u01/grid/network/admin]$more sqlnet.ora.20190121

# sqlnet.ora.dbaviet1 Network Configuration File: /u01/grid/network/admin/sqlnet.ora.dbaviet1

# Generated by Oracle configuration tools.

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

ADR_BASE = /u01/oracle

TCP.VALIDNODE_CHECKING = YES

TCP.INVITED_NODES=(192.168.1.40,192.168.1.42,192.168.1.44,192.168.1.46,192.168.1.50)

Tham khảo: (Doc ID 2693651.1)
=============================
* 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/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: 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

=============================
CRS-0813:Cluster Ready Service aborted due to failure to initialize the network layer with error [clsclisten failed with ret 3 , oracle 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, 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

Chủ Nhật, 2 tháng 4, 2023

Các câu hỏi về Oracle PL/SQL thông dụng?

Oracle PL/SQL là gì?

MỤC LỤC NỘI DUNG

25 câu hỏi và câu trả lời nổi bật trong phóng vấn Database Testing

1) Database Testing là gì?

Database Testing hay còn được gọi là Backend Testing , kiểu kiểm tra lớp ứng dụng và Cơ sở dữ liệu, tập trung vào việc kiểm tra các hành vi của hệ thống ở cấp cơ sở dữ liệu. Database Testing gồm bốn loại khác nhau:

  • Kiểm tra tính toàn vẹn dữ liệu
  • Kiểm tra tính hợp lệ của dữ liệu
  • Hiệu suất cơ sở dữ liệu liên quan
  • Kiểm tra các chức năng, thủ tục và kích hoạt

MongoDB - cơ bản (phần 1)


MỤC LỤC

  • Database
  • Collection
  • Document
  • Một số cân nhắc khi thiết kế schema trong MongoDB

Cơ sở dữ liệu MongoDB - Phần 3: Hướng dẫn cài đặt và sử dụng mongodb

MỤC LỤC

  • Lời mở đầu
  • Hướng dẫn cài đặt mongodb

Cơ sở dữ liệu MongoDB - Phần 2: Kiến trúc hệ thống của mongodb


MỤC LỤC

  • Lời mở đầu
  • MongoDB Standalone
  • Sử dụng Replication
    • Replication là gì
    • Automic Failover
    • Đọc dữ liệu từ node secondary
  • Sử dụng Sharding
    • Sharding là gì
    • Kiến trúc hệ thống Sharding
    • Shard Keys
  • Best Practice: Kết hợp Sharding và Replication

Cơ sở dữ liệu MongoDB - Phần 1: Giới thiệu

MỤC LỤC

  • Lời mở đầu
  • NoSQL là gì
  • MongoDB là gì
  • Điểm mạnh của mongodb
  • Khi nào nên sử dụng MongoDB
  • Một số thuật ngữ của MongoDB

Tăng tốc database phần 15.1 Indexing NULL trong Oracle

Nếu các bạn chưa xem bài trước vui lòng xem tại đây. Trong Oracle nếu tất cả các cột trong được đánh index là NULL thì bản ghi đó sẽ không có trong index. Điều đó nghĩa là tất cả các index là partial index giống như điều kiện sau.

Tăng tốc database phần 15.2 Indexing NULL trong Oracle - NOT NULL Constraints

Như bài trước đã viết về index NULL trong Oracle và cách khắc phục. Tuy nhiên cần chú ý thêm một điều nữa là để index được IS NULL trong Oracle thì trong đó phải có ít nhất một Column không bao giờ NULL.

Tăng tốc database phần 15 NULL trong Oracle Database

NULL luôn là một thứ gây bối rối, mặc dù ý tưởng của nó chỉ đơn giản là một giá trị cho biết là chỗ này chưa có dữ liệu. Có một số cái lạ nữa như là truy vấn thì luôn dùng IS NULL chứ không dùng = NULL. Tuy nhiên ORACLE đối xử với NULL một cách dị hợm hơn chuẩn thông thường. Hơn nữa cách index trên NULL còn tiếp tục khác biệt.

Tăng tốc database phần 14 Partial Indexes

Thường thì chúng ta index sẽ hiểu là tất cả các dòng của cột đều được đánh index, nhưng trong một số trường hợp ta chỉ muốn đánh index theo một điều kiện nào đó. Một số hệ quản trị cung cấp chúng ta một tiện ích gọi là partial (PostgreSQL) or filtered (SQL Server).

ĐỌC NHIỀU

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