ねら~ITエンジニア雑記

やきうのお兄ちゃんが綴るOracle Databaseメインのブログ

Database

OTN の VirtualBoxイメージ で Oracle DB 18c環境 を 楽々構築【Oracle Database or GoldenGate Advent Calendar 2018 Day 5】

1. VirtualBox をインストール 2. Database Virtual Box Appliance / Virtual Machine の ovaイメージをダウンロード 3. ovaイメージのインポート 4. 仮想マシンの起動 5. 仮想マシンへのアクセス(ssh + sqlplus) 6. 仮想マシン上のDBへのアクセス(SQL Devel…

Oracle DatabaseでSQLの性能計測1(SET AUTOTRACE TRACEONLY と SET TIMING ON編)【Oracle Database or GoldenGate Advent Calendar 2018 Day 1】

1. AUTOTRACE とは? 2. SET TIMING とは? 3. 実行サンプル 4. 出力された統計の見方 5. AUTOTRACE TRACEONLY の注意点 6. まとめ このエントリは Oracle Database or GoldenGate Advent Calendar 2018 の Day 1 の記事となります。 Oracle Database or Gol…

増分統計(INCREMENTALプリファレンス)を有効にした状態で統計を採取して、シノプシス(synopsis)が使われる様子をSQLトレースで確認する。

表題の通り、増分統計(INCREMENTALプリファレンス=TRUE)を採取してみて、 内部動作をSQLトレースで確認してみるやで彡(゚)(゚) Oracle Database SQLチューニング・ガイド 18c 13.2.8.2 DBMS_STATSによるパーティション表のグローバル統計の導出方法 https://do…

表のオンライン再定義(DBMS_REDEFINITION)で、データを更新しながら RANGE PARTITION&グローバル索引 -> HASH PARTITION&ローカル索引への定義変更をやってみる。(Oracle Database)

タイトルが長いですが、表のオンライン再定義はDMLによるデータ更新を 制限せずに、表定義(論理構造や物理構造)を変更する機能です。 Oracle Database管理者ガイド 12cリリース1 (12.1) 20.7 表のオンライン再定義 https://docs.oracle.com/cd/E57425_01/121…

9iR2環境から18c環境のPDBにTTS(トランスポータブル表領域)でデータを移行してみる(Oracle Database)

表題の通り、9iR2環境から18c環境のPDBにTTS(トランスポータブル表領域)で データを移行してみるやで彡(゚)(゚) 以下の構成で検証します。 9iR2 ⇒ (トランスポータブル表領域) ⇒ 18c(PDB) 1. プラットフォーム、キャラクタセット、ブロックサイズの確認(9iR2 a…

セミナー「デモとディスカッションで体験するOracle DBトラブル対応・2018/8/22(水)」の開催報告と資料共有

昨日 2018/8/22(水) に、下記セミナーを開催させて頂きました。 ご参加いただいた方々、誠に有難うございました!彡(^)(^) デモとディスカッションで体験するOracle DBトラブル対応 https://study-oracle-technology-workshop.connpass.com/event/95420/ デ…

CLOB型の(文字数ではなく)バイト数を返却するファンクションを自作(Oracle Database)

昔の記事(https://gonsuke777.hatenablog.com/entry/20150129/1422535354)が間違っていたので、訂正を兼ねた記事を作成彡(゚)(゚) CLOB型の(文字数ではなく)バイト数を返却するファンクションを自作してみます。 CONVERTTOBLOBプロシージャでCLOB型をBLOB型…

LOCALTIMESTAMP, CURRENT_TIMESTAMP, SYSTIMESTAMP の各組み込み関数の挙動を検証してみる。(Oracle Database)

ワイの中で今サマータイムがアツい彡(゚)(゚) サマータイムに絡んで、Oracle Database の組み込み関数の LOCALTIMESTAMP, CURRENT_TIMESTAMP, SYSTIMESTAMP の挙動を検証してみる。 1. Case1. OSタイムゾーンが日本(JST)の状態で検証 まずOSのタイムゾーンが日…

サマータイム(夏時間, Daylight Saving)を理解するためにTIMESTAMP WITH TIME ZONE型と戯れてみる。(Oracle Database)

サマータイムが話題ですやね彡(゚)(゚) ワイら日本人には馴染みの薄いサマータイムですが、これを理解するために Oracle Database のTIMESTAMP WITH TIME ZONE型と戯れてみます。 1. TZR書式/TZD書式に使用可能な文字列を確認して、サマータイムを使用するタイ…

SQLNET.COMPRESSIONによる圧縮がDBMS_FILE_TRANSFERパッケージのファイル転送(コピー)に効くかを確かめる。(Oracle Database)

SQLNET.COMPRESSIONは12cR1の新機能で、 Oracle Net Servicesによる通信を圧縮する効果が期待されるパラメータです。 Oracle Database Net Servicesリファレンス 12cリリース1 (12.1) B71289-04 SQLNET.COMPRESSION https://docs.oracle.com/cd/E57425_01/12…

DBMS_FILE_TRANSFERパッケージでDB(11gR2) -> DBLINK -> PDB(12cR2)のデータファイルの転送(コピー)を実行する。(Oracle Database)

DBMS_FILE_TRANSFERパッケージで中間ファイルを介さずに、 DB(11gR2) to PDB(12cR2) の直接のファイル転送(コピー)を 実行してみますやで彡(゚)(゚) Oracle Database PL/SQL Packages and Types Reference 12c Release 2 (12.2) 67 DBMS_FILE_TRANSFER https:/…

Oracle Database 11gR2(11.2.0.4)から12cR2(12.2.0.1)のPDBにTTS(トランスポータブル表領域)をしてみる。

表題の通り、Oracle Database 11gR2(11.2.0.4)から12cR2(12.2.0.1)の PDBにTTS(トランスポータブル表領域)を実行してみるやで彡(゚)(゚)プラットフォームはどちらも Linux x86 64bitで試します。 特別な手順は必要なくマニュアル通りに粛々と実施するだけです…

Hard Parseに時間が掛かるお手軽なSQLを作ってみる。(Oracle Database)

「Hard Parseに時間が掛かる手軽なSQLを作りたい。彡(゚)(゚)」と呟いた (※下記twitterモーメント参照)ところ、色々とアイデアを頂いたので、 全部ではないのですがお試し&まとめてみましたやで彡(゚)(゚) Hard Parseに時間が掛かるSQL ※twitterモーメント http…

ALTER SYSTEM KILL SESSION…"だけ"の権限付与を12c新機能のCode Based Access Control+実行者権限プロシージャで実現してみる。(Oracle Database)

前回のエントリ gonsuke777.hatenablog.com からの続き。 Qiita の @tlokweng さんから 12c新機能のCode Based Access Control なるものの存在を教えて頂きますた彡(゚)(゚)ALTER SYSTEM KILL SESSION…によるユーザーセッションの切断は許可したいけど、 ALTER…

ALTER SYSTEM KILL SESSION…"だけ"の権限付与を定義者権限のプロシージャで実現してみる。(Oracle Database)

ALTER SYSTEM KILL SESSION…によるユーザーセッションの切断は許可したいけど、 ALTER SYSTEM権限の付与(GRANT)は範囲が広過ぎる、権限が強過ぎる。 ALTER SYSTEM KILL SESSIONだけ許可したい……てな要件を、 定義者権限(AUTHID DEFINER)のプロシージャで実現…

Oracle Database の DRCP(データベース常駐接続プーリング)の MINSIZE と MAXSIZE を 1 に設定して、複数セッションから接続してみる。

DRCP は 通常はAPサーバー側で確保するコネクションプール を Oracle Database側で用意しておく機能やね彡(゚)(゚)DRCPでMAXSIZEを超える同時接続要求が来た際の挙動を確認してみるんやで。まずは DRCP の設定を変更して、開始します。 -- DRCPの最大接続数/…

Oracle Database 12cR2(12.2)だとTABLEファンクションのTABLE句が省略できるらしいのでDBMS_XPLANで試してみる。

※本エントリで記述されている事項はドキュメント非記載のため、原則非サポートと考えて下さい。 ※(2018/12/24追記)マニュアルに載ってました。 Oracle DatabaseデータベースPL/SQL言語リファレンス 18c 12.5.1 テーブル・ファンクションの概要 https://docs.…

V$SQLとその周辺でER図を描いてみよう! - JPOUG Advent Calendar 2017 Day 15 -

JPOUG Advent Calendar 2017 の Day 15 の記事となります。 昨日は おおのたかしさん の記事でした彡(゚)(゚) Oracle Database 12cR2へのアップグレード後に発生するORA-01017 https://www.ashisuto.co.jp/db_blog/article/201712-ora-01017.html 今年はV$SQL…

JavaのPreparedStatementを使ったバインド変数なSQLで、ワザとORA-1000エラーを起こすソースを書いてみて回避策を探る。

ORA-1000エラーはOracle Databaseのセッションでオープンしている カーソル数が最大値を超えた際に発生するエラーです。 ORA-1000 最大オープン・カーソル数を超えました。 早速やってみるやで彡(゚)(゚) まずはテーブルの準備から。 CREATE TABLE TBL_A( C1 N…

SQLNET.AUTHENTICATION_SERVICESをnoneに設定してOS認証を無効化してみる(Oracle Database)

sqlnet.ora の SQLNET.AUTHENTICATION_SERVICES を none に セットすると、OS認証を無効化することができるんやで彡(゚)(゚)さっそくやってみます。 設定前(デフォルト) $ id -a uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba) $ c…

DBMS_PERF.REPORT_PERFHUBファンクションでパフォーマンス・ハブ画面をHTML出力してみる。

DBMS_PERFパッケージのREPORT_PERFHUBファンクションを使うと、 Enterprise Managerのパフォーマンス・ハブ相当の画面をHTML出力できるんやで。 彡(゚)(゚) ※Enterprise Managerを構築することなく、DB単体で出力できます。まず以下のようにしてhtmlファイルを…

単純なINSERT文でもバインド変数のサイズの違いで複数の子カーソルが生成される(Oracle Database)

表題の通り、やってみるやで彡(゚)(゚) INSERTするバインド変数の大きさの順番/組み合わせで挙動が変わるので、 まずはバイト数が小さい順にINSERTしてみるやで。 バイト数の小さい順にINSERT 実行するSQLは下記 -- 共有プールをFLUSH ALTER SYSTEM FLUSH SHA…

java の CallableStatementインタフェース で ストアド・プロシージャ をコールして、V$ACTIVE_SESSION_HISTORY の PROGRAM列 や MODULE列を見てみる。(Oracle Database + java)

java の CallableStatementインタフェース で Oracle Database の ストアド・プロシージャ を コールして、V$ACTIVE_SESSION_HISTORY の PROGRAM列 や MODULE列 に何がセットされるかを見てみるやで彡(゚)(゚)下記サイトを参考にしながら書いてみたやで。 相変…

12cR2(12.2.0.1)のAWRレポートにはAvg Wait に ns(ナノ秒) や us(マイクロ秒) が出力される。(Oracle Database)

下記画像参照やで彡(゚)(゚) us は多数、Network の Avg Wait が ns(ナノ秒)

CLOBをSELECTして表示するjavaソース・サンプル(Oracle Database + java)

下記サイトを参考にしながら書いてみたやで。彡(゚)(゚) ワイ java は不慣れなんで、そこは勘弁やで彡(-)(-) SELECT文サンプル http://java-reference.com/java_db_select.htmlインタフェースClob https://docs.oracle.com/javase/jp/8/docs/api/java/sql/Clob…

SET FEEDBACK ONLY と SET TIMING ON で SQL の結果を表示せずに性能計測(Oracle Database 12cR2新機能)

SQL*Plus の 12cR2の新機能 で、SET FEEDBACK ONLY をセットすると、 結果を表示せずに行数だけを表示できるんやで彡(゚)(゚) SQL*Plus ユーザーズ・ガイドおよびリファレンス リリース2 (12.2) E81324-02 SET FEED[BACK] http://docs.oracle.com/cd/E82638_01…

Oracle APEX Meetup 第2回「2時間でできるAPEXハンズオン」(6/1・木) に行ってみたのでご報告

ちと間が空いたのだけれども、6/1(木) に Oracle APEX Meetup 第2回 に 行ってみたので、レポるやで彡(゚)(゚)今回は「2時間でできるAPEXハンズオン」と銘打って、 簡単なアプリケーションをその場で作るというもの。下記のチュートリアルでBASICなアプリを作…

TRUNCATE TABLE …等 の DDL で「ORA-54: リソース・ビジー…(ORA-00054: resource busy...)」が発生する際の小技(Oracle Database)

以下のように TRUNCATE TABLE …文 や ALTER TABLE …文 を実行すると、 ORA-54エラー(リソース・ビジー) が 発生することがあります。 #十中八九トランザクションが走ってるケースやね彡(゚)(゚) SQL> TRUNCATE TABLE TBL_A; TRUNCATE TABLE TBL_A * ERROR at …

1. SELECT ... FOR UPDATE ⇒ 2. DDL(待機) ⇒ 3. UPDATE ⇒ 1. COMMIT ⇒ 2. DDL流れる ⇒ 3. ROLLBACK でどうなるか?(Oracle Database)

これもやってみましたやで彡(゚)(゚) まずはテストデータから。 --テストデータ SELECT C1 FROM TBL_A; C1 ---------- 1 2 Session1(SELECT ... FOR UPDATE文) SELECT 1 FROM TBL_A WHERE C1 = 1 FOR UPDATE; 1 ---------- 1 23:05:42 SQL> Session2(ALTER TAB…

(1). SELECT ... FOR UPDATE ⇒ (2). SELECT ... FOR UPDATE ⇒ (3). ALTER TABLE ... ⇒ (4). 単なる SELECT の順番でSQLを実行して、ロック(エンキュー)の獲得状況を V$LOCKから確認してみる。(Oracle Database)

タイトル長いけど、やってみるやで彡(゚)(゚) まずはデータ用意から。 CREATE TABLE TBL_A (C1 NUMBER); INSERT INTO TBL_A VALUES(1); INSERT INTO TBL_A VALUES(2); COMMIT; 以下の順番でSQLを流してみると…… Session1のSQLを実行(SELECT ... FOR UPDATE文) …