Thứ Ba, 4 tháng 10, 2022

[VIP5] Thủ tục chuyển dữ liệu CSDL DBA Việt từ HT SAN cũ sang HT SAN mới

Mục đích: Chia sẻ Thủ tục chuyển dữ liệu HT DBA Việt từ HT SAN cũ  sang HT SAN mới của DB File System RAC hoặc Single

CHUYỂN TABLESPACE THÔNG THƯỜNG VỚI FILE SYSTEM


TT

Tên công việc/thao tác

I

BACKUP DỮ LIỆU

 

Backup cơ sở dữ liệu của hệ thống

II

THỦ TỤC

(Thực hiện trên từng phân vùng dữ liệu, ví dụ từng vùng /u02 xong thì làm /u03,..., tablespace, 5h chuyển đổi được 1.8TB dữ liệu)

1

Read only tablespace

Select 'alter tablespace ' || tablespace_name || ' read only;'

from dba_tablespaces

where (tablespace_name like 'INDX%' or tablespace_name like 'DATA%')  and file_name like ‘/u02%’;

2

Copy datafile sang phân vùng mới

select 'cp ' || file_name || ' /u02_new/' || substr(file_name,18,23)

from dba_data_files 

where (tablespace_name like 'INDX%' or tablespace_name like 'DATA%')    and file_name like ‘/u02%’

order by file_name desc;

3

Offline tablespace

Select 'alter tablespace ' || tablespace_name || ' offline;'

from dba_tablespaces

