Gblog

おもにTips

リスナーログの読み方

100回ぐらい調べたので。 Timestamp * Connect Data [* Protocol Info] * Event [* SID | Service] * Return Code これ、レコードによって項目の数が違うのが、ほんとめんどくさい。 どうかと思うよ。

リテラルSQLの洗い出し

hard parse が多く、"% SQL with executions>1" が低かったので、リテラルSQLを調査した。(できればアプリ側で確認しろって思ってますが) FORCE_MATCHING_SIGNATURE を使えば、よしなにできる。

定義者権限の確認

プロシージャは定義者権限で動作する。 なので、別ユーザに Execute 権限を付与しても、実行するときはプロシージャのスキーマユーザで実行される。

STA ってDML かけても大丈夫だよね、の確認

こんな心配するのは自分だけかも。

ファイルが多すぎて ls が動かない

ファイルが多すぎると、ls が応答なくなるので対応方法について調べた。 ls | less -N

DDLの取得

最近DDLが長くてツライので、オプション設定をよくする。

ちょっと ASH を確認する SQL

なんかおきてるときに、確認するSQL set term offset markup csv onalter session set nls_date_format='YYYY/MM/DD HH24:MI:SS';spool a.logselect * from gv$active_session_history where SAMPLE_TIME >= cast(sysdate - 1/1440 as timestamp);spool off

V$ASM_DISKGROUP のはなし

たぶん、こんな感じの式 TOTAL_MB = COLD_USED_MB + HOT_USED_MB + FREE_MB USABLE_FILE_MB = (FREE_MB - REQUIRED_MIRROR_FREE_MB) / redundancy

V$SESSION_WAIT と V$SESSION_WAIT_CLASS

超似てるので注意。 V$SESSIONカレント・セッションごとのセッション情報 V$SESSION_WAIT各セッションについて現行または前回の待機 V$SESSION_WAIT_CLASS各セッションについて様々な待機イベント操作に要した時間 ここら辺も似てる。 V$SESSION_EVENTセッシ…

INTERVAL DAY TO SECOND 型と INTERVAL YEAR TO MONTH 型

しらなかった。 INTERVAL DAY TO SECOND はこんな感じ。 SQL> desc test1 Name Null? Type ----------------------------------------- -------- ---------------------------- ID NUMBER DAY1 DATE INT INTERVAL DAY(2) TO SECOND(6) SQL> select day1, int…

DUAL は権限なくても読める

へぇー SQL> grant create session to c identified by c; Grant succeeded. SQL> conn c/c Connected. SQL> select * from dual; DUM --- X SQL> exit

OS認証ってつかったことない

まずは OS ユーザを作成。適当に。 # useradd tiger

UNUSABLE な索引は、セグメントが開放されている。

しらなかった。。。 SQL> create table tab1 as select * from v$parameter; Table created. SQL> create index tab1i1 on tab1 (num); Index created. SQL> col OWNER for a10 SQL> col SEGMENT_NAME for a10 SQL> select OWNER,SEGMENT_NAME,EXTENTS from …

UNION と UNION ALL と MINUS と INTERSECT

4つの集合演算子。 複数の問合せを組み合せることができる。 優先順位はすべて同じ。括弧によって順序の指定がない限り上から(左から)順に評価する。 イメージはこんな。

SYSDATE と CURRENT_DATE

CURRENT_DATE ってあまり使ったことない。 SYSDATEDBサーバのシステム日付。DATE型 CURRENT_DATEDBサーバのシステム日付を、セッションのタイムゾーンに合わせて返す。DATE型 元のデータは同じはず。

UNDOブロックの使用量を監視する

以下のシェルで毎秒の UNDO BLOCK を確認できる。 #!/bin/sh ( echo "set lin 120 pages 1000 feed on" echo "conn / as sysdba" while [ 1 ] do echo "select used_ublk from v\$transaction t, v\$session s where t.addr = s.taddr and s.username='XXX';…

oradebug で 10046

