データポンプの転送元となるEC2上のDBを作成します。
この手間が今回の検証の9割方の労力ですね。
参考にしたサイトと手順やパス等が違う部分もありますので、手順として全文記載しておきます。
1. EC2を起動してログイン
AMI(ami-72bf0873)を指定してローンチ
$ ssh -i xxx.pem root@ec2-x-x-x-x.ap-northeast-1.compute.amazonaws.com
2. EBSをアタッチする
- インストーラーの格納用(10GB程度):/dev/sdf をアタッチしてフォーマットして /mnt/data にマウント
# mkdir -p /mnt/data # mkfs -t ext3 /dev/sdf # mount /dev/sdf /mnt/data
- Oracleデータファイル用(必要なだけ、今回は10GB):/dev/sdg をアタッチしてフォーマットして /opt/oracle/oradata にマウント
# mkdir -p /opt/oracle/oradata # mkfs -t ext3 /dev/sdg # mount /dev/sdg /opt/oracle/oradata # chown -R oracle:oinstall /opt/oracle
3. /mnt/data にインストーラを格納する
ゴニョゴニョして格納します。
4. unzipする
# cd /mnt/data # unzip linux.x64_11gR2_database_1of2.zip # unzip linux.x64_11gR2_database_2of2.zip # chown -R oracle:oinstall /mnt/data
5. oraInst.locファイルを作成する
# vi /etc/oraInst.loc ---- 以下を記載する inventory_loc=/opt/oracle/oraInventory inst_group=oinstall ---- # chown oracle:oinstall /etc/oraInst.loc # chmod 664 /etc/oraInst.loc
6. レスポンスファイルを編集用にコピーする
# mkdir /mnt/data/cui # cp /mnt/data/database/response/*.rsp /mnt/data/cui/.
7. レスポンスファイルを編集する
# vi /mnt/data/cui/db_install.rsp ---- 以下のように編集する oracle.install.option=INSTALL_DB_AND_CONFIG ORACLE_HOSTNAME=localhost.localdomain UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/opt/oracle/oraInventory SELECTED_LANGUAGES=ja,en ORACLE_HOME=/opt/oracle/product/11.2 ORACLE_BASE=/opt/oracle oracle.install.db.InstallEdition=SE oracle.install.db.DBA_GROUP=dba oracle.install.db.OPER_GROUP=dba oracle.install.db.config.starterdb.type=GENERAL_PURPOSE oracle.install.db.config.starterdb.globalDBName=ec2db.localdomain oracle.install.db.config.starterdb.SID=ec2db oracle.install.db.config.starterdb.memoryLimit=512 oracle.install.db.config.starterdb.password.SYS=**** oracle.install.db.config.starterdb.password.SYSTEM=**** oracle.install.db.config.starterdb.password.SYSMAN=**** oracle.install.db.config.starterdb.password.DBSNMP=**** oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/opt/oracle/oradata SECURITY_UPDATES_VIA_MYORACLESUPPORT=false DECLINE_SECURITY_UPDATES=true ----
8. 環境変数を設定してインストール実行
# su - oracle $ vi ~/.bash_profile ---- 以下を追記する export ORACLE_BASE=/opt/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2 ---- $ source ~/.bash_profile $ env | grep ORA $ cd /mnt/data/database $ ./runInstaller -silent -responseFile /mnt/data/cui/db_install.rsp 〜インストーラーが実行されてOracleインストールとDBの作成が行われる〜 〜/opt/oracle/product/11.2/root.sh を実行するように促されたらOK〜 # su - root # /opt/oracle/product/11.2/root.sh
9. 環境変数に追加
# su - oracle $ vi ~/.bash_profile ---- 以下を追加 export ORACLE_SID=ec2db export PATH=$PATH:$ORACLE_HOME/bin export LD_LIBRARY_PATH=$ORACLE_HOME/lib ---- $ source ~/.bash_profile
10. EMの状態確認
$ emctl status dbconsole
※EMの開始|終了|ステータス確認:emctl start|stop|status dbconsole
11. リスナーの状態確認
$ lsnrctl status
※リスナーの開始|終了|ステータス確認:lsnrctl start|stop|status
12. 自動起動設定をする
# vi /etc/oratab ---- 以下のように変更 ec2db:/opt/oracle/product/11.2:Y ---- # vi /etc/rc.d/init.d/oracle ---- 以下のように記載 #!/bin/bash # oracle: Start/Stop Oracle Database 11g R2 # # chkconfig: 345 90 10 # description: The Oracle Database is an Object-Relational Database Management System. # # processname: oracle . /etc/rc.d/init.d/functions LOCKFILE=/var/lock/subsys/oracle export ORACLE_BASE=/opt/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2 export ORACLE_USER=oracle case "$1" in 'start') if [ -f $LOCKFILE ]; then echo $0 already running. exit 1 fi echo -n $"Starting Oracle Database:" su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start" su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl start dbconsole" touch $LOCKFILE ;; 'stop') if [ ! -f $LOCKFILE ]; then echo $0 already stopping. exit 1 fi echo -n $"Stopping Oracle Database:" su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop" su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut" su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl stop dbconsole" rm -f $LOCKFILE ;; 'restart') $0 stop $0 start ;; 'status') if [ -f $LOCKFILE ]; then echo $0 started. else echo $0 stopped. fi ;; *) echo "Usage: $0 [start|stop|status]" exit 1 esac exit 0 ---- # chmod 755 /etc/rc.d/init.d/oracle # /etc/rc.d/init.d/oracle start # chkconfig --add oracle # chkconfig oracle on # chkconfig --list oracle
13. 転送元データ用のユーザ・スキーマを作成する
$ sqlplus / as sysdba SQL> CREATE USER "USR1" IDENTIFIED BY "****" DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK; SQL> GRANT UNLIMITED TABLESPACE TO "USR1"; SQL> GRANT "CONNECT" TO "USR1"; SQL> GRANT "DATAPUMP_EXP_FULL_DATABASE" TO "USR1"; SQL> GRANT "DATAPUMP_IMP_FULL_DATABASE" TO "USR1"; SQL> GRANT "RESOURCE" TO "USR1"; SQL> exit
14. 作成したスキーマにテーブルを作成してデータをinsertする
$ sqlplus usr1/**** SQL> create table test (ID number, QTY number); SQL> begin 2 for j in 1 .. 100 loop 3 for i in 1 .. 1000 loop 4 insert into test values(i, 100); 5 commit ; 6 end loop; 7 end loop; 8 end; 9 / SQL> select count(*) from test; ---- 結果10万件入ってることが分かる
今回はここまで。
次回はRDS for Oracleの起動、EC2DBのtnsnames.oraの編集、双方のデータベース・リンクの作成、そして実際のデータ・ポンプ・インポート作業の予定です。
参考:
http://d.hatena.ne.jp/KNOPP/20120706/1341591598: Oracle RAC on Amazon EC2 (2012 7月版)/KNOPPの日記
http://blog.suz-lab.com/2011/04/ec2oracle.html: 東京リージョンのEC2にOracleをインストール/suz-lab - blog
http://www.lovebug.jp/index.php?cmd=read&page=Oracle%2F11g%2F%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%EF%BC%88%E3%83%AC%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B9%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9FCUI%E3%81%A7%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%EF%BC%89: Oracle 11g Release 2のインストール(レスポンスファイルを利用したCUIでのインストール)/lovebug.jp
※2012.10.10追記:レスポンスファイルをインストーラー用のEBS(/dev/sdf)ごと使い回せるように配置場所を変えました。また、自動起動スクリプトの一部に誤りがあったため修正いたしました。