この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
背景
データベース移行の検証を行うためにOracle Database 12c Standard Edtion 2 (12.1.0.2)のインストールが必要になります。
ここではOracle Database 12c Standard Edtion 2 (12.1.0.2)のインストール及び移行用DBの作成手順を説明します。
Oracle Database 12c Standard Edtion 2 (12.1.0.2)のダウンロードを下記のブログを参照
Oracle Database 12c Standard Edtion 2 (12.1.0.2)のWindowsへのダウンロード手順
検証環境
・EC2(Windows Server 2019)
・AMI名:Windows_Server-2019-Japanese-Full-Base-2022.12.28
手順
1.インストーラーのダウンロード
下記のブログを参照
Oracle Database 12c Standard Edtion 2 (12.1.0.2)のWindowsへのダウンロード手順
2.インストール
展開したフォルダの「setup.exe」を実行。
DOS窓が立ち上がるのでしばらく待つとインストーラーが立ち上がります。
セキュリティ通知を受け取るかどうかとメールアドレスの設定を行う画面です。
特に必要ないのでチェックを外してそのまま「次へ」を押します。
警告がでますが、無視して「はい」
インストール・オプションの選択
後でデータベースの細かい設定をしたいので、「データベース・ソフトウェアのみ」を選択します。
「単一インスタンス・データベースのインストール」を選択します。
製品の言語選択
このままで、「次へ」※「Standard Edition Two」が選択されます。
Oracleホームディレクトリの所有ユーザーを設定します。
セキュリティ的に設定しといた方がいいらしい。
今回は「Windows組込みアカウントを使用」を選択します。
警告出るけど無視。
特にこだわりがなければこのままで。
インストール環境がOracle Databaseの動作条件を満たしているかどうかチェックしています。
インストール内容が表示されます。
レスポンスファイルを保存しておくと同じ構成でサイレントインストールを行うことができます。
同一構成を別環境に組む時などに利用しましょう。
あとは「インストール」を押せばインストールが走ります。
数分後、インストールが完了されます。
3.データベースの作成
先にリスナーを作っておきます。
クライアントとデータベースのセッションの橋渡しをするサービスです。
データベースを作りましょう。
スタートメニューから「Database Configuration Assistant(DBCA)」を探して起動します。
4.接続確認
接続コマンド
sqlplus "sys/kpassw0rd@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.30.101.198)(PORT=1521))(CONNECT_DATA=(SID=sourcedb)))" as sysdba
または
sqlplus sys/password as sysdba
それでは接続できるか確認してみましょう。
5.Oracleサービス終了時にSHUTDOWN IMMEDIATEがかかるようにしておく
6.移行用ユーザとデータの作成
テストスキーマ作成して必要な権限、表領域のQUOTAを振り分ける。
create user dmsuser IDENTIFIED BY "dmsuser";
grant resource,connect to dmsuser;
alter user dmsuser quota 100m on USERS;
AWS DMS のセルフマネージド型 Oracle ソースで必要なユーザーアカウント権限
AWS DMS でソースとして Oracle データベースを使用するには、Oracle エンドポイント接続設定で指定された Oracle ユーザーに次の権限を付与します。
GRANT CREATE SESSION TO dmsuser;
GRANT SELECT ANY TRANSACTION TO dmsuser;
GRANT SELECT ON V_$ARCHIVED_LOG TO dmsuser;
GRANT SELECT ON V_$LOG TO dmsuser;
GRANT SELECT ON V_$LOGFILE TO dmsuser;
GRANT SELECT ON V_$LOGMNR_LOGS TO dmsuser;
GRANT SELECT ON V_$LOGMNR_CONTENTS TO dmsuser;
GRANT SELECT ON V_$DATABASE TO dmsuser;
GRANT SELECT ON V_$THREAD TO dmsuser;
GRANT SELECT ON V_$PARAMETER TO dmsuser;
GRANT SELECT ON V_$NLS_PARAMETERS TO dmsuser;
GRANT SELECT ON V_$TIMEZONE_NAMES TO dmsuser;
GRANT SELECT ON V_$TRANSACTION TO dmsuser;
GRANT SELECT ON V_$CONTAINERS TO dmsuser;
GRANT SELECT ON ALL_INDEXES TO dmsuser;
GRANT SELECT ON ALL_OBJECTS TO dmsuser;
GRANT SELECT ON ALL_TABLES TO dmsuser;
GRANT SELECT ON ALL_USERS TO dmsuser;
GRANT SELECT ON ALL_CATALOG TO dmsuser;
GRANT SELECT ON ALL_CONSTRAINTS TO dmsuser;
GRANT SELECT ON ALL_CONS_COLUMNS TO dmsuser;
GRANT SELECT ON ALL_TAB_COLS TO dmsuser;
GRANT SELECT ON ALL_IND_COLUMNS TO dmsuser;
GRANT SELECT ON ALL_ENCRYPTED_COLUMNS TO dmsuser;
GRANT SELECT ON ALL_LOG_GROUPS TO dmsuser;
GRANT SELECT ON ALL_TAB_PARTITIONS TO dmsuser;
GRANT SELECT ON SYS.DBA_REGISTRY TO dmsuser;
GRANT SELECT ON SYS.OBJ$ TO dmsuser;
GRANT SELECT ON DBA_TABLESPACES TO dmsuser;
GRANT SELECT ON DBA_OBJECTS TO dmsuser; -– Required if the Oracle version is earlier than 11.2.0.3.
GRANT SELECT ON SYS.ENC$ TO dmsuser; -– Required if transparent data encryption (TDE) is enabled. For more information on using Oracle TDE with AWS DMS, see 使用 Oracle 作为 AWS DMS 源时支持的加密方法.
GRANT SELECT ON GV_$TRANSACTION TO dmsuser; -– Required if the source database is Oracle RAC in AWS DMS versions 3.4.6 and higher.
exit;
移行用ユーザとしてログインする。
create table dmstable1 (no NUMBER,name VARCHAR2(30));
begin for i in 1..10 loop insert into dmstable1 values (1,'m'); end loop; commit; end;
/
create table dmstable2 (no NUMBER,name VARCHAR2(30));
begin for i in 1..10 loop insert into dmstable2 values (1,'m'); end loop; commit; end;
/
#終わったら、データが正しく挿入したことを確認する。
select * from dmstable1;
select * from dmstable2;
#countで行数チェックする。
select count(*) from dmstable1;
select count(*) from dmstable2;
実行時のログ
Microsoft Windows [Version 10.0.17763.3770]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Users\Administrator>sqlplus "sys/kpassw0rd@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.30.101.198)(PORT=1521))(CONNECT_DATA=(SID=sourcedb)))" as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on 火 1月 10 13:59:10 2023
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
に接続されました。
SQL> create user dmsuser IDENTIFIED BY "dmsuser";
ユーザーが作成されました。
SQL> grant resource,connect to dmsuser;
権限付与が成功しました。
SQL> alter user dmsuser quota 100m on USERS;
ユーザーが変更されました。
SQL>
SQL>
SQL> GRANT CREATE SESSION TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ANY TRANSACTION TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON V_$ARCHIVED_LOG TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON V_$LOG TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON V_$LOGFILE TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON V_$LOGMNR_LOGS TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON V_$LOGMNR_CONTENTS TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON V_$DATABASE TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON V_$THREAD TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON V_$PARAMETER TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON V_$NLS_PARAMETERS TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON V_$TIMEZONE_NAMES TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON V_$TRANSACTION TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON V_$CONTAINERS TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON ALL_INDEXES TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON ALL_OBJECTS TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON ALL_TABLES TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON ALL_USERS TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON ALL_CATALOG TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON ALL_CONSTRAINTS TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON ALL_CONS_COLUMNS TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON ALL_TAB_COLS TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON ALL_IND_COLUMNS TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON ALL_ENCRYPTED_COLUMNS TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON ALL_LOG_GROUPS TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON ALL_TAB_PARTITIONS TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON SYS.DBA_REGISTRY TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON SYS.OBJ$ TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON DBA_TABLESPACES TO dmsuser;
権限付与が成功しました。
SQL>
SQL>
SQL> GRANT SELECT ON DBA_OBJECTS TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON SYS.ENC$ TO dmsuser;
権限付与が成功しました。
SQL> GRANT SELECT ON GV_$TRANSACTION TO dmsuser;
権限付与が成功しました。
SQL>
SQL>
SQL> exit;
Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Productionとの接続が切断されました。
C:\Users\Administrator>
C:\Users\Administrator>
C:\Users\Administrator>sqlplus "dmsuser/dmsuser@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.30.101.198)(PORT=1521))(CONNECT_DATA=(SID=sourcedb)))"
SQL*Plus: Release 12.1.0.2.0 Production on 火 1月 10 14:04:31 2023
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
に接続されました。
SQL> create table dmstable1 (no NUMBER,name VARCHAR2(30));
表が作成されました。
SQL> begin for i in 1..10 loop insert into dmstable1 values (1,'m'); end loop; commit; end;
2 /
PL/SQLプロシージャが正常に完了しました。
SQL> create table dmstable2 (no NUMBER,name VARCHAR2(30));
表が作成されました。
SQL> begin for i in 1..10 loop insert into dmstable2 values (1,'m'); end loop; commit; end;
2 /
PL/SQLプロシージャが正常に完了しました。
SQL> select * from dmstable1;
NO NAME
---------- ------------------------------------------------------------
1 m
1 m
1 m
1 m
1 m
1 m
1 m
1 m
1 m
1 m
10行が選択されました。
SQL> select * from dmstable2;
NO NAME
---------- ------------------------------------------------------------
1 m
1 m
1 m
1 m
1 m
1 m
1 m
1 m
1 m
1 m
10行が選択されました。
SQL> select count(*) from dmstable1;
COUNT(*)
----------
10
SQL> select count(*) from dmstable2;
COUNT(*)
----------
10
SQL>
7.Windowsファイアウォールの設定
以上、移行用DBの作成が完了しました。
次はDMSのリソースを作成します。長くなるので別のブログで紹介します。
参考
https://qiita.com/danishi/items/1e8b25c62e9240e098aa
https://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Source.Oracle.html