tech_memo / ORACLE


tech_memo

パラレル実行

遅延ブロッククリーンアウト

  • 参考
  • データブロックのステータスの更新を UNDO の領域(トランザクション表)を利用することで実質的に先延ばしする。
  • これによって大量に削除・更新を行なっているトランザクションを見かけ上、高速に完了することができる。
  • 先延ばしされた処理は次回ブロックが参照されたときに実行される。
  • この際、REDOとUNDOが生成されるため、SELECTだけでディスクのwriteが発生することになる

SQLトレース

隠しパラメータ

テーブル結合


V$SESSION_LONGOPS

メモリ管理

Supplemenal Logging

LogMiner?

REDOログ


Oracle Streams

SYSAUX

  • 占有データと、その利用量
    select schema_name, occupant_name, occupant_desc, space_usage_kbytes/1024 as space_usage_mb from v$sysaux_occupants order by 4;

デフラグ

Oracle Data Integrator (ODI)

PL/SQL


ODBC

Enterprise EditionとStandard Editionの機能の違い

High Water Mark

自律型トランザクション

Oracle 12c


ITLとITLデッドロック

ITL枯渇でトランザクションがWAITする再現方法

ITLダンプ方法

TroubleShooting?

Timezoneと時刻計算


Objectの定義情報(CREATE XXX ~)確認

SQL> set long 1000
SQL> set pages 1000
SQL> SELECT DBMS_METADATA.GET_DDL('TABLE', 'TEST_TABLE') from dual;

Buffer Cache上のデータ確認

  • http://ameblo.jp/archive-redo-blog/entry-10036131078.html
    select o.object_name, count(*) blocks, decode(b.lru_flag, 0, 'mushi', 2, 'oidasi',  4, 'free', 8, 'kotei', b.lru_flag) as lru_flag from x$bh b left outer join dba_objects o on b.obj = o.object_id where o.owner = 'DEFRAG' group by o.object_name, b.lru_flag order by 1, 3;

RECV_BUF/SEND_BUF

sales.us.acme.com=
 (DESCRIPTION= 
   (ADDRESS_LIST=
     (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-server)(PORT=1521)
        (SEND_BUF_SIZE=11784)
        (RECV_BUF_SIZE=11784))
     (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521)
        (SEND_BUF_SIZE=11784)
        (RECV_BUF_SIZE=11784))
   (CONNECT_DATA=
     (SERVICE_NAME=sales.us.acme.com)))
hr.us.acme.com=
 (DESCRIPTION= 
   (SEND_BUF_SIZE=11784)
   (RECV_BUF_SIZE=11784)
     (ADDRESS=(PROTOCOL=tcp)(HOST=hr1-server)(PORT=1521))
   (CONNECT_DATA=
     (SERVICE_NAME=hr.us.acme.com)))

AWR

  • 現時点でのスナップショットの作成
    SQL> EXECUTE DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
  • AWRレポート作成
    SQL> @?/rdbms/admin/awrrpt.sql
  • スナップID取得
    select SNAP_ID from DBA_HIST_SNAPSHOT;

ASH


Encryption

ASM

CUI Oracle Reference

RAC

アーカイブログ

Data Pump

Index

Cacheのクリア

  • 共有プール
    ALTER SYSTEM FLUSH SHARED_POOL;
  • バッファキャッシュ
    ALTER SYSTEM FLUSH BUFFER_CACHE;

ORDER BYをつけたときの不思議現象

Standard EditionでEMのPerformance画面を見る方法

  • 以下の初期化パラメータcontrol_management_pack_accessの値をDIAGNOSTIC+TUNINGに変更する
    ALTER SYSTEM SET control_management_pack_access = "DIAGNOSTIC+TUNING" SCOPE=MEMORY SID='*'
  • EMから設定する場合はserver-->初期化パラメータで設定可能
  • なおLicense違反に注意。

Oracle Enterprise Manager 11g Grid Control

データベースのDrop

  • http://www.shift-the-oracle.com/uninstall/drop-database.html
  • 下記SQLでdatafileも削除してくれる
    SQL> startup restrict mount
    ORACLE instance started.
    
    Total System Global Area 4.0486E+10 bytes
    Fixed Size                  2235216 bytes
    Variable Size            2.0133E+10 bytes
    Database Buffers         2.0267E+10 bytes
    Redo Buffers               84635648 bytes
    Database mounted.
    SQL> drop database;
    
    Database dropped.
    
    Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    SQL>
  • なお、Global SIDは削除されないようなので、/etc/oratabからエントリを削除する。(以下のようにエントリされているのでviで削除)
    TESTDB:/home/oracle/app/oracle/product/11.2.0/dbhome_1:N
  • RACの場合はcluster_database=falseを設定する必要がある。静的パラメータなのでspfileに書いて再起動
    alter system set cluster_database=false scope=spfile; 
    • dbcaで再度同じデータベース名で作成しようとしたら、already existsになった。dbca上でdeleteしたら問題なかったが、dropだけでは情報が残っている様子。

Lock確認

SELECT OSUSER, MACHINE, SID, SERIAL# FROM V$SESSION WHERE SID IN (
 SELECT SID FROM V$LOCK WHERE TYPE IN ('TM','TX')
);

