約 143,092 件
https://w.atwiki.jp/sunbalcan/pages/25.html
トレースの取得方法 ◆現行セッションのトレースを取得する ALTER SESSION SET TIMED_STATISTICS = TRUE; ALTER SESSION SET SQL_TRACE = TRUE; ◆データベースインスタンス全体でトレースを開始する データベースインスタンス全体でトレースを開始するには、init.ora で以下のパラメータを設定する。 timed_statistics = true sql_trace = true ※timed_statisticsパラメータは「ALTER SYSTEM SET TIMED_STATISTICS = TRUE;」コマンドで設定することも可能です。 sql_traceパラメータは、「ALTER SYSTEM」コマンドで設定することはできません。 ◆特定ユーザのセッションでトレースを開始する EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(sid, SERIAL#, TRUE); 現行セッションのトレースを取得する例 ◆現行セッションのトレースを開始する SQL ALTER SESSION SET TIMED_STATISTICS = TRUE; セッションが変更されました。 SQL ALTER SESSION SET SQL_TRACE = TRUE; セッションが変更されました。 ◆ SQL文を実行する SQL SELECT * FROM EMP ORDER BY EMPNO; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- -------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 80-12-17 800 20 7499 ALLEN SALESMAN 7698 81-02-20 1600 300 30 7521 WARD SALESMAN 7698 81-02-22 1250 500 30 ・ ・ ・ 7934 MILLER CLERK 7782 82-01-23 1300 10 14行が選択されました。 SQL SELECT * FROM EMP WHERE EMPNO = 7788; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- -------- ---------- ---------- ---------- 7788 SCOTT ANALYST 7566 87-04-19 3000 20 SQL ◆トレースファイルの確認 コマンドプロンプト E \oracle\admin\GP6450\udump DIR ドライブ E のボリューム ラベルは ボリューム です ボリューム シリアル番号は XXXX-XXXX です E \oracle\admin\GP6450\udump のディレクトリ 2003/02/22 17 32 DIR . 2003/02/22 17 32 DIR .. 2003/02/22 17 34 1,285 ORA01336.TRC 1 個のファイル 1,285 バイト 2 個のディレクトリ 14,128,570,368 バイトの空き領域 E \oracle\admin\GP6450\udump ◆TKPROF を使ってトレースファイルを整形する E \oracle\admin\GP6450\udump TKPROF ORA01336.TRC A.TXT EXPLAIN=SCOTT2/TIGER TKPROF Release 8.1.7.0.0 - Production on 土 Feb 22 17 39 41 2003 (c) Copyright 2000 Oracle Corporation. All rights reserved. E \oracle\admin\GP6450\udump ◆出力結果の例 A.TXT TKPROF Release 8.1.7.0.0 - Production on 土 Feb 22 17 39 41 2003 (c) Copyright 2000 Oracle Corporation. All rights reserved. Trace file ORA01336.TRC Sort options default ******************************************************************************** count = number of times OCI procedure was executed cpu = cpu time in seconds executing elapsed = elapsed time in seconds executing disk = number of physical reads of buffers from disk query = number of buffers gotten for consistent read current = number of buffers gotten in current mode (usually for update) rows = number of rows processed by the fetch or execute call ******************************************************************************** ALTER SESSION SET SQL_TRACE = TRUE call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 0 0.00 0.00 0 0 0 0 Execute 1 0.01 0.01 0 0 0 0 Fetch 0 0.00 0.00 0 0 0 0 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 1 0.01 0.01 0 0 0 0 Misses in library cache during parse 0 Optimizer goal CHOOSE Parsing user id 43 (SCOTT2) ******************************************************************************** SELECT * FROM EMP ORDER BY EMPNO call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.01 0.01 0 0 0 0 Execute 1 0.00 0.00 0 0 0 0 Fetch 2 0.00 0.01 1 4 0 14 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 4 0.01 0.02 1 4 0 14 Misses in library cache during parse 1 Optimizer goal CHOOSE Parsing user id 43 (SCOTT2) Rows Row Source Operation ------- --------------------------------------------------- 14 TABLE ACCESS BY INDEX ROWID EMP 15 INDEX FULL SCAN (object id 25260) Rows Execution Plan ------- --------------------------------------------------- 0 SELECT STATEMENT GOAL CHOOSE 14 TABLE ACCESS (BY INDEX ROWID) OF EMP 15 INDEX (FULL SCAN) OF PK_EMP (UNIQUE) ******************************************************************************** SELECT * FROM EMP WHERE EMPNO = 7788 call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.00 0.00 0 0 0 0 Execute 1 0.00 0.00 0 0 0 0 Fetch 2 0.00 0.00 0 2 0 1 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 4 0.00 0.00 0 2 0 1 Misses in library cache during parse 1 Optimizer goal CHOOSE Parsing user id 43 (SCOTT2) Rows Execution Plan ------- --------------------------------------------------- 0 SELECT STATEMENT GOAL CHOOSE 0 TABLE ACCESS (BY INDEX ROWID) OF EMP 0 INDEX (UNIQUE SCAN) OF PK_EMP (UNIQUE) ******************************************************************************** OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 2 0.01 0.01 0 0 0 0 Execute 3 0.01 0.01 0 0 0 0 Fetch 4 0.00 0.01 1 6 0 15 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 9 0.02 0.03 1 6 0 15 Misses in library cache during parse 2 OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 0 0.00 0.00 0 0 0 0 Execute 0 0.00 0.00 0 0 0 0 Fetch 0 0.00 0.00 0 0 0 0 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 0 0.00 0.00 0 0 0 0 Misses in library cache during parse 0 3 user SQL statements in session. 0 internal SQL statements in session. 3 SQL statements in session. 2 statements EXPLAINed in this session. ******************************************************************************** Trace file ORA01336.TRC Trace file compatibility 8.00.04 Sort options default 0 session in tracefile. 3 user SQL statements in trace file. 0 internal SQL statements in trace file. 3 SQL statements in trace file. 3 unique SQL statements in trace file. 2 SQL statements EXPLAINed using schema SCOTT2.prof$plan_table Default table was used. Table was created. Table was dropped. 25 lines in trace file. 特定ユーザのセッションでトレースを取得する例 ◆ 権限の付与とシノニムの作成 Oracle SQL*Plus SQL CONNECT SYS/CHANGE_ON_INSTALL 接続されました。 SQL GRANT EXECUTE ON DBMS_SYSTEM TO SYSTEM; 権限付与が成功しました。 SQL CREATE PUBLIC SYNONYM DBMS_SYSTEM FOR SYS.DBMS_SYSTEM; シノニムが作成されました。 SQL ◆ユーザのセッションID(sid)とシリアル番号(serial#)を取得する Oracle SQL*Plus SQL CONNECT SYSTEM/MANAGER@GP6450 接続されました。 SQL SELECT SID, STATUS, 2 SUBSTR(USERNAME, 1, 8) USERNAME, 3 SUBSTR(SCHEMANAME, 1, 8) SCHEMANAME, 4 SUBSTR(OSUSER, 1, 16) OSUSER, 5 SUBSTR(MACHINE, 1, 16) MACHINE, 6 SUBSTR(PROGRAM, 1, 16) PROGRAM, 7 SERIAL# 8 FROM V$SESSION 9 WHERE USERNAME IS NOT NULL 10 ORDER BY SID; SID STATUS USERNAME SCHEMANAME OSUSER MACHINE PROGRAM SERIAL# ---------- -------- ---------------- ---------------- -------------------------------- ---------------- ---------------- -------------------------------- ---------- 11 ACTIVE SYSTEM SYSTEM GP6450\USER01 WORKGROUP\GP6450 SQLPLUSW.EXE 1819 14 INACTIVE SCOTT2 SCOTT2 GP6450\USER01 WORKGROUP\GP6450 SQLPLUSW.EXE 4723 SQL ◆ 特定ユーザのセッションでトレースを開始する Oracle SQL*Plus SQL EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(14, 4723, TRUE); PL/SQLプロシージャが正常に完了しました。 SQL
https://w.atwiki.jp/cowbell/pages/22.html
SQL比較 既存テーブル内容ごと新規テーブルにコピーする <Oracle> CREATE TABLE TEST2 AS SELECT * FROM TEST1 <SQL Server> <MSAccess> SELECT * INTO TEST2 FROM TEST1
https://w.atwiki.jp/ora_tips/pages/32.html
①実行ファイルの内容を画面に表示する set echo on 例) SQL set echo on SQL @a.sql SQL begin SQL dbms_output.put_line( OK ); SQL end; SQL / PL/SQLプロシジャが正常に完了しました
https://w.atwiki.jp/atyou/pages/20.html
「RECURSIVE」および「NON-RECURSIVE」の違いについて、 再帰的コール(RECURSIVE CALL)とは: ユーザが発行した[[SQL文]]を実行するために、[[Oracle]]は追加の文を発行しなければ ならないことがあります。このような文を再帰的コールまたは再帰的SQL文とい います。たとえば、十分な領域のない表に行を挿入しようとすると、Oracleは 再帰的コールを実行して動的に領域を割り当てます。[[SQLトレース]]機能が使用可能 になっているときに、再帰的コールが発生すると、TKPROFは再帰的コールの原因 となった文に加えて再帰的SQL文の統計を表示します。 再帰的コールの見分け方: TKPROFで出力されているSQL文が再帰的SQL文かそうでないかは、各SQL文の最後 の「recursive depth」情報で判断します。この値が1以上の場合、そのSQL文は 再帰的SQL文としての統計情報となります。 再帰的SQL文でない場合 ******************************************************************************** select * from emp call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.00 0.00 1 0 1 0 Execute 1 0.00 0.00 0 0 0 0 Fetch 2 0.00 0.00 1 2 4 14 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 4 0.00 0.00 2 2 5 14 Misses in library cache during parse 1 Optimizer goal CHOOSE Parsing user id 48 - ※何も出力されていません ******************************************************************************** 再帰的SQL文の場合 ******************************************************************************** select con#,obj#,rcon#,enabled,nvl(defer,0) from cdef$ where robj#= 1 call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.00 0.00 0 0 0 0 Execute 1 0.00 0.00 0 0 0 0 Fetch 1 0.00 0.00 0 1 0 0 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 3 0.00 0.00 0 1 0 0 Misses in library cache during parse 1 Optimizer goal CHOOSE Parsing user id SYS (recursive depth 1) - ※再帰的SQL文です ******************************************************************************** 「recursive depth」(以下、DEPTH)は、SQL 文が発行された再帰レベルを示します。 たとえば、値 0 はユーザーがその文を発行したことを示します。値 1 は、Oracleが 値 0 の文(ユーザー発行の文)を処理する再帰的コールとして、その文を生成した ことを示します。値n は、Oracle がその文を値 n-1 の文を処理する再帰的コールと して生成したことを示します。 注意:内部表に対する処理だけが再帰的SQL文となるわけではありません。 PL/SQLブロックでストアド・プログラム(パッケージ、プロシージャ、ファンクションなど)を呼ぶ処理を行った場合、 ストアド・プログラムの中で実行されるSQL文はSELECTやUPDATEであっても再帰的SQL文とみなされ、再帰的SQL文 の統計情報として出力されます。 全体の統計情報について: 全体の処理にかかった統計情報は、トレース・ファイルの最後に出力されている OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS という統計情報で確認します。 OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS = 非再帰的SQL文の統計情報の合計 OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS = 再帰的SQL文の統計情報の合計 処理全体にかかった時間は、この両者を合計した時間になります。 (※ SQLトレースを取得する際に初期化パラメータtimed_statisticsをTRUEにしていない場合には処理時間は常に0.00となります。)
https://w.atwiki.jp/kane2008/pages/31.html
sqlファイルの実行方法 c \example.sqlを実行する場合、 SQL @c \example.sql
https://w.atwiki.jp/ora_tips/pages/31.html
PL/SQLの特徴 ・手続き型構造とSQLの統合 非手続言語のSQLにIF文やLOOP文を使用して制御構造をもたせることができる。 PL/SQLでは、すべてのSQLコマンドが実行可能 ・高いパフォーマンス 複数のSQLを一つのブロックにまとめてOracleに投げることができるので効率がよく ネットワーク通信量を抑えることができる。 ・高い移植性 PL/SQLで作成されたアプリは、OSやプラットフォームに依存しない。 他のプラットホームでも利用可能。 PL/SQLを利用して作成可能なオブジェクト ・プロシジャ 特定のアクションを実行するサブプログラム ・ファンクション 値を計算するサブプログラム ・パッケージ サブプログラムをグループ化したオブジェクト Oracle提供のパッケージはビルトインパッケージ 例)DBMS_OUTPUT ・・・ テキストメッセージをDBバッファに送信 DBMS_OUTPUT.PUT_LINE( OK ); ※利用前に以下を実施 set serveroutput on DBMS_STATS ・・・ 統計情報の取得(表示、変更) ・トリガー 表、ビュー、スキーマ、データベースに対応ずけられ特定の操作、動作をしたときに暗黙的に 実行されるプログラム。 起動されるイベント ①表、ビューに対するDML ②DDL ③ユーザのログイン、ログオフ ④データベース起動、停止 ⑤データベースに発生したエラー 構文 DECLARE ---宣言部 Oracleのデータ型を利用 %TYPE(列の属性取得) var dept.deptno%TYPE %ROWTYPE(行取得) d_row dept.%ROWTYPE BEGIN ---処理部 EXCEPTION ---例外処理部 END; 例) set serveroutput on DECLARE var NUMBER; BEGIN var = 10; DBMS_OUTPUT.PUT_LINE(var); var = var + 12; DBMS_OUTPUT.PUT_LINE(var); END; /
https://w.atwiki.jp/shosi/pages/21.html
SQL入門
https://w.atwiki.jp/tsukasan/pages/17.html
SQL
https://w.atwiki.jp/lmes2/pages/186.html
SQL TIPS SQLの窓 データベースアクセス データベース接続文字列各種 その他 Select文の結果(複数行)でupdateする トランザクション処理 - Wikipedia
https://w.atwiki.jp/javadsge/pages/278.html
package table; import java.sql.*; class showtable{ Connection dbx; Statement stx; String sqx; ResultSet rsx; int key; String word; int sx,number; int[] year=new int[50000]; int[] month=new int[50000]; String[] v=new String[50000]; void makedata(String db){ String url = "jdbc h2 "+db+";create=true"; String usr = ""; String pwd = ""; try { Class.forName("org.h2.Driver"); dbx = DriverManager.getConnection(url, usr, pwd); } catch (Exception ex) { ex.printStackTrace();} sx=0; try { stx = dbx.createStatement(); sqx="SHOW TABLES"; DatabaseMetaData md = dbx.getMetaData(); String table[]={"TABLE"}; rsx=md.getTables(null,null,null,table); String tn=""; while(rsx.next()){ tn=rsx.getString(3); } ResultSet pp = md.getColumns(null,null,tn,null); while(pp.next()) { System.out.print("クレジット= "+pp.getString("COLUMN_NAME")); System.out.print("○"); System.out.println("性質= "+pp.getString("TYPE_NAME")); } pp.close(); rsx.close(); stx.close(); dbx.close(); } catch (Exception ex) {ex.printStackTrace();} } }