FluffyFern
Sirisoft
Published in
6 min readDec 19, 2018

--

Migration ไม่ยากอย่างที่คิด😁

Blog นี้จะเป็นการนำเสนอ การย้ายระบบฐานข้อมูลจาก Oracle ไปยัง SQL Server 2017 บน Linux RedHat ค่ะ 😁
สิ่งที่จำเป็นสำหรับการติดตั้ง SQL Server 2017

ขั้นตอนการติดตั้ง SQL Server 2017 บน Linux RedHat 7.4 🍒

User ที่ใช้ในการติดตั้ง SQL Server 2017 คือ root

  1. Download the Microsoft SQL Server RedHat repository configuration file
# sudo curl -o /etc/yum.repos.d/mssql-server.repo
ผลลัพธ์การ Download repository

2. Run command ต่อไปนี้เพื่อติดตั้ง SQL Server 2017

# sudo yum install -y mssql-server
process การติดตั้ง SQL Server 2017
เมื่อติดตั้ง SQL Server 2017 เสร็จเรียบร้อย

3. หลังจากทำการติดตั้ง SQL Server 2017 เสร็จเรียบร้อยแล้ว ให้ทำการ configure SQL Server ตาม command ต่อไปนี้

# sudo /opt/mssql/bin/mssql-conf setup
เลือก edition ของ SQL Server 2017

ในการสาธิตนี้ edition ของ SQL Server ที่ถูกเลือกคือ Enterprise (PAID) นั้นคือหมายเลข 6

พิมพ์เลข 6 เพื่อเลือก edition และพิมพ์ Yes เพื่อ accept the license
กรอกรหัสผ่านของ SQL Server

หลังจากเลือก edition และ accept the license ให้ทำการตั้งค่ารหัสผ่าน ของ SQL Server 2017 เมื่อเสร็จขั้นตอนการติดตั้ง SQL Server หน้าจอแสดงผลจะแสดงคำว่า ‘Set has completed successfully. SQL Server is now starting. เหมือนรูปภาพด้านบน’

4. หลังจากทำการ configure SQL Server เสร็จแล้ว ให้ทำการตรวจสอบสถานะของ SQL Server ตามคำสั่งต่อไปนี้

# systemctl status mssql-server
ผลลัพธ์การตรวจสอบ status ของ SQL Server

5. หลังจากตรวจสอบสถานะของ SQL Server เสร็จแล้วให้ทำการ configure firewall ตามคำสั่งต่อไปนี้

# sudo firewall-cmd --zone=public --add-port=1433/tcp –permanent# sudo firewall-cmd --reload
เสร็จสิ้นการติดตั้ง SQL Server 2017

ขั้นตอนการติดตั้ง SQL Server command-line tool

  1. Download configuration repository file ตามคำสั่งต่อไปนี้
# sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
process การ download repository ของ command-line tool

2. ถ้าในเครื่อง server เคยมี version เก่าของ mssql-tool ที่เคยทำการติดตั้งไว้ ให้ลบ unixODBC ตัวเก่าออกด้วยคำสั่งต่อไปนี้

$ sudo yum remove unixODBC-utf16 unixODBC-utf16-devel

3. ติดตั้ง unixODBC developer ด้วยคำสั่งต่อไปนี้

# sudo yum install -y mssql-tools unixODBC-devel

หมายเหตุ: ถ้าเกิดปัญหาระหว่างการติดตั้งเนื่องจาก เครื่อง server ต้องการให้ติดตั้ง unixOBDC 2.3.1 ซึ่งสามารถทำได้ตามขั้นตอนต่อไปนี้

ขั้นตอนการติดตั้ง unixODBC สำหรับ SQL Server command-line tool 🍒

  • ลงทะเบียน Microsoft Linux ตามคำสั่งต่อไปนี้
# curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/mssql-tools.repo
  • ทำการติดตั้ง unixODBC ตามคำสั่งต่อไปนี้
