てぃぐれのプログラマwiki

ワクワクに従う

Oracle

ローカル管理方式とディクショナリ管理方式【ORACLE】

ローカル管理方式とディクショナリー管理方式とは 表領域のエクステントを管理するための方法 → どのエクステントが空いているのか → どの領域に割り当てるのか ローカル管理方式 基本的にこちらが使われる。 下記を行うことができる。 ・エクステントの割当…

一つのトランザクションはUNDOセグメントをまたがらない【ORACLE】

一つのトランザクションはUNDOセグメントをまたがらない

データベースリンク 図解【ORACLE】

データベースリンクの仕組み 図解 クライアントからdb2にアクセスするためにはDB1からLINKを通してアクセスする。 リンクを貼る場合 CREATE DATABASE LINK L2 USING DB2; DB2からSELECTしたい場合、 SELECT * FROM X, Y@L2 WHERE ... こんな感じ。 リンクはD…

dualに入っているデータ【ORACLE】

経緯 Silverの勉強をしているとdualテーブルについての問題が出てくるので、実際に確かめてみる。 SELECT * FROM DUAL; Result Set 1 DUMMY X DUMMY(VARCHAR2)の列ができている。中身には「X」が入っているのだ。 なんでXなんだろうXD

セグメント・データファイル・エクステント・ブロック 図解【ORACLE】

経緯 セグメントやエクステント等の関係性がこんがらがるので、図にしてみた。 表領域は複数の「データファイル(物理ファイル)・エクステント(論理領域)」からなる。 つまり、表領域はエクステントを通してデータファイル にアクセスする。 セグメント・エク…

知らなかった集合演算子のルール【ORACLE】

列名は同じじゃなくても良い select 学生番号 as "01", 性別 as "02"from TT01_学生union allselect 学生番号 as "03", 部活動コード as "04"from TT02_所属部活動 結果: 01 02 2010B0162 1 2010B0163 1 2010B0164 2 データの型とカラム数が一緒の必要がある…

自然結合 NATURAL JOIN 【ORACLE】

Natural JOIN 自然結合 普段使わないが、知識として知っておきたい。 空気を読んで結合してくれる。(列名と型が一緒の場合に結合してくれる。) でも、シンプルに書けるだけに、コードとしての可読性が落ちそう。

ファンクションメモ【ORACLE】

LEADING 先頭の指定した文字列を削除する TRIMとセットで書く。 SELECT TRIM(LEADING 'x' FROM 'xxxy') FROM DUAL; 結果:y TRAILING 先頭の指定した文字列を削除する TRIMとセットで書く。 SELECT TRIM(TRAILING 'x' FROM 'xxyx') FROM DUAL; 結果:xxy ※下記…

date型の扱い方雑にまとめ【ORACLE】

MONTHS_BETWEEN 何ヶ月の差があるかの計算 select MONTHS_BETWEEN('11-DEC-20','11-OCT-20') from dual; 結果: 2 12月- 10月 = 2 ちなみに select MONTHS_BETWEEN('11-DEC-20','10-OCT-20') from dual; 2ヶ月と1日の場合 結果: 2.03225806451612903225806451…

置換変数【ORACLE】

経緯 Oracle Master Silverの勉強をしていると普段使わない、置換変数というものが出てきた。 でも使い方をイメージしていると、これ、めっちゃ便利なときあるやん。いつも、自分ができないと思っていたことがこれでできるやんと思うようになったので、wiki…

曖昧検索 アンダースコア _の使い方【ORACLE】

経緯 曖昧検索といえば%を使うが_をあまり業務で使うことなく、頭になかったので、ここに記しておきたい。 _の使い方 like '_x%' 1文字目にxがある2文字目以降は何でも良い like '_ _ _ _%r_ _'; 前に4文字以上がある。後ろから3文字目がr like '_ _ %r%_ _'…

代替引用メカニズム【ORACLE】

経緯 絶対、この先使わないであろう、ORACLEでのシングルクォテーションの役割を果たす機能、書き方を見つけた。 q'[xxx]' 代替引用メカニズムではリテラルを扱うときに、シングルクォテーションで描くのではなく、q' + 任意の文字 で始め、任意の文字 + ' …

ファンクションの使い方 NULL系【ORACLE】

■NVL(A,B) AがnullならBを ■NVL2(A,B,C) Aがnullではない場合、Bを、nullならCを ■COALEACE(A,B,C,D,E) AがnullではないならAを、そうでなければBを、BがnullならCを... ■NULLIF(A,B) A == BならNULLを、そうでなければAを

集計関数 問合せできない?できる? 【ORACLE】

経緯 集計関数の問合せできるできないルールがちょっと混乱することがあるので、解いて行きたい。 1,集計関数でネストしている場合 SELECT MIN(AVG(sal)) FROM emp; employees の salary の 平均avg の 最小値min が欲しい。一見良さそうであるが、group by…

知らなかった副問合せ【ORACLE】

