0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RDS for PostgreSQLへのOrafceの導入方法

Posted at

はじめに

RDS for PostgreSQLでOrafceを使えるようにするには公式の記事の方法だけではできなかったので私なりの導入手順を載せようと思います。

AWS公式の記事

原因

Orafceを導入した際に作成されるOracleスキーマにsearch_pathがsetされていなかった。

手順1

まず、上記のAWS公式の記事を参考に以下の手順を行ってください。

  • Orafce拡張機能オン
  • Oracleスキーマの所有者へrds_superuserロールを付与

ロールが付与できたか確認するには以下のコマンドを実行してください。

権限確認
コード
```SELECT roleid::regrole, member::regrole					
					
db-> FROM pg_auth_members					
					
db-> WHERE member = 'Orafce_user'::regrole					
					
db-> AND roleid = 'rds_superuser'::regrole;					
					
roleid | member					
					
---------------+-------------					
					
rds_superuser | orafce_user					
					
(1 行)

手順2

ここからは公式の記事には載っていなかった内容です。
まずは現在の環境変数を確認します。

db=> SHOW search_path;		
   search_path		
-----------------		
 "$user", public		
(1 行)		

RDSではデフォルトで環境変数がpublicになっているようです。
また、$userがありますが、これはログインしたユーザーと同じ名前のスキーマをまずは検索するように設定されたものです。

ここにOracleスキーマを加えたいのです。
以下の様にセットしていきます。

db=> set search_path to "$user", oracle;					
SET					
db=> SHOW search_path;					
            search_path					
-----------------------------------					
 "$user", oracle					
(1 行)

これで環境変数にOracleスキーマのパスを設定できました。

稼働確認

稼働確認にはDUALテーブルが使えることを確認できればいいので、以下の様にクエリを打ってください。

db=> SELECT * FROM dual;
 dummy
-------
 X
(1 行)

実行結果がこのようになれば成功です。
OrafceはOracleのシステムテーブルDUALを模倣して提供されたものらしく、Oracleではよく使われる仮想テーブルなので上記の方法でDUALテーブルを使えることが確認できれば、無事Orafceの導入が完了ということになります。

また念には念を、、、
以下の様にoracle特有のデータ型を持ったテーブルが作成できるか試してみます。

db=> CREATE TABLE emp(emp_id NUMERIC, first_name VARCHAR2(30), last_name NVARCHAR2(30), birth_date DATE);												
CREATE TABLE												
												
db=> \d emp												
(省略)
------------+-----------------+---------------------------+-------------------+------------------------------												
 emp_id     | numeric         |                           |                   |												
 first_name | varchar2(30)    |                           |                   |												
 last_name  | nvarchar2(30)   |                           |                   |												
 birth_date | date            |                           |                   |				

結果がこのように、Postgresqlがサポートされていないデータ型を持ったテーブル作成できていたらorafceが使えているという事になります!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?