Home » Hướng dẫn backup database with sử dụng Oracle Datapump

Hướng dẫn backup database with sử dụng Oracle Datapump

by tuanlp

 

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:

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;

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

select count(*) from dba_objects where status='INVALID';

2) Export Source database:

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=BACKUP 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 sau khi hoàn thành trong Target database:**

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;

You may also like