Thứ Năm, 21 tháng 10, 2021

Migrate và Upgrade Oracle 11gR2 Windows/Linux Database tới Oracle 12cR2 Linux Database sử dụng Oracle Datapump

Trong bài viết này, chúng ta sẽ migrate (di chuyển) cơ sở dữ liệu oracle từ windows/linux sang máy chủ linux đồng thời upgrade (nâng cấp) cơ sở dữ liệu từ Oracle Database 11.2.0.1 lên 12.2.0.1 bằng cách sử dụng export/import với Oracle Datapump

NỘI DUNG

1) Kiểm tra trước trong Source database
2) Export Source database
3) Kiểm tra trước trong Target database
4) Import vào Target database
5) Kiểm tra sau trong Target database


1) Kiểm tra trước trong Source database:

Step 1 : Kiểm tra kích thước cơ sở dữ liệu trong  SOURCE:

SQL> select
( select sum(bytes)/1024/1024/1024 data_size from dba_data_files ) +
( select nvl(sum(bytes),0)/1024/1024/1024 temp_size from dba_temp_files ) +
( select sum(bytes)/1024/1024/1024 redo_size from sys.v_$log ) +
( select sum(BLOCK_SIZE*FILE_SIZE_BLKS)/1024/1024/1024 controlfile_size from v$controlfile) “Size in GB”
from
dual;

Step 2 : Thực thi script dưới đây để kiểm tra các các schema object được đặt trong tablespace nào ngoại trừ các default schemas:-

set pagesize 130
break on Tablespace on Owner
column Objects format A20
select Tablespace_Name,Owner,COUNT(*)||’ tables’ Objects
from DBA_TABLES
group by Tablespace_Name,Owner
union
select Tablespace_Name, Owner, COUNT(*)||’ indexes’ Objects
from DBA_INDEXES
group by Tablespace_Name, Owner;

Step 3 : Thực thi script bên dưới trong Source Database để lấy DDL của mọi tablespaces ngoại trừ default tablespaces:-

SET heading OFF;
SET echo OFF;
SET pages 990;
SET long 90009;

spool ddl_tablespace.sql
SELECT dbms_metadata.get_ddl(‘TABLESPACE’, tb.tablespace_name)
FROM dba_tablespaces tbas;

spool OFF

Step 4 :Compile Invalid Objects nếu có trong SOURCE:-

SQL> @?/rdbms/admin/utlrp.sql

Check số lượng invalid object trong SOURCE:-

SQL> select count(*) from dba_objects where status=’INVALID’;

2) Export Source database:

Export Source Database sử dụng expdp:-
Step 1 : Check kích thước ước lượng của Dumpfile:-

Đảm bảo dung lượng trống lớn hơn kích thước ước tính trong thư mục export :

$ expdp directory=MOM_DIR full=Y nologfile=Y estimate_only=Y

Step 2 :Export Roles & Privileges:-

$ expdp directory=MOM_DIR dumpfile=WINDOWS_LINUX_ROLES.DMP logfile=WINDOWS_LINUX_ROLES.log full=Y INCLUDE=USER,ROLE,ROLE_GRANT,PROFILE

Step 3 :Export full database  và ngoại trừ default schema để giảm thời gian export với tham số “EXCLUDE”:-

$ expdp directory=MOM_DIR dumpfile=EXP_WINDOWS_LINUX_FULL.DMP logfile=EXP_WINDOWS_LINUX_FULL.log full=Y EXCLUDE=SCHEMA:\”IN \(\’ANONYMOUS\’, \’APEX_030200\’, \’APEX_PUBLIC_USER\’, \’APPQOSSYS\’, \’CTXSYS\’, \’DBSNMP\’, \’DIP\’, \’EXFSYS\’, \’FLOWS_FILES\’, \’MDDATA\’, \’MDSYS\’, \’MGMT_VIEW\’, \’OLAPSYS\’, \’ORACLE_OCM\’, \’ORDDATA\’, \’ORDPLUGINS\’, \’ORDSYS\’, \’OUTLN\’, \’OWBSYS\’, \’OWBSYS_AUDIT\’, \’SCOTT\’, \’SI_INFORMTN_SCHEMA\’, \’SPATIAL_CSW_ADMIN_USR\’, \’SPATIAL_WFS_ADMIN_USR\’, \’SYS\’, \’SYSMAN\’, \’SYSTEM\’, \’WMSYS\’, \’XDB\’, \’XS$NULL\’\)\”

