inflearn logo

Oracle Pro*C — Bảo trì và chuyển đổi hệ thống cũ chỉ với một cuốn sách

Chúng ta sẽ triển khai trọn vẹn một batch quyết toán hàng tháng của người bán trên sàn thương mại điện tử giả lập. Dựa trên kiến thức cơ bản về Pro*C, chúng ta sẽ đọc mã nguồn, sửa bốn lỗi tiềm ẩn bằng các bản vá tối thiểu, giảm số lượt truy cập DB từ 265,893 xuống còn 359 nhờ xử lý mảng, rồi chuyển sang ECPG và JDBC để chứng minh rằng kết quả của cả ba không khác nhau dù chỉ một dòng. Tất cả lệnh đều được chạy trực tiếp trên Oracle Database Free và PostgreSQL trong Docker.

1 học viên đang tham gia khóa học này

Độ khó Trung cấp trở lên

Thời gian Không giới hạn

Oracle
Oracle
PostgreSQL
PostgreSQL
SQL
SQL
DBMS/RDBMS
DBMS/RDBMS
database
database
Oracle
Oracle
PostgreSQL
PostgreSQL
SQL
SQL
DBMS/RDBMS
DBMS/RDBMS
database
database

Bạn sẽ nhận được điều này sau khi học.

  • Biên dịch mã nguồn Pro*C và dựa vào thông báo lỗi để xác định vấn đề nằm ở bước tiền biên dịch, biên dịch, liên kết hay thực thi.

  • Sử dụng chính xác biến host, VARCHAR, biến chỉ thị, SQLCA và WHENEVER, bao gồm cả các tình huống dễ mắc bẫy.

  • Tìm và sửa bằng bản vá tối thiểu các lỗi về vị trí commit, điều kiện vòng lặp, xử lý NULL và chuỗi trong batch được kế thừa.

  • Chứng minh không có hồi quy bằng cách so sánh SQL giá trị kỳ vọng theo cùng quy tắc và lấy hiệu tập hợp theo cả hai chiều.

  • Chẩn đoán các lô xử lý bị treo thông qua phiên và sự kiện chờ, đồng thời giúp người vận hành dễ theo dõi bằng lịch sử tác vụ và mã thoát.

  • Giảm số lần khứ hồi đến DB bằng FETCH·INSERT theo mảng, rồi xác định kích thước mảng, chu kỳ commit và PREFETCH dựa trên số liệu đo thực tế.

  • Chuyển Pro*C sang ECPG và JDBC, rồi đối chiếu ba kết quả bằng CSV, md5 và tổng.

Tiếp nhận batch Pro*C, sửa lỗi, tăng tốc và chuyển sang PostgreSQL và Java

Chúng ta sẽ theo sát từ đầu đến cuối một batch quyết toán hàng tháng cho người bán của một trung tâm thương mại trực tuyến giả lập. Bắt đầu với kiến thức cơ bản về Pro*C để đọc mã nguồn, sửa bốn lỗi tiềm ẩn bằng các bản vá tối thiểu, giảm số lượt truy vấn qua lại với DB từ 265,893 xuống còn 359 nhờ xử lý theo mảng, rồi chuyển sang ECPG và JDBC để chứng minh rằng cả ba kết quả đều giống nhau đến từng dòng. Tất cả lệnh đều được chạy trực tiếp trên Oracle Database Free và PostgreSQL trong Docker.

Pro*C vẫn đang chạy trong các tác vụ batch ban đêm của ngành tài chính, bán lẻ và khu vực công, nhưng tài liệu học tập chỉ có sổ tay Oracle và những bài viết rời rạc. Dựa trên kinh nghiệm viết sách hướng dẫn thực hành cho người trong ngành, khóa học này không bắt đầu bằng việc liệt kê cú pháp, mà từ tình huống “tác vụ batch được bàn giao đã dừng lại đêm qua”. Khóa học tái hiện thực tế các sự cố: quyết toán chỉ còn một nửa vì commit sau mỗi người bán, 13 người bán cuối cùng bị vòng lặp FETCH mảng bỏ sót, 13.513 đơn hàng âm thầm biến mất do khoản giảm giá NULL, và báo cáo có tên đứng trước bị ghép vào. Sau đó, khóa học đối chiếu với SQL giá trị kỳ vọng theo cùng quy tắc và chứng minh kết quả đã sửa. Cuối cùng, cùng tác vụ batch đó được chuyển sang PostgreSQL ECPG và Java JDBC, đồng thời kiểm tra cả những khác biệt thường gây lỗi sau khi chuyển đổi (chuỗi rỗng, khoảng trắng trong CHAR, phép chia số nguyên, sắp xếp, giao dịch bị đình chỉ).

