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

以下の事項は 弊社の一般的な製品の方向性に関する概要を説明するものです また 情報提供を唯一の目的とするものであり いかなる契約にも組み込むことはできません 以下の事項は マテリアルやコード 機能を提供することをコミットメント ( 確約 ) するものではないため 購買決定を行う際の判断材料になさらな

N/A
N/A
Protected

Academic year: 2021

シェア "以下の事項は 弊社の一般的な製品の方向性に関する概要を説明するものです また 情報提供を唯一の目的とするものであり いかなる契約にも組み込むことはできません 以下の事項は マテリアルやコード 機能を提供することをコミットメント ( 確約 ) するものではないため 購買決定を行う際の判断材料になさらな"

Copied!
96
0
0

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

全文

(1)

~オラクル純正開発ツールご紹介~

日本オラクル株式会社

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

データベースソリューション本部

中部・西日本ソリューション部

2016年05月13日

第45回瀬戸内オラクル技術団

(2)

以下の事項は、弊社の一般的な製品の方向性に関する概要を説明する

ものです。また、情報提供を唯一の目的とするものであり、いかなる契約

にも組み込むことはできません。以下の事項は、マテリアルやコード、機

能を提供することをコミットメント(確約)するものではないため、購買決定

を行う際の判断材料になさらないで下さい。オラクル製品に関して記載さ

れている機能の開発、リリースおよび時期については、弊社の裁量により

決定されます。

OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。

文中の社名、商品名等は各社の商標または登録商標である場合があります。

(3)

アジェンダ(本日紹介するツール群)

DBセットアップはクラウドで速くなった。DBシステム開発はどうだ?

1

2

3

4

Oracle Application Express

Oracle SQL Developer

SQLcl

(4)
(5)

Oracle Application Express (APEX) とは

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

Webブラウザだけで開発可能

2004年にリリース。最新バージョンは5.0

Oracle Database のサポート契約に

Application Express のサポートも含まれる

(6)

これだけで9割作れる、4種類のページ・タイプ

参照系ページ・タイプ

入力系ページ・タイプ

1行のデータに特化 レポート

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

縦に表示したもの

• 例えば “わたしの履歴書”

DMLフォーム

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

したもの

• いわゆる普通のWebフォーム

まとめて表形式

対話モード・レポート

• Excelのフィルターのように、

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

• 例えば “応募者一覧”

表形式フォーム

• Excelのように、表形式で

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

(7)

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

(8)

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

(9)

1行のデータに特化した入力系ページ

(10)

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

(11)

オンプレミスの

開発環境など

○ サポートが受けられる

○ アクセス制限が

比較的容易

× Application Express の

セットアップが必要

Oracle Database Cloud

Schema Service

○ サポートが受けられる

○ 外部公開が容易

○ Application Express の

セットアップ不要

○ DBA管理不要

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

月額175米ドルから

Database as a Serviceでも

利用可能

http://apex.oracle.com/

○ Database ライセンス /

サブスクリプション不要

○ 外部公開が容易

○ Application Express の

セットアップ不要

○ DBA管理不要

× サポートなし

× 試使用目的のみ。

本番データ / 機密情報の

保存禁止

Application Express をどこで動かすか

これさえなければ、超便利なのに……

(12)

apex.oracle.comにアカウントを作る

1.

https://apex.oracle.com/jp/ へ

2.

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

3.

フリー・ワークスペース

4.

アプリケーション開発

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

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

(13)

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

Webアプリケーションを作る

チーム開発

マイルストン管理

バグ・トラッキング

フィードバック

SQLワークショップ

オブジェクト・ブラウザ

SQLコマンドライン

SQLスクリプト実行

RESTfulサービス

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

サード・パーティ・

アプリケーションの

インストールと管理

App Store みたいなもの

Application Express の4つのタブ

(14)

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

1.

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

2.

作成

3.

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

4.

名前を入力

5.

作成

(15)

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

参照系ページ・タイプ

入力系ページ・タイプ

1行のデータに特化 レポート

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

縦に表示したもの

