Oracle DBAコマンド集 - gend007/Oracle-DB GitHub Wiki

概要

ここでは、DBAでよく使用するコマンド一覧を記載する


コマンド一覧

現在有効なパラメータの値を動的パフォーマンスビューから表示する

SELECT * FROM v$parameter;
SELECT * FROM v$parameter2;



アーカイブログモードの確認

SELECT LOG_MODE FROM V$DATABASE;



アーカイブログ出力先の確認

SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME LIKE 'log_archive%';



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

※データベースがmount状態で実行する

ALTER DATABASE ARCHIVELOG;



データベースのmount状態からopen状態にする

alter database open;



高速リカバリ領域のサイズを指定

ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = <サイズ>;



高速リカバリ領域の場所を指定

ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '<パス>';



通常のリストア・ポイントを作成

CREATE RESTORE POINT before_upgrade;



保証付きリストア・ポイントの作成

CREATE RESTORE POINT before_upgrade GUARANTEE FLASHBACK DATABASE;



Point-in-Timeリカバリ時に使用するアーカイブログ確認

SELECT RECID, STAMP, THREAD#, SEQUENCE#, FIRST_CHANGE#, 
       FIRST_TIME, NEXT_CHANGE#
FROM   V$ARCHIVED_LOG
WHERE  RESETLOGS_CHANGE# =
       ( SELECT RESETLOGS_CHANGE#
         FROM   V$DATABASE_INCARNATION
         WHERE  STATUS = 'CURRENT');



CDB内の各コンテナに関する識別情報の表示

SQL > COLUMN NAME FORMAT A8
SQL > SELECT NAME, CON_ID, DBID, CON_UID, GUID FROM V$CONTAINERS ORDER BY CON_ID;



各PDBのコンテナID、名前およびステータスの表示

SQL > COLUMN PDB_NAME FORMAT A15
SQL > SELECT PDB_ID, PDB_NAME, STATUS FROM DBA_PDBS ORDER BY PDB_ID;



各PDBのオープン状態確認

col NAME format a15
SQL > select CON_ID,NAME,open_mode,restricted from v$pdbs;



ALTER SESSION文を使用したコンテナの切り替え

ALTER SESSION SET CONTAINER = <PDB名>;



REDOログのファイル名確認

col STATUS format a7
col MEMBER format a35
SELECT GROUP#, STATUS, MEMBER FROM V$LOGFILE;



REDOロググループがアクティブか確認

col STATUS format a10
SELECT GROUP#, MEMBERS, STATUS, ARCHIVED FROM V$LOG;



データベースインスタンスの状態確認

col INSTANCE_NAME format a7
col STATUS format a7
select INSTANCE_NAME,STATUS,STARTUP_TIME from V$instance;



表領域の使用状態確認

set lines 120
set pages 100
set term off
tti off
clear col
col TABLESPACE_NAME     format a15
col "TOTALSIZE(MB)"     format a20
col "USED(MB)"          format a20
col "FREE(MB)"          format a20
col "USED(%)"           format 990.99
select 
  d.tablespace_name,
  to_char(nvl(total_bytes/(1024*1024),0),'999,999') as "TOTALSIZE(MB)",
  to_char(nvl((total_bytes - free_total_bytes)/(1024*1024),0),'999,999') as "USED(MB)",
  to_char(nvl(free_total_bytes/(1024*1024),0),'999,999') as "FREE(MB)",
  round(nvl((total_bytes - free_total_bytes)/total_bytes * 100,100),2) as "USED(%)"
from 
  (select tablespace_name,sum(bytes) total_bytes from dba_data_files group by tablespace_name) d,
  (select tablespace_name,sum(bytes) free_total_bytes from dba_free_space group by tablespace_name) f
where d.tablespace_name = f.tablespace_name;

TABLESPACE_NAME TOTALSIZE(MB)        USED(MB)             FREE(MB)             USED(%)
--------------- -------------------- -------------------- -------------------- -------
SYSAUX               770                  731                   40               94.87
UNDOTBS1             800                   57                  743                7.16
USERS                  5                    3                    3               50.00
SYSTEM               890                  890                    0               99.96



TEMP表領域状態確認

set lines 120
set pages 100
set term off
tti off
clear col
col TABLESPACE_NAME     format a15
col "TOTALSIZE(MB)"     format a20
col "USED(MB)"          format a20
col "FREE(MB)"          format a20
col "USED(%)"           format 990.99
SELECT
  d.tablespace_name,
  to_char(nvl(total_bytes/(1024*1024),0),'999,999') as "TOTALSIZE(MB)",
  to_char(nvl((total_bytes - extnt_total_bytes)/(1024*1024),0),'999,999') as "USED(MB)",
  to_char(nvl(extnt_total_bytes/(1024*1024),0),'999,999') as "FREE(MB)",
  round(nvl((total_bytes - extnt_total_bytes)/total_bytes * 100,100),2) as "USED(%)"
FROM
  (SELECT tablespace_name, SUM(bytes) total_bytes FROM dba_temp_files GROUP BY tablespace_name) d,
  (SELECT tablespace_name, SUM(bytes_used) extnt_total_bytes FROM v$temp_extent_pool GROUP BY tablespace_name) f
