【PolarDBマイグレーションシリーズ】Oracle DatabaseからPolarDB-Oマイグレーション-Part1 OracleDatabaseセットアップ、事前準備
はじめに
本記事では、Oracle DatabaseからPolarDB-Oマイグレーション-Part1 OracleDatabaseセットアップ、事前準備 についてを紹介します。
こちら長文になるので、全部でPart5に分けて紹介します。
Part1 OracleDatabaseセットアップ、事前準備←本記事です
Part2 Oracle Database評価
Part3 データベースマイグレーション準備
Part4 データベースマイグレーション実行
Part5 アプリケーションマイグレーションと改修
PolarDBとは
PolarDBはAlibaba Cloudが開発したCloud Native Databaseサービスです。MySQL・PostgreSQLは100%、Oracleは高い互換性を持ちながら、ユーザーのワークロードに応じて垂直・水平スケーリングすることが出来るため、コストを大幅に削減できることが特徴です。
最初に
本Best PracticeはOracle DatabaseおよびアプリケーションをAlibaba Cloud PolarDBへマイグレーションする方法をご紹介します。
PolarDB-O (Oracle Databaseと高い互換性あり) をマイグレーションターゲットのデータベースとします。データベースとアプリケーションのマイグレーションサービスであるADAMプロダクトサービスを通して、Oracleおよびアプリケーションを評価、収集、改修から、PolarDB-O へのマイグレーションまでのすべてのプロセスをご紹介します。
この記事 Part1では、ターゲットとなるOracle Databaseを構築、およびアプリケーションを構築するフェーズとなります。既にOracle Database およびアプリケーションを持っている方は本記事はSkipし、Part2から確認いただければ幸いです。
1.ECS上に Oracle Database 11R2 環境を構築
1-1.VPCを作成します
手順1.AlibabaCloudサイトに登録し、コンソール画面に遷移します
手順2.プロダクトとサービスをクリックし、VPCをクリックします
手順4.VPC画面にVPCの作成ボタンをクリックし、VPC作成画面に遷移します
手順5.VPC作成画面にパラメータを設定し、VPCを作成します
①パラメータ設定:
タイプ | 設定項目 | 説明 |
---|---|---|
VPC | 名前 | Nancy-oracle |
VPC | IPv4 CIDR ブロック | 172.16.0.0/12 |
VPC | 名前 | Nancy-oracle-vsw |
VSwitch | 名前 | Nancy-oracle-vsw |
VSwitch | ゾーン | Tokyo Zone A |
VSwitch | IPv4 CIDR ブロック | 172.16.0.0/24 |
②VPC作成画面を設定
③VPCとVSwitch が作成したので確認します
1-2.ECSを作成します
手順1.AlibabaCloudサイトに登録し、ECSコンソール画面に遷移します
手順2.ECS画面でインスタンスの作成ボタンをクリックし、ECS作成画面に遷移します
手順3.ECSインスタンスを作成します
基本設定
設定項目 | 説明 |
---|---|
課金方法 | 従量課金 |
リージョン | 日本(東京)アジア東北1ゾーンA |
インスタンスタイプ | ecs.g6.2xlarge |
イメージ | CentOS 7.8 64-bit |
ストレージ | 100GB |
ネットワーク | vpc-oracle |
パブリック IP アドレス | パブリック IP の割り当て |
ログイン認証 | パスワード |
インスタンス名 | nancy-oracle-polardb |
④パスワードを設定し、「次のステップ」ボタンをクリックします
⑤「利用規約」チェックボックスをクリックし、「インスタンスの作成」ボタンをクリックするとECSを作成します
今回のECS情報は次の通りとなります
インスタンス名 | インスタンス ID | IP | 仕様 |
---|---|---|---|
nancy-oracle-polardb | i-6weeunel6mqbdly2gbi1 | 8.211.143.78 | ecs.g6.2xlarge |
1-3.ECSで Oracle Database 11R2 環境を構築します
1-3-1. Oracle Database 11R2 環境構築を準備します
1-3-1-1.ECSハードウェアを確認します
1)まずECSインスタンスのMemoryを確認します
今回、Oracle Database 11R2 サイジング要件としてMemory 2GB以上を推奨しています
# grep MemTotal /proc/meminfo# df
2)Swapを追加します
Swap前提条件:今回ECSは8Gなので、8Gに設定します
RAW | SWAP |
---|---|
1G~2G | 1.5倍 |
2G~16G | RAWと同じサイズ |
16G以上 | 16G |
①swapスペースを確認します
# free -mh
②/swap/swapfileを作成します
# sudo mkdir /swap# sudo dd if=/dev/zero of=/swap/swapfile bs=1G count=8
③swapスペースをフォーマットします
# sudo mkswap /swap/swapfile
④swapスペースを設定します
# sudo mkswap -f /swap/swapfile
⑤接続権限を設定します
# sudo chmod 600 /swap/swapfile
⑥swapスペースをアクティブします
# sudo swapon /swap/swapfile
⑦自動起動を設定します
# sudo vi /etc/fstab
⑧下記内容をつ以下します
# /swap/swapfile swap swap default 0 0
⑨Swapを確認します
sudo free -h
3)ECSシステムマークを変更します
OracleデフォルトではCentOS Installerがサポートされていないため、redhat-releaseをredhat-7へ修正します
①redhat-releaseをredhat-7に修正します
# cat /proc/version# vim /etc/redhat-release
②redhat-releaseを確認します
# cat /etc/redhat-release
1-3-1-2.Oracleインストール前準備をします
1)依頼パッケージをインストールします
# yum install binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat unixODBC unixODBC-devel –y libXp
2)ユーザーとユーザーグループを作成します
[root@iZ6weeunel6mqbdly2gbi1Z /]# su root[root@iZ6weeunel6mqbdly2gbi1Z /]# groupadd oinstall[root@iZ6weeunel6mqbdly2gbi1Z /]# groupadd dba[root@iZ6weeunel6mqbdly2gbi1Z /]# useradd -g oinstall -g dba -m oracle[root@iZ6weeunel6mqbdly2gbi1Z /]# passwd oracleChanging password for user oracle.New password:BAD PASSWORD: The password is shorter than 8 charactersRetype new password:passwd: all authentication tokens updated successfully.[root@iZ6weeunel6mqbdly2gbi1Z /]# id oracleuid=1000(oracle) gid=1001(dba) groups=1001(dba)
3)oracleインストールディレクトリを作成します
[root@iZ6weeunel6mqbdly2gbi1Z /]# clear[root@iZ6weeunel6mqbdly2gbi1Z /]# cd /.[root@iZ6weeunel6mqbdly2gbi1Z /]# mkdir -p /data/oracle[root@iZ6weeunel6mqbdly2gbi1Z /]# mkdir -p /data/oraInventory[root@iZ6weeunel6mqbdly2gbi1Z /]# mkdir -p /data/database[root@iZ6weeunel6mqbdly2gbi1Z /]# cd /data[root@iZ6weeunel6mqbdly2gbi1Z data]# lsdatabase oracle oraInventory[root@iZ6weeunel6mqbdly2gbi1Z data]# chown -R oracle:oinstall /data/oracle[root@iZ6weeunel6mqbdly2gbi1Z data]# chown -R oracle:oinstall /data/oraInventory[root@iZ6weeunel6mqbdly2gbi1Z data]# chown -R oracle:oinstall /data/database
4)firewalldを閉じます
①firewalld状態を確認します
# systemctl status firewalld.service# systemctl stop firewalld.service# systemctl disable firewalld.service
5)selinuxを閉じます
ECSを再起動することで設定が有効になります
# vi /etc/selinux/config
# cat /etc/selinux/config
6)kernelパラメータを修正します
①sysctl.confを修正します
# vi /etc/sysctl.conf
②下記パラメータをsysctl.confに追加します
net.ipv4.icmp_echo_ignore_broadcasts = 1net.ipv4.conf.all.rp_filter = 1fs.file-max = 6815744fs.aio-max-nr = 1048576kernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shmmni = 4096kernel.sem = 250 32000 100 128net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default = 262144net.core.rmem_max= 4194304net.core.wmem_default= 262144net.core.wmem_max= 1048576
③設定を確認します
# cat /etc/sysctl.conf
④設定を有効にします
# sysctl -p
7)oracleユーザー制限を設定します
①下記設定をlimits.confに追加します
# vi /etc/security/limits.conforacle soft nproc 2047oracle hard nproc 16384oracle soft nofile 1024oracle hard nofile 65536
②limits.confを確認します
# cat /etc/security/limits.conf
8)ユーザー環境関数を設定します
①Localeを確認します
②bash_profileを編集します
# vi /home/oracle/.bash_profile
③下記パラメータをbash_profileに追加します
export ORACLE_BASE=/data/oracleexport ORACLE_HOME=$ORACLE_BASE/11gr2export ORACLE_SID=orclexport ORACLE_UNQNAME=orclexport ORACLE_TERM=xtermexport PATH=$ORACLE_HOME/bin:/usr/sbin:$PATHexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/libexport LANG=en_US.UTF-8export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
④設定を確認し、ユーザー環境設定を有効にします
# cat /home/oracle/.bash_profile# source /home/oracle/.bash_profile
9)zip unzipをインストールします
①下記コマンドでzip unzipをインストールします
yum install -y unzip zip
10)Java1.8環境をインストールします
①jdk-8u144-linux-x64.tar.gzをダウンロードします
(下記のリンクからでもjdkをダウンロードすることができます)
jdk download url
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
②jdk-8u144-linux-x64.tar.gzをjavaフォルダに解凍します
# mkdir /usr/local/java/# tar -zxvf jdk-8u144-linux-x64.tar.gz -C /usr/local/java/# cd /usr/local/java/# ll
③Java環境パスを設定します
# vim /etc/profileexport JAVA_HOME=/usr/local/java/jdk1.8.0_144export PATH=${JAVA_HOME}/bin:$PATHexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport JRE_HOME=$JAVA_HOME/jre
④Java環境パスを有効します
# source /etc/profile# ln -s /usr/local/java/jdk1.8.0_144/bin/java /usr/bin/java
⑤Javaバージョンを確認します
java -version
11)ECSを再起動します
reboot
1-3-2.サイレントモードで Oracle Database 11R2 をインストールします
1) Oracle Database 11R2 インストールパッケージを準備します
①下記リンクから Oracle Database 11R2 インストールファイルをダウンロードします
Oracle Database 11R2 download link1 Oracle Database 11R2 download link2
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
https://www.oracle.com/cn/database/enterprise-edition/downloads/oracle-db11g-linux.html
linux.x64_11gR2_database_1of2.ziplinux.x64_11gR2_database_2of2.zip
② Oracle Database 11R2 インストールパッケージを確認します
※インストールパッケージは直接ECSからダウンロードするのもOKです
③lrzszをインストールします
yum install lrzsz
④ダウンロードされた Oracle Database 11R2 ファイルをrzコマンドでECSにアップロードします
ファイルを/usr/local/srcに移動します
# mv linux.x64_11gR2_database_1of2.zip /usr/local/src# mv linux.x64_11gR2_database_2of2.zip /usr/local/src# ls# cd /usr/local/src# ls
⑤Oracleユーザーでログインします
# cd /usr/local/src# ls# su - oracle
⑥Oracleインストールファイルを解凍します
unzip linux.x64_11gR2_database_1of2.zip -d /data/database/unzip linux.x64_11gR2_database_2of2.zip -d /data/database/
2)サイレントモードで Oracle Database 11R2 をインストールします
①responseフォルダに移動します
# cd /data/database/# cd database/# ls# cd response/
②下記コマンドでdataフォルダに権限を付与します
# chown -R oracle:osinstall /data# cd /data/database/database# cd response/# ls
③db_install.rspを設定します
vim db_install.rsp
④下記のようにdb_install.rspを設定します
# grep -Ev "^$|^#" db_install.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0oracle.install.option=INSTALL_DB_SWONLYORACLE_HOSTNAME=iZ6weeunel6mqbdly2gbi1ZUNIX_GROUP_NAME=oinstallINVENTORY_LOCATION=/data/oraInventorySELECTED_LANGUAGES=en,ja,zh_CNORACLE_HOME=/data/oracle/11gr2ORACLE_BASE=/data/oracleoracle.install.db.InstallEdition=EEoracle.install.db.isCustomInstall=falseoracle.install.db.customComponents=oracle.server:11.2.0.1.0,oracle.sysman.ccr:10.2.7.0.0,oracle.xdk:11.2.0.1.0,oracle.rdbms.oci:11.2.0.1.0,oracle.network:11.2.0.1.0,oracle.network.listener:11.2.0.1.0,oracle.rdbms:11.2.0.1.0,oracle.options:11.2.0.1.0,oracle.rdbms.partitioning:11.2.0.1.0,oracle.oraolap:11.2.0.1.0,oracle.rdbms.dm:11.2.0.1.0,oracle.rdbms.dv:11.2.0.1.0,orcle.rdbms.lbac:11.2.0.1.0,oracle.rdbms.rat:11.2.0.1.0oracle.install.db.DBA_GROUP=dbaoracle.install.db.OPER_GROUP=oinstalloracle.install.db.CLUSTER_NODES=oracle.install.db.config.starterdb.type=GENERAL_PURPOSEoracle.install.db.config.starterdb.globalDBName=ora11goracle.install.db.config.starterdb.SID=ora11goracle.install.db.config.starterdb.characterSet=AL32UTF8oracle.install.db.config.starterdb.memoryOption=trueoracle.install.db.config.starterdb.memoryLimit=oracle.install.db.config.starterdb.installExampleSchemas=falseoracle.install.db.config.starterdb.enableSecuritySettings=trueoracle.install.db.config.starterdb.password.ALL=oracleoracle.install.db.config.starterdb.password.SYS=oracleoracle.install.db.config.starterdb.password.SYSTEM=oracleoracle.install.db.config.starterdb.password.SYSMAN=oracleoracle.install.db.config.starterdb.password.DBSNMP=oracleoracle.install.db.config.starterdb.control=DB_CONTROLoracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=falseoracle.install.db.config.starterdb.dbcontrol.emailAddress=oracle.install.db.config.starterdb.dbcontrol.SMTPServer=oracle.install.db.config.starterdb.automatedBackup.enable=falseoracle.install.db.config.starterdb.automatedBackup.osuid=oracle.install.db.config.starterdb.automatedBackup.ospwd=oracle.install.db.config.starterdb.storageType=oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=oracle.install.db.config.asm.diskGroup=oracle.install.db.config.asm.ASMSNMPPassword=MYORACLESUPPORT_USERNAME=MYORACLESUPPORT_PASSWORD=SECURITY_UPDATES_VIA_MYORACLESUPPORT=DECLINE_SECURITY_UPDATES=truePROXY_HOST=PROXY_PORT=PROXY_USER=PROXY_PWD=
⑤responseフォルダにて下記のコマンドで Oracle Database 11R2 をインストールします
# su - oracle# cd /data/database/database# ./runInstaller -silent -ignorePrereq -responseFile /data/database/database/response/db_install.rsp
⑥インストールが無事成功したので確認します
[oracle@iZ6weeunel6mqbdly2gbi1Z database]$ ./runInstaller -silent -ignorePrereq -responseFile /data/database/database/response/db_install.rspStarting Oracle Universal Installer...Checking Temp space: must be greater than 120 MB. Actual 78441 MB PassedChecking swap space: must be greater than 150 MB. Actual 8191 MB PassedPreparing to launch Oracle Universal Installer from /tmp/OraInstall2021-08-26_12-07-54AM. Please wait ...[oracle@iZ6weeunel6mqbdly2gbi1Z database]$ You can find the log of this install session at:/data/oraInventory/logs/installActions2021-08-26_12-07-54AM.logThe following configuration scripts need to be executed as the "root" user.#!/bin/sh#Root scripts to run/data/oraInventory/orainstRoot.sh/data/oracle/11gr2/root.shTo execute the configuration scripts:1. Open a terminal window2. Log in as "root"3. Run the scripts4. Return to this window and hit "Enter" key to continueSuccessfully Setup Software.
⑦インストールログを確認します
# cd /data/oraInventory/logs/# ls# tail -f n10 installActions2021-08-26_12-07-54AM.log
⑧rootでログインし、orainstRoot.shとroot.shを実行します
# cd /data/oraInventory# sh orainstRoot.sh# cd /data/oracle/11gr2# sh root.sh
実行結果:
[root@iZ6weeunel6mqbdly2gbi1Z ~]# cd /data/oraInventory/[root@iZ6weeunel6mqbdly2gbi1Z oraInventory]# lsContentsXML install.platform logs oraInstaller.properties oraInst.loc orainstRoot.sh oui[root@iZ6weeunel6mqbdly2gbi1Z oraInventory]# sh orainstRoot.shChanging permissions of /data/oraInventory.Adding read,write permissions for group.Removing read,write,execute permissions for world.Changing groupname of /data/oraInventory to oinstall.The execution of the script is complete.[root@iZ6weeunel6mqbdly2gbi1Z oraInventory]# cd /data/oracle/11gr2[root@iZ6weeunel6mqbdly2gbi1Z 11gr2]# lsapex cfgtoollogs css deinstall has instantclient jdev log nls OPatch oui precomp scheduler srvm utlassistants clone ctx demo hs inventory jdk md oc4j opmn owb racg slax sysman wwgbin config cv diagnostics ide j2ee jlib mesg odbc oracore owm rdbms sqldeveloper timingframework xdkccr crs dbs dv install javavm ldap mgw olap oraInst.loc perl relnotes sqlj ucpcdata csmig dc_ocm emcli install.platform jdbc lib network ons ord plsql root.sh sqlplus uix[root@iZ6weeunel6mqbdly2gbi1Z 11gr2]# sh root.shCheck /data/oracle/11gr2/install/root_iZ6weeunel6mqbdly2gbi1Z_2021-08-26_00-15-50.log for the output of root script
⑨実行ログを確認します
cat /data/oracle/11gr2/install/root_iZ6weeunel6mqbdly2gbi1Z_2021-08-26_00-15-50.log
[root@iZ6weeunel6mqbdly2gbi1Z 11gr2]# cat /data/oracle/11gr2/install/root_iZ6weeunel6mqbdly2gbi1Z_2021-08-26_00-15-50.logRunning Oracle 11g root.sh script...The following environment variables are set as:ORACLE_OWNER= oracleORACLE_HOME= /data/oracle/11gr2Creating /etc/oratab file...Entries will be added to the /etc/oratab file as needed byDatabase Configuration Assistant when a database is createdFinished running generic part of root.sh script.Now product-specific root actions will be performed.Finished product-specific root actions.
1-3-3.Listenerを設定します
①Listenerを設定します
[root@iZ6weeunel6mqbdly2gbi1Z ~]su - oracle[oracle@iZ6weeunel6mqbdly2gbi1Z ~]$ netca /silent /responsefile /data/database/database/response/netca.rspParsing command line arguments:Parameter "silent" = trueParameter "responsefile" = /data/database/database/responseDone parsing command line arguments.Oracle Net Services Configuration:Profile configuration complete.Oracle Net Services configuration successful. The exit code is 0
②Listenerを起動します
[oracle@iZ6weeunel6mqbdly2gbi1Z ~]$ lsnrctl start
1-3-4.サイレントモードでOracleのデータベースを作成します
①dbca.rspを設定します
# vim dbca.rsp
②dbca.rspを設定します
[oracle@iZ6weeunel6mqbdly2gbi1Z response]$ grep -Ev "^$|^#" dbca.rsp[GENERAL]RESPONSEFILE_VERSION = "11.2.0"OPERATION_TYPE = "createDatabase"[CREATEDATABASE]GDBNAME = "orcl11g"SID = "orcl11g"TEMPLATENAME = "General_Purpose.dbc"CHARACTERSET = "AL32UTF8"[createTemplateFromDB]SOURCEDB = "myhost:1521:orcl"SYSDBAUSERNAME = "system"TEMPLATENAME = "My Copy TEMPLATE"[createCloneTemplate]SOURCEDB = "orcl11g"TEMPLATENAME = "My Clone TEMPLATE"[DELETEDATABASE]SOURCEDB = "orcl"[generateScripts]TEMPLATENAME = "New Database"GDBNAME = "orcl11g"[CONFIGUREDATABASE][ADDINSTANCE]DB_UNIQUE_NAME = "orcl11g.us.oracle.com"NODELIST=SYSDBAUSERNAME = "sys"[DELETEINSTANCE]DB_UNIQUE_NAME = "orcl11g.us.oracle.com"INSTANCENAME = "orcl11g"SYSDBAUSERNAME = "sys"
③DBインスタンスを作成します
# dbca -silent -responseFile dbca.rsp
⑤インスタンスが作成完了したので確認します
⑥インストールが完了し、下記のログを確認します
# cd /data/oracle/cfgtoollogs/dbca/orcl11g# ls# cat orcl11g.log
1-3-5.Oracleのデータベースを起動します
1)下記のコマンドでOracleを起動します
①Oracle起動エラーを対処
# su - oracle# lsnrctl start# sqlplus / as sysdba# startup
②Oracle起動時エラーLRM-00109とORA-01078を対処します
エラー理由:/data/oracle/11gr2/dbs/initorcl.oraファイルがありません
ORA-01078: failure in processing system parametersLRM-00109: could not open parameter file '/data/oracle/11gr2/dbs/initorcl.ora'
③ORACLE_SIDによって、initorcl.oraで起動します
起動ファイルはinit+ORACLE_SID.oraが必要であるため、dbsフォルダにないと、エラーが発生します
まずはORACLE_SIDを確認します
# vi ~/.bash_profile
④dbsにinitorcl.oraがあるか確認します
# cd $ORACLE_HOME/dbs# ls
⑤initorcl.oraを作成します
# find /data -name pfile# cd /data/oracle/admin/orcl11g/pfile# ls# cp /data/oracle/admin/orcl11g/pfile/init.ora.726202105116 $ORACLE_HOME/dbs# cd $ORACLE_HOME/dbs# mv init.ora.726202105116 initorcl.ora
⑥Oracle起動時エラーORA-00845を対処します
ORA-00845: MEMORY_TARGET not supported on this system
⑦./dev/shmサイズを確認します
原因:MEMORY_TARGETまたはMEMORY_MAX_TARGETのサイズが/dev/shmより大きくなるとエラーが発生します
# df -h# cat /etc/fstab
⑧/dev/shmのサイズを増やします
# mount -o remount,size=30G /dev/shm# vim /etc/fstab# cat /etc/fstab
⑨エラーORA-01102を対処します
> 原因:lk<sid>ファイルが既に存在しますORA-01102: cannot mount database in EXCLUSIVE mode
> ⑩lk<sid>ファイルを確認します# cd /data/oracle/11gr2# cd dbs/# ls
> ⑩lk<sid>ファイルをを削除します# fuser -k lkORCL11G# fuser -u lkORCL11G# ls
2)下記のコマンドでOracleを再度起動します
# startup
ここまでの作業で問題がなければ、Oracle Databaseが正常に起動されます。
1-3-6.Oracleのlistenerを設定します
1)listenerコンフィグファイルlistener.oraを設定します
①コンフィグファイルパスを開きます
# cd /data/oracle/11gr2/network/admin/samples# ls
②listener.oraを設定します
# vim listener.oraLISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.0.96)(PORT = 1521))))ADR_BASE_LISTENER = /data/oracle/11gr2
2)listenerコンフィグファイルtnsnames.oraを設定します
コンフィグファイル上にある SERVICE_NAME
を正しく設定する必要があります
①SERVICE_NAMEを確認します
# su - oracle# lsnrctl start# sqlplus shoptest/shoptest as sysdbaSQL> show parameter service_name
②tnsnames.oraを設定します
# vim tnsnames.oraorcl11g =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 8.211.143.78)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl11g)))EXTPROC_CONNECTION_DATA =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)))(CONNECT_DATA =(SID = PLSExtProc)(PRESENTATION = RO)))
2.DUMPデータを Oracle Database 11R2 へインポート
2-1.Oracle Databaseを設定します
1)Oracleユーザーを作成します
①Oracle Databaseを起動します
# su - oracle# lsnrctl start# sqlplus / as sysdba# startup
②shoptestユーザーを作成します
SQL> CREATE USER shoptest IDENTIFIED BY "shoptest";User created.SQL> GRANT "DBA" TO shoptest WITH ADMIN OPTION;Grant succeeded.
2)gitをインストールします
①rootユーザーでgitをインストールします
# yum -y install git
2)プロジェクトをダウンロードします
①今回のプロジェクトはAlibabaCloud中国サイトのBest Practiceからのソースを使っています
AliyunSite best practice link
# git clone https://code.aliyun.com/best-practice/130.git
②rootユーザーでプロジェクトを解凍します
# cd 130/oracle-dump-data/# gunzip shoptest.tar.gz# tar -xvmf shoptest.tar
③shoptest.dmpファイルをOracleフォルダに移動します
# mv /root/130/oracle-dump-data/shoptest/shoptest.dmp /data/oracle/# cd /data/oracle/# ls
④oracleユーザーでshop1ディレクトリを作成します
# su - oracle# sqlplus / as sysdba# create directory shop1 as '/data/oracle';# grant read, write on directory shop1 to shoptest;
2-2.DUMPデータをOracleにインポートします
1)Dumpデータをインポートします
①Dumpデータをインポートします
# cd /data/database# impdp shoptest/shoptest DIRECTORY=shop1 DUMPFILE=shoptest.dmp transform=segment_attributes:n
2)Oracleテーブルを確認します
# sqlplus / as sysdba# SQL> conn shoptest/shoptest# SQL> select count(*) from user_tables;
3)DMSでOracleデータベースを確認します
①AlibabaCloudをログインし、DMSコンソール画面でGo to NEW DMSボタンをクリックします
②接続情報を入力し、Oracle管理画面に遷移します
③shoptestのテーブルを確認します
2-3.Oracleに全角文字のテーブルを作成します
①Oracleユーザーを作成します
# sqlplus / as sysdba# SQL> CREATE USER nancytest IDENTIFIED BY "nancytest";# SQL> GRANT "DBA" TO nancytest WITH ADMIN OPTION;
②DMSでOracleを接続します
③DMSで全角文字のテーブルを作成します
create table ignore_case_products (item_cd varchar(100),name varchar(255));
④データを挿入します
insert allinto ignore_case_products(item_cd,name) values('item1','サクラカタカナ')into ignore_case_products(item_cd,name) values('item2','サクラカタカナ')into ignore_case_products(item_cd,name) values('item3','さくらかたかな')into ignore_case_products(item_cd,name) values('item4','サクラヒラガナ')into ignore_case_products(item_cd,name) values('item5','サクラヒラガナ')into ignore_case_products(item_cd,name) values('item6','さくらひらがな')into ignore_case_products(item_cd,name) values('item7','APPLE')into ignore_case_products(item_cd,name) values('item8','apple')into ignore_case_products(item_cd,name) values('item9','Apple')into ignore_case_products(item_cd,name) values('item10','123')into ignore_case_products(item_cd,name) values('item11','abc')into ignore_case_products(item_cd,name) values('item11','ABC')into ignore_case_products(item_cd,name) values('item11','Abc')select * from dual;
⑤DMSでデータを検索します
select * from ignore_case_products where name like 'サクラカタカナ';select * from ignore_case_products where name like 'サクラカタカナ';select * from ignore_case_products where name like 'abc';select * FROM ignore_case_products;
⑥DMSで文字処理関数を使って検索します
SELECT item_cd , utl_i18n.transliterate(name,'KANA_FWKATAKANA') FROM ignore_case_products WHERE name='さくらかたかな';SELECT item_cd , utl_i18n.transliterate(name,'KANA_HIRAGANA') FROM ignore_case_products WHERE name='サクラヒラガナ';select item_cd , TO_MULTI_BYTE(name) FROM ignore_case_products WHERE name='abc';
⑦OracleViewを作成します
CREATE OR REPLACE VIEW kana_fwkatakana_view ASSELECT UTL_I18N.TRANSLITERATE(name, 'kana_fwkatakana') AS kana_fwkatakana_name FROM ignore_case_products where not regexp_like(name,'^[a-zA-Z0-9]')CREATE OR REPLACE VIEW kana_HIRAGANA_view ASSELECT UTL_I18N.TRANSLITERATE(name, 'kana_HIRAGANA') AS kana_HIRAGANA_name FROM ignore_case_products where not regexp_like(name,'^[a-zA-Z0-9]')CREATE OR REPLACE VIEW num_en_name_view ASSELECT TO_MULTI_BYTE(name) AS num_en_name FROM ignore_case_products where regexp_like(name,'^[a-zA-Z0-9]')SELECT * FROM kana_fwkatakana_view;SELECT * FROM kana_HIRAGANA_view;SELECT * FROM num_en_name_view;select * from user_views ignore_case_products
kana_fwkatakana_viewを作成します
kana_HIRAGANA_viewを作成します
num_en_name_viewを作成します
kana_fwkatakana_viewを検索します
kana_HIRAGANA_viewを検索します
num_en_name_viewを検索します
viewを検索します
3.ECSでアプリケーション環境をデプロイ
3-1.VPCとECSを作成します(ここでは説明を省略します)
1)ECSインスタンスを作成します(省略)
① ECSを作成します
② ECS - APPはOracleのECSと同じVPCを設定します
③ ECSへログインします
2)Oracle Databaseが入っているECSに対し、ECS - APPのIPアドレスおよびPort 1521のアクセス権限を付与します
①ECS - APPのプライベートIPを確認します
②セキュリティグループに Port 1521を追加します
3-2.アプリケーションプロジェクトJarを作成します
1)lrzszをインストールします
yum install lrzsz
2)Java1.8をインストールします(ここでは説明を省略します)
Java1.8のインストール方法については、上記、Step 1-3-1-2.の Java環境インストール方法をご参照ください
3)maven環境をインストールします
①mavenをダウンロードします
# wget https://dlcdn.apache.org/maven/maven-3/3.8.2/binaries/apache-maven-3.8.2-bin.tar.gz# ls
②mavenファイルを解凍します
# mkdir /usr/local/maven# tar -zxvf apache-maven-3.8.2-bin.tar.gz -C /usr/local/maven/
③/usr/local/maven/に移動します
# cd /usr/local/maven/# cd apache-maven-3.8.2# ls
④maven環境関数を設定します
# vi /etc/profileexport MAVEN_HOME=/usr/local/maven/apache-maven-3.8.2export PATH=${MAVEN_HOME}/bin:$PATH# source /etc/profile
⑤Mavenバージョンを確認します
# mvn -version
⑥settings.xmlにmirrorを設定します
# cd /usr/local/maven/apache-maven-3.8.2/conf# ls# vim settings.xml
vim settings.xml<mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror>
⑦settings.xmlにlocalrepositoryを設定します
⑧MavenRepositoryフォルダを作成します
# cd /home# mkdir MavenRepository# cd MavenRepository# pwd/home/MavenRepository
3)appのJarパッケージを作成します
前提条件:ローカルPCにIntelliJ IDEAとJavaなどの環境が既に実装したので確認します
①CMDで下記コマンドでprojectをローカルにダウンロードします
git clone https://code.aliyun.com/best-practice/130.git
②Oracle Database - ECS のプライベートIPを確認します
②Oracle Database - ECS のOracle Servicenameを確認します
③IntelliJ IDEでプロジェクトを開きます
jdbc.propertiesを修正します(今回、OracleのECSとAPPのECSが同じVPCであるため、jdbc.urlではプライベートIPとServerNameの方法で接続します)
\130\src\main\resources\jdbc.propertiesjdbc.driver=oracle.jdbc.driver.OracleDriverjdbc.url=jdbc:oracle:thin:@//172.16.0.96:1521/orcl11gjdbc.user = shoptestjdbc.password = shoptest
④プロジェクトをビルドします
⑤プロジェクトのJarパッケージを作成します
mvn clean package -DskipTests
⑥プロジェクトのtargetフォルダにJarファイルを作成します
3-3.アプリケーションをデプロイします
1)shop-1.0.0-SNAPSHOT-release.tar.gzファイルをECS - APPにアップロードします
rzコマンドでファイルを選択します
# mkdir shoptest# cd shoptest# rz
②Jarファイルを解凍します
# gunzip shop-1.0.0-SNAPSHOT-release.tar.gz# tar -xvmf shop-1.0.0-SNAPSHOT-release.tar# ls
2)run.shを実行します
①run.shを実行します
# cd shop# ./run.sh
②エラー問題を解決します
-bash: ./run.sh: /bin/sh^M: bad interpreter: No such file or directory
# yum install dos2unix
# dos2unix run.sh
③run.shを実行します
# ./run.sh
3)APPサイトを開きます ①ECS - APPのセキュリティグループにPort 8080を付与し、ホワイトリストとしてアクセス権限を追加します
②下記リンクでAPPサイトを開きます
http://8.211.134.35:8080/index.action
最後に
ここまでマイグレーションのターゲットとなるOracle Databaseおよびアプリケーション環境の準備が完了しました。 次はPart2 ADAMによる診断をはじめ、どのようなプロセスでマイグレーションをするかを説明します。
http://sbcloud.github.io/help/usecase-PolarDB/PolarDB_002_oracle-migration-part2