• 検索結果がありません。

シバタツ流! 無料のオラクル純正開発ツールで、データベース・システムの開発効率を改善しよう!

N/A
N/A
Protected

Academic year: 2021

シェア "シバタツ流! 無料のオラクル純正開発ツールで、データベース・システムの開発効率を改善しよう!"

Copied!
108
0
0

読み込み中.... (全文を見る)

全文

(1)

シバタツ流流!

 

無料料の

 

オラクル純正開発ツールで

、  

データベース・システムの

 

開発効率率率を改善しよう!

 

⽇日本オラクル株式会社  

クラウド・テクノロジー事業統括  

クラウド・テクノロジー製品戦略略統括本部  

(2)

以下の事項は

弊社の⼀一般的な製品の⽅方向性に関する概要を説明す

るものです

また

情報提供を唯⼀一の⽬目的とするものであり

いか

なる契約にも組み込むことはできません

以下の事項は

マテリア

ルやコード

機能を提供することをコミットメント(確約)するも

のではないため

購買決定を⾏行行う際の判断材料料になさらないで下さ

オラクル製品に関して記載されている機能の開発

リリースお

よび時期については

弊社の裁量量により決定されます

Oracle

とJavaは

Oracle  Corpora@on  

及びその⼦子会社

関連会社の⽶米国及びその他の国における登録商標です

 

(3)

シバタツって誰?  

Oracle  DBA  &  Developer  Day  

で5年年連続講演中  

データベース・パフォーマンス・  

チューニング・エンジニアとして  

顧客の実アプリケーションと実データを使った  

Proof  of  Concept  (PoC)  

を  Oracle  Exadata  で実施  

ここ最近は  Exadata  PoC  チームの  

マネージメント業務が多い  

⾃自分のマネージメント

業務効率率率化のために

(4)

1.

Oracle  Applica@on  Express  

47%  

3.

SQLcl  

19%  

2.

Oracle  SQL  Developer  

22%  

4.

Oracle  Live  SQL  

12%  

アジェンダ  

DB

セットアップはクラウドで速くなった。

DB

システム開発はどうだ?

 

(5)
(6)

Oracle  Applica@on  Express  (APEX)  

とは  

レスポンシブWebアプリケーション⽤用の無料料IDE  +  サーバー  

Web

ブラウザだけで開発可能  

2004

年年にリリース

最新バージョンは5.0  

Oracle  Database  

のサポート契約に  

Applica@on  Express  

のサポートも含まれる  

(7)

これだけで9割作れる、

4

種類のページ・タイプ  

参照系ページ・タイプ

入力系ページ・タイプ

1行のデータに特化

レポート

 

• 

1行のデータを1枚のページに  

縦に表示したもの

 

• 

例えば “シバタツの履歴書”

DMLフォーム  

• 

1行のデータを1ページのフォームに  

したもの

 

• 

いわゆる普通の

Webフォーム

まとめて表形式

対話モード・レポート

 

• 

Excelのフィルターのように

 

様々な条件などを指定できる表

 

• 

例えば “応募者一覧”

表形式フォーム

 

• 

Excelのように

、表形式で

 

まとめて入力できるフォーム

(8)

まとめて表形式の参照系ページ  

(9)

1

⾏行行のデータに特化した参照系ページ  

(10)

1

⾏行行のデータに特化した⼊入⼒力力系ページ  

(11)

まとめて表形式の⼊入⼒力力系ページ  

(12)

オンプレミスの  

開発環境など  

 

サポートが受けられる  

 

アクセス制限が  

⽐比較的容易易  

×  

 

Applica@on  Express  

の  

セットアップが必要  

Oracle  Database  Cloud  

Schema  Service  

 

サポートが受けられる  

 

外部公開が容易易  

 

Applica@on  Express  

の  

セットアップ不不要  

 

DBA

管理理不不要  

 

容量量5GB  /  転送量量30GBで  

⽉月額175⽶米ドルから  

h^p://apex.oracle.com/  

 

Database

 ライセンス  /    

サブスクリプション不不要  

 

外部公開が容易易  

 

Applica@on  Express  

の  

セットアップ不不要  

 

DBA

管理理不不要  

×

 

サポートなし  

×

 

試使⽤用⽬目的のみ

 

本番データ  /  機密情報の  

保存禁⽌止  

Applica@on  Express  

をどこで動かすか  

(13)

⽤用途不不問

 

無期限

 

容量量

100MB

まで

 

(14)

apex.oracle.com

にアカウントを作る  

1.

h^ps://apex.oracle.com/jp/  

へ  

2.

「はじめよう」をクリック  

3.

フリー・ワークスペース  

4.

アプリケーション開発  

ワークスペース:  DBインスタンスのようなもの  

スキーマ:  デフォルト・スキーマ  

(15)

アプリケーション・ビルダー

 

Web

アプリケーションを作る

 

チーム開発  

マイルストン管理理  

バグ・トラッキング  

フィードバック  

SQL

ワークショップ  

オブジェクト・ブラウザ  

SQL

コマンドライン  

SQL

スクリプト実⾏行行  

パッケージ・アプリケーション  

サード・パーティ・  

アプリケーションの  

インストールと管理理  

App  Store  

みたいなもの  

Applica@on  Express  

の4つのタブ  

(16)

アプリケーションを作ってみよう  

1.

アプリケーション・ビルダー  

2.

作成  

3.