• 例えば “わたしの履歴書”

DMLフォーム

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

したもの

• いわゆる普通のWebフォーム

まとめて表形式

対話モード・レポート

• Excelのフィルターのように、

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

• 例えば “応募者一覧”

表形式フォーム

• Excelのように、表形式で

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

(16)

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

1.

ページの追加

2.

レポート

3.

対話モード・レポート

4.

ページ名入力:対話レポート

5.

ナビゲーションのプリファレンス

新しいナビゲーション・メニュー・エントリの作成

(17)

1つの表からなら、

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

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

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

(18)

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

レポート表示

(19)

列の選択

SELECT … の列名を減らせる

フィルタ

WHERE句が書ける。

他の列の参照や、

関数も使える

フラッシュバック

過去のある時点の

データを表示

レポートの保存

変更した見た目を、

名前を付けて保存 / 共有

ダウンロード

CSV, HTML, PDFなどで

ダウンロード

強力な対話機能

(20)

列でフィルタ

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

行でフィルタ

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

入社から1年以上

(21)

ソート: ORDER BY

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

PARTITION BY

(22)

ハイライト

計算: 疑似列

(23)

集計

チャート

(24)

グループ化: GROUP BY

ピボット

(25)

強力な対話機能まとめ

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

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

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

開発者は複数書式を事前に用意できる

ユーザーは用意された書式をプルダウンから選ぶことができる

(26)

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

参照系ページ・タイプ

入力系ページ・タイプ

1行のデータに特化

レポート

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

縦に表示したもの

• 例えば “わたしの履歴書”

DMLフォーム

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

したもの

• いわゆる普通のWebフォーム

まとめて表形式

対話モード・レポート

• Excelのフィルターのように、

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

• 例えば “応募者一覧”

表形式フォーム

• Excelのように、表形式で

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

(27)

単独レポートを作ってみよう(最終ゴールイメージ)

一覧レポート

(28)

1.

ページの作成

2.

レポート

3.

クラシック・レポート

4.

ページ名: 一覧レポート

5.

ナビゲーションのプリファレンス

新しいナビゲーション・メニュー・エントリ

の作成

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

(29)

1.

ページの作成

2.

レポート

3.

クラシック・レポート

4.

ページ名: 単独レポート

5.

レポート・テンプレート:縦のレ

ポート

6.

ナビゲーションのプリファレンス

新しいナビゲーション・メニュー・エントリ

の作成

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

(30)

1.

アイテム

2.

アイテムタイプ:非表示

3.

アイテム名:P3_EMPNO

4.

リージョンページ名:単独レポー

ト をクリック

5.

リージョンソースのwhere

EMP.DEPTNO = … の後に

and EMP.EMPNO = :P3_EMPNO

を追加

(31)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

1.

一覧レポート

2.

列をクリック(ツリー展開)

3.

EMPNO列をクリック

タイプ:リンク

リンク-ターゲット

ページ: 単独レポート

アイテム:P3_EMPNO

値:#EMPNO#

リンク・テキスト:#EMPNO#

編集後のリンク元ページ

31

Step4 リンク元の編集

(32)

1.

単独レポートページ

2.

リージョン

3.

クラシック・レポート

4.

タイトル:メンバー一覧

5.

SQL問合せ:

select EMP.EMPNO as EMPNO,

EMP.ENAME as ENAME from EMP

where EMP.DEPTNO = (select deptno

from emp where empno=:P3_EMPNO)

order by EMPNO

(33)

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

似ているけど、

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

できた

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

URLなどの長い情報は表示させず、

表示される列を限定し、縦向きの

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

列名を分かりやすいものに変更す

るなどの見た目の修正

1枚のページに複数のレポート・

リージョンや

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

(対話モード・レポートは1枚のペー

ジに1個まで)

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

(34)

レポート作成に便利な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

(35)

レポート作成に便利な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

7839

KING

CLARK

7788

SCOTT

ADAMS

(36)

DMLフォームを作ってみよう

参照系ページ・タイプ

