LoginSignup
2
1

More than 5 years have passed since last update.

sqlplus の SET AUTOTRACE TRACEONLY は トレースオンリーじゃなくてトランザクションが実行されてしまう。

Last updated at Posted at 2016-01-20

表題の通り、sqlplus の SET AUTOTRACE TRACEONLY はトレースオンリーじゃなくてトランザクションが実行されていまいます。

autotrace.sql
SQL> CREATE TABLE TBL_A(C1 NUMBER);

Table created.

SQL> SELECT COUNT(*) FROM TBL_A;

  COUNT(*)
----------
         0

SQL> SET AUTOTRACE TRACEONLY; SET AUTOTRACE TRACEONLYを設定

SQL> INSERT INTO TBL_A SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= 100; INSERT  SELECT文を実行

100 rows created.


Execution Plan
----------------------------------------------------------
Plan hash value: 1236776825

-------------------------------------------------------------------------------
| Id  | Operation                     | Name  | Rows  | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------
|   0 | INSERT STATEMENT              |       |     1 |     2   (0)| 00:00:01 |
|   1 |  LOAD TABLE CONVENTIONAL      | TBL_A |       |            |          |
|*  2 |   CONNECT BY WITHOUT FILTERING|       |       |            |          |
|   3 |    FAST DUAL                  |       |     1 |     2   (0)| 00:00:01 |
-------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - filter(LEVEL<=100)


Statistics
----------------------------------------------------------
          4  recursive calls
         29  db block gets
          9  consistent gets
          0  physical reads
       2908  redo size
        833  bytes sent via SQL*Net to client
        816  bytes received via SQL*Net from client
          3  SQL*Net roundtrips to/from client
          3  sorts (memory)
          0  sorts (disk)
        100  rows processed

SQL> COMMIT;

Commit complete.

SQL> SET AUTOTRACE OFF;
SQL> SELECT COUNT(*) FROM TBL_A;

  COUNT(*)
----------
       100 ★テーブルにレコードが挿入されている。

SQL>

「SET AUTOTRACE TRACEONLY」はあくまで SQL*Plus の表示上の問題で、
実行する SQL文の意味合いが変わる訳ではないんやで 彡(゚)(゚)

SQL*Plus の マニュアルもどうぞ。

SQL*Plus ユーザーズ・ガイドおよびリファレンス
リリース11.2 B56314-03
SET AUTOTRACE
http://docs.oracle.com/cd/E16338_01/server.112/b56314/ch_twelve040.htm#i2698680

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1