アプリケーションのタイプ「デスクトップ」  

認証スキーム  

Applica@on  Express  

アカウント  

シングル・サインオン  (SSO)  

データベース・アカウント  

認証なし  

(17)

対話モード・レポートを作ってみよう  

参照系ページ・タイプ

入力系ページ・タイプ

1行のデータに特化

レポート

 

• 

1行のデータを1枚のページに  

縦に表示したもの

 

• 

例えば “シバタツの履歴書”

DMLフォーム  

• 

1行のデータを1ページのフォームに  

したもの

 

• 

いわゆる普通の

Webフォーム

まとめて表形式

対話モード・レポート

 

Excel

のフィルターのように

 

様々な条件などを指定できる表

 

例えば “応募者一覧”

表形式フォーム

 

• 

Excelのように

、表形式で

 

まとめて入力できるフォーム

(18)

対話モード・レポートを作ってみよう  (1/2)  

1.

ページの作成  

2.

レポート  

3.

対話モード・レポート  

リージョン:  ページ内のレポートや  

グラフなどの⼤大きな単位  

アイテム:  テキスト・フィールドなどの  

リージョン内の細々したもの  

(19)

1

つの表からなら

 

表⽰示列列をクリックして選ぶだけ  

「SQL問合せ」を選べば結合可能  

クエリー・ビルダーもある  

(20)

対話モード・レポートの完成  

鉛筆アイコンをクリックすると

単独レポート表⽰示

(21)

列列の選択

SELECT  …  の列列名を減らせる

フィルタ

WHERE句句が書ける。

他の列列の参照や、

関数も使える

フラッシュバック 過去のある時点の

データを表⽰示

レポートの保存

変更更した⾒見見た⽬目を、

名前を付けて保存  /  共有

ダウンロード

CSV,  HTML,  PDFなどで

ダウンロード

強⼒力力な対話機能  

(22)

列列でフィルタ  

例例)⼊入社⽇日が2014年年12⽉月1⽇日以下  

⾏行行でフィルタ  

例例)マネジャーより社員番号が⼩小さく

 

⼊入社から1年年以上  

(23)

ソート:  ORDER  BY  

 

コントロール・ブレイク:  

PARTITION  BY  

(24)

ハイライト  

 

計算:  疑似列列  

(25)

集計  

 

チャート  

(26)

グループ化:  GROUP  BY  

 

ピボット  

(27)

強⼒力力な対話機能まとめ  

ユーザーが書式の変更更を⾏行行える  

変更更した書式は保存できる  

変更更した書式でダウロードできる  

(28)

単独レポートを作ってみよう  

参照系ページ・タイプ

入力系ページ・タイプ

1行のデータに特化

レポート

 

1

行のデータを

1

枚のページに

 

縦に表示したもの

 

例えば “シバタツの履歴書”

DMLフォーム  

• 

1行のデータを1ページのフォームに  

したもの

 

• 

いわゆる普通の

Webフォーム

まとめて表形式

対話モード・レポート

 

• 

Excelのフィルターのように

 

様々な条件などを指定できる表

 

• 

例えば “応募者一覧”

表形式フォーム

 

• 

Excelのように

、表形式で

 

まとめて入力できるフォーム

(29)

対話モード・レポートでも  

単独レポートは作られるが

 

もっと凝ったものにしたい  

1.

ページの作成  

2.

レポート  

3.

クラシック・レポート  

4.

ページ名:  Sample  Classic  Report  

5.

リージョン名:  同上  

(30)

select  EMP.EMPNO  as  EMPNO,  

       EMP.ENAME  as  ENAME,  

       EMP.JOB  as  JOB,  

       EMP.MGR  as  MGR,  

       EMP.HIREDATE  as  HIREDATE,  

       EMP.SAL  as  SAL,  

       EMP.DEPTNO  as  DEPTNO,  

       DEPT.DNAME  as  DNAME,  

       DEPT.LOC  as  LOC    

 from  DEPT  DEPT,  

       EMP  EMP    

 where  EMP.DEPTNO=DEPT.DEPTNO  

先ほどの対話モード・レポートと  

似ているけど

 

もっとシンプルなレポートが  

できた  

単独レポートを作ってみよう  (2/2)  

(31)

1.

Sample  Classic  Report    

リージョンを右クリック  >  

ページ・アイテムの作成  

2.

指定  >  名前:  P3_EMPNO  

3.

指定  >  タイプ:  ⾮非表⽰示  

4.

Sample  Classic  Report  

リージョンをクリック  

5.

where  EMP.DEPTNO  =  …  

の後に

 

and  EMP.EMPNO  =  :P3_EMPNO  

を  

追加  

(32)

1.

対話モード・レポート  

2.

左ペインから

列列  >  EMPNO  

3.

指定  >  タイプ:  リンク  

4.

リンク  >  ターゲット  

5.

ターゲット  >  ページ:  先ほど

作った  Sample  Classic  Report  

6.

アイテムの設定:  

P3_EMPNO  =  #EMPNO#  

7.

リンク・テキスト:  

#EMPNO#  

 

鉛筆アイコンの外し⽅方  

1.

Sample  Classic  Report  

下の  

「属性」フォルダをクリック  

2.

リンク

 

>  

リンク列列:  リンク列列の除外  

(33)

URL

の読み⽅方  

19530:  

アプリケーションID  

3:  

ページID  

41192208312:  

セッションID  

空:  リクエスト・キーワード  

