株式会社コーソル

コーソルDatabaseエンジニアのブログ

技術ブログ

オンプレミスのOracle DatabaseからOracle Database Cloud Serviceを作成する

このエントリは、JPOUG Advent Calendar 2015 の 14日目の記事です。

昨日の記事は Kenichi Mihara さん の 実行計画を実行順に表示させてみる | サイクル&オラクル でした。
実行計画の実行順序は、実行計画で実行されている処理の意味を理解するために重要なポイントであるにも関わらず、適切な説明が少ないと感じていました。
実行計画の実行順序を正確に理解することは重要ですので、ぜひ参考にされてはどうでしょうか。

さて、私の記事はと言いますと・・・、全世界のOracle Cloudブログエントリの中でもっとも役に立たない記事だと思います。:-P スミマセン 。

オンプレミス環境のOracle DatabaseからOracle Database Cloud Serviceを作成してみました。

SQL> set serveroutput on
SQL> declare
  2    ORACLECLOUD_USER      VARCHAR2(4000) := 'ryota.watabe@cosol.jp';
  3    ORACLECLOUD_PWD       VARCHAR2(4000) := 'password_string';
  4    ORACLECLOUD_IDDOMAIN  VARCHAR2(4000) := 'jpcosolxxxx';
  5    PUBSSHKEY_TEXT        VARCHAR2(4000) := 'ssh-rsa ... (snip) ...';
  6
  7    ORACLECLOUD_INSTNAME varchar2(4000) := 'The-Most-Useless-DBCS-Example';
  8    ORACLE_DB_ADMIN_PWD varchar2(4000) := 'Oracle123_';
  9
 10    ORACLE_WALLET_PATH varchar2(100) := 'file:/var/tmp/wallet';
 11    ORACLE_WALLET_PWD  varchar2(100) := 'WalletPasswd123';
 12    req UTL_HTTP.REQ;
 13    res UTL_HTTP.RESP;
 14
 15    url varchar2(4000) := 'https://dbaas.oraclecloud.com/paas/service/dbcs/api/v1.1/instances/'
 16       || ORACLECLOUD_IDDOMAIN;
 17    name varchar2(4000);
 18    value VARCHAR2(1024);
 19    buffer varchar2(4000);
 20
 21    createdb_json varchar2(4000) := '
 22  {
 23    "serviceName": "' || ORACLECLOUD_INSTNAME || '",
 24    "version": "12.1.0.2",
 25    "level": "PAAS",
 26    "edition": "EE_EP",
 27    "subscriptionType": "HOURLY",
 28    "description": "created by REST API",
 29    "shape": "oc3",
 30    "parameters": [
 31      {
 32      "type": "db",
 33      "usableStorage": "15",
 34      "adminPassword": "' || ORACLE_DB_ADMIN_PWD || '",
 35      "sid": "ORCL",
 36      "pdb": "PDB1",
 37      "failoverDatabase": "no",
 38      "backupDestination": "DISK"
 39      }
 40    ],
 41    "vmPublicKeyText": "' || PUBSSHKEY_TEXT || '"
 42  }
 43  ';
 44
 45  begin
 46    -- DBMS_OUTPUT.PUT_LINE(createdb_json);
 47
 48    UTL_HTTP.set_wallet(ORACLE_WALLET_PATH, ORACLE_WALLET_PWD);
 49    req := UTL_HTTP.BEGIN_REQUEST(url, 'POST',' HTTP/1.1');
 50    UTL_HTTP.SET_AUTHENTICATION(req, ORACLECLOUD_USER, ORACLECLOUD_PWD);
 51    UTL_HTTP.SET_HEADER(req, 'user-agent', 'mozilla/4.0');
 52    UTL_HTTP.SET_HEADER(req, 'content-type', 'application/json');
 53    UTL_HTTP.SET_HEADER(req, 'X-ID-TENANT-NAME', ORACLECLOUD_IDDOMAIN);
 54    UTL_HTTP.SET_HEADER(req, 'Content-Length', length(createdb_json));
 55
 56    UTL_HTTP.WRITE_TEXT(req, createdb_json);
 57    res := UTL_HTTP.GET_RESPONSE(req);
 58
 59    -- handle HTTP respose
 60    DBMS_OUTPUT.PUT_LINE('HTTP response status code: ' || res.status_code);
 61    DBMS_OUTPUT.PUT_LINE('HTTP response reason phrase: ' || res.reason_phrase);
 62    FOR i IN 1..UTL_HTTP.GET_HEADER_COUNT(res) LOOP
 63      UTL_HTTP.GET_HEADER(res, i, name, value);
 64      DBMS_OUTPUT.PUT_LINE(name || ': ' || value);
 65    END LOOP;
 66
 67    begin
 68      loop
 69        UTL_HTTP.READ_LINE(res, buffer);
 70        DBMS_OUTPUT.PUT_LINE(buffer);
 71      end loop;
 72      UTL_HTTP.END_RESPONSE(res);
 73    exception
 74      when UTL_HTTP.END_OF_BODY
 75      then
 76        UTL_HTTP.END_RESPONSE(res);
 77    end;
 78  end;
 79  /
HTTP response status code: 202
HTTP response reason phrase: Accepted
Date: Fri, 11 Dec 2015 05:28:47 GMT
Server: Oracle-Application-Server-11g
Location:
https://dbaas.oraclecloud.com:443/paas/service/dbcs/api/v1.1/instances/jpcosolxxxx/status/create/job/759758
Content-Length: 0
X-ORACLE-DMS-ECID: (snip)
X-ORACLE-DMS-ECID: (snip)
X-Frame-Options: DENY
Service-URI:
https://dbaas.oraclecloud.com:443/paas/service/dbcs/api/v1.1/instances/jpcosolxxxx/The-Most-Useless-DBCS-Example
Vary: Accept-Encoding,User-Agent
Retry-After: 60
Content-Language: en
Connection: close
Content-Type: application/json

PL/SQLプロシージャが正常に完了しました。

SQL>

create_dbcs_using_rest_api.png

技術的な解説は別記事に。:-P

JPOUG Advent Calendar 2015の15日目は、おおの たかし さんです。私と違って、役に立つ内容であるはず 😛 、おおのさん、よろしくおねがいします!

プロフィール

On7tWW6m1Ul4

渡部 亮太

・Oracle ACE
・AWS Certified Solutions Architect - Associate
・ORACLE MASTER Platinum Oracle Database 11g, 12c 他多数

カテゴリー

アーカイブ