WHERE d.tablespace_name = f.tablespace_name;

TABLESPACE_NAME TOTALSIZE(MB)        USED(MB)             FREE(MB)             USED(%)
--------------- -------------------- -------------------- -------------------- -------
TEMP                  62                   60                    2               96.77



UNDO表領域状態確認(詳細)

set lines 120
set pages 100
set term off
tti off
clear col
col TABLESPACE_NAME     format a15
col "TOTALSIZE(MB)"     format a20
col "USED(MB)"          format a20
col "FREE(MB)"          format a20
col "USED(%)"           format 990.99
col "EXPIRED(MB)"       format a20
SELECT 
  d.tablespace_name,
  to_char(nvl(total_bytes/(1024*1024),0),'999,999') as "TOTALSIZE(MB)",
  to_char(nvl(act_unexp_total/(1024*1024),0),'999,999') as "USED(MB)",
  to_char(nvl(exp_total/(1024*1024),0),'999,999') as "EXPIRED(MB)",
  to_char(nvl(free_total/(1024*1024),0),'999,999') as "FREE(MB)",
  round(nvl(act_unexp_total / (act_unexp_total+exp_total+free_total)*100,100),2) as "USED(%)" 
FROM
  (select tablespace_name, sum(bytes) act_unexp_total from dba_undo_extents where status in ('ACTIVE', 'UNEXPIRED') group by tablespace_name) a,
  (select tablespace_name, sum(bytes) exp_total from dba_undo_extents where status = 'EXPIRED' group by tablespace_name) b,
  (select tablespace_name, sum(bytes) free_total from dba_free_space group by tablespace_name) c,
  (select tablespace_name from dba_tablespaces where CONTENTS = 'UNDO') d,
  (select tablespace_name, sum(bytes) total_bytes from dba_data_files group by tablespace_name) e 
WHERE a.tablespace_name = b.tablespace_name and c.tablespace_name = d.tablespace_name and d.tablespace_name = e.tablespace_name;

TABLESPACE_NAME TOTALSIZE(MB)        USED(MB)             EXPIRED(MB)          FREE(MB)             USED(%)
--------------- -------------------- -------------------- -------------------- -------------------- -------
UNDOTBS1             200                   12                  170                   17                6.16



PDB確認

col NAME       format a15
col OPEN_MODE  format a10
select CON_ID,NAME,OPEN_MODE,RESTRICTED from V$pdbs;
   CON_ID NAME            OPEN_MODE  RESTRICTE
---------- --------------- ---------- ---------
        2 PDB$SEED        READ ONLY  NO
        3 GENDPDB         MOUNTED
        4 GENDAPP         MOUNTED
        5 GENDAPPPDB      MOUNTED



フラッシュバックデータベースの使用確認

col log_mode format a10
col flashback_on format a15
select log_mode,flashback_on from v$database;



全てのPDBの読み書きモードへ変更

alter PLUGGABLE DATABASE ALL open read write;



全てのPDBのクローズ

alter PLUGGABLE DATABASE ALL close immediate;



制御ファイルのパス変更

alter system set control_files='/DATA01/orcl/control01.ctl', '/DATA01/orcl/control02.ctl' scope=spfile;



CDB共通ユーザの作成

※ルートコンテナ上で実施。PDB上で実行するとエラー
create user c##testuser1 identified by testuser1;



PDBローカルユーザの作成

※PDB上のみ実施。ルートコンテナで実行するとエラー
create user testuser2 identified by testuser2;



CDB共通ロールの作成

※ルートコンテナ上で実施。PDB上で実行するとエラー
create role c##testrole1;



PDBローカルロールの作成

※PDB上のみ実施。ルートコンテナで実行するとエラー
create role testrole2;



ローカルロールを共通ユーザへ付与

※containerのデフォルトはcurrent
grant testrole2 to c##testuser1;

※すべてのコンテナにロールを付与
grant testrole2 to c##testuser1 container=all;



共通ロールを共通ユーザへ付与

grant c##testrole1 to c##testuser1 container=all;



PDBで変更できるパラメータ確認

set lines 120
set pages 100
col name format a20
col value format a35
select CON_ID,name,value,ISPDB_MODIFIABLE from v$parameter;



PDBごとの設定確認(メモリー上)

set lines 120
set pages 100
col name format a20
col value format a35
select CON_ID,name,value,ISPDB_MODIFIABLE from v$system_parameter;



【マルチテナント】初期化パラメータ変更

※CDB/PDBで実行可、ISPDB_MODIFIABLがTRUEのパラメータは継承されない
※CONTAINER句のデフォルトは”CURRENT”

alter system set <パラメータ> CONTAINER = CURRENT;



【マルチテナント】初期化パラメータ変更

※CDBのみ実行可、ISPDB_MODIFIABLがTRUEのパラメータは継承される
※CONTAINER句のデフォルトは”CURRENT”

alter system set <パラメータ> CONTAINER = ALL;



⚠️ **GitHub.com Fallback** ⚠️