NO:  No  Debug  

RP:  Reset  Pagina@on  

P3_EMPNO:  

パラメーター・キー  

7369:  

パラメーター値  

ゴミのないきれいなURL  

編集後のリンク元ページ  

7369

にリンクされているURL:  

(34)
(35)

1.

Sample  Classic  Report  >  

属性  

2.

外観  >  テンプレート:  

Value  A^ribute  Pairs  -­‐  Column  

(36)

単独レポートの発展のさせかた  

列列名を分かりやすいものに変更更するなどの⾒見見た⽬目の修正  

1

枚のページに複数のレポート・リージョンや  

グラフ・リージョンを設置する  

(対話モード・レポートは1枚のページに1個まで)  

横向きの対話モード・レポートでは  

URL

などの⻑⾧長い情報は表⽰示させず

 

表⽰示される列列を限定し

 

単独レポートですべてを表⽰示する  

(37)

Sample  Classic  Report  

ページの  

Content  Body  

を右クリック  >  

リージョンの作成  

指定  >  タイトル:  メンバー⼀一覧  

タイプ:  クラシック・レポート  

SQL

問合せ:

 

select  EMP.EMPNO  as  EMPNO,  

       EMP.ENAME  as  ENAME    

 from  EMP  EMP  

(38)

レポート作成に便便利利なSQLテクニック:  LISTAGG  

select  EMP.EMPNO,  EMP.ENAME,  DIR.DNAME  

 from  EMP,  

     (select  MGR,  

           

listagg(ENAME,  ',  ')  

               within  group  (order  by  ENAME)  

DNAME  

         from  EMP  

         group  by  MGR  

     )  DIR  

 where  EMP.EMPNO  =  DIR.MGR  

 order  by  EMP.ENAME  

1:N

のデータを

指定した区切切り⽂文字でつなげる  

EMPNO   ENAME   DNAME  

7698  

BLAKE  

ALLEN,  JAMES,  MARTIN,  

TURNER,  WARD  

7782  

CLARK   MILLER  

7902  

FORD  

SMITH  

7566  

JONES   FORD,  SCOTT  

7839  

KING  

BLAKE,  CLARK,  JONES  

7788  

SCOTT   ADAMS  

(39)

レポート作成に便便利利なSQLテクニック:  PARTITION  BY  

select  EMP.EMPNO,  EMP.ENAME,  

   DIR.ENAME  LAST_DIRECT  

 from  EMP,  

     (select  MGR,  ENAME,  HIREDATE,  

           

max(HIREDATE)  

               over  (partition  by  MGR)  MAX_HIREDATE  

         from  EMP  

     )  DIR  

 where  DIR.HIREDATE  =  DIR.MAX_HIREDATE  

 and  EMP.EMPNO  =  DIR.MGR  

 order  by  EMP.ENAME  

1:N

のデータの中から

最新ものだけを表⽰示する  

EMPNO   ENAME   LAST_DIRECT  

7698  

BLAKE  

JAMES  

7782  

CLARK   MILLER  

7902  

FORD  

SMITH  

7566  

JONES   SCOTT  

(40)

DML

フォームを作ってみよう  

参照系ページ・タイプ

入力系ページ・タイプ

1行のデータに特化

レポート

 

• 

1行のデータを1枚のページに  

縦に表示したもの

 

• 

例えば “シバタツの履歴書”

DMLフォーム  

1

行のデータを

1

ページのフォームに

 

したもの

 

いわゆる普通の

Web

フォーム

まとめて表形式

対話モード・レポート

 

• 

Excelのフィルターのように

 

様々な条件などを指定できる表

 

• 

例えば “応募者一覧”

表形式フォーム

 

• 

Excelのように

、表形式で

 

まとめて入力できるフォーム

(41)

1.

ページの作成  

2.

フォーム  

3.

表またはビューのフォーム  

4.

表/ビューの名前:  EMP  (表)  

5.

ページ名:  Sample  DML  Form  

6.

主キーのタイプ:  

主キー列列の選択  

7.

主キー列列1:  EMPNO  

8.

ソース・タイプ:  

既存のトリガー  

9.

列列の選択:  全列列  

10.

送信時にここにブランチ:  2  

取消し時にここにブランチ:  2  

DML

フォームを作ってみよう  (1/2)  

(42)

DML

フォームを作ってみよう  (2/2)  

できたことはできたが

(43)

選択リスト  

1.

P4_DEPTNO

を選択  

2.

指定  >  タイプ:  選択リスト  

3.

LOV  >  

タイプ:  SQL問合せ  

4.

SQL

問合せ:  

1

列列⽬目に選択リストに表⽰示したい値  

2

列列⽬目に実際に⼊入⼒力力したい値  

select  DNAME,  DEPTNO  

 from  DEPT  

(44)

選択項⽬目がたくさんあるあるとき:  ポップアップLOV  

1.

P4_DEPTNO

を選択  

2.

指定  >  タイプ:  

ポップアップ

LOV  

3.

LOV  >  

タイプ:  SQL問合せ  

4.

SQL

問合せ:  

1

列列⽬目にポップアップLOVに表⽰示したい値  

2

列列⽬目に実際に⼊入⼒力力したい値  

select  DNAME,  DEPTNO  

 from  DEPT  

(45)

7.

動作  >  アクション:  

このアプリケーションの  

別ページにリダイレクト  >  2  

1.

対話モード・レポート  