# sudo yum install http://mirror.centos.org/centos/7/os/x86_64/Packages/unixODBC-2.3.1-11.el7.x86_64.rpm# sudo yum install http://mirror.centos.org/centos/7/os/x86_64/Packages/unixODBC-devel-2.3.1-11.el7.x86_64.rpm
หน้าจอแสดงผลขณะติดตั้ง unixODBC ด้วยคำสั่งแรก

เสร็จสิ้นขั้นตอนการติดตั้ง unixODBC 😁

4. ทำการติดตั้ง SQL Server command-line tool ด้วยคำสั่งต่อไปนี้

$ sudo ACCEPT_EULA=Y yum install msodbcsql17 mssql-tools

5. เพื่อความสะดวกสบายมากยิ่งขึ้น ให้ทำการเพิ่ม /opt/mssql-tools/bin/ ไปยัง PATH enviromment variable ด้วยคำสั่งต่อไปนี้ คำสั่งนี้จะทำให้สามารถรัน SQL Server command-line tool ได้โดยไม่ต้องระบุ PATH

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profileecho 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrcsource ~/.bashrc

6. ทดสอบการเข้าใช้งาน SQL Server 2017 ด้วยคำสั่งต่อไปนี้

sqlcmd -S localhost -U SA -P '<YourPassword>'

หลังจากการติดตั้ง SQL Server 2017 บน Linux RedHat เสร็จเรียบร้อยแล้ว ให้ทำการสร้าง Database เปล่าเพื่อรองรับข้อมูลที่จะย้ายมาลงที่ SQL Server 2017 ได้เลย สำหรับ Demo นี้จะสร้าง Database ชื่อว่า orcl ไว้รอที่ฝั่ง SQL Server

ขั้นตอนการติดตั้ง SQL Server Migration Assistant (SSMA) 🍒

การติดตั้ง SSMA นั้นแบ่งออกเป็น 2 ส่วน ตามลำดับต่อไปนี้

1. ติดตั้ง SSMA for Oracle Extension Pack Setup บนเครื่องต้นทาง นั้นก็คือเครื่อง Windows Server ที่ติดตั้ง Oracle Database แล้ว

  • ติดตั้ง SSMA for Oracle Extension Utility บนเครื่องปลายทางที่ติดตั้ง SQL Server 2017 ผ่านการ remote

2. ติดตั้ง SSMA for Oracle Setup: คือ ขั้นตอนการติดตั้งตัว interface ของ SSMA ทั้งนี้ขั้นตอนการติดตั้งนั้นก็ขึ้นอยู่กับวัตถุประสงค์การ

ขั้นตอนการ Migration โดยใช้โปรแกรม SSMA 🍒

  1. เมื่อเปิดหน้าโปรแกรม กดปุ่ม New Project เพื่อทำการสร้างโปรเจคขึ้นมา ตั้งชื่อในช่อง Name สามารถตั้งค่า Location สำหรับ path ที่ใช้เก็บตัวโปรเจค เลือกตัวเลือก ‘SQL Server 2017’ ในแทบ Migrate to และกด OK
หน้าจอแสดงผลของโปรแกรม SSMA

2. กดปุ่ม Connect to Oracle เพื่อทำการเชื่อมต่อไปยัง Oracle Database

หน้าจอ Connect to Oracle จะปรากฏขึ้นมา และให้เราทำการตั้งค่าตัวแปรลงไป

หมายเหตุ: Role ของ username ที่ใช้เชื่อมต่อกับ Oracle Database นั้นมีความสำคัญ เช่น DBA Role

3. เมื่อการเชื่อมต่อประสบความสำเร็จ Oracle Metadata Expolrer จะแสดงผลดังรูปด้านล่างที่แสดงผลของ HR schema

4. ทำการเชื่อมต่อไปยัง SQL Server 2017 บน Linux RedHat Server กดปุ่ม Connect to SQL Server ที่ด้านบนทางซ้ายของโปรแกรม

