mysql(mariadb 5.5)¿¡ ÀÖ´Â µ¥ÀÌÅ͸¦ oracle(oracle 12c)·Î migration
mysql¿¡ ÀÖ´Â µ¥ÀÌÅ͸¦ oracle·Î migrationÇϱâ À§Çؼ´Â ÀÌ¹Ì Ãâ½ÃµÇ¾î ÀÖ´Â ÅøÀ» »ç¿ëÇÏ´Â °ÍÀÌ °¡Àå ºü¸£°í È¿À²ÀûÀÌ´Ù.
±×·¯³ª, ¼±ÃµÀûÀ¸·Î ÀÌ·¯ÇÑ Åø ¶Ç´Â À¯Æ¿¸®Æ¼¿¡ °ÅºÎ°¨ÀÌ Àְųª Æ®¶óÀ̾ó ¹öÀüÀÇ ¼³Ä¡°¡ ¹ø°Å·Ó°Å³ª µÎ·Á¿òÀÌ ´À²¸Áö´Â °æ¿ì Á÷Á¢ µ¥ÀÌÅ͸¦ ¿Å±â´Â ÀÛ¾÷À» ¼±ÅÃÇÑ´Ù.
Á÷Á¢ µ¥ÀÌÅ͸¦ ¿Å±â´Â ¹æ¹ýÀº 1. phytonÀ̳ª php µîÀ¸·Î ÇÁ·Î±×·¥À» Á÷Á¢ Â¥¼ mysql¿¡¼ ÀÐ¾î¼ oracle·Î insert ÇÏ´Â ¹æ¹ý°ú 2. mysqldump·Î µ¥ÀÌÅ͸¦ ´Ù¿î·Îµå ¹Þ¾Æ oracle¿¡¼ insert¸¦ ÇÏ´Â ¹æ¹ýÀÌ ÀÖ°Ú´Ù.
1. phyton, php µîÀ¸·Î Á÷Á¢ ÇÁ·Î±×·¥À» Â¥´Â ¹æ¹ý
ÀڱⰡ Àß ¾Æ´Â ¹æ¹ýÀ¸·Î ±×³É ÇÁ·Î±×·¥À» Â¥¼ µ¹¸°´Ù.
ÀÌ ¶§ ÁÖÀÇÇÒ Á¡ÀÌ Àִµ¥ DDL, Áï oracleÀÇ tablespace³ª table, view, index, primary key Á¤ÀÇ µîÀº mysql°ú Â÷ÀÌ°¡ Àֱ⠶§¹®¿¡ ¹Ì¸® º°µµÀÇ ½ºÅ©¸³Æ®·Î ´Ù ¸¸µé¾î µÎ¾î¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ÇÁ·Î±×·¥À¸·Î tablespace, table, index µîµîÀ» ¸¸µé¾îÁÖ´Â ÇÁ·Î±×·¥À» Á÷Á¢ ´Ù ÀÛ¼ºÇØ¾ß ÇÑ´Ù.
µ¥ÀÌÅÍÀÇ insert ½Ã¿¡µµ ÇÑ±Û º¯È¯¹®Á¦, ÀÚ¸´¼ö ¹®Á¦, NULL ¹®Á¦ µîÀ» »ý°¢ÇÏ°í ó¸®ÇؾßÇÑ´Ù. mysql¿¡¼´Â ¡±À» NULL·Î ÀνÄÇÏÁö ¾ÊÁö¸¸ oracle¿¡¼´Â NULL·Î ÀνÄÇÑ´Ù.
2. mysqldump¸¦ »ç¿ëÇÏ´Â ¹æ¹ý
mysqldump -p -u userid database tablename > table1.sql µîÀÇ ¹æ¹ýÀ» »ç¿ëÇÑ´Ù.
ÀÌ ¶§ mysqldump·Î dumpµÈ ³»¿ëÀº
INSERT INTO `tablename` VALUES (value1, value2, value3, .. ), (value1, value2, value3, ... ), (value1, value2, value3, ... ), ...
¿Í °°ÀÌ µÇ¾î ÀÖ´Ù.
À̸¦ º¯È¯ÇÏ¿©
INSERT INTO `tablename` VALUES (value1, value2, value3, ... ) ; INSERT INTO `tablename` VALUES (value1, value2, value3,... ); ...
¿Í °°Àº Çü½ÄÀ¸·Î º¯È¯ÇÏ´Â °ÍÀº ±ÍÂúÀº ÀÛ¾÷À̹ǷΠ´ÙÀ½ÀÇ ¿É¼ÇÀ» ÁØ´Ù.
mysqldump --skip-opt --quick -p -u userid database tablename > table1.sql .
skip-opt ¿É¼Ç ( –skip-opt )´Â –add-drop-table, –add-locks, –create-options, –disable-keys, –extended-insert, –lock-tables, –quick, –set-charset µîÀÇ ¿É¼ÇÀ» Ãë¼Ò½ÃÅ°´Â ¿É¼ÇÀ¸·Î ±× Áß extended-insert ¿É¼ÇÀ» ƯÈ÷ disable ½ÃÅ´À¸·Î ½á INSERT ¹®ÀåÀÌ °³º° ¹®Àå(ÇÑÁÙ¾¿)À¸·Î »ý¼ºµÇµµ·Ï ÇÏ°í drop-table ¹®Àå°ú create table ¹®ÀåÀ» Æ÷ÇÔ½ÃÅ°Áö ¾Êµµ·Ï ÇÑ´Ù. (½ÇÁ¦·Î´Â °è¼Ó create table ¹®ÀåÀÌ Æ÷ÇԵȴÙ)
±×¸®°í –quick ¿É¼ÇÀº ¹öÆÛ¸¦ ÇÏÁö ¾Ê°í ¹Ù·Î disk¿¡ ¾²°Ô ÇÔÀ¸·Î½á ´ë¿ë·® Å×À̺íÀÇ °æ¿ì ¸Þ¸ð¸® ¿À¹öÇ÷ο찡 ¹ß»ýÇÏ´Â °ÍÀ» ¸·¾ÆÁØ´Ù.
±×·¸°Ô »ý¼ºµÈ table1.sqlÀ» oracle sqlplus¿¡¼ @ ¸í·ÉÀ¸·Î ½ÇÇà½ÃÄÑ ÁÖ¸é Å×ÀÌºí ¸í¿¡ `table_name`°ú °°Àº ` ¹®ÀÚ°¡ Æ÷ÇԵǾî ÀÖ¾î¼ ¿¡·¯°¡ ¹ß»ýÇÑ´Ù.
±×·¡¼
sed -i 's/`//g' table1.sql
¸í·ÉÀ¸·Î `¹®ÀÚ¸¦ ´Ù Á¦°ÅÇØ ÁØ ´ÙÀ½ sqlplus¿¡¼ @·Î ½ÇÇà½ÃÄÑ ÁØ´Ù.
sqlplus·Î oracle¿¡ µ¥ÀÌÅ͸¦ ÀÔ·ÂÇÒ ¶§ & ¹®ÀÚ´Â oracleÀÇ ¿¹¾à¾î·Î º¯¼ö¸¦ ¼±¾ðÇÏ´Â ¿¹¾à¾îÀÌ´Ù.
¸¸¾à µ¥ÀÌÅÍ ³»¿¡ & ¹®ÀÚ°¡ Æ÷ÇԵǾî ÀÖ´Ù¸é (¿¹¸¦ µé¾î ¡®School & Campus ¿Í °°ÀÌ ) insert¸¦ ÇÏ´Ù°¡ °©Àڱ⠺¯¼ö°ªÀ» ÀÔ·ÂÀ» ¹Þ±â À§ÇÑ ÇÁ·ÒÇÁÆ® »óÅ°¡ µÇ¾î ¹ö¸°´Ù.
ÀÌ·± »óŸ¦ ¹æÁöÇϱâ À§Çؼ´Â table1.sql ÆÄÀÏ Ã¹ ¸Ó¸®¿¡
SET DEFINE OFF; SET AUTOCOMMIT 1000;
¸¦ Ãß°¡ÇØ ÁÖ¾î¾ß ÇÑ´Ù.
SET AUTOCOMMIT 1000;Àº 1000 line ¸¶´Ù commitÀ» ÇØ ÁÖµµ·Ï ÇÑ´Ù. ¸¸¾à AUTOCOMMITÀÌ ¾ÈµÇ¸é ¸ðµç INSERT ¹®Àº rollback °¡´ÉÇÑ »óÅ·Πundo tablespace¿¡ ÀúÀåµÇ°í ¼Óµµ°¡ Á¡Á¡ ´À·ÁÁø´Ù.
ÇÑ±Û ¹®Á¦
µ¥ÀÌÅÍ ÀÌÀü½Ã ÇÑ±Û ¹®Á¦´Â ¿©·¯¸ð·Î °ñÄ¡¸¦ ½âÈ÷´Â ÀÏÀÌ´Ù. ƯÈ÷ mysqlÀ» ÆÐÅ°Áö·Î ¼³Ä¡ÇÏ°í ±×³É ¾²´Â °æ¿ì tableÀÇ ¹®ÀÚ¼ÂÀ» latin1À¸·Î ±×³É µÐ °æ¿ì default-char-setÀ» latin1À¸·Î ÁöÁ¤ÇØ¾ß ÇѱÛÀÌ Á¤»óÀûÀ¸·Î ÃßÃâµÇ°í oracle ÇÑ±Û ÀԷµµ ´Ù¾çÇÑ ÆĶó¹ÌÅÍ( LANG, NLS_LANG, NLS_CHARACTER µîµî)¸¦ ¼³Á¤ÇØ¾ß ÇϹǷΠÅ×½ºÆ®¸¦ ÃæºÐÈ÷ ÇØ º¸°í migrationÇØ¾ß ÇÒ °ÍÀÌ´Ù.