底辺SEの備忘録

スキル無しの底辺です。参考になりません。

リスナーログの中身を確認する

備忘

リスナーログの中身を確認したので備忘

リスナーログの場所

テキスト形式のログは %ORACLE_BASE%\diag\tnslsnr\<ホスト名>\<リスナー名>\trace\リスナー名.log に出力される

ログの出方

ターミナルで簡易接続 sqlplus sys/manager@localhost:1521/cdb as sysdba

以下の通りログが出力される

09-4月 -2022 21:21:03 * (CONNECT_DATA=(SERVICE_NAME=cdb)(CID=(PROGRAM=sqlplus)(HOST=localhost.localdomain)(USER=oracle))) * (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=59399)) * establish * cdb * 0
09-4月 -2022 21:21:03 * service_update * cdb * 0

パーティション表の情報を確認する

概要

作成したパーティション表の
パーティションタイプ
パーティション
パーティションキー
HIGH_VALUE
を確認したので備忘

方法

以下で可能
データディクショナリビューの名前が紛らわしいですね。。。

SQL> select
  2  t.table_name,t.partitioning_type,p.partition_name,c.column_name,p.high_value
  3  from
  4  dba_part_tables t,
  5  dba_tab_partitions p,
  6  dba_part_key_columns c
  7  where
  8  t.owner=p.table_owner
  9  and
 10  p.table_name=t.table_name
 11  and
 12  t.table_name=c.name
 13  and
 14  t.table_name='SALES'
 15  ;

TABLE_NAME           PARTITIONING_TYPE    PARTITION_NAME       COLUMN_NAME          HIGH_VALUE
-------------------- -------------------- -------------------- -------------------- --------------------------------------------------------------------------------
SALES                RANGE                SALES_Q1_2006        TIME_ID              TO_DATE(' 2022-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
                                                                                    N')

SALES                RANGE                SALES_Q2_2006        TIME_ID              TO_DATE(' 2022-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
                                                                                    N')

SALES                RANGE                SALES_Q3_2006        TIME_ID              TO_DATE(' 2022-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
                                                                                    N')

SALES                RANGE                SALES_Q4_2006        TIME_ID              TO_DATE(' 2022-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
                                                                                    N')

参考

docs.oracle.com

アーカイブログモードへの変更

概要

マニュアルを参照にしてアーカイブログモードに変更したので備忘

方法

現在のモードを確認

SQL> archive log list
データベース・ログ・モード     非アーカイブ・モード
自動アーカイブ                 使用禁止
アーカイブ先                    /u01/app/oracle/product/12.2.0/dbhome_1/dbs/arch
最も古いオンライン・ログ順序   11
現行のログ順序               13

インスタンスをシャットダウン後にmountモードにしてアーカイブログモードに変更

SQL> shutdown immediate;
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> startup mount;
ORACLEインスタンスが起動しました。

Total System Global Area 1174405120 bytes
Fixed Size                  8792056 bytes
Variable Size             436209672 bytes
Database Buffers          721420288 bytes
Redo Buffers                7983104 bytes
データベースがマウントされました。
SQL> alter database open;

データベースが変更されました。

SQL> archive log list
データベース・ログ・モード     アーカイブ・モード
自動アーカイブ                 有効
アーカイブ先                    /u01/app/oracle/product/12.2.0/dbhome_1/dbs/arch
最も古いオンライン・ログ順序   11
アーカイブする次のログ順序    13
現行のログ順序               13

参考

docs.oracle.com

レンジパーティション表の作成とパーティション・プルーニングの確認

概要

レンジパーティション表を作成し、実行計画を確認してパーティション・プルーニングが効いていることを確認したので備忘

レンジパーティション表の作成

SQL> CREATE TABLE sales
    ( prod_id       NUMBER(6)
    , cust_id       NUMBER
    , time_id       DATE
    , channel_id    CHAR(1)
    , promo_id      NUMBER(6)
    , quantity_sold NUMBER(3)
    , amount_sold   NUMBER(10,2)
    )
   PARTITION BY RANGE (time_id)
   ( PARTITION sales_q1_2006 VALUES LESS THAN (TO_DATE('2022-03-01','yyyy-mm-dd'))
   , PARTITION sales_q2_2006 VALUES LESS THAN (TO_DATE('2022-04-01','yyyy-mm-dd'))
   , PARTITION sales_q3_2006 VALUES LESS THAN (TO_DATE('2022-05-01','yyyy-mm-dd'))
   , PARTITION sales_q4_2006 VALUES LESS THAN (TO_DATE('2022-06-01','yyyy-mm-dd'))
   );

表が作成されました。

実行計画を確認し、パーティション・プルーニングを確認

PstartとPstopが4となっているためパーティション・プルーニングが効いていると思われる

SQL> set autotrace on explain
SQL> select count(*) from sales where time_id = to_date('2022-05-30','YYYY-MM-DD');

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


実行計画
----------------------------------------------------------
Plan hash value: 642363238

--------------------------------------------------------------------------------
-----------------

| Id  | Operation               | Name  | Rows  | Bytes | Cost (%CPU)| Time
| Pstart| Pstop |

--------------------------------------------------------------------------------
-----------------

|   0 | SELECT STATEMENT        |       |     1 |     9 |     2   (0)| 00:00:01
|       |       |

|   1 |  SORT AGGREGATE         |       |     1 |     9 |            |
|       |       |

|   2 |   PARTITION RANGE SINGLE|       |     1 |     9 |     2   (0)| 00:00:01
|     4 |     4 |

|*  3 |    TABLE ACCESS FULL    | SALES |     1 |     9 |     2   (0)| 00:00:01
|     4 |     4 |

--------------------------------------------------------------------------------
-----------------


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

   3 - filter("TIME_ID"=TO_DATE(' 2022-05-30 00:00:00', 'syyyy-mm-dd hh24:mi:ss'
))


Note
-----
   - dynamic statistics used: dynamic sampling (level=2)

SQL>

参考

docs.oracle.com

docs.oracle.com

bigfile表領域を作成する

概要

bigfileで表領域を作成したので備忘

方法

SQL> create bigfile tablespace bigtbs datafile '/u01/app/oracle/oradata/cdb1/orclpdb1/bigtbs01.dbf' size 50M;

表領域が作成されました。

---表領域の確認
SQL> select f.FILE_NAME,f.BYTES/1024/1024 as "size",t.BIGFILE from
  2  dba_data_files f,dba_tablespaces t
  3  where f.TABLESPACE_NAME=t.TABLESPACE_NAME
  4  and f.TABLESPACE_NAME='BIGTBS';

FILE_NAME                                                size BIGFIL
-------------------------------------------------- ---------- ------
/u01/app/oracle/oradata/cdb1/orclpdb1/bigtbs01.dbf         50 YES

---サイズの確認(bigfileなのでalter tablespaceでサイズ変更可能)
SQL> alter tablespace BIGTBS resize 60M;

表領域が変更されました。

---サイズの変更確認
SQL> select f.FILE_NAME,f.BYTES/1024/1024 as "size",t.BIGFILE from
  2  dba_data_files f,dba_tablespaces t
  3  where f.TABLESPACE_NAME=t.TABLESPACE_NAME
  4  and f.TABLESPACE_NAME='BIGTBS';

FILE_NAME                                                size BIGFIL
-------------------------------------------------- ---------- ------
/u01/app/oracle/oradata/cdb1/orclpdb1/bigtbs01.dbf         60 YES

参考

docs.oracle.com