5. เมื่อโปรแกรมแสดงหน้าต่อการเชื่อมต่อไปยัง SQL Server ให้ทำการตั้งค่าลงไปและกดปุ่ม connect

6. เมื่อการเชื่อมต่อสำเร็จ สามารถดู Database ได้ที่ SQL Server Metadata Explorer

orcl Database ฝั่ง SQL Server ถูกสร้างไว้เพื่อรองรับข้อมูลของการ Migration

7. เริ่มการ convert schema จาก Oracle Database ที่ HR schema ใน Oracle Metadata Explorer ให้คลิ๊กเครื่องหมายถูกที่ schema HR และ orcl database ที่ SQL Server หลังจากนั้นคลิ๊กขวาที่ HR schema และกดเลือก convert schema

เมื่อเข้าสู่ขั้นตอนการ convert schema ช่อง Output จะแสดงผลดังนี้

สังเกตุที่หน้า SQL Server Metadata Explorer จะมี object ของ HR schema ที่ถูก convert ไปแล้ว

ขั้นตอนของการ convert schema คือ การโหลดข้อมูลของ object ใน Oracle database ไปไว้ยัง SQL Server Migration Assistant (SSMA) ยังไม่ใช่การโหลดข้อมูลไปยัง SQL Server Database

8. ขั้นตอนการ synchronize database จะเป็นการโหลดของมูลที่มาถูกพักไว้ที่ SSMA ในขั้นตอนก่อนหน้านี้ ไปยัง SQL Server Database โดยมีวิธีทำต่อไปนี้ ในหน้า SQL Server Metadata Explorer ที่ schema HR ให้คลิ๊กขวาและเลือก Synchronize with Database

หลังจากนั้นโปรแกรมจะแสดงหน้าจอ Synchronize with database และแสดง object ที่จะถูก synchronize

เมื่อขั้นตอนการ synchronize เสร็จสมบูรณ์ ช่อง output จะแสดงข้อความ synchronization operation is complete.

9. ลำดับถัดมาคือการ migrate ข้อมูล ให้ไปที่ SQL Server Metadata Explorer และเลือกคลิ๊กเฉพาะ schema HR หลังจากนั้นไปที่ Oracle Metadata Explorer คลิ๊กขวาที่ schema HR และเลือก Migrate Data

10. เมื่อทำการกดตัวเลือก โปรแกรมจะแสดงหน้าจอให้เชื่อมต่อไปยัง Oracle และ SQL Server 2017 เพื่อทำการ migration และเมื่อขั้นตอนการ migration เสร็จสมบูรณ์ ตัวโปรแกรมจะแสดง report เพื่อให้ตรวจสอบความเรียบร้อย

SQL Server Metadata Explorer จะแสดง object ที่ถูก migration

สังเกตุได้ว่าtable จากฝั่ง Oracle ใน schema HR ถูกย้ายมาที่ฝั่ง SQL Server เรียบร้อยแล้ว

ขั้นตอนการทดสอบการ Migration 🍒

  1. เชื่อมต่อเข้า SQL Server 2017 บน Linux RedHat
  2. เชื่อมต่อไป schema HR ตาม statement ต่อไปนี้

3. Query ดู table ใน database HR ตาม statement ต่อไปนี้

ตัวอย่าง table ที่ถูก Migration จาก Oracle

4. ทดสอบการดึงข้อมูลจาก HR Database ใน SQL Server 2017

ข้อมูลจาก table HR.Employees ใน SQL Server 2017 Database

ทั้งนี้ทั้งนั้นการ Migration เองก็ต้องมีการตรวจสอบข้อมูลที่ต้องทำการย้ายว่าตรงตามความต้องการกับผู้ใช้งานเองหรือไม่ ต่อไปเราไปดูข้อดี ข้อเสียของตัวโปรแกรม SSMA กันดีกว่า

สามารถหาข้อมูลเพิ่มเติมได้จาก link ต่อไปนี้ Migrate an Oracle schema to SQL Server 2017 on Linux with the SQL Server Migration Assistant

--

--