Làm cách nào để di chuyển thủ tục lưu sẵn của Oracle sang MySQL?
Với việc mất giấy phép Oracle Standard Edition One và cơ sở dữ liệu Oracle Express Edition miễn phí bị kẹt ở Phiên bản 2 11g cũ từ năm 2014, nhiều dự án nhỏ hơn đang xem xét liệu MySQL có thể là giải pháp thay thế hay không. Show
Nếu bạn đang xây dựng ứng dụng của mình từ đầu, hầu hết các dự án có thể bắt đầu với bất kỳ cơ sở dữ liệu quan hệ nào. Nhưng nếu bạn có một cơ sở dữ liệu hiện có, bạn cần điều tra cẩn thận xem việc di chuyển có hợp lý không So sánh tính năngNhiều tính năng của Oracle cũng có sẵn trong MySQL
Đối với một số tính năng của Oracle, MySQL có chức năng tương đương nhưng được triển khai khác. Ví dụ: MySQL không có các chuỗi mà thay vào đó cho phép các cột được xác định là AUTO_INCREMENT. Điều này giúp loại bỏ trình kích hoạt khóa chính cần thiết cho đến Oracle 12 MySQL không có gì tương ứng với các gói PL/SQL, chỉ có các hàm và thủ tục. Điều này có nghĩa là bạn cũng không có các biến gói nhưng sẽ phải sử dụng các biến do người dùng xác định trong phạm vi phiên (@my_var) để lưu trữ các giá trị Người dùng và Bảo mậtCơ sở dữ liệu, lược đồ và người dùng cũng hoạt động khác nhau. Trong Oracle, bạn có một cơ sở dữ liệu với nhiều lược đồ cũng là người dùng. Trong MySQL, từ DATABASE đồng nghĩa với SCHEMA và được tách rời khỏi người dùng. Vì vậy, người dùng cần được cấp quyền truy cập vào lược đồ/cơ sở dữ liệu Mô hình bảo mật trong MySQL nói chung đơn giản hơn nhiều so với Oracle, vì vậy nếu bạn có bảo mật chi tiết và/hoặc phức tạp trong ứng dụng Oracle, sẽ khó chuyển sang MySQL Loại dữ liệuCác kiểu dữ liệu khác nhau giữa Oracle và MySQL, nhưng nhìn chung có thể được ánh xạ dễ dàng tiên tri mysql VARCHAR2 VARCHAR SỐ SỐ NGÀY NGÀY GIỜ Lưu ý rằng biến MySQL DATE chỉ có phần ngày và không có thời gian. Việc chuyển đổi dễ dàng là biến mọi NGÀY của Oracle thành DATETIME của MySQL, nhưng nếu bạn không bao giờ cần phần tử thời gian, thì nên sử dụng MySQL DATE cho các giá trị này MySQL có rất nhiều kiểu dữ liệu khác nhau, từ TINYINT 3 chữ số đến BIGINT 19 chữ số. Bạn cần sử dụng một trong các loại INT cho các cột chính sử dụng AUTO_INCREMENT Còn PL/SQL thì sao?Ngôn ngữ lập trình trong MySQL đơn giản hơn nhiều so với PL/SQL và MySQL không có bất cứ thứ gì giống như khả năng của các gói tích hợp trong Oracle. Nếu bạn đang sử dụng nhiều gói tích hợp, sẽ rất khó để chuyển sang MySQL Mặc dù bạn có các khả năng kích hoạt bảng trong MySQL giống như trong Oracle (TRƯỚC/SAU, hàng hoặc bảng), nhưng bạn không có tất cả các trình kích hoạt khác mà Oracle cung cấp, như trình kích hoạt DDL, ON-LOGON, v.v. Có một số khác biệt về cú pháp – ví dụ, các nhánh PL/SQL EXCEPTION được xử lý trong MySQL với DECLARE HANDLER. MySQL có các cấu trúc điều khiển cơ bản như các vòng lặp IF-THEN-ELSE, WHILE và REPEAT, nhưng bạn sẽ tìm kiếm cấu trúc vòng lặp FOR một cách vô ích. MySQL không có khái niệm về các biến neo với %TYPE và %ROWTYPE Trình hướng dẫn di chuyểnMySQL Workbench đi kèm với trình hướng dẫn di chuyển cơ sở dữ liệu. Trình hướng dẫn này giúp bạn di chuyển từ MS SQL Server, MS Access, PostgreSQL và Sybase. Vì MySQL thuộc sở hữu của Oracle nên rõ ràng là không có sự di chuyển từ Oracle sang MySQL Ngoài ra còn có một quá trình di chuyển chung có thể được sử dụng để di chuyển “hầu hết các cơ sở dữ liệu tuân thủ ODBC. ” Tuy nhiên, điều này cũng không thể được sử dụng để di chuyển từ Oracle sang –MySQL—trình hướng dẫn sẽ kết nối nhưng không thấy bất kỳ đối tượng cơ sở dữ liệu nào để di chuyển Công cụ di chuyển khácMicrosoft sẽ sẵn lòng giúp bạn di chuyển từ Oracle sang SQL Server bằng Trợ lý di chuyển Microsoft SQL Server. Từ đó, bạn có thể sử dụng thuật sĩ di chuyển MySQL, hỗ trợ di chuyển từ MS SQL Server Tìm kiếm trên Internet cũng sẽ tạo ra một số công cụ của bên thứ ba nhằm mục đích có thể di chuyển cơ sở dữ liệu của bạn từ Oracle sang MySQL Di chuyển thủ côngBạn cũng có thể xuất cơ sở dữ liệu Oracle của mình sang một tệp bằng Oracle SQL Developer và sau đó thực hiện các điều chỉnh cần thiết để tạo cơ sở dữ liệu MySQL tương đương. Dưới đây là ví dụ về xuất từ SQL Developer của cơ sở dữ liệu đơn giản chứa nhiều đối tượng lược đồ Oracle thông thường và cách chúng ánh xạ tới MySQL Những cái bànNhà phát triển SQL xuất các bảng có dấu ngoặc kép, như thế này -------------------------------------------------------- Để tạo các bảng này trong MySQL, bạn cần bỏ dấu ngoặc kép và thay đổi kiểu dữ liệu. SYSDATE là một chức năng dành riêng cho Oracle mà bạn cần thay thế bằng CURRENT_TIMESTAMP tương đương. Một tập lệnh MySQL có thể trông như thế này CREATE TABLE EVENTS trình tựBạn không cần các trình tự trong MySQL, vì vậy bạn không cần phải bao gồm các trình tự này nếu bạn xuất cơ sở dữ liệu Oracle của mình bằng SQL Developer. Nếu bạn đang sử dụng trình kích hoạt hoàn toàn để tạo các giá trị khóa chính, bạn cũng có thể loại bỏ chúng Hạn chếBản xuất SQL Developer thêm tất cả các ràng buộc dưới dạng các câu lệnh ALTER TABLE riêng lẻ, như thế này -------------------------------------------------------- Trong MySQL, bạn cần xóa dấu ngoặc kép. Cú pháp cũng hơi khác một chút, không có dấu ngoặc đơn xung quanh thông số cột. Ngoài ra, MySQL yêu cầu bạn cung cấp đặc tả cột đầy đủ bao gồm kiểu dữ liệu cho mọi câu lệnh ALTER. Bạn phải tạo khóa chính của cột trước khi có thể thêm AUTO_INCREMENT. Trong MySQL, ở trên có thể trở thành ALTER TABLE EVENTS MODIFY EV_ID INT NOT NULL; Lượt xemXuất chế độ xem mặc định từ Oracle qua SQL Developer trông như thế này CREATE OR REPLACE EDITIONABLE VIEW "REG_EMAIL" Trong MySQL, không có TẠO HOẶC THAY THẾ, cũng như khái niệm có thể chỉnh sửa, do đó, MySQL tương đương trở thành CREATE VIEW REG_EMAIL (EV_ID, DESCRIPTION, EMAIL) Dữ liệuNhà phát triển SQL có thể xuất dữ liệu của bạn dưới dạng câu lệnh INSERT, như thế này REM INSERTING into EVENTS Nhà phát triển SQL thêm một số cú pháp SQL*Plus (REM và SET) mà bạn cần xóa. MySQL không có hàm TO_DATE, nhưng chấp nhận trực tiếp các giá trị DATETIME dưới dạng các chuỗi được trích dẫn ở định dạng tiêu chuẩn ISO. Trong MySQL, bạn chỉ cần một cái gì đó như thế này insert into EVENTS (EV_ID,DESCRIPTION,START_DATE,END_DATE) Gây nênQuá trình xuất trình kích hoạt SQL Developer trông như thế này ________số 8_______MySQL không có CREATE OR REPLACE hoặc EDITIONABLE và các khai báo phải được thực hiện riêng lẻ với DECLARE. Cú pháp đề cập đến bản ghi kích hoạt chỉ là MỚI trong MySQL, không phải. MỚI như trong Oracle. Bạn cũng cần đặt rõ ràng DELIMITER trong MySQL để thông báo khi mã kích hoạt hoàn tất. Lưu ý rằng các trình kích hoạt, chức năng và thủ tục của MySQL không được có tên như một phần của câu lệnh END cuối cùng Trong ví dụ này, trình kích hoạt Oracle sử dụng UTL_MAIL, một trong nhiều phần mềm tích hợp sẵn không có sẵn trong MySQL. Bạn cần tìm một cách khác để triển khai loại chức năng này trong MySQL. MySQL tương đương của bạn có thể trông như thế này DELIMITER // Chức năngMột hàm Oracle được xuất từ SQL Developer trông như thế này CREATE TABLE EVENTS0 Trong MySQL với các từ khóa không liên quan đã bị xóa, khai báo rõ ràng và kiểu dữ liệu đã thay đổi, quy trình này có thể trông như thế này CREATE TABLE EVENTS1 thủ tụcMột ví dụ về thủ tục PL/SQL từ cơ sở dữ liệu Oracle có thể trông như thế này khi được xuất từ SQL Developer CREATE TABLE EVENTS2 Trong MySQL, cú pháp tham số khác, với từ khóa IN hoặc OUT trước. Các ngoại lệ được khai báo với DECLARE … XỬ LÝ CHO – trong ví dụ dưới đây, mọi thứ trong khối BEGIN END bên dưới khai báo trình xử lý là trình xử lý cho điều kiện cụ thể KHÔNG TÌM THẤY. Trình xử lý có thể TIẾP TỤC như được hiển thị bên dưới hoặc EXIT để chấm dứt khối BEGIN END mà nó là một phần của. Trong MySQL, quy trình Oracle ở trên có thể trông như thế này CREATE TABLE EVENTS3 Phần kết luậnKhông có chuyển đổi tự động dễ dàng từ Oracle sang MySQL MySQL có các tính năng cơ bản tương đương với cơ sở dữ liệu Oracle, mặc dù cú pháp hơi khác đối với nhiều thứ. Cú pháp của các trình kích hoạt, chức năng và thủ tục hơi khác nhưng dễ điều chỉnh. Cú pháp cho các trình xử lý ngoại lệ khá khác nhau và chúng được đặt khác nhau trong mã, vì vậy sẽ cần suy nghĩ một chút để điều chỉnh chúng cho MySQL Sự khác biệt lớn và yếu tố quyết định tiềm năng khi cân nhắc di chuyển là lượng PL/SQL trong ứng dụng của bạn. Việc thiếu nhiều gói tích hợp mạnh mẽ mà bạn tìm thấy trong Oracle và ngôn ngữ lập trình đơn giản hơn không có cấu trúc như vòng lặp FOR con trỏ có nghĩa là nếu bạn có nhiều PL/SQL, bạn sẽ phải đối mặt với một nhiệm vụ lớn khi chuyển sang MySQL. Thẻ. tiên tri Được viết bởi Sten Vesterli là Giám đốc ACE của Oracle và là nhà phát triển, tư vấn và huấn luyện viên chính chuyên về các công cụ và máy chủ của Oracle. Ông là tác giả của cuốn sách có tên "Oracle ADF Enterprise Application Development—Made Simple," do Packt Publishing xuất bản Làm cách nào để chuyển đổi thủ tục lưu sẵn của Oracle sang MySQL?Công cụ chuyển đổi SQL của SQLines cho phép bạn chuyển đổi lược đồ cơ sở dữ liệu (DDL), truy vấn và câu lệnh DML, chế độ xem, thủ tục được lưu trữ, chức năng và trình kích hoạt từ Oracle sang MySQL. Công cụ SQLines chuyển đổi các tập lệnh SQL và các câu lệnh SQL độc lập. Để di chuyển dữ liệu và lược đồ cơ sở dữ liệu từ cơ sở dữ liệu Oracle, hãy sử dụng công cụ Dữ liệu SQLines.
Làm cách nào để nhập tệp kết xuất Oracle trong MySQL?Nhấp vào đây để tìm hiểu cách nhập tệp kết xuất vào cơ sở dữ liệu MySQL. . yêu cầu quản trị viên Máy chủ ảo của bạn tạo cơ sở dữ liệu trống cho bạn chạy OraDump-to-MySQL và chọn cơ sở dữ liệu này làm mục tiêu chuyển đổi nhấp vào "Có" khi bạn sẽ được hỏi liệu bạn có muốn ghi đè lên cơ sở dữ liệu MySQL hiện có không PL SQL có thể chạy MySQL không?Mặc dù MySQL có các thành phần tương tự, nhưng không, bạn không thể sử dụng PL\SQL trong MySQL . Điều tương tự cũng xảy ra với T-SQL được sử dụng bởi MS SQL Server. MySQL có rất nhiều tài liệu về nó tại trang web của họ. Bạn sẽ thấy rằng cả PL\SQL và T-SQL đều hoàn thiện Turing và có thể cung cấp nhiều chức năng hơn một chút.
Bạn sẽ sử dụng dịch vụ cơ sở dữ liệu nào để di chuyển cơ sở dữ liệu từ Oracle sang MySQL?Bạn có thể sử dụng Dịch vụ di chuyển cơ sở dữ liệu AWS (AWS DMS) để di chuyển dữ liệu của mình đến và từ các cơ sở dữ liệu nguồn mở và thương mại được sử dụng rộng rãi nhất . |