技術ブログ
技術ブログ
このエントリは、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>
技術的な解説は別記事に。:-P
JPOUG Advent Calendar 2015の15日目は、おおの たかし さんです。私と違って、役に立つ内容であるはず 😛 、おおのさん、よろしくおねがいします!