oradebug のコマンドも忘れるので。 select spid,pid,sid,s.username,s.program from v$session s,v$process p where s.paddr = p.addr;oradebug setospid <spidを指定>oradebug unlimit oradebug event 10046 trace name context forever,level 10oradebug event 10046 </spidを指定>…

inactive account time job なるジョブ

inactive account time job なる内部ジョブがあるらしい。 どうやら、プロファイルの INACTIVE_ACCOUNT_TIME に関連して動くジョブのようです。 CREATE PROFILE INACTIVE_ACCOUNT_TIMEユーザー・アカウントがロックされるまでの連続非ログイン日数の許容値を…

UNDO の縮小

もうめんどくさいので、コマンドだけ。 create undo tablespace UNDOTBS2 datafile '/u01/app/oracle/oradata/TARGET1/undotbs2.dbf' size 10m; alter system set undo_tablespace=UNDOTBS2 scope=both; drop tablespace UNDOTBS1 including contents and da…

REDO のサイズ変更

CURRENT のログは削除できない ACTIVE なログも削除できない REDO LOG group は最低 2つ必要 未アーカイブのログも削除できない これをふまえて、drop/add を繰り返せばよい。

DBA_HIST_ACTIVE_SESS_HISTORY の索引

前回から、要するに何をしらべているかというと 効率よく ASH を検索する方法 な、わけです。 で、索引もみてみたんですが、、、 SQL> select index_name from dba_indexes where table_name='WRH$_ACTIVE_SESSION_HISTORY'; INDEX_NAME -------------------…

DBA_HIST_ACTIVE_SESS_HITORY、パーティション化されてるってよ。

今日は、12.2 で確認。 まずは、ビューの定義。 SET LONG 100000 LONGC 100000 PAGES 1000SELECT TEXT FROM DBA_VIEWS WHERE VIEW_NAME = 'DBA_HIST_ACTIVE_SESS_HISTORY'; 結果は省略。 awr_root_active_sess_history から、すべてのデータを SELECT してい…

ALTER SYSTEM CANCEL SQL の続き2

linux 7 環境で、strace とってみたら、SIGTSTP を投げているよう。 12909 11:44:59.637210 tgkill(12928, 12928, SIGTSTP) = 0 これ、Ctl+Z らしい。

ALTER SYSTEM CANCEL SQL の続き

current じゃない SQL_ID で実行すると、ORA-00866 SQL> alter system cancel sql '265,55799,3hz88jmt9x6x0' alter system cancel sql '265,55799,3hz88jmt9x6x0' * ERROR at line 1: ORA-00866: invalid or non-existent SQL ID 存在しない、sid, serial# …

ALTER SYSTEM CANCEL SQL でトランザクションはどうなるのか?

多分、ロールバックされないんだけど、一応確認。

SQLのキャンセル。シングルだけど。

準備、準備。

19c の隠しパラメータ全部抜く

SQL ちなみに "__" (アンダースコア2つ)で始まるパラメータは除く set lin 2000 pages 2000 trims on term off set markup csv on spool initparam.txt select /*+ use_hash(x y) */ x.indx + 1 as NUM , ksppinm as NAME , ksppity as TYPE , ksppstvl as…

SET FEEDBACK ON SQL_ID

便利すぎる。 18c の SQL*Plus の新機能で、実行した SQL の SQL_ID をフィードバックしてくれる。

パスワードファイルのパス

18c 新機能マニュアルをみてたら、パスワードファイルのパスが変わったそうなので、実機で動かしてみたら、全く変わっておらず、?になってたら、どうやら読み取り専用ORACLE_HOME の場合のみのよう。。。

リアルタイムSQL監視レポートとDBMS_XPLAN.DISPLAY_CURSOR

リアルタイムSQL監視レポートは非常に便利。Predicate information もみたいので、DBMS_XPLAN.DISPLAY_CURSOR と使うことが多いです。 リアルタイムSQL監視レポート set linesize 1000 pages 1000 set long 1000000 longchunksize 1000000 select dbms_sqltu…