入力系ページ・タイプ

1行のデータに特化 レポート

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

縦に表示したもの

• 例えば “わたしの履歴書”

DMLフォーム

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

したもの

• いわゆる普通のWebフォーム

まとめて表形式

対話モード・レポート

• Excelのフィルターのように、

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

• 例えば “応募者一覧”

表形式フォーム

• Excelのように、表形式で

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

(37)

1.

ページの作成

2.

フォーム

3.

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

4.

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

5.

ページ名: EMPフォーム

6.

ナビゲーションのプリファレンス:

新しいナビゲーション・メニュー・

エントリの作成

6.

主キーのタイプ:

主キー列の選択

7.

主キー列1: EMPNO

8.

ソース・タイプ:

既存のトリガー

9.

列の選択: 全列

10.

ボタン: (変更なし)

11.

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

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

DMLフォームを作ってみよう

(38)

EMPフォーム

できたことはできたが、

(39)

LOV(List Of Value)の作成

1.

共有コンポーネント

2.

他のコンポーネント:LOV

3.

作成-最初から

4.

名前:DEPT_LOV

5.

タイプ:動的

6.

動的LOVの作成

7.

表またはビュー:DEPT

8.

表示列:DNAME、戻り値:DEPTNO

SCOTT

(40)

入力項目の選択リスト

1.

EMPフォーム

2.

アイテム「P4_DEPTNO」クリック

3.

タイプ: 選択リスト

(41)

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

1.

EMPフォーム

2.

アイテム「P4_DEPTNO」クリック

3.

タイプ: ポップアップLOV

(42)

1.

一覧レポート

2.

ボタン (Text)

1.

ボタン名:CREATE、ラベル:作成

2.

ボタン位置: リージョンのデフォルト

3.

外観プロパティ:(変更なし)

4.

アクション:このアプリケーションの

別ページにリダイレクト

ターゲット-ページ:4 EMPフォーム

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

(43)

1.

単独レポート

2.

ボタン (Text)

1.

ボタン名:EDIT、ラベル:編集

2.

ボタンのリージョン:単独レポート

3.

ボタン位置: タイトルの右

4.

外観プロパティ:(変更なし)

5.

アクション:このアプリケーショ

ンの別ページにリダイレクト

ページ:4 EMPフォーム

次のアイテムを設定:P4_EMPNO

次の値を使用:&P3_EMPNO

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

(44)

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

参照系ページ・タイプ

入力系ページ・タイプ

1行のデータに特化 レポート

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

縦に表示したもの

• 例えば “わたしの履歴書”

DMLフォーム

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

したもの

• いわゆる普通のWebフォーム

まとめて表形式

対話モード・レポート

• Excelのフィルターのように、

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

• 例えば “応募者一覧”

表形式フォーム

• Excelのように、表形式で

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

(45)

1.

ページの作成

2.

フォーム

3.

表形式フォーム

1.

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

全列

2.

主キーのタイプ:主キー列の選択

主キー列1:EMPNO

3.

ソース・タイプ: 既存のトリガー

4.

列の選択: 全列

5.

ページ名:表形式フォーム

6.

ナビゲーションのプリファレンス:

新しいナビゲーション・メニュー・エントリの作成

7.

ボタン: (変更なし)

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

(46)

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

参照系ページ・タイプ

入力系ページ・タイプ

1行のデータに特化 レポート

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

縦に表示したもの

• 例えば “わたしの履歴書”

DMLフォーム

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

したもの

• いわゆる普通のWebフォーム

まとめて表形式

対話モード・レポート

• Excelのフィルターのように、

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

• 例えば “応募者一覧”

表形式フォーム

• Excelのように、表形式で

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

(47)

1.

共有コンポーネント

2.

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

3.

作成 > 最初から

4.

名前: 従業員

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

5.

スキーム・タイプ:

EXISTS SQL 問合せ

6.

SQL問合せ

select 1 from EMP where

ENAME = V(‘APP_USER’)

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

大文字小文字区別なしに認証される

7.

スキームの違反時に表示される

