Ora2Pg là một công cụ miễn phí để chuyển đổi cơ sở dữ liệu Oracle hoặc MySQL sang PostgreSQL. Nó kết nối với cơ sở dữ liệu Oracle, thực hiện quét tự động và trích xuất cấu trúc và dữ liệu của cơ sở dữ liệu, sau đó tạo ra các tập lệnh SQL tương ứng. Các tập lệnh này có thể được sử dụng để nhập cấu trúc và dữ liệu cơ sở dữ liệu vào PostgreSQL.
Ora2Pg có thể được sử dụng trong nhiều trường hợp khác nhau, từ phân tích ngược cơ sở dữ liệu Oracle đến di chuyển các cơ sở dữ liệu doanh nghiệp lớn, hoặc đơn giản là sao chép một số dữ liệu Oracle sang cơ sở dữ liệu PostgreSQL. Nó rất đơn giản và dễ sử dụng, thậm chí không yêu cầu bất kỳ kiến thức nào về cơ sở dữ liệu Oracle, chỉ cần cung cấp các tham số cấu hình để kết nối với cơ sở dữ liệu Oracle.

Ora2Pg bao gồm một tập lệnh Perl (ora2pg) và một mô-đun Perl ( Ora2Pg.pm ). Việc duy nhất cần làm là chỉnh sửa tệp cấu hình ora2pg.conf, thiết lập DSN để kết nối với cơ sở dữ liệu Oracle và tên lược đồ tùy chọn. Sau khi hoàn tất, chỉ cần thiết lập loại xuất: TABLE (bao gồm cả ràng buộc), VIEW, MVIEW, TABLESPACE, SEQUENCE, INDEXES, TRIGGER, GRANT, FUNCTION, PROCEDURE, PACKAGE, PARTITION, TYPE, INSERT hoặc COPY, FDW, QUERY, KETTLE và SYNONYM.
Theo mặc định, Ora2Pg xuất ra một tập tin, có thể được tải vào cơ sở dữ liệu PostgreSQL thông qua máy khách psql; tuy nhiên, bạn cũng có thể thiết lập DSN cơ sở dữ liệu trong tập tin cấu hình và nhập trực tiếp vào cơ sở dữ liệu PostgreSQL. Thông qua các tùy chọn cấu hình trong ora2pg.conf, bạn có thể kiểm soát nội dung và phương thức xuất.
Công cụ này hỗ trợ các chức năng sau:
- Xuất toàn bộ lược đồ cơ sở dữ liệu (bảng, khung nhìn, chuỗi, chỉ mục), bao gồm các bản dựng duy nhất, khóa chính, khóa ngoại và các ràng buộc kiểm tra.
- Nhập thông tin về quyền hạn/quyền quản trị của người dùng/nhóm người dùng.
- Xuất các phân vùng phạm vi/danh sách/băm và các phân vùng con của chúng.
- Xuất bảng được chỉ định (bằng cách chỉ định tên bảng).
- Xuất chế độ Oracle sang chế độ PostgreSQL 8.4+.
- Xuất các hàm, trình kích hoạt, thủ tục, gói và nội dung gói được định nghĩa trước.
- Xuất dữ liệu dưới dạng bảng, hỗ trợ thêm điều kiện WHERE để xuất dữ liệu được chỉ định.
- Hỗ trợ xuất các đối tượng Oracle BLOB dưới dạng dữ liệu PG BYTEA.
- Xuất view Oracle dưới dạng bảng trong PG.
- Xuất các kiểu dữ liệu do người dùng Oracle định nghĩa.
- Cung cấp một số ví dụ cơ bản về chuyển đổi mã PLSQL sang mã PLPGSQL.
- Hỗ trợ nhiều nền tảng khác nhau.
- Xuất các bảng dữ liệu Oracle dưới dạng bảng ngoài FDW.
- Xuất các chế độ xem vật lý.
- Hiển thị báo cáo chi tiết về cơ sở dữ liệu Oracle.
- Đánh giá chi phí di chuyển cơ sở dữ liệu Oracle.
- Đánh giá độ khó của quá trình di chuyển cơ sở dữ liệu Oracle.
- Ước tính chi phí cho việc chuyển đổi mã PL/SQL từ các tập tin.
- Ước tính chi phí cho việc chuyển đổi các truy vấn Oracle SQL từ tệp tin.
- Tạo các tệp ktr ở định dạng XML cho Pentaho Data Integrator (Kettle).
- Nhập dữ liệu Oracle Locator và dữ liệu hình học không gian vào PostGIS.
- Xuất DBLINK sang Oracle FDW.
- Xuất các TỪ ĐỒNG NGHĨA dưới dạng một khung nhìn.
- Xuất thư mục DIRECTORY dưới dạng thư mục cho các bảng bên ngoài hoặc các plugin external_file.
- Một bản xuất dữ liệu MySQL hoàn chỉnh, tương tự như cơ sở dữ liệu Oracle.
- Xử lý đồng thời nhiều lệnh SQL thông qua nhiều kết nối PostgreSQL.
- Thực hiện kiểm tra sự khác biệt giữa cơ sở dữ liệu Oracle và PostgreSQL.
Ora2Pg cố gắng tự động chuyển đổi cơ sở dữ liệu Oracle sang cơ sở dữ liệu PostgreSQL, nhưng vẫn cần thực hiện một số thao tác thủ công. Mã PL/SQL dành riêng cho Oracle, bao gồm các hàm, thủ tục, gói và trình kích hoạt, cần được kiểm tra để xác nhận rằng chúng tuân thủ tiêu chuẩn cú pháp PostgreSQL sau khi chuyển đổi. Bạn có thể tìm thấy một số thông tin hữu ích về việc chuyển đổi mã PL/SQL của Oracle sang mã PL/PGSQL của PostgreSQL trong phần Oracle của trang “ Chuyển đổi từ các cơ sở dữ liệu khác sang PostgreSQL ”.
Sử dụng Ora2Pg
Theo mặc định, Ora2Pg sẽ tìm kiếm tệp cấu hình /etc/ora2pg/ora2pg.conf; nếu tệp này tồn tại, bạn chỉ cần thực hiện lệnh sau:
/usr/local/bin/ora2pg/usr/local/bin/ora2pg
Đối với hệ thống Windows™, bạn có thể chạy tệp ora2pg.bat trong thư mục bin của chương trình Perl. Người dùng Windows™ có thể tìm thấy tệp mẫu cấu hình trong thư mục C:\ora2pg.
Nếu bạn muốn sử dụng các tệp cấu hình khác, bạn chỉ cần chỉ định chúng trên dòng lệnh:
/usr/local/bin/ora2pg -c /etc/ora2pg/new_ora2pg.conf/usr/local/bin/ora2pg -c /etc/ora2pg/new_ora2pg.conf
Sau đây là tất cả các tham số dòng lệnh được cho phép khi sử dụng ora2pg:
Cách sử dụng: ora2pg [-dhpqv --estimate_cost --dump_as_html] [--option value] a | --allow str: Chỉ định danh sách các đối tượng được phép xuất, phân cách bằng dấu phẩy. Cũng có thể được sử dụng với tùy chọn SHOW_COLUMN. b | --basedir dir: Đặt thư mục xuất mặc định để lưu trữ kết quả xuất. c | --conf file: Đặt một tệp cấu hình không mặc định. Tệp cấu hình mặc định là /etc/ora2pg/ora2pg.conf. -d | --debug: Sử dụng chế độ gỡ lỗi để xuất thông tin chi tiết hơn. -D | --data_type STR: Đặt chuyển đổi kiểu dữ liệu thông qua dòng lệnh. -e | --exclude str: Chỉ định danh sách các đối tượng cần loại trừ trong quá trình xuất, được phân tách bằng dấu phẩy. Cũng có thể được sử dụng với tùy chọn SHOW_COLUMN. -h | --help: Hiển thị thông tin trợ giúp. -g | --grant_object type: Xuất thông tin ủy quyền trên đối tượng thuộc loại được chỉ định. Để biết giá trị, hãy xem mục cấu hình GRANT_OBJECT. -i | --input file: Chỉ định tệp mã Oracle PL/SQL cần nhập. Bạn không cần kết nối với cơ sở dữ liệu Oracle khi nhập tệp. -j | --jobs num: Đặt số lượng quy trình đồng thời được sử dụng để gửi dữ liệu đến PostgreSQL. -J | --copies num: Đặt số lượng kết nối đồng thời được sử dụng để xuất dữ liệu từ Oracle. -l | --log file: Đặt tệp nhật ký, mặc định là stdout. -L | --limit num: Khi xuất dữ liệu, số lượng bản ghi được đệm trong bộ nhớ mỗi lần trước khi ghi vào đĩa, giá trị mặc định là 10000. -m | --mysql: Xuất cơ sở dữ liệu MySQL. -n | --namespace schema: Đặt lược đồ Oracle cần xuất. -N | --pg_schema schema: Đặt đường dẫn tìm kiếm search_path trong PostgreSQL. -o | --out file: Đặt đường dẫn lưu trữ của tệp SQL đã xuất. Giá trị mặc định là tệp output.sql trong thư mục hiện tại. -p | --plsql: Cho phép chuyển đổi mã PLSQL sang mã PLPGSQL. -P | --parallel num: Xuất nhiều bảng cùng lúc, đặt số lượng đồng thời. -q | --quiet: Không hiển thị thanh tiến trình. -s | --source DSN: Đặt nguồn dữ liệu Oracle DBI. -t | --type export: Đặt loại xuất. Tham số này sẽ ghi đè loại xuất (TYPE) trong tệp cấu hình. -T | --temp_dir DIR: Chỉ định các thư mục lưu trữ tạm thời khác nhau cho nhiều tập lệnh ora2pg chạy đồng thời. -u | --user name: Đặt tên người dùng để kết nối với cơ sở dữ liệu Oracle. Bạn cũng có thể sử dụng biến môi trường ORA2PG_USER. -v | --version: Hiển thị thông tin phiên bản Ora2Pg và thoát. -w | --password pwd: Đặt mật khẩu người dùng để kết nối với cơ sở dữ liệu Oracle. Bạn cũng có thể sử dụng biến môi trường ORA2PG_PASSWD. --forceowner: Khi nhập dữ liệu, buộc ora2pg đặt chủ sở hữu của các bảng và chuỗi được nhập vào PostgreSQL là người dùng khi kết nối với cơ sở dữ liệu Oracle. Nếu được đặt thành tên người dùng được chỉ định, tất cả các đối tượng được nhập sẽ thuộc về người dùng đó. Theo mặc định, chủ sở hữu của đối tượng là người dùng được kết nối với cơ sở dữ liệu Pg. --nls_lang code: Đặt mã hóa NLS_LANG của máy khách Oracle. --client_encoding code: Thiết lập mã hóa máy khách PostgreSQL. --view_as_table str: Xuất chế độ xem dưới dạng bảng, nhiều chế độ xem được phân tách bằng dấu phẩy. --estimate_cost: Xuất thông tin đánh giá chi phí di chuyển trong kết quả SHOW_REPORT. --cost_unit_value minutes: Đơn vị đánh giá chi phí, được biểu thị bằng phút. Giá trị mặc định là 5 phút, đại diện cho thời gian cần thiết để một chuyên gia PostgreSQL di chuyển. Nếu đây là lần di chuyển đầu tiên, có thể đặt thành 10 phút. --dump_as_html: Tạo báo cáo di chuyển ở định dạng HTML, chỉ có thể được sử dụng với tùy chọn SHOW_REPORT. Báo cáo mặc định là một tệp văn bản đơn giản. --dump_as_csv: Tương tự như tham số trước, nhưng tạo báo cáo ở định dạng CSV. --dump_as_sheet: Khi tạo đánh giá di chuyển, tạo một hàng bản ghi CSV cho mỗi cơ sở dữ liệu. --init_project NAME: Tạo cấu trúc thư mục dự án ora2pg. Thư mục cấp cao nhất của dự án nằm dưới thư mục gốc. --project_base DIR: Xác định thư mục gốc của dự án ora2pg. Mặc định là thư mục hiện tại. --print_header: Được sử dụng với --dump_as_sheet để xuất thông tin tiêu đề CSV. --human_days_limit num: Đặt số ngày công cần thiết để nâng cấp mức độ đánh giá di chuyển từ B lên C. Giá trị mặc định là 5 ngày công. --audit_user LIST: Đặt tên người dùng cần lọc khi truy vấn bảng DBA_AUDIT_TRAIL. Nhiều người dùng được phân cách bằng dấu phẩy. Tham số này chỉ có thể được sử dụng cho các loại xuất SHOW_REPORT và QUERY. --pg_dsn DSN: Đặt nguồn dữ liệu PostgreSQL để nhập trực tuyến. --pg_user name: Đặt tên người dùng để kết nối với PostgreSQL. --pg_pwd password: Đặt mật khẩu người dùng để kết nối với PostgreSQL. --count_rows: Thực hiện đếm số hàng dữ liệu thực trong chế độ KIỂM TRA. --no_header: Không thêm thông tin tiêu đề Ora2Pg vào tệp được xuất. --oracle_speed: Dùng để kiểm tra tốc độ Oracle gửi dữ liệu. Không thực sự xử lý hoặc ghi dữ liệu. --ora2pg_speed: Dùng để kiểm tra tốc độ Ora2Pg gửi dữ liệu đã chuyển đổi. Không có dữ liệu nào được ghi.Cách sử dụng: ora2pg [-dhpqv --estimate_cost --dump_as_html] [--option value]
a | --allow str: Chỉ định danh sách các đối tượng được phép xuất, phân cách bằng dấu phẩy. Cũng có thể được sử dụng với tùy chọn SHOW_COLUMN.b | --basedir dir: Đặt thư mục xuất mặc định để lưu trữ kết quả xuất.c | --conf file: Đặt một tệp cấu hình không mặc định. Tệp cấu hình mặc định là /etc/ora2pg/ora2pg.conf.
-d | --debug: Sử dụng chế độ gỡ lỗi để xuất thông tin chi tiết hơn.
-D | --data_type STR: Đặt chuyển đổi kiểu dữ liệu thông qua dòng lệnh.
-e | --exclude str: Chỉ định danh sách các đối tượng cần loại trừ trong quá trình xuất, được phân tách bằng dấu phẩy. Cũng có thể được sử dụng với tùy chọn SHOW_COLUMN.
-h | --help: Hiển thị thông tin trợ giúp.
-g | --grant_object type: Xuất thông tin ủy quyền trên đối tượng thuộc loại được chỉ định. Để biết giá trị, hãy xem mục cấu hình GRANT_OBJECT.
-i | --input file: Chỉ định tệp mã Oracle PL/SQL cần nhập. Bạn không cần kết nối với cơ sở dữ liệu Oracle khi nhập tệp.
-j | --jobs num: Đặt số lượng quy trình đồng thời được sử dụng để gửi dữ liệu đến PostgreSQL.
-J | --copies num: Đặt số lượng kết nối đồng thời được sử dụng để xuất dữ liệu từ Oracle.
-l | --log file: Đặt tệp nhật ký, mặc định là stdout.
-L | --limit num: Khi xuất dữ liệu, số lượng bản ghi được đệm trong bộ nhớ mỗi lần trước khi ghi vào đĩa, giá trị mặc định là 10000.
-m | --mysql: Xuất cơ sở dữ liệu MySQL.
-n | --namespace schema: Đặt lược đồ Oracle cần xuất.
-N | --pg_schema schema: Đặt đường dẫn tìm kiếm search_path trong PostgreSQL.
-o | --out file: Đặt đường dẫn lưu trữ của tệp SQL đã xuất. Giá trị mặc định là tệp output.sql trong thư mục hiện tại.
-p | --plsql: Cho phép chuyển đổi mã PLSQL sang mã PLPGSQL.
-P | --parallel num: Xuất nhiều bảng cùng lúc, đặt số lượng đồng thời.
-q | --quiet: Không hiển thị thanh tiến trình.
-s | --source DSN: Đặt nguồn dữ liệu Oracle DBI.
-t | --type export: Đặt loại xuất. Tham số này sẽ ghi đè loại xuất (TYPE) trong tệp cấu hình.
-T | --temp_dir DIR: Chỉ định các thư mục lưu trữ tạm thời khác nhau cho nhiều tập lệnh ora2pg chạy đồng thời.
-u | --user name: Đặt tên người dùng để kết nối với cơ sở dữ liệu Oracle. Bạn cũng có thể sử dụng biến môi trường ORA2PG_USER.
-v | --version: Hiển thị thông tin phiên bản Ora2Pg và thoát.
-w | --password pwd: Đặt mật khẩu người dùng để kết nối với cơ sở dữ liệu Oracle. Bạn cũng có thể sử dụng biến môi trường ORA2PG_PASSWD.
--forceowner: Khi nhập dữ liệu, buộc ora2pg đặt chủ sở hữu của các bảng và chuỗi được nhập vào PostgreSQL là người dùng khi kết nối với cơ sở dữ liệu Oracle. Nếu được đặt thành tên người dùng được chỉ định, tất cả các đối tượng được nhập sẽ thuộc về người dùng đó. Theo mặc định, chủ sở hữu của đối tượng là người dùng được kết nối với cơ sở dữ liệu Pg.
--nls_lang code: Đặt mã hóa NLS_LANG của máy khách Oracle.
--client_encoding code: Thiết lập mã hóa máy khách PostgreSQL.
--view_as_table str: Xuất chế độ xem dưới dạng bảng, nhiều chế độ xem được phân tách bằng dấu phẩy.
--estimate_cost: Xuất thông tin đánh giá chi phí di chuyển trong kết quả SHOW_REPORT.
--cost_unit_value minutes: Đơn vị đánh giá chi phí, được biểu thị bằng phút. Giá trị mặc định là 5 phút, đại diện cho thời gian cần thiết để một chuyên gia PostgreSQL di chuyển. Nếu đây là lần di chuyển đầu tiên, có thể đặt thành 10 phút.
--dump_as_html: Tạo báo cáo di chuyển ở định dạng HTML, chỉ có thể được sử dụng với tùy chọn SHOW_REPORT. Báo cáo mặc định là một tệp văn bản đơn giản.
--dump_as_csv: Tương tự như tham số trước, nhưng tạo báo cáo ở định dạng CSV.
--dump_as_sheet: Khi tạo đánh giá di chuyển, tạo một hàng bản ghi CSV cho mỗi cơ sở dữ liệu.
--init_project NAME: Tạo cấu trúc thư mục dự án ora2pg. Thư mục cấp cao nhất của dự án nằm dưới thư mục gốc.
--project_base DIR: Xác định thư mục gốc của dự án ora2pg. Mặc định là thư mục hiện tại.
--print_header: Được sử dụng với --dump_as_sheet để xuất thông tin tiêu đề CSV.
--human_days_limit num: Đặt số ngày công cần thiết để nâng cấp mức độ đánh giá di chuyển từ B lên C. Giá trị mặc định là 5 ngày công.
--audit_user LIST: Đặt tên người dùng cần lọc khi truy vấn bảng DBA_AUDIT_TRAIL. Nhiều người dùng được phân cách bằng dấu phẩy. Tham số này chỉ có thể được sử dụng cho các loại xuất SHOW_REPORT và QUERY.
--pg_dsn DSN: Đặt nguồn dữ liệu PostgreSQL để nhập trực tuyến.
--pg_user name: Đặt tên người dùng để kết nối với PostgreSQL.
--pg_pwd password: Đặt mật khẩu người dùng để kết nối với PostgreSQL.
--count_rows: Thực hiện đếm số hàng dữ liệu thực trong chế độ KIỂM TRA.
--no_header: Không thêm thông tin tiêu đề Ora2Pg vào tệp được xuất.
--oracle_speed: Dùng để kiểm tra tốc độ Oracle gửi dữ liệu. Không thực sự xử lý hoặc ghi dữ liệu.
--ora2pg_speed: Dùng để kiểm tra tốc độ Ora2Pg gửi dữ liệu đã chuyển đổi. Không có dữ liệu nào được ghi.
Nếu quá trình thực thi thành công, ora2pg trả về 0; nếu xảy ra lỗi, nó trả về 1. Nếu một tiến trình con bị gi gián đoạn và người dùng nhận được thông báo cảnh báo: “CẢNH BÁO: đã xảy ra lỗi trong quá trình xuất dữ liệu.
Nếu bạn dùng lệnh `ora2pg`, nó sẽ trả về 2. Trong hầu hết các trường hợp, đó là lỗi tràn bộ nhớ (OOM), trước tiên bạn có thể thử giảm giá trị của tham số `DATA_LIMIT`.
Đối với các nhà phát triển, bạn có thể thêm các tùy chọn tùy chỉnh trong tập lệnh Perl ora2pg; vì tất cả các tùy chọn cấu hình trong tệp ora2pg.conf sẽ được truyền đến thể hiện đối tượng Ora2Pg mới được tạo ở dạng chữ thường. Tham khảo mã nguồn ora2pg để thêm các tùy chọn tùy chỉnh.
Lưu ý rằng việc cập nhật số liệu thống kê của cơ sở dữ liệu Oracle có thể cải thiện hiệu suất của quá trình di chuyển dữ liệu:
BEGIN DBMS_STATS.GATHER_SCHEMA_STATS DBMS_STATS.GATHER_DATABASE_STATS DBMS_STATS.GATHER_DICTIONARY_STATS END;BEGIN
DBMS_STATS.GATHER_SCHEMA_STATS
DBMS_STATS.GATHER_DATABASE_STATS
DBMS_STATS.GATHER_DICTIONARY_STATS
END;
Tạo mẫu di chuyển
Sử dụng các tùy chọn —project_base và —init_project để tạo mẫu dự án xuất cơ sở dữ liệu Oracle, bao gồm các cấu trúc thư mục khác nhau, tệp cấu hình và tập lệnh để xuất tất cả các đối tượng. Sau đây là một ví dụ về cách sử dụng:
ora2pg --project_base /app/migration/ --init_project test_project Creating project test_project. /app/migration/test_project/ schema/ dblinks/ directories/ functions/ grants/ mviews/ packages/ partitions/ procedures/ sequences/ synonyms/ tables/ tablespaces/ triggers/ types/ views/ sources/ functions/ mviews/ packages/ partitions/ procedures/ triggers/ types/ views/ data/ config/ reports/ Generating generic configuration file Creating script export_schema.sh to automate all exports. Creating script import_all.sh to automate all imports.ora2pg --project_base /app/migration/ --init_project test_project
Tạo dự án test_project.
/app/migration/test_project/
schema/
dblinks/
directories/
functions/
grants/
mviews/
packages/
partitions/
procedures/
sequences/
synonyms/
tables/
tablespaces/
triggers/
types /
views/
sources/
functions/
mviews/
packages/
partitions/
procedures/
triggers/
types/
views/
data/
config/
reports/
Tạo tệp cấu hình chung
Tạo tập lệnh export_schema.sh để tự động hóa tất cả các thao tác xuất.
Tạo tập lệnh import_all.sh để tự động hóa tất cả các thao tác nhập.
Ví dụ này tạo ra một tệp cấu hình chung, chỉ cần chỉ định thông tin kết nối cơ sở dữ liệu Oracle; đồng thời tạo ra một tệp kịch bản export_schema.sh. Thư mục sources/ được sử dụng để lưu trữ mã nguồn Oracle, và schema/ được sử dụng để lưu trữ mã được nhập vào PostgreSQL. Thư mục reports/ được sử dụng để lưu trữ các báo cáo HTML được tạo ra từ việc đánh giá chi phí di chuyển.
Nếu bạn muốn tạo một tệp cấu hình mặc định tùy chỉnh, hãy sử dụng tùy chọn -c để chỉ định đường dẫn của tệp. Đổi tên tệp với hậu tố .dist nếu bạn muốn ora2pg áp dụng các giá trị cấu hình chung, nếu không, tệp cấu hình sẽ được sao chép nguyên trạng.
Sau khi cấu hình kết nối cơ sở dữ liệu Oracle, bạn có thể chạy tập lệnh export_schema.sh để xuất các loại đối tượng khác nhau và ghi tệp DDL đầu ra vào một thư mục con trong schema/. Sau khi quá trình xuất hoàn tất, tập lệnh sẽ cung cấp các lệnh để xuất dữ liệu; bạn có thể xuất dữ liệu tương ứng sau khi hoàn tất và xác minh việc nhập đối tượng mẫu.
Bạn có thể nhập tệp DDL được tạo ra theo cách thủ công, hoặc bạn có thể sử dụng một tập lệnh khác là import_all.sh để thực hiện nhập tương tác.
Cấu hình kết nối cơ sở dữ liệu Oracle
Có thể sử dụng 5 tùy chọn cấu hình sau để thiết lập kết nối cơ sở dữ liệu Oracle.
Biến môi trường ORACLE_HOME được
sử dụng để thiết lập biến này, và mô-đun DBD::Oracle sử dụng biến này để tìm thư viện chia sẻ của Oracle.
ORACLE_DSN
thiết lập tên nguồn dữ liệu theo định dạng DSN chuẩn của DBI. Ví dụ:
dbi:Oracle:host=oradb_host.myhost.com;sid=DB_SID;port=1521dbi:Oracle:host=oradb_host.myhost.com;sid=DB_SID;port=1521
hoặc:
dbi:Oracle:DB_SIDdbi:Oracle:DB_SID
Đối với phương pháp thứ hai, SID cần được định nghĩa trong tệp tnsnames.ora trong thư mục được chỉ định bởi tệp $ORACLE_HOME/network/admin/tnsnames.ora hoặc biến môi trường TNS_ADMIN.
Đối với MySQL, DSN được định nghĩa như sau:
dbi:mysql:host=192.168.1.103;database=pankajconnect;port=3306dbi:mysql:host=192.168.1.103;database=pankajconnect;port=3306
'sid' được thay thế bằng 'database'.
Hai tùy chọn ORACLE_USER và ORACLE_PWD
được sử dụng để chỉ định tên người dùng và mật khẩu để kết nối với cơ sở dữ liệu Oracle. Cần lưu ý rằng, nếu có thể, tốt nhất nên sử dụng quyền quản trị viên cao nhất của Oracle để kết nối nhằm tránh các sự cố về quyền truy cập trong quá trình quét cơ sở dữ liệu và đảm bảo không bỏ sót bất kỳ dữ liệu nào.
Nếu USER_GRANTS sử dụng người dùng thông thường để kết nối với cơ sở dữ liệu Oracle, và người dùng đó không có quyền truy cập vào bảng DBA_… thì hãy đặt tham số này thành 1. Tập lệnh sẽ sử dụng bảng ALL_… .
Cảnh báo: Nếu bạn sử dụng kiểu xuất GRANT, bạn phải đặt tùy chọn này thành 0 để từ chối việc xuất tập lệnh.
GIAO DỊCH Tùy
chọn này được sử dụng để sửa đổi mức độ cách ly mặc định của các giao dịch xuất dữ liệu. Cài đặt mặc định là mức độ cách ly giao dịch tuần tự, được sử dụng để đảm bảo tính nhất quán của dữ liệu được xuất. Dưới đây là một số cài đặt được hỗ trợ:
readonly: 'SET TRANSACTION READ ONLY', readwrite: 'SET TRANSACTION READ WRITE', serializable: 'SET TRANSACTION ISOLATION LEVEL SERIALIZABLE' committed: 'SET TRANSACTION ISOLATION LEVEL READ COMMITTED',readonly: 'SET TRANSACTION READ ONLY',
readwrite: 'SET TRANSACTION READ WRITE',
serializable: 'SET TRANSACTION ISOLATION LEVEL SERIALIZABLE'
committed: 'SET TRANSACTION ISOLATION LEVEL READ COMMITTED',
Mức độ cách ly mặc định trước phiên bản 6.2 là CHỈ ĐỌC, nhưng thiết lập này sẽ phá vỡ tính nhất quán dữ liệu trong một số trường hợp, vì vậy thiết lập mặc định là CÓ THỂ TUẦN TỬ HÓA.
INPUT_FILE
Tham số này không được sử dụng để thiết lập kết nối cơ sở dữ liệu Oracle. Nó chỉ định một tệp đầu vào và vô hiệu hóa kết nối cơ sở dữ liệu Oracle. Việc đặt tham số này thành một tệp chứa mã PL/SQL của Oracle (chẳng hạn như các hàm, thủ tục hoặc gói) có thể ngăn Ora2Pg kết nối với cơ sở dữ liệu Oracle, mà chỉ áp dụng công cụ chuyển đổi của nó cho nội dung của tệp từ tệp này. Các tùy chọn có thể được sử dụng cho hầu hết các loại xuất: TABLE, TRIGGER, PROCEDURE, VIEW, FUNCTION hoặc PACKAGE, v.v.
ORA_INITIAL_COMMAND
Tùy chọn này được sử dụng để thực thi lệnh khởi tạo sau khi thiết lập kết nối cơ sở dữ liệu Oracle. Ví dụ: tắt chính sách hạn chế truy cập trước khi đọc thông tin đối tượng hoặc thiết lập một số tham số phiên nhất định. Tùy chọn này hỗ trợ nhiều thiết lập.
Truyền dữ liệu mã hóa Oracle
Nếu máy khách Oracle được cấu hình với kết nối mã hóa, DBD:Oracle cũng sẽ sử dụng phương thức mã hóa này cho kết nối và truyền dữ liệu. Ví dụ, hãy thêm đoạn mã sau vào tệp cấu hình máy khách Oracle (sqlnet.or hoặc .sqlnet):
# Configure encryption of connections to Oracle SQLNET.ENCRYPTION_CLIENT = required SQLNET.ENCRYPTION_TYPES_CLIENT = (AES256, RC4_256) SQLNET.CRYPTO_SEED = 'should be 10-70 random characters'# Cấu hình mã hóa các kết nối đến Oracle
SQLNET.ENCRYPTION_CLIENT = required
SQLNET.ENCRYPTION_TYPES_CLIENT = (AES256, RC4_256)
SQLNET.CRYPTO_SEED = 'nên là 10-70 ký tự ngẫu nhiên'
Nếu thiết lập phương thức truyền tải mã hóa như trên, bất kỳ công cụ nào sử dụng máy khách Oracle để kết nối với cơ sở dữ liệu đều sẽ sử dụng phương thức mã hóa này.
Ví dụ, mô-đun DBI của Perl kết nối với cơ sở dữ liệu Oracle thông qua DBD-Oracle, sử dụng một máy khách Oracle để kết nối với cơ sở dữ liệu. Nếu máy khách Oracle được cấu hình với kết nối mã hóa, Perl cũng sử dụng phương thức mã hóa để kết nối với cơ sở dữ liệu Oracle.
Kiểm tra kết nối
Sau khi thiết lập DSN của cơ sở dữ liệu Oracle, bạn có thể thực hiện lệnh sau để kiểm tra kết nối cơ sở dữ liệu:
ora2pg -t SHOW_VERSION -c config/ora2pg.confora2pg -t SHOW_VERSION -c config/ora2pg.conf
Lệnh trên sẽ hiển thị phiên bản của cơ sở dữ liệu Oracle.
Khắc phục sự cố
Nếu chỉ có thông tin tiêu đề và phần cuối của các giao dịch Pg được xuất ra trong tệp output.sql, có hai lý do có thể xảy ra. Tập lệnh ora2pg xuất ra lỗi ORA-XXX, có nghĩa là DSN hoặc tên người dùng/mật khẩu không chính xác. Hãy kiểm tra các thiết lập liên quan và chạy lại tập lệnh. Tập lệnh không có bất kỳ thông báo lỗi nào, nhưng tệp đầu ra trống: người dùng thiếu quyền truy cập vào các đối tượng cơ sở dữ liệu. Hãy thử sử dụng người dùng có quyền quản trị để kết nối với Oracle, hoặc kiểm tra tùy chọn USER_GRANTS và tùy chọn SCHEMA bên dưới.
LOGFILE
Theo mặc định, tất cả các thông báo được gửi đến đầu ra chuẩn. Nếu bạn chỉ định đường dẫn tệp cho tùy chọn này, tất cả thông tin đầu ra sẽ được ghi thêm vào tệp.
Cảm ơn bạn đã đọc bài viết này.
TƯ VẤN: Click Here hoặc Hotline/Zalo 090.29.12.888
=============================
Website không 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 không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database 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ộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó 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/admin_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
=============================
cơ sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, 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/21c/23c/23ai, 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, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty