Computer >> Máy Tính >  >> Lập trình >> Cơ sở dữ liệu

Nâng cấp Cơ sở dữ liệu lên 12C bằng cách sử dụng Mã hóa không gian bảng TDE

Chức năng mã hóa vùng bảng TDE có thể được sử dụng để mã hóa vùng bảng nơi lưu trữ tất cả dữ liệu từ một ứng dụng EBS. Vì TDE là minh bạch đối với ứng dụng, nên không cần viết lại mã. Bất kỳ người dùng được ủy quyền nào cũng có thể truy cập vào dữ liệu được mã hóa mà không gặp bất kỳ sự cố nào.

Giới thiệu

Bất kỳ người dùng được ủy quyền nào cũng có thể truy cập vào dữ liệu được mã hóa mà không gặp bất kỳ sự cố nào. TDE áp dụng cho dữ liệu ở trạng thái nghỉ như tệp dữ liệu và tệp sao lưu.

Mục tiêu

Tùy chọn mã hóa vùng bảng TDE cho phép bạn bảo mật tất cả dữ liệu nhạy cảm được lưu trữ trong cơ sở dữ liệu EBS. Chỉ những người dùng được ủy quyền mới có thể truy cập vào dữ liệu được mã hóa.

Giới hạn

Hệ thống và SYSAUX không thể được mã hóa vì chúng được tạo tại thời điểm tạo DB chứ không phải trong thời gian tạo vùng bảng. Tùy chọn mã hóa được thêm vào trong quá trình tạo vùng bảng. Hoàn tác và không gian bảng TEMP cũng không thể được mã hóa nhưng dữ liệu được lưu trữ từ không gian bảng được mã hóa trong TEMP / UNDO được mã hóa.

Các bước triển khai

1. Xác minh các phiên bản phần mềm

• Bản vá 16207672 - 12.2.2

• Bản vá 20745242 - R12.AD.C.Delta.7

• Bản vá 20784380 - R12.TXK.C.Delta.7

• Bản vá 19597008

• Bản vá 20251314 (bao gồm trong 12.2.5)

• Bản vá 8796558

• Bản vá 19343134

2. Chuẩn bị 12.1.0 DB Home

• Cài đặt phần mềm 12.1.0

• Cài đặt Sản phẩm 12c của Cơ sở dữ liệu Oracle từ CD 12c Ví dụ (bắt buộc)

• Áp dụng các bản vá lỗi RDBMS 12.1.0.2

3. Áp dụng tất cả các bản vá DB ETCC / PSU bắt buộc mới nhất

4. 4. Tạo thư mục nls / data / 9idata

perl $ORACLE_HOME/nls/data/old/cr9idata.pl

541956 5. Áp dụng bản vá 16541956 5. Áp dụng bản vá 16541956. Các ứng dụng được hợp nhất bằng cách sử dụng bản vá tiện ích xuất / nhập trên nút máy chủ quản trị nguồn.

Tạo một thư mục làm việc

mkdir /u01/expimp << /u01/oracle/patches/12c_db/backup/expimp/3rditeration

7. Tạo tập lệnh tạo phiên bản cơ sở dữ liệu đích aucrdb.sql

Bản vá xuất / nhập cung cấp tập lệnh auclondb.sql tạo ra tập lệnh aucrdb.sql. Sao chép $AU_TOP/patch/115/sql/auclondb.sql tập lệnh từ nút ứng dụng đến nguồn nút DB và thực thi như bên dưới.

$ sqlplus system/[system password] \ @$AU_TOP/patch/115/sql/auclondb.sql 12

8. Ghi lại cài đặt hàng đợi nâng cao

Sao chép auque1.sql tập lệnh từ $AU_TOP/patch/115/sql từ nút ứng dụng đến nút DB và thực thi. Lệnh sau tạo auque2.sql.

$ sqlplus /nolog

SQL> connect / as sysdba;

SQL> @auque1.sql

9. Xóa tham số chỉ mục xây dựng lại trong chỉ mục không gian

chọn * từ dba_indexes trong đó index_type =‘DOMAIN’ andupper (thông số) như ‘% REBUILD% ';

10. Đồng bộ hóa các chỉ mục Văn bản

$ sqlplus '/ as sysdba' SQL> select pnd_index_owner,pnd_index_name,count(*) from ctxsys.ctx_pending group by pnd_index_owner,pnd_index_name;

Sử dụng lệnh bên dưới nếu bất kỳ hàng nào được trả về từ truy vấn trên

exec ctx_ddl.sync_index('[index owner].[index name]');

11. Tạo tệp tham số xuất

Sao chép $ AU_TOP / patch / 115 / import / auexpdp.dat từ nút Ứng dụng và chỉnh sửa theo yêu cầu.

diff auexpdp.dat auexpdp.dat.orig «/u01/oracle/patches/12c_db/backup/expimp 8c8 < filesize=5368709120

filesize=1048576000 12,13d11 < PARALLEL=5 < EXCLUDE=STATISTICS

Tạo thư mục theo yêu cầu.

SQL> create hoặc thay thế thư mục dmpdir as '/u01/oracle/patches/12c_db/backup/expimp/2nditeration';

Thư mục đã được tạo.

12. Đảm bảo không có chu kỳ vá nào đang hoạt động.

Tên nút Loại nút Trạng thái giai đoạn Đã bắt đầu Kết thúc Đã trôi qua

Appnode master PREPARE COMPLETED
2017/05/20 23:01:31 2017/||05/20 23:24:45 0:23:14 APPLY COMPLETED
2017/05/20 23:53:09 2017/05/20 23:53:39 0:00:30 FINALIZE COMPLETED 2017/05/20 23:55:55 2017/05/20 23:56:14 0:00:19 CUTOVER COMPLETED 2017/05/20 23:58:57 2017/05/21 00:09:50 0:10:53 CLEANUP COMPLETED 2017/05/21 01:59:13 2017/05/21 01:59:44 0:00:31

13. Tắt các quy trình của máy chủ ứng dụng

14. Cấp đặc quyền cho lược đồ hệ thống nguồn bằng lệnh sau

SQL> grant EXEMPT ACCESS POLICY to system;

Grant succeeded.

15. Loại bỏ lược đồ MGDSYS (có điều kiện) bằng lệnh sau

$ sqlplus "/ as sysdba" @?/md/admin/catnomgdidcode.sql

16. Xuất không gian làm việc phân tích OLAP (tùy chọn) bằng cách chạy các lệnh sau

  1. SQL> col owner format a15

SQL> col aw_name format a15

SQL> select OWNER, AW_NAME ,PAGESPACES from dba_aws where owner != 'SYS' order by 1,2;

OWNER AW_NAME PAGESPACES

>APPS ODPCODE 1123

APPS XWDEVKIT 1106 APPS XWDEVKIT_BACKUP 1106 FPA FPAPJP 505

  1. SQL> tạo hoặc thay thế thư mục AW_DIR thành '/u01/oracle/patches/12c_db/backup/MGR_DIR';

Thư mục đã được tạo

2a. SQL> exec dbms_aw.execute('aw attach APPS.ODPCODE rw');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('allstat');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('export all to eif file ''AW_DIR/ODPCODE.eif''');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('aw detach APPS.ODPCODE');

Thủ tục PL / SQL đã hoàn tất thành công.

2b. SQL> exec dbms_aw.execute('aw attach APPS.XWDEVKIT rw');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('allstat');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('export all to eif file ''AW_DIR/XWDEVKIT.eif''');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('aw detach APPS.XWDEVKIT');

Thủ tục PL / SQL đã hoàn tất thành công.

2c. SQL> exec dbms_aw.execute('aw attach APPS.XWDEVKIT_BACKUP rw');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('allstat');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('export all to eif file ''AW_DIR/XWDEVKIT_BACKUP.eif''');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('aw detach APPS.XWDEVKIT_BACKUP');

Thủ tục PL / SQL đã hoàn tất thành công.

2ngày. SQL> exec dbms_aw.execute('aw attach FPA.FPAPJP rw');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('allstat');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('export all to eif file ''AW_DIR/FPAPJP.eif''');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('aw detach FPA.FPAPJP');

Thủ tục PL / SQL đã hoàn tất thành công.

  1. Xóa từng AW đã được xuất ở bước # 2, sử dụng lệnh SQL:

SQL> exec dbms_aw.execute('aw delete APPS.ODPCODE');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('aw delete APPS.XWDEVKIT');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('aw delete APPS.XWDEVKIT_BACKUP');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('aw delete FPA.FPAPJP');

Thủ tục PL / SQL đã hoàn tất thành công.

  1. Xóa OLAP khỏi cơ sở dữ liệu 32 bit và xóa mọi đối tượng liên quan đến OLAP KHÔNG HỢP LỆ bằng cách thực hiện các lệnh sau:

cd $ORACLE_HOME/olap/admin --->>> required to locate all embedded calls to other scripts conn / as sysdba

@?/olap/admin/catnoamd.sql

@?/olap/admin/olapidrp.plb

@?/olap/admin/catnoaps.sql

@?/olap/admin/catnoxoq.sql

@?/rdbms/admin/utlrp.sql

chọn chủ sở hữu, object_name, object_type từ dba_objects trong đó trạng thái <> ‘VALID’;

SQL> select owner, object_name, object_type,status from dba_objects where status <> 'VALID' and object_name like '%OLAP%'; SYS OLAPIBOOTSTRAP FUNCTION INVALID

SYS OLAPIHANDSHAKE FUNCTION INVALID

PUBLIC OLAPIBOOTSTRAP SYNONYM INVALID

PUBLIC OLAPIHANDSHAKE SYNONYM INVALID

APPS PA_OLAP_PVT PACKAGE BODY INVALID

SQL> drop FUNCTION sys.OLAPIBOOTSTRAP;

Chức năng bị giảm.

SQL> drop FUNCTION sys.OLAPIHANDSHAKE;

Chức năng bị giảm.

SQL> drop PUBLIC SYNONYM OLAPIBOOTSTRAP;

Đã bỏ từ đồng nghĩa.

SQL> drop PUBLIC SYNONYM OLAPIHANDSHAKE;

Đã bỏ từ đồng nghĩa.

SQL> drop package body apps.PA_OLAP_PVT;

Phần thân gói bị rơi.

SQL> select owner, object_name, object_type,status from dba_objects where status <> 'VALID' and object_name like '%OLAP%';

no rows selected

Thực hiện các bước sau trên cơ sở dữ liệu 64 bit đích 12c nơi bạn đang thực hiện nâng cấp.

Cài đặt phiên bản 64 bit của Oracle, bao gồm tùy chọn Oracle OLAP và di chuyển cơ sở dữ liệu sang 64 bit.

Thêm lại OLAP vào cơ sở dữ liệu bằng cách kết nối với cơ sở dữ liệu ‘/ as sysdba’ và thực thi:

 SQL> spool olap_install.log
 SQL> set echo on
 SQL> show user
 SQL> @?/olap/admin/olap.sql SYSAUX TEMP;
 SQL> spool off

Sử dụng các lệnh SQL sau để nhập từng AW đã xuất.

LƯU Ý:Tất cả các dấu ngoặc kép đều là dấu ngoặc kép và đảm bảo rằng bạn sử dụng kết hợp phù hợp giữa tệp EIF và OWNER.AW_NAME

SQL> create or replace directory AW_DIR as '/u01/oracle/patches/12c_db/backup/MGR_DIR';

Thư mục đã được tạo.

  1. SQL> exec dbms_aw.execute('aw create APPS.ODPCODE');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('import all from eif file ''AW_DIR/ODPCODE.eif'' data dfns');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('update');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> commit;

Cam kết hoàn tất.

SQL> exec dbms_aw.execute('aw detach APPS.ODPCODE');

Thủ tục PL / SQL đã hoàn tất thành công.

  1. SQL> exec dbms_aw.execute('aw create APPS.XWDEVKIT');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('import all from eif file ''AW_DIR/XWDEVKIT.eif'' data dfns');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('update');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> commit;

Cam kết hoàn tất.

SQL> exec dbms_aw.execute('aw detach APPS.XWDEVKIT');

Thủ tục PL / SQL đã hoàn tất thành công.

  1. SQL> exec dbms_aw.execute('aw create APPS.XWDEVKIT_BACKUP');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('import all from eif file ''AW_DIR/XWDEVKIT_BACKUP.eif'' data dfns');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('update');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> commit;

Cam kết hoàn tất.

SQL> exec dbms_aw.execute('aw detach APPS.XWDEVKIT_BACKUP');

Thủ tục PL / SQL đã hoàn tất thành công.

  1. SQL> exec dbms_aw.execute('aw create FPA.FPAPJP');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('import all from eif file ''AW_DIR/FPAPJP.eif'' data dfns');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> exec dbms_aw.execute('update');

Thủ tục PL / SQL đã hoàn tất thành công.

SQL> commit;

Cam kết hoàn tất.

SQL> exec dbms_aw.execute('aw detach FPA.FPAPJP');

Thủ tục PL / SQL đã hoàn tất thành công.

17. Thả gói XLA (tùy chọn)

$ sqlplus apps/[APPS password] SQL> select distinct('drop package '||db.owner||'.'|| db.object_name || ';') from dba_objects db, xla_subledgers xl where db.object_type='PACKAGE BODY' and db. object_name like 'XLA%AAD%PKG' and substr(db.object_name,1,9) = 'XLA_'|| LPAD (SUBSTR(TO_CHAR(ABS(xl.application_id)), 1, 5), 5, '0') and db.object_name NOT IN ('XLA_AAD_HDR_ACCT_ATTRS_F_PKG','XLA_AMB_AAD_PKG') order by 1; SQL> @drop_xla_package.sql

18. Xuất phiên bản cơ sở dữ liệu ứng dụng

$ expdp "'/ as sysdba'" parfile=[export parameter file name]

19. Thu hồi đặc quyền từ giản đồ hệ thống nguồn

SQL> revoke EXEMPT ACCESS POLICY from system;

20. Bật Mã hóa không gian bảng TDE Advanced Security của Oracle (Sử dụng phương pháp ví Oracle)

Thêm mục nhập này vào sqlnet_ifile.ora trong $ ORACLE_HOME / network / admin / _ :

Giữ nó ở một dòng duy nhất để tránh vấn đề về định dạng

ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD = FILE)(METHOD_DATA=(DIRECTORY= /u01/oracle/dbhome1/12.1.0.2/wallet)))

21. Tạo tệp tham số khởi tạo đích / thư mục làm việc

22. Sửa đổi tập lệnh aucrdb.sql theo vị trí thực của các tệp dữ liệu cơ sở dữ liệu đích

Nối phần sau vào từng lệnh ‘CREATE TABLESPACE’ trong aucrdb.sql:

ENCRYPTION [USING '<enc. algorithm>;'] DEFAULT STORAGE (ENCRYPT) các lựa chọn có thể có là:3DES168, AES128 (mặc định nếu không có chỉ định), AES192 và AES256).

23. Cuối cùng chia bản sao đã chỉnh sửa của aucrdb.sql thành hai tệp .sql riêng biệt, tệp đầu tiên chứa câu lệnh CREATE DATABASE và tệp thứ hai sẽ chứa câu lệnh CREATE TABLESPACE.

24. Tạo phiên bản cơ sở dữ liệu đích

$ sqlplus /nolog SQL> connect / as sysdba; SQL> spool aucrdb1.log; For UNIX or Linux: SQL> startup nomount; SQL> @aucrdb1.sql SQL> spool off

25. Sau khi DB được tạo, trước tiên bạn cần tạo khóa mã hóa trước khi tạo vùng bảng.

Đối với không gian bảng được mã hóa và quản lý khóa mã hóa dựa trên Oracle Wallet:

SQL alter system set encryption key identified by "<Strong_Password > >";

26. Tạo vùng bảng được mã hóa bằng cách sử dụng tập lệnh sau

SQL> spool aucrdb2.log SQL> @aucrdb2.sql << Make sure this include encryption syntex SQL> exit;

27. Khi phiên bản cơ sở dữ liệu đích đã được tạo, hãy khởi động lại phiên bản cơ sở dữ liệu

Shutdown immediate cp -pR wallet wallet.orig.date orapki wallet create -wallet /u01/oracle/dbhome1/12.1.0.2/wallet -auto_login

Đặt ví tự động

startup mount Nếu sử dụng Ví Oracle:

Dưới đây là bắt buộc trong trường hợp thủ công walletSQL> thay đổi hệ thống thiết lập ví mã hóa mở được xác định bởi “"; thay đổi cơ sở dữ liệu mở;

select * from v$encryption_wallet;

28. Sao chép tất cả các tập lệnh chuẩn bị cơ sở dữ liệu vào trang chủ Oracle để thiết lập lược đồ hệ thống / hệ thống.

29. Thiết lập lược đồ SYS

$ sqlplus "/ as sysdba" @audb1210.sql

30. Thiết lập lược đồ HỆ THỐNG

$ sqlplus system/[system password] @ausy1210.sql

31. Cài đặt Máy ảo Java

$ sqlplus system/[system password] @aujv1210.sql

32. Cài đặt các thành phần bắt buộc khác

sqlplus system/**** @aumsc1210.sql SYSAUX TEMP

33. Thực hiện hướng dẫn sau khi cài đặt bản vá

SQL> conn /as sysdba Connected to an idle instance. SQL> startup upgrade cd $ORACLE_HOME/OPatch [oracle@dbnode OPatch]$ ./datapatch –verbose SQL> shut immediate SQL> startup SQL> @?/rdbms/admin/utlrp.sql

34. Đặt thông số CTXSYS (có điều kiện)

$ sqlplus "/ as sysdba" SQL> exec ctxsys.ctx_adm.set_parameter('file_access_role', 'public');

35. Tắt tính năng thu thập thống kê tự động

$ sqlplus "/ as sysdba" SQL> alter system enable restricted session; SQL> @adstats.sql $ sqlplus "/ as sysdba" SQL> alter system disable restricted session; SQL> exit;

36. Sao lưu phiên bản cơ sở dữ liệu đích (Tùy chọn)

37. Tạo tệp thông số nhập

SQL> show user USER is "SYSTEM" SQL> create or replace directory dmpdir as '/u01/oracle/patches/12c_db/backup/expimp';

Thư mục đã được tạo.

Sao chép tệp kết xuất từ ​​nguồn sang máy chủ đích nếu các máy chủ khác nhau

38. Nhập phiên bản cơ sở dữ liệu Ứng dụng

$ impdp "'/ as sysdba'" parfile=auimpdp.dat

39. Nhập không gian làm việc phân tích OLAP (có điều kiện)

Các bước liên quan đến mục tiêu (12c) cần được thực hiện tại đây

40. Thu hồi đặc quyền khỏi lược đồ hệ thống đích

SQL> revoke EXEMPT ACCESS POLICY from system;

41. Đặt lại hàng đợi nâng cao

$ sqlplus /nolog SQL> connect / as sysdba; SQL> @auque2.sql

42. Chạy adgrants.sql

$ sqlplus "/ as sysdba" @adgrants.sql APPS

43. Cấp đặc quyền tạo thủ tục trên CTXSYS

$ sqlplus apps/[APPS password] @adctxprv.sql \ [SYSTEM password] CTXSYS

44. Khởi động trình nghe cơ sở dữ liệu mới (có điều kiện)

45. Hủy đăng ký máy chủ cơ sở dữ liệu hiện tại

$ sqlplus apps/[APPS password] SQL> exec fnd_conc_clone.setup_clean;

46. Triển khai và chạy AutoConfig

perl $AD_TOP/bin/admkappsutil.pl

Copy appsutil.zip to $ORACLE_HOME/ on DB node.

unzip -o appsutil.zip

Build $CONTEXT_FILE

perl adbldxml.pl

./adconfig.sh

Restart DB/Listener - Source new env file

Run autoconfig on App node run fs

./adconfig.sh

Run autoconfig on App node patch fs

./adconfig.pl contextfile=$CONTEXT_FILE run=INSTE8

47. Thu thập thống kê cho lược đồ SYS

$ sqlplus "/ as sysdba" SQL> alter system enable restricted session; SQL> @adstats.sql $ sqlplus "/ as sysdba" SQL> alter system disable restricted session; SQL> exit;

49. Tạo đối tượng ConText

Bạn cần gọi các tập lệnh bằng cách sử dụng tệp trình điều khiển để tạo các đối tượng này. Chạy lệnh sau:

$ perl $AU_TOP/patch/115/bin/dpost_imp.pl [driver file] [source database version] adop phase=apply hotpatch=yes

50. Điền vào Bảng CTXSYS.DR $ SQE

$ sqlplus apps/[apps password] SQL> exec icx_cat_sqe_pvt.sync_sqes_for_all_zones;

51. Biên dịch các đối tượng không hợp lệ

52. Tạo lại các gói XLA (có điều kiện)

Nếu bạn bỏ gói XLA trong môi trường nguồn, hãy sao chép $ XLA_TOP / patch / 115 / sql / xla6128278.sql từ nguồn sang đích và chạy như bên dưới.

$ sqlplus apps/[APPS password] SQL> @xla6128278.sql [spool log file]

53. Chạy AutoConfig trên Run APPLIC_TOP

==>echo $FILE_EDITION run ==>./adconfig.sh

54. Áp dụng các bản vá WMS sau nâng cấp (có điều kiện)

Nếu bạn đã nâng cấp từ phiên bản RDBMS trước 12c, hãy áp dụng bản vá 19007053adop phase =apply patch =19007053 patchtop =/ home / applmgr / exp_patch apply_mode =downtime worker =12

55. Duy trì các đối tượng cơ sở dữ liệu ứng dụng

một. Biên dịch dữ liệu flexfield trong bảng AOLb. Tạo lại các khoản trợ cấp và từ đồng nghĩa cho lược đồ APPS

56. Bắt đầu các quy trình máy chủ ứng dụng

57. Tạo chỉ mục DQM

một. Đăng nhập vào Ứng dụng Oracle với trách nhiệm “Người quản lý cộng đồng giao dịch”

b. Nhấp vào Kiểm soát> Yêu cầu> Chạy

c. Chọn tùy chọn “Yêu cầu duy nhất”

d. Nhập tên "Chương trình dàn DQM"

e. Nhập các thông số sau:

tôi. Số lượng công nhân dàn song song:4ii. Lệnh Staging:CREATE_INDEXESiii. Tiếp tục Thực hiện Trước đó:NOiv. Tạo chỉ mục:SERIALf. Nhấp vào “Gửi”

Kết luận

Bằng cách làm theo tất cả các bước trên, chúng tôi đang thực hiện nâng cấp cơ sở dữ liệu 12C cùng với việc kích hoạt Mã hóa cấp vùng bảng.

Sử dụng tab Phản hồi để đưa ra bất kỳ nhận xét hoặc đặt câu hỏi nào. Bạn cũng có thể bắt đầu cuộc trò chuyện với chúng tôi.