エラー・メッセージの指定

従業員ではありません

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

(48)

1.

対話レポート

2.

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

キーム:従業員

認証スキーム

Application Express アカウント

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

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

認証なし

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

(49)

1.

SQLワークショップ

2.

RESTfulサービス>作成

3.

名前:oracle.example.hr

4.

URI接頭辞:hr/

5.

URIテンプレートemployees/{id}

6.

リソースハンドラ方法:GET

7.

ソース

select * from emp

where empno = :id

6.

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

7.

:ID = 7782 > テスト

(50)

Application Express 2日で開発者ガイド

for Oracle Database 12c

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

ユーザーズ・ガイド for Oracle Database 12c

お役立ち情報

http://www.oracle.com/technetwork/jp/developer-tools/apex/learnmore/index.html

ハンズオン・ラボ

MS Access/Oracle FormsアプリのAPEXへの変

Oracle Forms開発者のためのOracle

Application Express

もっと詳しく知りたい

http://apex.world/

(51)
(52)

Oracle SQL Developer とは

Oracle Database / Oracle NoSQL Database /

Oracle TimesTen 用の無料 GUI IDE

Windows, Mac, Linux, Unix 対応

2006年にリリース。最新バージョンは4.1.2

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

Oracle Database のサポート契約に

(53)

Oracle Database as a Service につなごう

Database as a Service の

TCP/1521はデフォルトでは

開いていないので、

TCP/22 (SSH) につないで

ポート転送する

SSHポート転送

TCP/22 TCP/1521

(54)

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

Oracle Database サーバーが

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

踏み台が必要な環境では、

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

SSHポート転送

TCP/22

TCP/1521

(55)
(56)
(57)

オブジェクト・ブラウズ

しながらSQLを書きたい

EMPタブを右クリック >

新規ドキュメント・タブ・グループ

(58)

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 =

ワークシートにEMP表とDEPT表をドラッグ&ドロップ

クエリー・ビルダー

(59)

構文補完 (Ctrl + Space)

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

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

SQLチューニング・アドバイザ

(Ctrl+F12)

要オプションライセンス

SQL Developer でSQLを書くメリット

(60)

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 s1.flush_elapsed) *

60) + extract(second from s1.flush_elapsed), 0 )) as max_flush_secs

FROM WRM$_SNAPSHOT s1 , WRM$_DATABASE_INSTANCE dbin , WRM$_SNAPSHOT s2

WHERE s1.dbid = :dbid AND s2.dbid = :dbid AND s1.instance_number =

s2.instance_number AND dbin.instance_number = s1.instance_number AND

s1.snap_id = :bid AND s2.snap_id = :eid AND dbin.dbid = s1.dbid AND

dbin.startup_time = s1.startup_time and dbin.instance_number = :inst

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

右クリック > 書式 (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

ELSE s1.end_interval_time

END) AS DATE) - CAST(s1.end_interval_time AS DATE)) * 86400) AS

int_secs,

……

(61)

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

表示 > SQL履歴(F8)

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

SQL Developer が発行した

SQLのログ

表示 > ログ > 文

履歴の強化

(62)

IDEらしい機能、チーム開発

Git / Subversionとの連携

PL/SQLのステップ実行

SQLモニター(要オプションライ

センス)、セッションのモニター

(63)

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,"e

name":"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>

出力フォーマットの変更

(64)

表を右クリック >

エクスポート

エクスポート時にWHERE可能

表を右クリック >

データのインポート

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

(65)

表を右クリック >

クイック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

(66)

ファイル > Data Modeler

> インポート >

データ・ディクショナリ

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

DDLプレビュー

Oracle Database への反映

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

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

(67)

表示 > DBA

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

(SYSTEMやSYS)でつなぐこと

(68)

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

リアルタイムの稼働状況の確認(インスタンス・ビューア)

EMとの違い Enterprise Manager

インスタンス・

ビューア

ライセンス

Diagnostics Packが必

不要

更新頻度

30秒更新。履歴保存

あり

1秒更新もリアルタイ