Sau khi hoàn thành bài giảng này

  • Biên dịch mã nguồn Pro*C và dựa vào thông báo lỗi để xác định vấn đề xảy ra ở giai đoạn tiền biên dịch, biên dịch, liên kết hay thực thi.

  • Sử dụng chính xác biến host, VARCHAR, biến chỉ báo, SQLCA và WHENEVER, kể cả những trường hợp dễ mắc bẫy.

  • Tìm và sửa bằng bản vá tối thiểu các lỗi về vị trí commit, điều kiện vòng lặp, xử lý NULL và chuỗi trong tác vụ batch được kế thừa.

  • Chứng minh kết quả đã sửa không phát sinh hồi quy bằng truy vấn SQL tạo kết quả kỳ vọng theo cùng quy tắc và đối chiếu phần chênh lệch theo cả hai chiều.

  • Chẩn đoán các batch bị treo thông qua phiên và sự kiện chờ, đồng thời giúp người vận hành dễ theo dõi bằng nhật ký công việc và mã thoát.

  • Giảm số lượt trao đổi với DB bằng FETCH·INSERT theo mảng, đồng thời xác định kích thước mảng, chu kỳ commit và PREFETCH thông qua đo đạc thực tế.

  • Chuyển Pro*C sang ECPG và JDBC, rồi đối chiếu ba kết quả bằng CSV, md5 và tổng.

Phù hợp với những đối tượng sau đây】【。

  • Nhà phát triển/DBA đột nhiên được giao phụ trách batch Pro*C

  • Nhà phát triển phụ trách chuyển đổi batch C trong dự án chuyển từ Oracle sang PostgreSQL

  • Dành cho những người cần có cách chứng minh rằng mình đã “sửa một cách an toàn” trước khi chỉnh sửa các batch legacy.

  • Dành cho những người biết C và SQL nhưng lần đầu làm quen với SQL nhúng.

Chương trình học (6 phần · 41 bài · khoảng 303 phút)

  • Phần 0. Định hướng — Xem trước sản phẩm hoàn chỉnh

  • Phần 1. Nền tảng Pro*C và môi trường thực hành — khởi động môi trường thực hành, chương trình Pro*C đầu tiên, hai bước biên dịch và Makefile, chẩn đoán lỗi biên dịch, biến host và VARCHAR, biến chỉ báo và NULL, kết nối và giao dịch, những cạm bẫy khi ánh xạ kiểu dữ liệu

  • Phần 2. Con trỏ và xử lý lỗi — SELECT INTO một hàng, đọc nhiều hàng bằng con trỏ, cạm bẫy của WHENEVER, đọc SQLCA, mẫu xử lý lỗi tường minh, SQL động, gọi PL/SQL và cấu trúc máy chủ

  • Phần 3. Đọc và sửa mã kế thừa — tìm hiểu batch quyết toán được kế thừa, thứ tự đọc mã, lỗi 1: vị trí commit, batch an toàn khi chạy lại, lỗi 2: người bán bị mất, lỗi 3: số tiền chiết khấu NULL, lỗi 4: ký tự rác, kiểm tra hồi quy sau khi sửa, chẩn đoán batch bị dừng, nhật ký công việc và mã thoát

  • Mục 4. Hiệu năng xử lý theo lô: xử lý nhiều bản ghi cùng lúc — Chi phí xử lý từng bản ghi, FETCH theo mảng, INSERT theo mảng: FOR :n, thử nghiệm kích thước mảng, một phần xử lý mảng thất bại, chu kỳ commit và PREFETCH

  • Mục 5. Chuyển đổi sang PostgreSQL ECPG và Java — Lập kế hoạch chuyển đổi, di chuyển lược đồ và dữ liệu, chương trình ECPG đầu tiên, chuyển batch quyết toán sang ECPG, xử lý lỗi và mảng trong ECPG, viết lại bằng Java JDBC, đối chiếu ba kết quả, rủi ro chuyển đổi và cách khôi phục, tổng kết: danh sách kiểm tra thực tế công việc

Môi trường thực hành