Khi export được hoàn tất hãy kiểm tra log file và đảm bảo không có lỗi nào xuất hiện trong log file và sau đó chuyển dumpfile tới target server.

3) Kiểm tra trước trong Target database:

Step 1 :

Tạo cơ sở dữ liệu mới trong Target Server như được mô tả ở đây  với bộ ký tự thích hợp (khuyến cáo sử dụng ALT32UTF8), để tránh lỗi chuyển đổi bộ ký tự.

Step 2 :

Tạo các tablespaces cần thiết vì chúng ta đã lấy DDL của tablespace từ SOURCE trong Step 3 của Kiểm tra trước trong SOURCE.

Step 3 :

Tạo thư mục để import trên máy chủ target ở mức hệ điều hành và cơ sở dữ liệu: 

$ mkdir -p /u02/dpdump/LINUX_MIG

SQL> create directory DPDUMP as ‘/u02/dpdump/LINUX_MIG’;

SQL> select * from dba_directories;

4) Import vào Target database:

Step 1 : Import Roles & Privileges:-

$ impdp directory=DPDUMP dumpfile=WINDOWS_LINUX_ROLES.DMP logfile=WINDOWS_LINUX_ROLES.log full=Y

Step 2 :Import vào database:-

$ impdp directory=DPDUMP dumpfile=EXP_WINDOWS_LINUX_FULL.DMP logfile=IMP_WINDOWS_LINUX_FULL.log full=Y

Sau khi import xong, hãy xem lại log file ký xem có lỗi nào không.

5) Kiểm tra sau khi hoàn thành trong Target database:

Step 1 : Compile Invalid Objects trongTARGET:-

SQL> @?/rdbms/admin/utlrp.sql

Sau khi thực hiện xong các bước trên, hãy thực hiện lệnh dưới đây để kiểm tra cơ sở dữ liệu đích còn object nào INVALID hay không: -
SQL> select count(*) from dba_objects where status=’INVALID’;

Step 2: Truy vấn V$OPTION để nhận các tùy chọn cơ sở dữ liệu hiện đã được cài đặt:-

SQL> select * from V$OPTION where value=’TRUE’ order by 1;

Step 3 : Truy vấn DBA_REGISTRY để lấy các thành phần cơ sở dữ liệu hiện được cài đặt:-

SQL>  select * from DBA_REGISTRY;

Step 4 : Tạo database link tới source database để so sánh số lượng schema object count trong source & target, cũng như xử lý thiếu object :-

SQL> CREATE DATABASE LINK “SOURCE”
CONNECT TO “SYSTEM” IDENTIFIED BY oracle_4U
USING ‘(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST =
dbaviet101)(PORT = 1521)))
(CONNECT_DATA = (SID = DBAVIET)))’;

Step 5 : Thực thi các tập lệnh dưới đây trong target để kiểm tra thủ công số lượng objects:-

Script dưới dây sẽ cung cấp số lượng object của schemas trong SOURCE ngoại trừ default schemas:

SQL>set pages 990
col “size MB” format 999,999,990
col “Objects” format 999,999,990
select obj.owner “Owner”, obj_cnt “Objects”, decode(seg_size, NULL, 0, seg_size) “size MB”
from (select owner, count(*) obj_cnt from dba_objects group by owner) obj
, (select owner, ceil(sum(bytes)/1024/1024) seg_size
from dba_segments group by owner) seg where obj.owner = seg.owner(+)
order by 3 desc ,2 desc, 1;

Script dưới dây sẽ cung cấp số lượng object của schemas trong TARGET ngoại trừ default schemas:


SQL>set pages 990

col “size MB” format 999,999,990
col “Objects” format 999,999,990
select obj.owner “Owner”, obj_cnt “Objects”, decode(seg_size, NULL, 0, seg_size) “size MB”
from (select owner, count(*) obj_cnt from dba_objects group by owner) obj
, (select owner, ceil(sum(bytes)/1024/1024) seg_size
from dba_segments group by owner) seg where obj.owner = seg.owner(+)
order by 3 desc ,2 desc, 1;

Step 6 : Kiểm tra số lượng CONSTRAINTS ở cả source & target:-

SQL> SELECT constraint_type, count(*) AS num_constraints
FROM dba_constraints
GROUP BY constraint_type;

Chúc các bạn thành công.

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: 0902912888
⚡️ Skype: tranbinh48ca
👨 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

=============================
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,khóa học pl/sql, 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 dataguard, oracle goldengate, mview, oracle exadata, oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, oracle oca, oracle ocp, oracle ocm

ĐỌC NHIỀU

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