隠しパラメータの確認方法
set lines 140 pages 10000 col parameter format a40 col value format a20 col description format a60 select a.ksppinm as parameter, b.ksppstvl as value, a.KSPPDESC as description from x$ksppi a , x$ksppcv b where a.indx = b.indx and a.ksppinm Like '_%' ;
参考
http://system3support.jp/pdf/oracle_knowledge/100_technique/p296.pdf
設定されている初期化パラメータがデフォルト値か判断する
- V$PARAMETER の ISDEFAULT 列から判断可能。
- ISDEFAULT 列の値が TRUE なら デフォルト値(または init.ora , spfile に指定されていない)
- FALSE なら 任意に指定した値
試しに db_writer_processes を変更してみる。
SQL> -- 変更前のパラメータ値確認 show parameter db_writer_processes;SQL> NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_writer_processes integer 1 SQL> -- 変更前、デフォルト値か否かを確認 set lines 120 pages 1000 col name format a35 col value format a25 col isdefault format a9 col default_value format a25 select name, value, isdefault, default_value from v$parameter where name = 'db_writer_processes';SQL> SQL> SQL> SQL> SQL> SQL> SQL> 2 3 4 5 6 7 NAME VALUE ISDEFAULT DEFAULT_VALUE ----------------------------------- ------------------------- --------- ------------------------- db_writer_processes 1 ★TRUE★ 0 # ISDEFAULT 列が TRUE なので現在デフォルト値、またはspfileに指定されていない値となっている。 SQL> -- パラメータ値変更 alter system set db_writer_processes = 3 scope = spfile;SQL> システムが変更されました。 SQL> -- DB 再起動 shutdown immediateSQL> データベースがクローズされました。 データベースがディスマウントされました。 ORACLEインスタンスがシャットダウンされました。 SQL> startup ORACLEインスタンスが起動しました。 Total System Global Area 1392508928 bytes Fixed Size 8620608 bytes Variable Size 469763520 bytes Database Buffers 905969664 bytes Redo Buffers 8155136 bytes データベースがマウントされました。 データベースがオープンされました。 SQL> -- 変更後のパラメータ値確認 show parameter db_writer_processes;SQL> NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_writer_processes integer 3 SQL> -- 変更後、デフォルト値か否かを確認 set lines 120 pages 1000 col name format a35 col value format a25 col isdefault format a9 col default_value format a25 select name, value, isdefault, default_value from v$parameter where name = 'db_writer_processes';SQL> SQL> SQL> SQL> SQL> SQL> SQL> 2 3 4 5 6 7 NAME VALUE ISDEFAULT DEFAULT_VALUE ----------------------------------- ------------------------- --------- ------------------------- db_writer_processes 3 ★FALSE★ 0 # ISDEFAULT 列が FALSE なので指定した値がセットされている。
ダブルクォーテーション「"」ではなくウムラウト「¨」が入力されてしまう時の対処
事象
想定しているダブルクォーテーション「"」ではなくウムラウト「¨」が入力される。
環境
OS: OracleLinux 6.7(VertualBox上の仮想マシン)
キーボード: Keychron k2(v1) ※英字キーボード
発生状況
ターミナルで vi を使用してファイル編集を試みていた。
ダブルクォーテーションを入力しようとしたところ「"」ではなくウムラウト記号「¨」が入力された。
念のため、ターミナル外でテキストファイルを開いて入力してみたが同様の結果だった。
対処
キーボードのレイアウト設定が「デッドキー付き」になっていたので、別のレイアウトに変更した。
※OS インストール時に自分で意図せず選択していたのかも。
対処手順
GUIで以下の対処を実施した。
- 画面上部バーにある「システム」を選択
- 「設定」を選択
- 「キーボード」を選択
- 「レイアウト」タブを選択
- 「追加」ボタンを選択
- 「国」で「アメリカ合衆国」を選択
- 「系列」で「英語(US)」を選択
雑記
デッドキーとやらが有効なレイアウトに設定していた事が原因で発生していたようです。
自動UNDO管理から手動UNDO管理に変更したときの作業ログ
SQL> -- ロールバックセグメント用の表領域を作成 create tablespace rbs_test datafile '/u01/app/oracle/oradata/orcl/rbs01.dbf' size 10M;SQL> 表領域が作成されました。 SQL> -- ロールバックセグメントを表領域上に作成 create rollback segment rbs_1 tablespace rbs_test;SQL> ロールバック・セグメントが作成されました。 -- 手動UNDO管理にするため、UNDO_MANAGEMENT を MANUAL に変更 SQL> alter system set UNDO_MANAGEMENT = 'MANUAL' scope=spfile; システムが変更されました。 -- 変更を反映するため再起動 SQL> shutdown immediate データベースがクローズされました。 データベースがディスマウントされました。 ORACLEインスタンスがシャットダウンされました。 SQL> startup ORACLEインスタンスが起動しました。 Total System Global Area 1453092864 bytes Fixed Size 2253304 bytes Variable Size 436211208 bytes Database Buffers 1006632960 bytes Redo Buffers 7995392 bytes データベースがマウントされました。 データベースがオープンされました。 -- UNDO_NAMAGEMENT が MANUAL に変更されていることを確認 SQL> show parameter undo_management NAME TYPE VALUE ------------------------------------ --------------------------------- ------------------------------ undo_management string MANUAL
カーソルについての理解メモ
参考資料
Oracle Database
SQLチューニング・ガイド
12c リリース2 (12.2)
カーソル共有によるReal-World Performanceの改善
プライベートSQL領域について
- プライベートSQL領域には、解析済のSQL文に関する情報と、処理に使用するその他のセッション固有の情報が保持される。
- サーバー・プロセスでSQLまたはPL/SQLのコードが実行される場合、プロセスではプライベートSQL領域を使用してバインド変数値、問合せ実行状態情報、問合せ実行作業領域が格納される。# Private SQL Area の中身って確認できないのかな。
- 文の各実行におけるプライベートSQL領域は共有されず、異なる値やデータが含まれている可能性がある。
カーソルについて
- カーソルは、特定のプライベートSQL領域の名前またはハンドル。
- カーソルには、バインド変数の値や結果セットなどのセッション固有の状態の情報が含まれている。
- Client のデータ領域は、PGA のプライベートSQL領域を指しているカーソル。
- PGA のプライベートSQL領域は、共有プール内にあるライブラリキャッシュ、またその中にある共有SQL領域内の解析済みSQL等を指すカーソル。
親カーソルと子カーソル
VirtualBoxでGuestAdditionインストール後、ゲストOS起動時に、アイコンやメニューバーが表示されなくなる。
事象
VirtualBoxでゲストOS起動時に、デスクトップ画面のアイコンやメニューバーが消えた状態で表示される。(タイトルの通り)
環境
事象発生契機
Guest Additions をインストールし、OS再起動を実施後にアイコンやメニューバーが表示されない事を確認しました。
対処
グラフィックスコントローラーをVMSVGAからVBoxSVGAすると事象が解消しました。
対処手順
VirtualBoxで対象の仮想マシンを選択し「設定」→「ディスプレイ」→「グラフィックスコントローラー」で「VBoxSVGA」を選択。
WSL2無効後、VirtualBoxでのゲストOS起動がエラーで失敗する。
事象
WSL2を有効にすると、VertualBoxでゲストOS起動時にエラーが出て起動できなくなった。
そのため、WSL2を無効化することにした。(面白半分で入れただけなので)
VirtualBoxのバージョンが6.0だったので、とりあえず6.1にアップグレードした。
そして、WSL2を無効化した後、ゲストOS起動を試みたところ下記エラーが発生し失敗した。
Implementation of the USB 2.0 controller not found! Because the USB 2.0 controller state is part of the saved VM state, the VM cannot be started. To fix this problem, either install the 'Oracle VM VirtualBox Extension Pack' or disable USB 2.0 support in the VM settings. Note! This error could also mean that an incompatible version of the 'Oracle VM VirtualBox Extension Pack' is installed (VERR_NOT_FOUND).
対処
VirtualBox - 拡張パック(Extension Pack)をインストールする。
結果
改善した。
ゲストOS起動時にエラーは発生せず。