2.

画⾯面下からボタン  >

 

Text  

3.

追加先:  Sample  Interac@ve  

Report  >  

対話モード・  

レポートの検索索バーの右  

4.

新規ボタンをクリック  

5.

ボタン名:  CREATE  

作成ボタンを作ってみよう  

(46)

1.

単独レポート  

2.

画⾯面下からボタン  >  Text  

3.

追加先:  Sample  Classic  Report  >  

Edit  

4.

新規ボタンをクリック  

5.

ボタン名:  EDIT  

6.

ラベル:  編集  

7.

動作  >  アクション:  

このアプリケーションの  

別ページにリダイレクト  >  4  

8.

アイテムの設定:  

P4_EMPNO  =  &P3_EMPNO.  

 

編集ボタンを作ってみよう  

(47)

表形式フォームを作ってみよう  

参照系ページ・タイプ

入力系ページ・タイプ

1行のデータに特化

レポート

 

• 

1行のデータを1枚のページに  

縦に表示したもの

 

• 

例えば “シバタツの履歴書”

DMLフォーム  

• 

1行のデータを1ページのフォームに  

したもの

 

• 

いわゆる普通の

Webフォーム

まとめて表形式

対話モード・レポート

 

• 

Excelのフィルターのように

 

様々な条件などを指定できる表

 

• 

例えば “応募者一覧”

表形式フォーム

 

Excel

のように

表形式で

 

まとめて入力できるフォーム

(48)

1.

ページの作成  

2.

フォーム  

3.

表形式フォーム  

4.

表/ビューの名前:  EMP  (表)  

5.

更更新可能な列列:  全列列  

主キーは選択不不可能  

6.

ページ名:  Sample  Tabular  Form  

(49)

Web

アプリケーションがほぼ完成  

参照系ページ・タイプ

入力系ページ・タイプ

1行のデータに特化

レポート

 

• 

1行のデータを1枚のページに  

縦に表示したもの

 

• 

例えば “シバタツの履歴書”

DMLフォーム  

• 

1行のデータを1ページのフォームに  

したもの

 

• 

いわゆる普通の

Webフォーム

まとめて表形式

対話モード・レポート

 

• 

Excelのフィルターのように

 

様々な条件などを指定できる表

 

• 

例えば “応募者一覧”

表形式フォーム

 

• 

Excelのように

、表形式で

 

まとめて入力できるフォーム

(50)

1.

共有コンポーネント  

2.

セキュリティ  >  認可スキーム  

3.

作成  >  最初から  

4.

名前:  従業員  

(EMP表に載っているユーザーのみ)  

5.

スキーム・タイプ:  

EXISTS  SQL  

問合せ  

6.

SQL

問合せ

 

select  1  

       from  EMP  

       where  ENAME  =    

           replace(  

               upper(V('APP_USER')),  

               '@EXAMPLE.COM',  ''  

           )

 

ユーザー名は  V('APP_USER')  

⼤大⽂文字⼩小⽂文字区別なしに

認証される

“ほぼ”  の残り:  認可スキームの作成  

(51)

1.

ページ2:  Sample  Interac@ve  

Report  

2.

セキュリティ  >  認可スキーム:  

従業員  

開発者としてログイン  

していても権限確認されるが

 

開発者は

なぜ拒否されたかが  

“ほぼ”  の残り:  認可スキームの割当て  

(52)

1.

SQL

ワークショップ  

2.

RESTful

サービス  

3.

oracle.example.hr  

4.

employees/{id}  >  GET  

5.

ソース  

select  *  from  emp  

 where  empno  =  :id  

6.

テスト  >  バインド変数の設定  

7.

:ID  =  7782  >  

テスト  

(53)

Applica@on  Express  

2

⽇日で開発者ガイド  

for  Oracle  Database  12c  

Applica@on  Express  

アプリケーション・ビルダー・  

ユーザーズ・ガイド  

for  Oracle  Database  12c  

もっと詳しく知りたい  

(54)
(55)

Oracle  SQL  Developer  

とは  

Oracle  Database  /  Oracle  NoSQL  Database  /  

Oracle  TimesTen  

⽤用の無料料  GUI  IDE  

Windows,  Mac,  Linux,  Unix  

対応  

2006

年年にリリース

最新バージョンは4.1.2  

全世界で400万⼈人以上のユーザー  

(56)

Oracle  Database  Cloud  Schema  Service  

につなごう  

TCP/22

もTCP/1521も  

開いていない  Schema  Service  でも

 

REST

経由でオブジェクト・  

ブラウザが使える  

オンプレミスDBの表を  

カートに経由で  Schema  Service  に  

デプロイすることで

 

データ・ローディングできる  

クラウド接続  

(57)

Oracle  Database  as  a  Service  

につなごう  

Database  as  a  Service  

の  

TCP/1521

はデフォルトでは  

開いていないので

 

TCP/22  (SSH)  

につないで  

ポート転送する  

(58)

踏み台を必要とする環境でつなごう  

Oracle  Database  

サーバーが  

別セグメントにあるなどの理理由で  

踏み台が必要な環境では

 

踏み台でSSHポート転送する  

SSH

ポート転送  

TCP/22  

TCP/1521  

(59)
(60)
(61)

構⽂文補完  (Ctrl  +  Space)  

1

クリック実⾏行行計画  (F10)  

1

クリック⾃自動トレース  (F6)  

(62)