where (tablespace_name like 'INDX%' or tablespace_name like 'DATA%’)  and file_name like ‘/u02%’ ;

4

Lấy danh sách các datafile cần xóa

select 'rm ' || file_name || ' ;'

from dba_data_files

where (tablespace_name like 'INDX%' or tablespace_name like 'DATA%')  and file_name like ‘/u02%’;

5

Rename datafile sang đường dẫn mới

select 'alter tablespace ' || substr(file_name,18,14) || ' rename datafile ''' || file_name || ''' to ' ||   '''/u02_new/' || substr(file_name,18,23) ||''''

from dba_data_files 

where (tablespace_name like 'INDX%' or tablespace_name like 'DATA%')  and file_name like ‘/u02%’ order by file_name desc;

6

Online tablespace

Select 'alter tablespace ' || tablespace_name || ' online;'

from dba_tablespaces

where (tablespace_name like 'INDX%' or tablespace_name like 'DATA%')  and file_name like ‘/u02%’

 

Select 'alter tablespace ' || tablespace_name || ' read only;'

from dba_tablespaces

where (tablespace_name like 'INDX%' or tablespace_name like 'DATA%')  and file_name like ‘/u02%’

7

Check 1 partition bất kỳ đảm bảo cùng check point time

select a.file_name, a.file_id, a.tablespace_name,a.status,a.relative_fno,a.online_status,

b."CREATION_CHANGE#",b.enabled,b."CHECKPOINT_CHANGE#",b."LAST_CHANGE#",b.checkpoint_time

from dba_data_files a,v$datafile b

where a.file_id=b.file#

and (a.tablespace_name like 'INDX%' or a.tablespace_name like 'DATA%')    and file_name like ‘/u02%’

order by tablespace_name,file_name;

-- Check dữ liệu

Select * from app_owner.tab1 partition(DATA201206)

8

Xóa datafile ở đường dẫn cũ

9


III

Theo dõi CSDL, ứng dụng trước, trong và sau khi các lệnh trên được thực hiện


THỦ TỤC QUAY VỀ CẤU HÌNH BAN ĐẦU (ROLLBACK)

Rollback các file đã backup

 


CHUYỂN CONTROFILE, UNDO , SYSTEM  SYSAUX TABLESPACE VỚI FILE SYSTEM

TT

Tên công việc/thao tác

I

BACKUP DỮ LIỆU

 

Backup cơ sở dữ liệu của hệ thống

II

THỦ TỤC CHUYỂN CONTROL FILES

1

Kiểm tra thông tin

select * from v$parameter where name like 'control%';

Lấy thông tin hiện tại của database

select name from v$controlfile;

    NAME

-----------------------------------------------------------

/u02/oracle/oradata/dbaviet/control01.ctl

/u03/oracle/oradata/dbaviet/control02.ctl

/u04/oracle/oradata/dbaviet/control03.ctl

Kiểm tra thư mục dự kiến tạo control file đã có chưa và tạo nếu chưa tồn tại

mkdir -p /u12/oradata/oradata

/u13/oracle/oradata/

/u14/oracle/oradata/

2

Thiết lập thông tin control file mới

alter system set control_files ='/u12/oracle/oradata/dbaviet/control01.ctl,

/u13/oracle/oradata/dbaviet/control02.ctl,

/u14/oracle/oradata/dbaviet/control03.ctl

scope=spfile sid='*';

3

Tắt database

srvctl stop database -d prepaid -o immediate

Copy control file sang đường dẫn mới

cp /u02/oracle/oradata/dbaviet/control01.ctl

/u12/oracle/oradata/dbaviet/control01.ctl;

cp /u03/oracle/oradata/dbaviet/control01.ctl

/u13/oracle/oradata/dbaviet/control01.ctl;

cp /u04/oracle/oradata/dbaviet/control01.ctl /u14/oracle/oradata/dbaviet/control01.ctl;

4

Bật database

srvctl start database -d prepaid

Kiểm tra lại: Đảm bảo đã nhận được đường dẫn mới /u02

select name from v$controlfile;

$ lsnrctl status

5

Roolback: Thay đổi về control file cũ trên /u02, /u03, /u04 và restart lại DB

III

THỦ TỤC TẠO LẠI UNDO

1

Kiểm tra UNDO

select * from dba_data_Files where tablespace_name in ('UNDOTBS01','UNDOTBS02');

/u03/oracle/oradata/dbaviet/UNDOTBS01_002.dbf       416     UNDOTBS01            23864541184

/u02/oracle/oradata/dbaviet/UNDOTBS01_001.dbf       415     UNDOTBS01            24555552768

/u05/oracle/oradata/dbaviet/UNDOTBS01_004.dbf       418     UNDOTBS01            24946671616

/u04/oracle/oradata/dbaviet/UNDOTBS01_003.dbf       417     UNDOTBS01            24381489152

/u05/oracle/oradata/dbaviet/UNDOTBS02_004.dbf       423     UNDOTBS02            30576541696

/u04/oracle/oradata/dbaviet/UNDOTBS02_003.dbf       422     UNDOTBS02            31532843008

/u03/oracle/oradata/dbaviet/UNDOTBS02_002.dbf       421     UNDOTBS02            34358755328

/u02/oracle/oradata/dbaviet/UNDOTBS02_001.dbf       420     UNDOTBS02            25673400320

2

Tạo UNDO

create undo tablespace UNDOTBS11 datafile '/u12/oradata/dbaviet /undotbs01.dbf' size 1g autoextend on next 100m;

create undo tablespace UNDOTBS22 datafile '/u12/oradata/dbaviet/undotbs02.dbf' size 1g autoextend on next 100m;

Set undo về instance 1, instance 2

select * From gv$instance;

alter system set undo_tablespace=UNDOTBS11 sid='dbaviet1';

alter system set undo_tablespace=UNDOTBS22 sid='dbaviet2';

3

Kiểm tra lại kết quả

select * from gv$parameter where name like '%undo%'

4

Restart lại từng instance

5

Kiểm tra lại thông tin các UNDOTBS đảm bảo đã nhận UNDOTBS11, UNDOTBS12

6

Drop UNDO

DROP TABLESPACE UNDOTBS01 including contents and datafiles;

DROP TABLESPACE UNDOTBS02 including contents and datafiles;

IV

THỦ TỤC CHUYỂN TABLESPACE SYSTEM, SYSAUX

1

Kiểm tra dung lượng tablespace

select round(sum(bytes)/1024/1024, 2)

from dba_data_files

where tablespace_name  in ('SYSTEM','SYSAUX')

order by file_name desc;

Kiểm tra đảm bảo file_name năm hết trên phân vùng /u02

select *

from dba_data_files

where tablespace_name  in ('SYSTEM','SYSAUX')

order by file_name desc;

/u02/oracle/oradata/dbaviet/system02.dbf 267     SYSTEM        1140850688

/u02/oracle/oradata/dbaviet/system01.dbf 1          SYSTEM        2150629376

/u02/oracle/oradata/dbaviet/sysaux02.dbf 268     SYSAUX        1073741824

/u02/oracle/oradata/dbaviet/sysaux01.dbf 3          SYSAUX        10768875520

2

Shutdown database, start ở chế độ mount

srvctl stop database prepaid -o immediate;

startup mount;

3

Copy datafile  sang phân vùng mới

select 'cp ' || file_name || ' /u02/oracle/oradata/dbaviet ' || substr(file_name,23,23)  ||';'

from dba_data_files 

where tablespace_name  in ('SYSTEM','SYSAUX')

and file_name not like '/u12%'

order by file_name desc;

cp /u02/oracle/oradata/dbaviet/system01.dbf /u12/oracle/oradata/dbaviet/system01.dbf;

cp /u02/oracle/oradata/dbaviet/sysaux01.dbf /u12/oracle/oradata/dbaviet/sysaux01.dbf;

Monitoring: Khi nao het IO la OK

Khi nao khong con tien trinh cp la OK   

oracle@prepaid01 # ps -ef |grep cp; du -ks /u02/oradata/prepaid/

prepaid01# iostat -xnd 30

4


Lấy danh sách các datafile cần xóa, rename tên, sau 1 ngày xóa --> Xóa cuối cùng

select 'mv ' || file_name || ' ' || file_name ||'.bkp;'

from dba_data_files

where tablespace_name  in ('SYSTEM','SYSAUX') ;

 

--mv /u02/oracle/oradata/dbaviet/sysaux01.dbf /u02/oracle/oradata/dbaviet/sysaux01.dbf.bkp;

--mv /u02/oracle/oradata/dbaviet/system01.dbf /u02/oracle/oradata/dbaviet/system01.dbf.bkp;

5

Rename data files sang đường dẫn mới

select 'alter database' || ' rename file ''' || file_name || ''' to ' ||   '''/u02/oracle/oradata/dbaviet' || substr(file_name,23,23) ||''';'

from dba_data_files 

where tablespace_name  in ('SYSTEM','SYSAUX')

and file_name like '/data%'

order by file_name desc;

 

--alter database rename file ' /u02/oracle/oradata/dbaviet/system01.dbf' to '/u12/oracle/oradata/dbaviet/system01.dbf';

--alter database rename file '/u02/oracle/oradata/dbaviet/sysaux01.dbf' to '/u12/oracle/oradata/dbaviet/sysaux01.dbf';

6

OPEN database

alter database open;

7

Kiểm tra

Đảm bảo File_Name đều nằm trong /u12

Đảm bảo check point time gần thời điểm nhau (chênh nhau 1p)

select a.file_name, a.file_id, a.tablespace_name,a.status,a.relative_fno,a.online_status,

b."CREATION_CHANGE#",b.enabled,b."CHECKPOINT_CHANGE#",b."LAST_CHANGE#",b.checkpoint_time

from dba_data_files a,v$datafile b

where a.file_id=b.file#

and a.tablespace_name  in ('SYSTEM','SYSAUX')

--and a.file_name not like '/u12%'

order by tablespace_name,file_name;

Đảm bảo không còn row nào

Select  file_name, tablespace_name from dba_data_files where (tablespace_name like 'INDX%' or tablespace_name like 'DATA%')

and tablespace_name  in ('SYSTEM','SYSAUX')

and file_name not like '%u02%'

order by file_name desc;

Check danh sách các segment

select * from dba_segments

where tablespace_name  in ('SYSTEM','SYSAUX')

and segment_type like 'TABLE%'

and owner ='SYSAUX'

order by segment_type;

select dữ liệu tại 1 số partition bất kỳ, đảm bảo có dữ liệu

Select * from GPRS.CELL_RP_DAILY_DSC partition(DATA20160301) where rownum<10;

Select * from SYS.UNDO$ where rownum<10;

8

Rollback

Copy lại các file .bkp và Read write lại tablespace


KHI CHUYỂN SAN VỚI ASM THÌ ĐƠN GIẢN HƠN

TT

Tên công việc/thao tác

I

BACKUP DỮ LIỆU

 

Backup cơ sở dữ liệu của hệ thống

II

THỦ TỤC 

1

Thêm đĩa mới vào phân vùng DATA, RECO, BACKUP

SQL-ASM> ALTER DISKGROUP RECO ADD DISK '/dev/rdsk/c15t6005076307FFD2BD0000000000000018d0s6';

SQL-ASM> ALTER DISKGROUP RECO ADD DISK '/dev/rdsk/c15t6005076307FFD2BD0000000000000115d0s6';

SQL-ASM> ALTER DISKGROUP DATA ADD DISK '/dev/rdsk/c15t6005076307FFD2BD0000000000000017d0s6';

SQL-ASM> ALTER DISKGROUP DATA ADD DISK '/dev/rdsk/c15t6005076307FFD2BD0000000000000114d0s6';


Có thể dùng 1 câu lệnh ghép chung cho mỗi đíkgroup:

ALTER DISKGROUP RECO ADD DISK '/dev/rdsk/c15t6005076307FFD2BD0000000000000018d0s6',

'/dev/rdsk/c15t6005076307FFD2BD0000000000000115d0s6';


ALTER DISKGROUP DATA ADD DISK '/dev/rdsk/c15t6005076307FFD2BD0000000000000017d0s6',

 '/dev/rdsk/c15t6005076307FFD2BD0000000000000114d0s6';

2

Drop đĩa khỏi DATA, RECO, BACKUP


ALTER DISKGROUP DATA DROP DISK DATA_0000;

ALTER DISKGROUP RECO DROP DISK RECO_0000;

3

Theo dõi CSDL, ứng dụng trước, trong và sau khi các lệnh trên được thực hiện đặc biệt là IO và tải active session

iostat -xnd 5

SELECT /*1.ActiveSession*/ distinct s.inst_id i#, s.username, s.SID SID, s.osuser, s.machine,DECODE(S.WAIT_TIME, 0, S.EVENT, 'CPU') ACTION,

s.sql_id/*,S.PREV_EXEC_START*/, s.logon_time, SUBSTR(DECODE(SS.SQL_TEXT, NULL, AA.NAME, SS.SQL_TEXT), 1, 1000) SQLTEXT,s.p1text, S.P1, s.p2text, S.P2, s.p3text, S.P3

FROM GV$SESSION S, GV$SQLSTATS SS, AUDIT_ACTIONS AA

WHERE  

S.STATUS = 'ACTIVE' AND  

S.SQL_ID = SS.SQL_ID (+) AND AA.ACTION = S.COMMAND and s.type != 'BACKGROUND' AND S.TYPE = 'USER' 

and s.username  NOT in ('SYS','SYSMAN','DBSNMP','GGATE','GOLDENGATE','GGADMIN')

--AND username in 'BINH'

--and DECODE(S.WAIT_TIME, 0, S.EVENT, 'CPU') like '%cell single block physical read%'

and lower(ss.sql_text) not like lower('%***%')

--and lower(ss.sql_text)  like lower('%TAB1')

--and s.sid=5923 

--and s.machine like '%BINHTV%'

--and s.sql_id ='ccwg0nqr1zbu7'

ORDER BY username,sql_id 

--order by S.PREV_EXEC_START;

;

III

THỦ TỤC QUAY VỀ CẤU HÌNH BAN ĐẦU (ROLLBACK)

 

Rollback quá trình trên

ALTER DISKGROUP DATA UNDROP DISKS;

ALTER DISKGROUP RECO UNDROP DISKS;

=============================
* 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 oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

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