Gblog

おもにTips

オンライン再定義がオンラインでない件

オンライン再定義をテストしていたのですが、どうも5秒ほど TM enque 待ちが発生するので、基本のケースでテストしてみた。 こちらのブログを参考にしています。

SYS.AUD$ のパージ

SYS.AUD$ のパージ方法について確認していたところ。 標準監査と統合監査は一度に消せるのか? コマンドはこちら。 BEGIN DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, USE_LAST_ARCH_TIMESTAMP => FALSE,…

Throttle:絞り弁、スロットル

Backup Restore Throttle sleep という待機イベントの待機時間が結構長かったので調べてみたが、ドキュメントが全くない。 こちらのサイトがそれっぽい。 docs.dbmarlin.com 他にも、DBMS_BACKUP_RESTORE.SLEEP なるものがあったので少し触ってみた。

日時リテラル?

変な SQL を見つけたので、気になって調べてみた。 select ...... where UPDATE_DATE BETWEEN DATE'2024-10-21' ... こんな書き方、初めて見た。いつも TO_DATE つかってる。 マニュアルはこちら。 普通に使えるみたい。 SQL> select DATE'2024-10-21' from …

PGA を確認する SQL(あんちょこ用)

適当ですが、username で検索することが多いので。

同じ列に索引を作成できるらしい

全く知らなかったのですが、VISIBLE / INVISIBLE を使えば、同じ列に複数の索引をはれるらしいです。19c で確認。

INDEXが使用されているかどうかを確認するSQL

最近、INDEX を削除することが多い。 プランに影響あるかもなので、事前に使用されているかどうかチェックする SQL を使う。わりと使う。メモ用... set pages 1000 select sql_id,plan_hash_value from gv$sql_plan where object_name = 'INDEX_NAME'; selec…

ksq のトレース

ksq のトレース。 ALTER SESSION SET events='trace[ksq] disk medium'; これでとれるらしい。 www.dbi-services.com

pivot

WITH 句でベースのSELECT文を書いて、PIVOT 句でPIVOT するのがよいと思う。 ベースのSELECT は、キー+値な感じ。

リスナーログの読み方

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 -------------------…