File tree Expand file tree Collapse file tree 5 files changed +46
-64
lines changed
Expand file tree Collapse file tree 5 files changed +46
-64
lines changed Original file line number Diff line number Diff line change @@ -166,7 +166,14 @@ uv run pg_connect_test.py
166166以下の手順に従って、データベースオブジェクトをアップロードしてください。
1671671 . ` ./import-schema/dumpfile ` に ` {name}_METADATAONLY.DMP ` をアップロードしてください。
1681682 . ` import-schema ` フォルダ配下の各シェルスクリプトについて、コメントの指示に従い、スキーマ名でループしている箇所に、アップロードしたファイルのスキーマ名を列挙してください。
169- 3 . ` import-schema ` フォルダ配下のシェルスクリプトを番号順に実行してください。権限不足でエラーが出る場合には ` chmod +x import-schema/1pre.sh ` のように権限付与してください。
169+ 3 . ` import-schema ` フォルダ配下のシェルスクリプトを番号順に実行してください。
170+
171+ ``` bash
172+ chmod +x import-schema/1pre.sh
173+ ./import-schema/1pre.sh
174+ chmod +x import-schema/2load.sh
175+ ./import-schema/2load.sh
176+ ```
170177
171178` 2load.sh ` で以下のエラーが出る場合は、Oracle on EC2 インスタンスに oracle ユーザーでログインし、パスが一致するようにディレクトリを作成し、ダンプファイルを移動してください。
172179
@@ -253,3 +260,25 @@ https://docs.aws.amazon.com/ja_jp/amazonq/latest/qdeveloper-ug/command-line-inst
253260https://catalog.workshops.aws/qwords/ja-JP/10-start-workshop/16-builder-id
254261
255262
263+ ### Oracle Database への接続方法
264+
265+ ``` bash
266+ # Oracle XE on EC2 インスタンスへの接続
267+ cd sample-sql-converter-agent-workshop/
268+ ssh -F ssh-config oracle
269+
270+ # Oracle ユーザーに遷移
271+ sudo su - oracle
272+
273+ # Oracle Database の SYSおよびSYSTEMスキーマのパスワードを取得
274+ SECRET_JSON=$( aws secretsmanager get-secret-value --secret-id oracle-credentials --region us-east-1 --query SecretString --output text)
275+ DB_PASSWORD=$( echo " $SECRET_JSON " | jq -r ' .password' )
276+
277+ # Oracle Database に接続
278+ sqlplus sys/${DB_PASSWORD} @localhost/XEPDB1 as sysdba
279+
280+ sqlplus system/${DB_PASSWORD} @localhost/XEPDB1
281+
282+ ```
283+
284+
Original file line number Diff line number Diff line change 1414 • すべての内部関数を別個の独立した関数として定義します
1515 • メインの手続きから呼び出す構造に変更します
1616
17- ### テスト考慮事項
17+ ## テスト考慮事項
1818• Oracle環境、PostgreSQL環境に変換対象のオブジェクトが参照するテーブルや索引があるか確認します
1919• 存在する場合は新たにDDLを作成するのではなく、それら表や索引といったオブジェクトを利用します。またそれらオブジェクトはDROPしないようにします
2020
21- ### データ型・関数マッピング
21+ ## データ型・関数マッピング
2222• **データ型変換**:VARCHAR2 → VARCHAR
2323• **関数変換**:
2424 • NVL → COALESCE
2525 • DECODE → CASE
26- • SYSDATE → CURRENT_TIMESTAMP
26+ • Sysdateの扱い
27+ Oracle側でSYSDATEを利用している場合は、PostgreSQL側で以下の関数を作成し、この関数を利用することを前提に変換してください。
28+
29+ ```sql
30+ CREATE OR REPLACE FUNCTION PUBLIC.sysdate()
31+ RETURNS TIMESTAMP WITHOUT TIME ZONE
32+ AS
33+ $BODY$
34+ SELECT clock_timestamp() AT TIME ZONE 'Asia/Tokyo';
35+ $BODY$
36+ LANGUAGE sql;
37+ ```
38+ ref. https://aws.amazon.com/jp/blogs/news/converting-the-sysdate-function-from-oracle-to-postgresql/
2739
2840## データ型変換
2941- OracleのRECORD型またはTYPE宣言の場合:
Original file line number Diff line number Diff line change 22
33set -e
44
5- # Oracle IPアドレスを環境変数から取得
6- # if [ -z "$ORACLE_IP" ]; then
7- # echo "Error: ORACLE_IP environment variable is not set"
8- # exit 1
9- # fi
10-
115# Oracle DatabaseのパスワードをSecret Manager から取得
126SECRET_JSON=$( aws secretsmanager get-secret-value --secret-id oracle-credentials --region us-east-1 --query SecretString --output text)
137export DB_PASSWORD=$( echo " $SECRET_JSON " | jq -r ' .password' )
4539done
4640
4741# ローカルのダンプファイルをOracle on EC2 インスタンスの/tmpにコピー
48- scp -F ssh-config ./load /dumpfile/* .DMP oracle:/tmp/.
42+ scp -F ssh-config ./import-schema /dumpfile/* .DMP oracle:/tmp/.
4943
5044# Oracle on EC2 インスタンスにダンプファイル用ディレクトリを作成
5145ssh -tt -F ssh-config oracle << EOF
Original file line number Diff line number Diff line change 22
33set -e
44
5- # Oracle IPアドレスを環境変数から取得
6- # if [ -z "$ORACLE_IP" ]; then
7- # echo "Error: ORACLE_IP environment variable is not set"
8- # exit 1
9- # fi
10-
11-
125# AWS Secrets Managerからパスワード取得
136SECRET_JSON=$( aws secretsmanager get-secret-value --secret-id oracle-credentials --region us-east-1 --query SecretString --output text)
147export DB_PASSWORD=$( echo " $SECRET_JSON " | jq -r ' .password' )
Load Diff This file was deleted.
You can’t perform that action at this time.
0 commit comments