ユーザーが⼊入⼒力力したSQLの履履歴  

表⽰示  >  SQL履履歴  

(Ctrl  +  

↓:  戻る  /  Ctrl  +  ↑:  進む)  

SQL  Developer  

が発⾏行行した  

SQL

のログ  

表⽰示  >  ログ  >  ⽂文  

履履歴の強化  

(63)

Git  /  Subversion

との連携  

PL/SQL

のステップ実⾏行行  

(64)

SELECT  E.LOC,  

   E.DNAME,  

   E.DEPTNO,  

   F.DEPTNO,  

   F.COMM,  

   F.SAL,  

   F.HIREDATE,  

   F.MGR,  

   F.JOB,  

   F.ENAME,  

   F.EMPNO  

FROM  EMP  F,  

   DEPT  E  

WHERE  E.DEPTNO  =  F.DEPTNO;  

(65)
(66)

SET  SQLFORMAT  CSV

 

SELECT  e.empno,  e.ename,  …  

"EMPNO","ENAME","DNAME"  

7369,"SMITH","RESEARCH"  

7499,"ALLEN","SALES"  

7521,"WARD","SALES"  

7566,"JONES","RESEARCH"  

7654,"MARTIN","SALES"  

7698,"BLAKE","SALES"  

7782,"CLARK","ACCOUNTING"  

7788,"SCOTT","RESEARCH"  

7839,"KING","ACCOUNTING"  

…  

SET  SQLFORMAT  JSON  

{"items":[{"empno":

7369,"ename":"SMITH","dname":"RESEARCH"},

{"empno":

7499,"ename":"ALLEN","dname":"SALES"}  …  ]}  

 

SET  SQLFORMAT  XML  

<?xml  version='1.0'    encoding='UTF8'  ?>  

<RESULTS>  

   <ROW>  

       <COLUMN  NAME="EMPNO"><![CDATA[7369]]>  

</COLUMN>  

           <COLUMN  NAME="ENAME"><![CDATA[SMITH]]  

></COLUMN>  

出⼒力力フォーマットの変更更  

(67)

表を右クリック  >    

エクスポート  

エクスポート時にWHERE可能  

表を右クリック  >  

データのインポート  

CSV

やXLSXでのエクスポート  &  インポート  

(68)

表を右クリック  >  

クイックDDL  >  

クリップボードに保存  

索索引  /  制約含めてDDLを⽣生成  

-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐

-­‐-­‐    DDL  for  Table  EMP  

-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  

 

   CREATE  TABLE  "SCOTT"."EMP"    

     (

 "EMPNO"  NUMBER(4,0),    

 "ENAME"  VARCHAR2(10  BYTE),    

 "JOB"  VARCHAR2(9  BYTE),    

 "MGR"  NUMBER(4,0),    

 "HIREDATE"  DATE,    

 "SAL"  NUMBER(7,2),    

 "COMM"  NUMBER(7,2),    

 "DEPTNO"  NUMBER(2,0)  

     )  SEGMENT  CREATION  IMMEDIATE  

…  

(69)

AWR

の  Complete  List  of  SQL  

Text  

から単純にコピペ  

SELECT  dbin.instance_number,  dbin.db_name,  dbin.instance_name,  

dbin.host_name,  dbin.version,  CASE  WHEN  s1.startup_time  =  

s2.startup_time  THEN  0  ELSE  1  END  as  bounce,  CAST(s1.end_interval_time  

AS  DATE)  as  begin_time,  CAST(s2.end_interval_time  AS  DATE)  as  