ムSQL監視で可能

1秒更新。履歴

保存なし

表示情報

待機イベントが詳細

レベル

待機イベントが

カテゴリー

ドリルダウン 可能

不可能

(69)
(70)

SQLclとは

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

JVMで動作

Early Adopter バージョンだが

Oracle Technology Network (OTN) から

誰でもダウンロード可能(SQL Developer ダウンロードページ下部)

Early Adopter バージョンのため

サポートは受けられない

(71)

SQLclによる接続

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

~]$ sql scott/tiger@pdb

SQLcl: Release 4.2.0.16.049.0842 RC on Mon Mar 07 13:00:29 2016

Copyright (c) 1982, 2016, 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

(72)

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

(73)

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

COLUMN

COMPUTE

CONNECT

COPY

CTAS

DDL

DEFINE

DEL

DESCRIBE

DISCONNECT

EDIT

EXECUTE

EXIT

FORMAT

GET

HISTORY

HOST

INFORMATION

INPUT

LIST

LOAD

NET

OERR

PASSWORD

PAUSE

PRINT

PROMPT

QUIT

REMARK

REPEAT

RESERVED WORDS

RUN

SAVE

SET

SHOW

SHUTDOWN

SPOOL

SSHTUNNEL

START

STARTUP

STORE

TIMING

TNSPING

UNDEFINE

VARIABLE

WHENEVER

XQUERY

SQLclはSQL*Plusと何が違うのか

(74)

INFORMATION (1/2)

SQL> INFO emp

TABLE: EMP

LAST ANALYZED:2016-03-03 15:00:28.0

ROWS :14

SAMPLE SIZE :14

INMEMORY :DISABLED

COMMENTS :

DESCRIPTIONの強化版

(75)

INFORMATION (2/2)

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

DESCRIPTIONの強化版

Indexes

INDEX_NAME UNIQUENESS STATUS FUNCIDX_STATUS COLUMNS COLUMN_EXPRESSION

(76)

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

……

(77)

カーソル・キーで

履歴が出る

履歴の一覧:

長いものは後半省略

SQL> his

履歴の一覧:

長いものも省略しない

SQL> his full

履歴の一覧:

そのまま実行できる形式

SQL> his script

履歴の一覧: 使用した回数付き

SQL> his usage

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

SQL> his time

TABキーで、SELECTなどの予約語 /

列名 / 表名が補完される

HISTORY / 構文補完

(78)

SQL> HELP SET SQLFORMAT

SET SQLFORMAT

SET SQLFORMAT

{csv,html,xml,json,ansiconsole,insert,

loader,fixed,default}

SQL> SET SQLFORMAT ANSICONSOLE

SQL> SELECT empno, ename FROM emp;

EMPNO ENAME

7,369 SMITH

7,499 ALLEN

7,521 WARD

7,566 JONES

7,654 MARTIN

……

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"},{"em

pno":7782,"ename":"CLARK"},{"empno":77

88,"ename":"SCOTT"},{"empno":7839,"ena

me":"KING"},{"empno":7844,"ename":"TUR

NER"},{"empno":7876,"ename":"ADAMS"},{

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

:7902,"ename":"FORD"},{"empno":7934,"e

name":"MILLER"}]}

SET SQLFORMAT (出力形式を変更)

(79)

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> SPOOL OFF

SQL> LOAD salgrade_new

2 salgrade.csv

--Number of rows processed: 5

--Number of rows in error: 0

0 - SUCCESS: Load processed without errors

(80)

エイリアスの作成

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

(81)

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

BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT

CELL_FLASH_CACHE DEFAULT)

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

SQL> /

DDL生成

(82)

SQL> EXECUTE

