ねら~ITエンジニア雑記

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

Database

増分統計(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文) …

Oracle Database Technology Night #8(2017/4/21(金)データベース・アップグレードのススメ for Oracle Database 12c)の 資料が公開されていた。

先週金曜日 の Oracle Tech Night #9(チューニング話) に 参加できず悲しみに暮れている中、先月(4月) の Tech Night #8 の 資料が公開されていることに気付いた。彡(゚)(゚) 2017/4/21(金) データベース・アップグレードのススメ for Oracle Database 12c R…

12cで実装された MOVE ONLINE は索引もメンテナンスされてUNUSABLEにならず、DMLも待たされない。(Oracle Database)

昨日の続き。表題の通りで 12cで実装された MOVE ONLINEの方 がメリットがあります。UPDATE INDEXES句による索引メンテナンスは表ロック(TMエンキュー)の 影響で並走するDMLが待たされて、かつ実行中に索引がUNUSABLEになる 瞬間が有るとしばちょう先生より…