end_time,  ROUND((cast(  (case  when  s2.end_interval_time  >  

s1.end_interval_time  then  s2.end_interval_time  else  

s1.end_interval_time  end)  as  date)  -­‐  cast(s1.end_interval_time  as  

date))  *  86400)  as  int_secs,  CASE  WHEN  (s1.status  <>  0  OR  s2.status  <>  

0)  THEN  1  ELSE  0  END  as  err_detect,  round(  greatest(  (extract(day  from  

s2.flush_elapsed)  *  86400)  +  (extract(hour  from  s2.flush_elapsed)  *  

3600)  +  (extract(minute  from  s2.flush_elapsed)  *  60)  +  extract(second  

from  s2.flush_elapsed),  (extract(day  from  s1.flush_elapsed)  *  86400)  +  

(extract(hour  from  s1.flush_elapsed)  *  3600)  +  (extract(minute  from  

ワークシートにペーストして  

右クリック  >  書式  (Ctrl  +  F7)  

SELECT  dbin.instance_number,  

   dbin.db_name,  

   dbin.instance_name,  

   dbin.host_name,  

   dbin.version,  

   CASE  

       WHEN  s1.startup_time  =  s2.startup_time  

       THEN  0  

       ELSE  1  

   END                                                                AS  bounce,  

   CAST(s1.end_interval_time  AS  DATE)  AS  begin_time,  

   CAST(s2.end_interval_time  AS  DATE)  AS  end_time,  

   ROUND(

(

CAST(  (  

   CASE  

       WHEN  s2.end_interval_time  >  s1.end_interval_time  

       THEN  s2.end_interval_time  

(70)

オブジェクト・ブラウズ  

しながらSQLを書きたい  

EMP

New  Document  Tab  Group  

タブを右クリック  >  

(71)

ファイル  >

 

Data  Modeler  

>  

インポート  >    

データ・ディクショナリ  

新規ファイル  

表⽰示  >  Data  Modeler  >  

ブラウザ  >    

設計  [1]  を右クリック  >  新規設計  

保存  

ファイル  >  Data  Modeler  >  

保存  

Ctrl  +  S  

では保存されない

 

オブジェクトが多すぎるときは

(72)

表オブジェクトを右クリック  >  

DDL

プレビュー  

Oracle  Database  

表オブジェクトを右クリック  >  

への反映  

データ・ディクショナリの同期  

ネーミング規約と設定と適⽤用  

ブラウザ  >    

Un@tled_1  

を右クリック  >  

プロパティ  >  ネーミング標準  

表を右クリック  >    

ネーミング・ルール  

(73)

表⽰示  >  DBA  

管理理者権限のあるユーザー  

(SYSTEMやSYS)でつなぐこと  

(74)

インスタンス・ビューア  

DBA

パネル  >  データベース・ステータス  >  DBインスタンス  

• 

インスタンス・ビューア

A.

ライセンス不不要

B.

1秒更更新。履履歴保存なし

C.

CPU  /  IO  /  ネットワークなどの

待機イベントがカテゴリーでは分かる

D.

ドリルダウンできない

• 

Enterprise  Manager

A.

Diagnostic  Pack  必要

B.

30秒更更新。履履歴保存あり

1秒更更新もリアルタイムSQL監視で可能

C.

待機イベントが具体的に分かる

D.

ドリルダウンできる

(75)
(76)

SQLcl

とは  

無料料で使⽤用できる⾼高機能版SQL*Plus  

JVM

で動作  

Early  Adopter  

バージョンだが  

Oracle  Technology  Network  (OTN)  

から  

誰でもダウンロード可能  

Early  Adopter  

バージョンのため  

サポートは受けられない  

(77)

SQLcl

による接続  

~]$  export  PATH=$PATH:/opt/sqlcl/bin  

~]$  sql  scott/tiger@pdb  

 

SQLcl:  Release  4.2.0.15.177.0246  RC  on  Mon  Nov  30  11:46:55  2015  

 

Copyright  (c)  1982,  2015,  Oracle.    All  rights  reserved.  

 

 

Connected  to:  

Oracle  Database  12c  Enterprise  Edition  Release  12.1.0.2.0  -­‐  64bit  Production  

With  the  Partitioning,  Real  Application  Clusters,  Automatic  Storage  Management,  OLAP,  

Advanced  Analytics  and  Real  Application  Testing  options

 

(78)

SQL>  SELECT  table_name  

   2    FROM  user_tables;  

 

TABLE_NAME  

-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  

DEPT  

EMP  

BONUS  

SALGRADE  

 

SQL>  

SQL>  DESC  emp  

 

Name          Null          Type  

-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  

EMPNO        NOT  NULL  NUMBER(4)  

ENAME                          VARCHAR2(10)  

JOB                              VARCHAR2(9)  

MGR                              NUMBER(4)  

HIREDATE                    DATE  

SAL                              NUMBER(7,2)  

COMM                            NUMBER(7,2)  

DEPTNO                        NUMBER(2)  

SQLcl

によるSELECT  /  DESCRIBE  

(79)

 

SQL>  help  

 

For  help  on  a  topic  type  help  <topic>  

List  of  Help  topics  available:  

 

 

       /  

       @  

       @@  

       ACCEPT  

       

ALIAS  

       APEX  

       APPEND  

       ARCHIVE  LOG  

       BREAK  

       

BRIDGE  

       CD  

       CHANGE  

       CLEAR  

       

CTAS  

       DDL  

       DEFINE  

       DEL  

       DESCRIBE  

       DISCONNECT  

       EDIT  

       EXECUTE  

       EXIT  

       

FORMAT  

       GET  

       

HISTORY  

       HOST  

       

INFORMATION  

       INPUT  

       LIST  

       

LOAD  

       NET  

       OERR  

       PASSWORD  

       REMARK  

       

REPEAT  

       RESERVED  WORDS  

       RUN  

       SAVE  

       SET  

       SHOW  

       SHUTDOWN  

       SPOOL  

       

SSHTUNNEL  

       START  

       STARTUP  

       STORE  

       TIMING  

       

TNSPING  

       UNDEFINE  

       VARIABLE  

       WHENEVER  

       XQUERY  

SQLcl

はSQL*Plusと何が違うのか  

(80)

INFORMATION  (1/3)  

SQL>  INFO  emp  

 

TABLE:  EMP  

                 LAST  ANALYZED:2015-­‐11-­‐28  17:00:28.0  

                 ROWS                  :14  

                 SAMPLE  SIZE    :14  

                 INMEMORY          :DISABLED  

                 COMMENTS          :  

DESCRIPTION

の強化版  

(81)

INFORMATION  (2/3)  

Columns  

NAME                  DATA  TYPE                      NULL    DEFAULT        COMMENTS  

*EMPNO              NUMBER(4,0)                  No  

 ENAME              VARCHAR2(10  BYTE)      Yes  

 JOB                  VARCHAR2(9  BYTE)        Yes  

 MGR                  NUMBER(4,0)                  Yes  

 HIREDATE        DATE                                Yes  

 SAL                  NUMBER(7,2)                  Yes  

 COMM                NUMBER(7,2)                  Yes  

 DEPTNO            NUMBER(2,0)                  Yes  

(82)

INFORMATION  (3/3)  

Indexes  

INDEX_NAME        UNIQUENESS    STATUS    FUNCIDX_STATUS    COLUMNS    COLUMN_EXPRESSION  

SCOTT.PK_EMP    UNIQUE            VALID                                      EMPNO  

(83)

INFORMATION+  

SQL>  INFO+  emp  

 

……  

 

Columns  

NAME                  DATA  TYPE                      NULL    DEFAULT                LOW_VALUE                          HIGH_VALUE                        NUM_DISTINCT      HISTOGRAM  

*EMPNO              NUMBER(4,0)                  No                                      7369                                    7934                                    14                          NONE  

 ENAME              VARCHAR2(10  BYTE)      Yes                                    ADAMS                                  WARD                                    14                          NONE  

 JOB                  VARCHAR2(9  BYTE)        Yes                                    ANALYST                              SALESMAN                            5                            NONE  

 MGR                  NUMBER(4,0)                  Yes                                    7566                                    7902                                    6                            NONE  

 HIREDATE        DATE                                Yes                                    1980.12.17.00.00.00      1987.05.23.00.00.00      13                          NONE  

 SAL                  NUMBER(7,2)                  Yes                                    800                                      5000                                    12                          NONE  

 COMM                NUMBER(7,2)                  Yes                                    0                                          1400                                    4                            NONE  

 DEPTNO            NUMBER(2,0)                  Yes                                    10                                        30                                        3                            FREQUENCY  

 

……  

(84)

SET  SQLFORMAT  

SQL>  SET  SQLFORMAT  JSON  

 

SQL>  SELECT  empno,  ename  FROM  emp;  

 

{"items":[  

{"empno":7369,"ename":"SMITH"},{"empno":7499,"ename":"ALLEN"},{"empno":

7521,"ename":"WARD"},{"empno":7566,"ename":"JONES"},{"empno":

7654,"ename":"MARTIN"},{"empno":7698,"ename":"BLAKE"},{"empno":

7782,"ename":"CLARK"},{"empno":7788,"ename":"SCOTT"},{"empno":

7839,"ename":"KING"},{"empno":7844,"ename":"TURNER"},{"empno":

7876,"ename":"ADAMS"},{"empno":7900,"ename":"JAMES"},{"empno":

7902,"ename":"FORD"},{"empno":7934,"ename":"MILLER"}]}  

 

 14  rows  selected  

出⼒力力形式を変更更  

(85)

SQL>  SET  SQLFORMAT  ANSICONSOLE  

SQL>  SELECT  empno,  ename  

   2    FROM  emp;  

 

EMPNO    ENAME  

7,369    SMITH  

7,499    ALLEN  

7,521    WARD  

7,566    JONES  

7,654    MARTIN  

7,698    BLAKE  

……  

 

SQL>  HELP  SET  SQLFORMAT  

 

SET  SQLFORMAT  

   SET  SQLFORMAT  {csv,html,  

xml,json,ansiconsole,insert,  

loader,fixed,default}  

様々な  SET  SQLFORMAT  

(86)

エイリアスの作成  

SQL>  ALIAS  pretty  =  SET  SQLFORMAT  

ANSICONSOLE;  

エイリアスの実⾏行行  

SQL>  pretty  

Command=pretty  

エイリアスの実体確認  

SQL>  ALIAS  LIST  pretty  

pretty  

-­‐-­‐-­‐-­‐-­‐-­‐  

SET  SQLFORMAT  ANSICONSOLE  

エイリアスの⼀一覧  

SQL>  ALIAS  [LIST]  

locks  

pretty  

sessions  

tables  

tables2  

エイリアスを削除  

SQL>  ALIAS  DROP  pretty  

(87)

SQL>  DDL  emp  

 

   CREATE  TABLE  "SCOTT"."EMP"  

     (        "EMPNO"  NUMBER(4,0),  

               "ENAME"  VARCHAR2(10),  

               "JOB"  VARCHAR2(9),  

               "MGR"  NUMBER(4,0),  

               "HIREDATE"  DATE,  

               "SAL"  NUMBER(7,2),  

               "COMM"  NUMBER(7,2),  

               "DEPTNO"  NUMBER(2,0),  

                 CONSTRAINT  "PK_EMP"  PRIMARY  KEY  ("EMPNO")  

   USING  INDEX  PCTFREE  10  INITRANS  2  MAXTRANS  255  

COMPUTE  STATISTICS  

   STORAGE(INITIAL  65536  NEXT  1048576  MINEXTENTS  1  

MAXEXTENTS  2147483645  

   PCTINCREASE  0  FREELISTS  1  FREELIST  GROUPS  1  

   TABLESPACE  "USERS"    ENABLE,  

                 CONSTRAINT  "FK_DEPTNO"  FOREIGN  KEY  ("DEPTNO")  

                   REFERENCES  "SCOTT"."DEPT"  ("DEPTNO")  ENABLE  

     )  SEGMENT  CREATION  IMMEDIATE  

   PCTFREE  10  PCTUSED  40  INITRANS  1  MAXTRANS  255  

 NOCOMPRESS  LOGGING  

   STORAGE(INITIAL  65536  NEXT  1048576  MINEXTENTS  1  

MAXEXTENTS  2147483645  

   PCTINCREASE  0  FREELISTS  1  FREELIST  GROUPS  1  

   BUFFER_POOL  DEFAULT  FLASH_CACHE  DEFAULT  

CELL_FLASH_CACHE  DEFAULT)  

   TABLESPACE  "USERS"  ;  

 

SQL>  

-­‐-­‐DDL

はバッファにも⼊入っている

 

 

 

2    EDIT  

 

DDL

⽣生成  

(88)

SQL>  EXECUTE  DBMS_METADATA.  

SET_TRANSFORM_PARAM(  

   2        DBMS_METADATA.SESSION_TRANSFORM,  

   3        'SEGMENT_ATTRIBUTES',  

   4        FALSE);  

 

PL/SQL  procedure  successfully  completed.  

SQL>  DDL  emp  

     

   CREATE  TABLE  "SCOTT"."EMP"  

     (        "EMPNO"  NUMBER(4,0),  

               "ENAME"  VARCHAR2(10),  

               "JOB"  VARCHAR2(9),  

               "MGR"  NUMBER(4,0),  

               "HIREDATE"  DATE,  

               "SAL"  NUMBER(7,2),  

               "COMM"  NUMBER(7,2),  

               "DEPTNO"  NUMBER(2,0),  

                 CONSTRAINT  "PK_EMP"  PRIMARY  KEY  ("EMPNO")  

   USING  INDEX    ENABLE,  

                 CONSTRAINT  "FK_DEPTNO"  FOREIGN  KEY  ("DEPTNO")  

                   REFERENCES  "SCOTT"."DEPT"  ("DEPTNO")  ENABLE  

     )  ;  

(89)

SQL>  SET  SQLFORMAT  CSV

 

SQL>  SPOOL  salgrade.csv  

SQL>  SELECT  *  FROM  salgrade;  

 

 

"GRADE","LOSAL","HISAL"  

1,700,1200  

2,1201,1400  

3,1401,2000  

4,2001,3000  

5,3001,9999  

 

 5  rows  selected  

SQL>  LOAD  salgrade_new    

   2    salgrade.csv  

 

-­‐-­‐Number  of  rows  processed:  5  

-­‐-­‐Number  of  rows  in  error:  0  

0  -­‐  SUCCESS:  Load  processed  without  errors  

(90)

SQL*Plus

の場合

 

SQL>  SELECT  name,  value  FROM  v$sysstat  

   2    WHERE  NAME  =  'physical  reads';  

 

NAME                        VALUE  

physical  reads    21,861  

 

 

SQL>  /    -­‐-­‐  

⼿手動で何度度も実⾏行行する

……  

 

NAME                        VALUE  

physical  reads    23,282  

SQLcl

の場合  

 

SQL>  SELECT  name,  value  FROM  v$sysstat  

   2    WHERE  NAME  =  'physical  reads';  

 

SQL>  

-­‐-­‐  2

秒間隔で

100

回繰返し

 

   2    REPEAT  100  2  

 

Running  5  of  100  @  2:5:27  with  a  delay  of  2.0s  

NAME                        VALUE  

physical  reads    23,282  

REPEAT  

(91)

カーソル・キーで

 

履履歴が出る

 

履履歴の⼀一覧:  

⻑⾧長いものは後半省省略略  

SQL>  HIS  

履履歴の⼀一覧:  

⻑⾧長いものも省省略略しない  

履履歴の⼀一覧:  

そのまま実⾏行行できる形式  

SQL>  HIS  SCRIPT  

履履歴の⼀一覧:  使⽤用回数付き  

SQL>  HIS  USAGE  

履履歴の⼀一覧:  実⾏行行時間付き  

SQL>  HIS  TIME  

HISTORY  

(92)

参考:  構⽂文補完  

TAB

キーで

SELECT

などの予約語  /  列列名  /  表名が補完される  

SQLcl  4.2.0.15.177.0246  

を  

gnome-­‐terminal  2.31.3-­‐11  (Oracle  Linux  6.7)  

で実⾏行行したところ  

(93)
(94)

Oracle  Live  SQL  

とは  

SQL

学習⽤用途向けに  

Oracle  Database  

が何の準備なしに  

無料料で使⽤用できるWebサービス  

コミュニティが作成したSQLを検索索できる  

⾃自分の作成したSQLを共有できる  

2015

年年10⽉月にリリース  

Applica@on  Express  

で作られている  

h^ps://livesql.oracle.com/  

(95)

「range  list  par@@on」と⼊入⼒力力  

インクリメンタル・サーチで  

「range  list  par@@on」に  

関連するSQLが表⽰示される  

参照

関連したドキュメント

前章 / 節からの流れで、計算可能な関数のもつ性質を抽象的に捉えることから始めよう。話を 単純にするために、以下では次のような型のプログラム を考える。 は部分関数 (

① Google Chromeを開き,画面右上の「Google Chromeの設定」ボタンから,「その他のツール」→ 「閲覧履歴を消去」の順に選択してください。.

の改善に加え,歩行効率にも大きな改善が見られた。脳

の 立病院との連携が必要で、 立病院のケース ー ーに訪問看護の を らせ、利用者の をしてもらえるよう 報活動をする。 の ・看護 ・ケア

印刷物をみた。右側を開けるのか,左側を開け

ペットボトルや食品トレイ等のリサイクル の実施、物流センターを有効活用した搬入ト

欄は、具体的な書類の名称を記載する。この場合、自己が開発したプログラ

経験からモジュール化には、ポンプの選択が鍵を握ると考えて、フレキシブルに組合せ が可能なポンプの構想を図 4.15