2 DBMS_METADATA.SET_TRANSFORM_PARAM(

3 DBMS_METADATA.SESSION_TRANSFORM,

4 'SEGMENT_ATTRIBUTES',

5 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,

ONSTRAINT "FK_DEPTNO" FOREIGN KEY

("DEPTNO")

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

ENABLE

(83)

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

(84)
(85)

Oracle Live SQL とは

SQL学習用途向けに

Oracle Database が何の準備なしに

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

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

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

2015年10月にリリース

Application Express で作られている

https://livesql.oracle.com/

(86)

「range list partition」と入力

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

「range list partition」に

関連するSQLが表示される

(87)

Composite Range-List Partitioning Example

パーティションのDDL

誰がいつ作ったか

補足のコメント

次のSQL文。

ここではINSERTしている

次のSQL文。

ここではUSER_TAB_PARTITIONSを確認している

(88)

Run in Live SQL を押下

Oracle SSO でログイン後に

別ウインドウが開くので、

Run Script ボタンをクリック

(89)

左ペインのSchemaを見ると、

パーティション表のサンプルが

自分のスキーマにできている

表などのオブジェクトと

データは

ログアウトすると消える

データは10MBまで

使用率は My Session > Utilization

Schemaをクリック

(90)

1.

My Session > Previous Session

2.

Session = In Use の

最新のセッションを

View Session

3.

Re-Run

4.

Drop all DB Objects and SQL

History in Current Session を

チェックして、作成する

オブジェクトを事前に削除

少し変更して再実行したい

(91)

Saveボタンをクリック

公開設定をPrivate / Unlisted

から選べる

UnlistedにしたSQLは

URLを知っている人だけに

限定公開できる

My Scripts に保存される

修正したものを保存したい

(92)

1.

Oracle Application Express

レスポンシブ

Webアプリケーション用の

無料IDE + サーバー

3.

SQLcl

無料で使用できる高機能版

SQL*Plus

2.

Oracle SQL Developer

Oracle Database ほか用の

無料 GUI IDE

4.

Oracle Live SQL

SQL学習用途向けに

Oracle Database が無料で

使用できるWebサービス

まとめ

DBセットアップはクラウドで速くなった。DBシステム開発はどうだ?

(93)

対話モードレポート機能(Interactive Report)

アクション名

アクションの内容

列の選択

表示される列を変更

フィルタ

問合せでWHERE句の追加または変更によってレポートを列または行でフィルタ

ソート

ソート対象の列と、昇順/降順を変更 ・ NULLの処理方法を指定

コントロール・ブレーク 1つまたは複数の列にブレーク・グループを作成

ハイライト

フィルタ基準に一致した行を、フィルタに関連付けられている特性を使用してハイライト表示

計算

レポートに計算結果の列を追加。数学関数やOracle標準の関数を使用。

集計

1つの列に対して、関数(SUM、MINなど)で集計を定義した値で表示

チャート

横棒、縦棒、円、折れ線などのチャートを定義

グループ化

集計列と実行する関数(AVG、SUM、COUNTなど)を指定し、1つのグループ化ビューを定義

ピボット

保存したレポートごとに、1つのピボット・ビューを定義

レポートの保存

カスタマイズしたレポートをパブリックもしくはプライベートとしてレポート保存

ダウンロード

レポートを、CSV/HTML/電子メール/XLS/PDFまたはRTFでダウンロード(一部要別製品)

(94)
(95)
(96)

参照

関連したドキュメント

世の中のすべての親の一番の願いは、子 どもが健やかに成長することだと思いま

契約業者は当該機器の製造業者であ り、当該業務が可能な唯一の業者で あることから、契約の性質又は目的

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

それゆえ、この条件下では光学的性質はもっぱら媒質の誘電率で決まる。ここではこのよ

の知的財産権について、本書により、明示、黙示、禁反言、またはその他によるかを問わず、いかな るライセンスも付与されないものとします。Samsung は、当該製品に関する

弊社または関係会社は本製品および関連情報につき、明示または黙示を問わず、いかなる権利を許諾するものでもなく、またそれらの市場適応性

本文書の目的は、 Allbirds の製品におけるカーボンフットプリントの計算方法、前提条件、デー タソース、および今後の改善点の概要を提供し、より詳細な情報を共有することです。

 本計画では、子どもの頃から食に関する正確な知識を提供することで、健全な食生活