忍者ブログ
DatabaseやLinuxなどの技術情報に関する備忘録を集めます。
2025 . 05
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • カレンダー
    04 2025/05 06
    S M T W T F S
    1 2 3
    4 5 6 7 8 9 10
    11 12 13 14 15 16 17
    18 19 20 21 22 23 24
    25 26 27 28 29 30 31
    フリーエリア
    最新コメント
    最新トラックバック
    プロフィール
    HN:
    Claude
    性別:
    非公開
    バーコード
    ブログ内検索
    アクセス解析
    ×

    [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

    WITH句にバインド変数を指定することで、
    バインド変数の適用箇所を減らすことができる。

    1SQLで大量のバインド変数(同じものがたくさん)になるとき
    バインド変数の数を減らすことで、バインド時の負荷をさげる
    ことができる。

    col manager_id format a10
    col insert_date format a30
    col inset_id format a10

    with
    bind_table as
    (select :decryptKey decryptKey, :target_date date01 from dual)
    SELECT
       sys.SMSDecrypt(MANAGER_ID, bind_table .decryptKey) manager_id,
       INSERT_DATE,
       INSERT_ID
    FROM
       MANAGER, bind_table 
    ;

    PR
    これを行えば、性能測定のときに
    便利!

    alter system flush buffer_cache;
    発行したSQLにバインド変数があった場合、どんな値が渡されたのか
    知りたいときがあります。
    そんなときはこのSQLを使ってバインド変数を調べましょう。

    --------------------------------------

     set heading on;
     set linesize 3000;
     set pagesize 50000;
     set termout off;
     set trimspool on;
     set colsep ',';

    col sql_id              form 99999      head "SQLID"
    col name                form a10        head "Name"
    col position            form 999        head "Position"
    col datataype_string    form a10        head "DatatypeString"
    col value_string        form a30        head "ValueString"
    col last_captured       form a10        head "LastCaptured"
     
     
    select distinct
        sql_id,
        name,
        position,
        datatype_string,
        value_string,
        TO_CHAR(last_captured, 'YYYY-MM-DD HH24:MI:SS')
    from
        v\$sql_bind_capture
     where
        SQL_ID = <SQL_ID>
     order by position;
     
    exit;

    以下のSQLたちは、大量データをインポートする際に
    高速化を狙ったDB構成情報を変更するためのものです。


      --表領域の拡張と増分変更
        set lines 200
        col tablespace_name format a10 trunc
        col file_name format a50 trunc
        select 
              file_id,
              tablespace_name,
              file_name, 
              bytes/1024/1024 || ' MB' as tablesize, 
              NEXT_EXTENT || 'KB' as NextExtent
        from 
              dba_data_files
        order by  file_id;

      -- エクステント数の確認
         SELECT
           SEGMENT_NAME, SEGMENT_TYPE, TABLESPACE_NAME, EXTENTS
         FROM DBA_SEGMENTS
         WHERE TABLESPACE_NAME = 'USERS'
         ORDER BY SEGMENT_NAME;

      -- データファイルのサイズ変更
        alter database datafile '/opt/oracle/oradata/test/users01.dbf' resize 11800M;

      -- データファイルの領域拡張サイズ変更
        alter database datafile '/opt/oracle/oradata/test/users01.dbf' autoextend on next 100M;
     
      -- REDOログの追加
      alter database add logfile group 4 '/opt/oracle/oradata/test/redo04.log' size 300M
      alter database add logfile group 5 '/opt/oracle/oradata/test/redo05.log' size 300M
      alter database add logfile group 6 '/opt/oracle/oradata/test/redo06.log' size 300M

      -- CURRENTログファイルの切り替え
      ALTER SYSTEM SWITCH LOGFILE;

      -- REDOログファイルの情報取得
      select * from v$log;

      -- ACTIVEなREDOログをNOT ACTIVEにするためにCHECKPOINTを行う。
      ALTER SYSTEM CHECKPOINT;


      -- REDOログファイルの削除
      alter database drop logfile group 1
      alter database drop logfile group 2
      alter database drop logfile group 3
     
    -- DB全体の統計情報取得(GATHER_STATS_JOBと同様の処理?)
    EXECUTE DBMS_STATS.GATHER_DATABASE_STATS();


    -- 統計情報取得JOBのスケジューリングON
    EXECUTE sys.dbms_scheduler.enable( '"SYS"."GATHER_STATS_JOB"' );

    -- 統計情報取得JOBのスケジューリングOFF
    EXECUTE sys.dbms_scheduler.disable( '"SYS"."GATHER_STATS_JOB"' );

     

    sqlplusで
       show parameter

    特定のパラメータを調べるには
       show parameter   名前
       (名前にはパラメータ名の一部分を記述すればよい。)


    動的パフォーマンスビュー(v$表)から取得する。
       select   *   from   v$parameter2;

    初期化パラメータを変更する
       ALTER  SYSTEM  SET  name=value  SCOPE=[SPFILE  |  MEMORY  |  BOTH]
            SPFILE:サーバーパラメータファイルが変更され、再起動後有効になる。
            MEMORY:即時適用されるが、次回適用時には元に戻る。(現在のみ有効)
            BOTH:上の2つ共に適用される。
    HOME 次のページ
    Copyright © Excellentデータベース技術者(?)のブログ All Rights Reserved
    Powered by ニンジャブログ  Designed by ピンキー・ローン・ピッグ
    忍者ブログ / [PR]