import/export

  • http://www9.plala.or.jp/okuman/oracle/expimp.html
  • テーブルのexportに失敗することがある。
    [oracle@dbserver dump]$imp PTEST/PTEST@RAC ignore=y file=test_tab.dmp tables=\(TEST_TABLE\)
    
    Import: Release 11.2.0.2.0 - Production on Thu Mar 22 21:49:09 2012
    
    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
    
    
    Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
    With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
    Data Mining and Real Application Tes
    
    Export file created by EXPORT:V11.02.00 via conventional path
    import done in US7ASCII character set and AL16UTF16 NCHAR character set
    import server uses WE8MSWIN1252 character set (possible charset conversion)
    . importing PTEST's objects into PTEST
    IMP-00032: SQL statement exceeded buffer length
    IMP-00008: unrecognized statement in the export file:
    
    -- ommit
    
    importing PTEST's objects into PTEST
    Import terminated successfully with warnings.
  • 以下のメッセージはFetchするバッファサイズが足りないということ
    • IMP-00032: SQL statement exceeded buffer length
  • bufferオプションに10Mを指定してやるとうまくいった。一般的にバッファサイズが大きいほうが性能は出るらしい。
    [oracle@dbserver dump]$imp PTEST/PTEST@RAC buffer=10485760 ignore=y file=test_tab.dmp tables=\(TEST_TABLE\)
    
    Import: Release 11.2.0.2.0 - Production on Thu Mar 22 21:53:17 2012
    
    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
    
    
    Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
    With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
    Data Mining and Real Application Tes
    
    Export file created by EXPORT:V11.02.00 via conventional path
    import done in US7ASCII character set and AL16UTF16 NCHAR character set
    import server uses WE8MSWIN1252 character set (possible charset conversion)
    . importing PTEST's objects into PTEST
    . importing PTEST's objects into PTEST
    . . importing partition "TEST_TABLE":"TEST_TABLE_P001"      72624 rows imported
    . . importing partition "TEST_TABLE":"TEST_TABLE_P002"          0 rows imported
    〜〜
    . . importing partition "TEST_TABLE":"TEST_TABLE_P109"          0 rows imported
    . . importing partition "TEST_TABLE":"TEST_TABLE_P110"          0 rows imported
    Import terminated successfully without warnings.

Partition

  • Partitionテーブル情報取得
    select TABLE_NAME,PARTITION_NAME, HIGH_VALUE from dba_tab_partitions;
  • Partition typeの確認
    SQL> select TABLE_NAME, PARTITIONING_TYPE, SUBPARTITIONING_TYPE, REF_PTN_CONSTRAINT_NAME from user_part_tables;
    
    TABLE_NAME                     PARTITION SUBPARTIT REF_PTN_CONSTRAINT_NAME
    ------------------------------ --------- --------- ------------------------------

Extent 拡張

セグメントのサイズエクステントのサイズ
1MB以内64KBずつ
1MBより大きく、64MB以内c1MBずつ
64MBより大きく、1GB以内8MBずつ
1GBよりも大きい64MB

SQL

SQL*Plus

SQLDevlopper

statspack

  • install
    SQL> @$ORACLE_HOME/rdbms/admin/spcreate.sql
  • snapshot purge
    SQL>@$ORACLE_HOME/rdbms/admin/sppurge.sql

ORACLE Client silent install

  • Install
./runInstaller -silent -responseFile /path/to/your_response_file.rsp
  • Response File

Edit $oracle_archive/client/response/client_install.rsp

Set values for the variables listed below.

UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/home/oracle/oraInventory
SELECTED_LANGUAGES=en,ja
ORACLE_HOME=/home/oracle/app/product/11.2.0/client_1
ORACLE_BASE=/home/oracle/app
oracle.install.client.installType=Administrator

Patch

Patch適用

適用済みPatch確認

  • $ORACLE_HOME/OPatch/opatch lsinventory -detail
    • 以下のようにパッチ番号と適用日時が表示
      〜省略〜
      
      Interim patches (1) :
      
      Patch  12827726     : applied on Tue Nov 15 15:00:05 JST 2011
      Unique Patch ID:  14016281
          Created on 21 Sep 2011, 06:46:41 hrs PST8PDT
         Bugs fixed:
           10158965, 10031806, 12635537, 9746210, 9744252, 9956713, 10356513
      
      〜省略〜

Patch種類

  • Patch Set (PS)
    • 11.2.0.XのXの部分ごとに出てるInstaller
  • Patch Set Update (PSU)
    • 11.2.0.3.XのX部分が変更になる、Opatchで適用するパッチ
    • バージョン変更はopatch lsinventoryで、パッチバージョンを確認する
      Patch description:  "Database Patch Set Update : 11.2.0.2.7 (13923804)"
         Created on 11 Jun 2012, 07:29:27 hrs PST8PDT
      Sub-patch  13696224; "Database Patch Set Update : 11.2.0.2.6 (13696224)"
  • Critical Patch
    • PSUとは別に出る緊急パッチ。PSUには基本、Criticalパッチは含まれているので、普段適用することはない。

SQL実行時間の取得

set timing on

統計情報

実行計画

Listener

Parameter

Option

Data Type

NUMBER

  • NUMBER(p, s)
    • p : 精度(precision)、全体の桁数。最大38桁。
    • s : 位取り(scale)、小数点の右側にある桁数。有効範囲−84〜127

INTEGER

  • INTEGER == NUMBER(38,0)
    このデータ型は NUMBER データ型のエイリアスであり、OracleDataReader が浮動小数点数値ではなく
    System.Decimal または OracleNumber を返すことを目的として用意されています。
     .NET Framework データ型を使用することで、オーバーフローが発生する場合があります。