Khởi chạy cùng lúc Oracle Database Free 23ai, môi trường phát triển Pro*C (Instant Client 23ai), PostgreSQL 17, môi trường phát triển ECPG và Java 21 bằng Docker (./up.sh). 120 nhà bán hàng và 200.000 sản phẩm trong đơn hàng của trung tâm thương mại chuyên về thể thao và dã ngoại ảo “Loop Market” được tạo theo các quy tắc cố định. Chạy ./scenarios/sNN.sh cho từng buổi học để xem kết quả giống như trên màn hình bài giảng. Tất cả số liệu và thông báo lỗi trên màn hình bài giảng đều là kết quả thu được khi thực sự chạy bài thực hành này.

Kiến thức tiên quyết

  • Cú pháp cơ bản của C (đủ để đọc hiểu con trỏ và struct)

  • SQL SELECT·INSERT·UPDATE

  • Máy tính đã cài Docker (cả Apple Silicon và Intel)

Những nội dung không được đề cập trong khóa học này

  • Nhập môn ngôn ngữ C

  • Cài đặt và quản lý Oracle

  • PL/SQL nâng cao

  • Lập trình OCI trực tiếp

  • Spring Batch

Hướng dẫn

Lời thuyết minh trong slide là giọng nói tổng hợp. Tất cả dữ liệu đều là dữ liệu giả lập dùng cho đào tạo, các con số có thể thay đổi tùy theo môi trường thực thi.

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Lập trình viên/DBA đột nhiên được giao phụ trách batch Pro*C

  • Lập trình viên phụ trách chuyển đổi các tác vụ C theo lô trong dự án chuyển từ Oracle sang PostgreSQL

  • Dành cho những ai cần một cách chứng minh rằng mình đã 'sửa an toàn' trước khi chỉnh sửa batch legacy.

  • Dành cho những người biết C và SQL nhưng lần đầu tiếp xúc với SQL nhúng.

Cần biết trước khi bắt đầu?

  • Cú pháp C cơ bản (mức độ đọc hiểu con trỏ và struct)

  • SQL SELECT·INSERT·UPDATE

  • Máy tính đã cài đặt Docker (cả Apple Silicon và Intel)

Xin chào
Đây là dorian05202988

Xác minh sự nghiệp

Tôi là một chuyên gia dữ liệu với hơn 20 năm kinh nghiệm trong lĩnh vực cơ sở dữ liệu và CNTT. Trong vai trò DBA và quản lý nhóm Nền tảng Cơ sở dữ liệu, tôi phụ trách các nền tảng cơ sở dữ liệu, với chuyên môn về MySQL, PostgreSQL, Oracle, MongoDB, tinh chỉnh SQL, AWS, Terraform và Python. Dựa trên kinh nghiệm trong các lĩnh vực trò chơi, tài chính và dịch vụ CNTT, tôi trình bày về cơ sở dữ liệu và kiến trúc đám mây. Tôi đã xuất bản 『Học các mẫu SQL tinh chỉnh thực tế Oracle』 và 『Sổ tay ứng dụng dự án thực tế Oracle Pro*C』, đồng thời thuyết trình về serverless, lựa chọn cơ sở dữ liệu và chiến lược đa cơ sở dữ liệu tại AWS Summit 2018·2019 và sự kiện 데이터야 놀자 2020. Gần đây, tôi tập trung vào phân tích và khuyến nghị tinh chỉnh truy vấn chậm bằng Bedrock LLM, tự động hóa việc tính toán thông số DB, cũng như quy trình tra cứu thông qua máy chủ DB Meta MCP và bot Slack. Tôi giải thích về tự động hóa cơ sở dữ liệu dành cho nhà phát triển và việc ứng dụng AI vào công việc dành cho người không chuyên về phát triển thông qua các bài thực hành phù hợp với đối tượng và mục tiêu của từng khóa học. Thay vì áp dụng nguyên xi các đề xuất của AI, tôi truyền đạt các tiêu chí đánh giá như kiểm tra tính tương đương của kết quả, kế hoạch thực thi và điều kiện quan sát; nếu thiếu căn cứ thì tạm thời chưa áp dụng. Dữ liệu vận hành của công ty và thông tin xác thực không được đưa vào tài liệu giảng dạy.

Thêm

Chương trình giảng dạy

Tất cả

41 bài giảng ∙ (5giờ 2phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Chưa có đủ đánh giá.
Hãy trở thành tác giả của một đánh giá giúp mọi người!

Khóa học khác của dorian05202988

Hãy khám phá các khóa học khác của giảng viên!

Khóa học tương tự

Khám phá các khóa học khác trong cùng lĩnh vực!

Ưu đãi có thời hạn

1.622.873 ₫

19%

2.028.591 ₫