タグ

oracleに関するtoa1121011のブックマーク (22)

  • 【SQL】COUNT関数を利用するときはNULLに気をつけよう! - Qiita

    はじめに SQLを利用するときには極力NULLを使わないようにしようと言われることが多いです。 SQLではNULLのデータが入っていることで奇妙な挙動をしてしまうことがあります。 その中の一つでCOUNT関数が存在します。 COUNT関数はその名の通りで条件に合致したデータ数を取得するための関数です。 例えば、条件に合致するデータが3件ある場合は3 と返却を行います。 簡単ですね。 ただ、データ内にNULLが含まれていると、COUNT関数の対象によって、返される値が異なる場合があります。 具体的には以下の通りです。 COUNT(*) NULLのカラムを数える COUNT(col_name) NULLのカラムを数えない なかなかとややこしいですね。。。 実際に例を見てみましょう。 例 以下のようなテーブルを考えます。 col_name

    【SQL】COUNT関数を利用するときはNULLに気をつけよう! - Qiita
  • 排他制御の「は」の字も知らない人が排他制御について調べてまとめてみた - RAKUS Developers Blog | ラクス エンジニアブログ

    こんにちは。エンジニアのrs_shoです。 投稿は4回目になります。今回は排他制御についてお話ししようと思います。 はじめに 排他制御の種類 楽観ロック(楽観的排他制御) 悲観ロック(悲観的排他制御) それぞれの特徴 Javaにおける排他制御 Semaphore CountDownLatch synchronizedメソッド データベースのLOCK おわりに 参考資料 はじめに そもそも排他制御とは何か、ご存じでしょうか。 排他制御とは、簡単に言うと、処理Aをしている間、他の処理は処理Aが終わるまで待つ、という制御のことです。 身近な例えで言うと、共有フォルダにあるExcelなどを誰かが開いて編集している間、 他の人は閲覧のみ可能で編集は不可の状態(設定によってはできますが…)のことです。 排他制御の種類 排他制御はただ処理待ちをするだけではなく、大きく分けて2つ種類があります。(厳密には

    排他制御の「は」の字も知らない人が排他制御について調べてまとめてみた - RAKUS Developers Blog | ラクス エンジニアブログ
  • Oracle のロックと対応方法(悲観的排他制御と楽観的排他制御) - bnote

    Oracle の行ロックについてまとめています。参加したプロジェクトの中で使われていた排他制御についてもまとめてみました。 SELECT FOR UPDATE の確認(悲観的排他) SELECT FOR UPDATE の動作確認のため、 SQL Developer を2つ起動します。 1つ目の SQL Developer で次の SQL文 を実行します。ここで注意したいのが、 SELECT文に FOR UPDATE を指定することで行レベルのロックが行われます。 -- 1つ目 SELECT ID,NAME FROM MST_ROLE WHERE ID = 2 FOR UPDATE; -- 2つ目 SELECT ID,NAME FROM MST_ROLE WHERE ID = 2 FOR UPDATE; データが取得され結果が表示されます。 次にもう一つの SQL Developer で同じ

  • 排他制御のあれこれ - Qiita

    この記事は、システムエンジニア Advent Calendar 2016 - Qiita の23日目の記事です。 昨日は @yy_yank さんの 気負わず普通にテストしよう でした。 明日は @koduki さんです。 はじめに 複数ユーザが触るアプリケーションを作る場合、同時にデータが更新された場合の制御は避けては通れません。 この制御はスレッドセーフとか同時更新とか色々な観点で考えないといけないのですが、いまいちそのあたり自分自身の中できれいに整理できていませんでした。 なので、この機会に同時に更新される場合の排他制御について、自分なりに整理してみました。 まえおき 説明に使用する言語は Java です。 説明のためにシーケンス図っぽいものを使っていますが、 UML の厳密な定義には従っていません。図が描きやすいからシーケンス図を利用している、ってだけなので厳密な記法ルールに従ってい

    排他制御のあれこれ - Qiita
  • マテリアライズド・ビューの手動リフレッシュ - Oracle|OAR CODE

    Oracleではインデックス付きのビューであるマテリアライズド・ビューを作成することができますが、データのリフレッシュの方法やタイミングによっては、最新のデータが反映されていない場合があるため、試験時などで即座にデータが反映されてほしい時は、手動でリフレッシュをしてやる必要があります。 マテリアライズド・ビューを手動でリフレッシュするには、以下のSQLを実行します。 EXEC DBMS_MVIEW.REFRESH('MV_EXAMPLE'); 上記SQLの「MV_EXAMPLE」はマテリアライズド・ビューの名前です。 ちなみにSQL Developerからも更新したいマテリアライズド・ビューを右クリックして、「リフレッシュ・オプション > すぐに強制リフレッシュ」を選択することで強制的にリフレッシュが可能です。 リフレッシュ・タイプ(F):高速リフレッシュ リフレッシュ・タイプ(C):完全

    マテリアライズド・ビューの手動リフレッシュ - Oracle|OAR CODE
  • 3分でわかるマテリアライズド・ビュー -使い所と問題点を考える- - Qiita

    想定読者 マテリアライズド・ビューという言葉を聞いたことはあるがその意味や仕組みを知らない方 集計処理を実現する一つの手段としてマテリアライズド・ビューを検討している方 マテリアライズド・ビューの実装にあたり必要な知識・注意点を把握したい方 前提 以降の記載は以下のDBMSの使用を前提としています。 Oracle Database 10g, 11g, 12c 集計処理という敵とマテリアライズド・ビューという武器 システム開発を進める中で、何らかの集計処理が必要になることが多々あると思います。 例えば、売上高の集計処理(地域ごと・店舗ごと・期間ごとなど)や、特定の条件を満たす顧客の集計処理(商品名◯×を購入した顧客の合計数など)などです。 SQLで集計処理を実装すればよいのですが、実際に実装してみると以下のような問題が生じることがあります。 集計処理が遅い(複数テーブルの結合などに起因する処

    3分でわかるマテリアライズド・ビュー -使い所と問題点を考える- - Qiita
  • 実行計画の読み方(Oracle) - 闘うITエンジニアの覚え書き

    2024-02-04 Goでリフレクション 他のdocker-compose へのネットワーク接続 2024-01-09 Grafanaパネルプラグイン開発(create-plugin版) Grafanaプラグイン開発(grafana/toolkit版) 2023-09-23 Jupyter Lab に他言語カーネルインストール 2023-09-19 Rustの基礎 Rustのインストール Rust 2022-11-01 MacBook(M1チップ) でOracledockerイメージ作成 2022-02-04 Grafanaバックエンドデータソースプラグイン開発 2021-02-11 dockernginxSSL証明書の自動更新 2021-01-17 GoExcelを読む 2021-01-05 GoでAzure AAD認証 2020-12-16 FrontPage 2020-12

  • Oracle Databaseの「実行計画」についてわかりやすく語ってみた - Qiita

    上のイメージにお気づきになったかもしれませんが、SQLを実行するにあたって「実行計画」が重要な役割を果たしているのがわかるかと思います。この例はSELECT文であり、INSERT、UPDATE、DELETE文になるともう少し複雑になってきますが(※2)、質は変わりません。 2. 実行計画 Oracle Databaseの「実行計画」とは、文字どおり「SQLを実行するための計画」と言えばそれまでなのですが、言い換えると、どうしたらより短い時間でSQLを実行できるか、計算して導き出された、具体的な方法を「計画」としてまとめたものと言えます。実行計画の典型的な例として、上のイメージを挙げます。 ここでは、 SELECT * FROM USERTABLE WHERE USERID='detarame' AND PASSWORD='detarame'; のSELECT文を実行しているわけですが、

    Oracle Databaseの「実行計画」についてわかりやすく語ってみた - Qiita
  • Oracleでテーブルが属する表領域の確認や表領域の変更方法、また表領域の使用率の確認

    ちなみにdba_tablesからも表領域は確認できます。 select table_name,tablespace_name from dba_tables where owner = 'USER002'; OWNERを指定しないとSYSが所有するテーブルなども表示されるのでOWNERで条件を絞った方が良いです。 表領域の使用率を確認するには、以下SQLを発行します。 select tablespace_name, to_char(nvl(total_bytes / 1024 / 1024,0),'999,999,999') as "size(MB)", to_char(nvl((total_bytes - free_total_bytes) / 1024 / 1024,0),'999,999,999') as "used(MB)", to_char(nvl(free_total_byte

    Oracleでテーブルが属する表領域の確認や表領域の変更方法、また表領域の使用率の確認
  • アラートログを確認する上でおさえておきたい3つのポイント | アシスト

    弊社のサポートセンターでは年間1万件ほどOracle製品に関するお問い合わせをいただいており、そのうちの約半数がデータベースで発生したトラブルに関するものです。 Oracle Databaseの運用中に何かトラブルが発生した場合、調査はアラートログを確認するところから始まります。アラートログからはデータベースに関する様々な情報が出力されるため、調査において最も重要なファイルの一つです。この他に、エラー発生時の詳細な情報が出力されているトレースファイルや、インシデントファイルもトラブル調査に必要不可欠であり、サポートセンターにお問い合わせをいただく際にはこれらのファイルを送っていただきます。 今回はアラートログにどのような出力があるのか、また、どのような情報がトラブル調査に使われているのかを解説していきます。 アラートログの出力先は、Oracle Databaseのバージョンにより異なります

    アラートログを確認する上でおさえておきたい3つのポイント | アシスト
  • DATA PUMP の実行を中断したい場合 - bnote

    Oracle のインポート・エクスポートツールである DATA PUMP を実行中に何かしらの理由で中断したい場合、うっかりしてしまうと JOB が残ってしまいます。まぁ、実際のところ「Ctrl + C」で止めれると思い「Ctrl + C」を2回ほど押してしまい、再度エクスポートしたがいっこうに帰ってこなくて焦ったため、ここに記憶を残します。 DATA PUMP を正しく止める DATA PUMP を正しく止めるには、「Ctrl + C」を1回押します。すると、次のプロンプトが返ってきます。 Import> 上記プロンプトの状態で kill_job と入力することで DATA PUMP を停止することができます。 うっかり「Ctrl + C」を2回押してしまった場合 うっかり「Ctrl + C」を2回押してしまった場合、インポートやエクスポートの作業は実行中のステータスのままコンソールに復

  • oracleのimpが時間かかるとき - Qiita

    oracleでimpを使った際に時間がかかりすぎたので、インポートの速度を上げる方法はないか調べたら簡単な方法があったので。 imp分のパラメータにbuffer=○○○(○○○はバイト数)をつけるだけ。 これだけで数時間以上かかるインポートがものの10分ほどで終わりました。 ちなみにbuffer=2000000(約2MB)で実施しました。 impのデフォルトのバッファサイズがかなり小さい 調べたらデフォルトだと4096Byteらしく、そりゃ遅いわと納得。 Bufferのサイズはもう少し引き上げれるみたいですが、上限が20MBぐらいとの情報も。(古い情報かもしれませんが) 4KBから2MBになっただけでも500倍なので、それだけで十分ですが。

    oracleのimpが時間かかるとき - Qiita
    toa1121011
    toa1121011 2020/01/20
    バッファサイズを引き上げる
  • PL/SQLを2000行程書いたので、最後の力を振り絞りまとめる - Qiita

    はじめに PL/SQLを2000行ほど書いたので、最後の力を振り絞ってまとめ記事を作成しました。 1. PL/SQLの良いところ 親和性 PL/SQLORACLE DATABASESQLを拡張サポートする言語として開発された。下記のようにSQLとの親和性が高い。 ほとんどのSQL関数を利用可能 SQLの結果セットとカーソルに介入し処理が行える。 SQLとPL/SQLのデータ型を変換する必要がない。 パフォーマンス・管理性 PL/SQLORACLE DATABASEにコンパイルされるので呼び出し元の環境に依存せず利用できる。 再利用可能な関数ライブラリを提供することが出来る。 通信のオーバーヘッドを減らすことが出来る。 2. PL/SQLの使いどころ ユーザ定義関数 ユーザ定義関数を定義することで事前定義関数のように使うことが出来る。 例えば、コード変換や金額計算など呼び出し元に共通の

    PL/SQLを2000行程書いたので、最後の力を振り絞りまとめる - Qiita
  • PL/SQLパッケージ

    10 PL/SQLパッケージ この章では、互いに関連するPL/SQLコードとデータを1つにまとめ、複数のアプリケーションで使用できる内容を持つパッケージにする方法について説明します。 ここでのトピック パッケージ パッケージを使用する理由 パッケージ仕様部 パッケージ体 パッケージのインスタンス化および初期化 パッケージの状態 SERIALLY_REUSABLEパッケージ パッケージ作成のガイドライン パッケージの例 STANDARDパッケージによるPL/SQL環境の定義 関連項目: Oracle Databaseに用意されている多数の製品固有のパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。 「DROP PACKAGE文」(データベースからストアド・パッケージを削除する文)を参照してください。 パッケージ パッ

    toa1121011
    toa1121011 2019/05/17
    ストアドプロシージャ―、パッケージの状態、ステートフル、ORA-04068
  • sqlplusで接続情報などを確認する方法 (def) - Qiita

    DEFINE _DATE = "16-09-06" (CHAR) DEFINE _CONNECT_IDENTIFIER = "##SID##" (CHAR) DEFINE _USER = "SYS" (CHAR) DEFINE _PRIVILEGE = "AS SYSDBA" (CHAR) DEFINE _SQLPLUS_RELEASE = "1201000200" (CHAR) DEFINE _EDITOR = "ed" (CHAR) DEFINE _O_VERSION = "Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics, Real Application Testing and Uni

    sqlplusで接続情報などを確認する方法 (def) - Qiita
  • 接続確認(疎通確認) Oracle 備忘録 @みっちーわーるど

    データベースへの接続障害が発生したら、まずは接続確認(疎通確認)してみましょう。 主に以下の手順で確認できます。 PING TNSPING CONNECT まずはデータベースがあるサーバに接続できるかどうかを確認しましょう。 ping ホスト名(またはIPアドレス) 成功結果例 C:\>ping xxx.xxx.xxx.xxx Pinging tayori.ogis-ri.co.jp [yyy.yyy.yyy.yyy] with 32 bytes of data: Reply from yyy.yyy.yyy.yyy: bytes=32 time=1ms TTL=60 Reply from yyy.yyy.yyy.yyy: bytes=32 time=1ms TTL=60 Reply from yyy.yyy.yyy.yyy: bytes=32 time=1ms TTL=60 Reply

  • SQL*Plusの問い合わせ結果をファイルに出力する方法(Oracle) - 小さな星がほらひとつ

    SQL*Plusから問い合わせを行った結果をファイルに出力したい、なんてことは結構あると思います。 普段使わないと忘れがちなので、SQL*Plusの問い合わせ結果をファイルへ出力する方法をまとめておきます。 spoolコマンドによるファイル出力 出力ファイルの指定と書き込みの開始 書き込みの終了 ファイル出力時の問題と解決策 改行されすぎ問題 1行長すぎ問題 見出しが何度も出る問題 spoolコマンドによるファイル出力SQL*Plusからファイルへ出力する方法はとても簡単で、spoolコマンドを利用します。 コマンド形式(細かなオプション等は省略) spool ファイル名 select * from ~ spool off 具体的には例はこんな感じ。 SQL> spool C:\test.txt SQL> select * from SPOOL_TEST; ID NAME −−−−− −−

    SQL*Plusの問い合わせ結果をファイルに出力する方法(Oracle) - 小さな星がほらひとつ
  • 第5回 SQL*Plusを使いやすくする | NTTデータ先端技術株式会社

    Tweet 今回はSQL*Plusの話です。SQL*Plusは、Oracleデータベースの標準ツールとして昔から使われています。しかし昔から大きなアップデートが無いこともあり、現代のツールと比べると使い勝手が良いとは言えません。たとえベテランであっても、長いSQLを書くのは苦痛ではないでしょうか。そこで今回は「SQL*Plusを使いやすくする」いくつかの方法を説明します。 SQL*Plusを取り巻く状況 筆者が初めてOracleを使ったのは1994年のOracle7 R7.1のころだったでしょうか。20年以上前の当時でさえ、Borland Turbo Cのようなすぐれた統合環境があり、Microsoft Visual BasicやPower Builder、SQL Windowsといった統合GUI開発環境がありました。 このような状況のなか、初めてSQL*Plusを使った印象は最悪でした。

    第5回 SQL*Plusを使いやすくする | NTTデータ先端技術株式会社
  • SQL*Plus で 外部ファイル(.sql)を実行する - Oracle - Project Group

    SQL*Plus で SQL を記述した外部ファイルを実行する方法です。 実行するSQL を記述したファイルを「sample.sql」というファイル名で作成しておきます。 【実行手順】 SQL*Plus で実行します。 「@」の後にSQLファイルをフルパスで記述します。 SQL*Plus 起動時にSQLファイルを指定して実行します。 sqlplusの起動時の引数に半角スペースを入れて「@」とその後ろに実行する外部ファイルをフルパスで記述します。 ※ファイル名は環境に合わせて設定してください。 ※「sample.sql」ファイルには最後に「exit」を記述しておきます。 「exit」がないと SQL*Plus の中でコマンドの待ち状態になるのでいつまでたっても終了しません。

  • 田舎暮らしプログラマの技術メモ [ORACLE] インストール時にoui.exeエラーが発生する時

    オラクルをインストールする時に、 「oui.exe アプリケーションエラー」が発生する時の対処法です。 たぶん、そのインストールモジュールが置かれているパスの中に、 2バイト文字が含まれたフォルダがありませんか? どうやらインストールモジュールが置かれたフルパスの中に 日語などの2バイト文字が含まれると、oui.exeアプリケーションエラーが 発生するようです。 なので、インストールモジュールが置かれたパスに2バイト文字を含まない状態で インストールを実行すればOKです。(^v^)