ANY ANYはなかなか使わないけど、selectしたもののうち一つでも条件に合えば返す X > ANY(select Y from Z) → ZのYのうちのひとつを上回ればtrue → X > select MIN(Y) from Z で良さそう 速さはANYの方が速そう ALL select したもののうち全ての条件に合えば…

CTASとUNUSED【ORACLE】

CTAS CTAS create tabls as select selectを使い他のテーブルからデータと構造をコピーしてテーブルを作ることができる。 移される制約はnot nullだけである。 where句を指定することでコピーしたいデータや、件数を0にするような条件句でテーブルだけ作ると…

シーケンスとシノニム【ORACLE】

知らなかったシーケンスの使い方 シーケンスなんてORACLEを使ってる人からすれば、なんてことはない、連番を採番するオブジェクトだ。SQL SERVERのidentityのような動きをする。 しかし、別々のテーブルの主キーに使い、IDを被らせないという方法ができるの…

知らなかった外部制約の仕様【ORACLE】

制約 alter table [table name] disable constraint [constraint name] cascade; → 特定の制約をdisableにする場合、その制約に関連する他の制約も外す on delete cascade →削除された行を参照している子表の行も併せて削除する on delete set null →削除さ…

Viewの仕様【Oralce】

WITH CHECK OPTION ・UPDATEとINSERTの時にVIEWのselect文のwhere句の条件を満たしていない場合、エラーとなる。 ・DELETEはエラーにならない。(DELETE後にデータは残らないからチェックできない) FORCE ・参照するオブジェクトがない場合でもとにかくVIEWを…

リスナーを起動していない場合【ORACLE】

リスナーが起動していない場合 リスナーが起動後 LSNRCTL> status Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for 64-bit Windows: Vers…

抽出結果を見やすくする SQL Developer Tips1 【ORACLE】

抽出結果を見やすくする ツール > プリファレンス データベース > ユーティリティ > ワークシート 「市松模様またはしま模様のグリッド」にチェックをする。 すると問合せ結果がシマシマになって、見やすくなる。

内部結合の非等価結合とクロス結合【ORACLE】

非等価結合とは SQLにおいてテーブルをjoinする際の結合条件が等価ではないことである。 on句でbetweenや不等号が使われる。 勘違いしやすいところ これは非等価式 SELECT e.employee_id,h.employee_id, e.first_name, e.last_name, e.hire_date,h.start_dat…

【ORACLE】 無料で勉強用に利用

勉強用に無料で使用したい そんな願望は多い。 ということでORACLEさんが無料で用意してくれている。 Database Software Downloads | Oracle 日本 サーバーはAzureで Dockerに入れて行う方法やvirtualboxを使った方法など、先人たちが紹介してくれている。 …

ゴミ箱に同じ名前の表がある場合のBEFORE DROP句 ORACLE

フラッシュバックドロップとは DROPテーブルしてしまった後に、テーブルを元に戻したい場合に使用する。 ゴミ箱に同じ名前の表がある場合 では、DROPテーブルで同じ名前のテーブルを複数回行った場合、フラッシュバックドロップを行った時、どのテーブルが戻…

オーバーヘッダ ORACLE

経緯 ORACLEマスターの勉強をしているとたまに出てくる単語。そのほかではあまり見かけない。この横文字が突然出てくると、最初は「うへ」ってなった。 うへってならないように、留めておく。 意味 余計なこと・もの。冗長。 使われ方 本番環境の調査のため…

フラッシュバックとUNDO ORACLE

フラッシュバックドロップ DROPしたテーブルを戻す ∟FLASHBACK TABLE <表名> TO BEFORE DROP; 仕様 ・DROPしたテーブルは同じ表領域で論理削除されているので、元に戻す ・索引も元に戻る ・PURGEオプションで DROPしている場合は元に戻すことはできない ・C…

NO ARCHIVELOGとARCHIVELOGを ORACLE

ACHIVELOGモード 直前までのデータをメディアリカバリできる。 why →オープンの状態でREDOログをアーカイブしているから。 how →ARCnプロセスがログスイッチのタイミングでREDOログファイルの新たなグループを上書きする前に、アーカイブログファイルとして…

AWRとADDRをざっくり ORACLE

AWR(Automatic Workload Repository) 自動ワークロードリポジトリ ADDR(分析)のための統計情報とワークロード(処理負荷)情報を自動的に収集してくれる。 仕様 ・デフォルトで60分間隔でAWRスナップショットが実行される ・MMONによって実行される ・SYSAUX表…

ORACLE 結合方法

3つの結合方法 ORACLEには結合方法が3つあるので軽く説明できるようになりたい。 ネスティッドループ結合 索引を使用するときはこれ。 索引を使用しているということはB+Treeのデータ構造となるため、二分探索になるから速い。O(logn)??いや、索引がきちんと…

動的パラメータにSPFILE=BOTHつけて変更したら

ORACLEデータベースで初期化パラメータを変更したい!っていう時、そのパラメータが動的か静的かによって変更の仕方が異なりますよね。 例えば、動的初期化パラメータの場合、単純に下記のようにSQLを叩くと変更が即座に適用されます。 ALTER SYSTEM SET PGA_…