Oracle DB 確認コマンドいろいろ

自分用メモ随時更新

# 確認系
## CDB名確認
```
SQL> select instance_name, status from v$instance; 
```

## PDB名確認
```
SQL> show pdbs;
```
## PDBへ接続
```
SQL> alter session set container=PDB名;
```
## ユニーク名確認
```
SQL> show parameter db_unique_name;
```

## 現在の状態
```
SQL> select status from v$instance;
```
## 現在の接続先
```
SQL> show con_name;
```

## ログモード確認
```
SQL> select log_mode from v$database;
```

## profileの状態(DEFAULT)
```
### 整形
set LINES 120
set PAGES 100
set TERM off
clear col
col PROFILE format a15
col RESOURCE_NAME format a30
col RESOURCE_TYPE format a15
col LIMIT format a15

### 確認
select profile,resource_name,limit from dba_profiles where profile='DEFAULT';
```
## ディレクトリ・オブジェクトの確認
```
select *  from dba_directories;
```
## DATA領域、RECO領域の確認
```
### データベースから確認
select GROUP_NUMBER, NAME, TOTAL_MB, FREE_MB, STATE from v$asm_diskgroup order by 1;

### gridユーザから確認
$ asmcmd lsdg;
```

## DBA_USRSの確認
```
col username format a30;
col ACCOUNT_STATUS format a30;
col PROFILE format a30;
set linesize 150;
select username, account_status, profile from dba_users; 
```

## dba_profilesの確認（パスワードリミット）
```
col profile format a30;
col limit format a30;
select profile,limit from dba_profiles where resource_name = 'PASSWORD_LIFE_TIME';
```

## アーカイブログのバックアップ状況の確認
```
col completion_time format a20;
col name format a70;
set linesize 150;
select completion_time,name from v$archived_log where name is not null;
select sequence#,completion_time,name,applied,registrar from v$archived_log where name is not null;
```

## 接続したセッションの間だけ時間のフォーマットを変更
```
SQL> alter session set nls_date_format='YYYY/MM/DD HH24:MI:SS';
```

## REDOログ適用確認
```
SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME ,APPLIED FROM V$ARCHIVED_LOG ORDER BY 1;
```

## DATAPUMPジョブ確認
```
set linesize 200
col owner_name for a10
col job_name for a20
col operation for a10
col job_mode for a10
col state for a12
col degree for 999
col attached_sessions for 999
col datapump_sessions for 999
select * from dba_datapump_jobs;
```

## テーブルスペースの保存場所確認
```
col file_name format a30;
col tablespace_name format a30;
set linesize window;
select file_name,tablespace_name from dba_data_files;
```

# 実行系
## 停止
```
SQL> shutdown immediate;
```

## マウントモード起動
```
SQL> startup mount;
```

## マウントモードから起動
```
SQL> alter database open;
```

## アーカイブログとのクロスチェック
```
$ rman target /
RMAN> shutdown immediate
RMAN> startup mount
RMAN> crosscheck archivelog all;
RMAN> delete expired archivelog all;
RMAN> alter database open;
RMAN> exit
```

# 変更系
## バックアップの保存方針のみを考慮したアーカイブログ削除
```
rman target /
RMAN> DELETE NOPROMPT FORCE OBSOLETE;
　※NOPROMPT：確認を求めるプロンプトを表示しない
　※FORCE：指定したファイルとリポジトリ・レコードを削除
　※OBSOLETE：不要になったもののみ（バックアップ方針を考慮）

### 指定した日数以外を削除(例：N日前以前のアーカイブログを削除）
RMAN> DELETE NOPROMPT FORCE ARCHIVELOG UNTIL TIME 'sysdate - <N>'; ※ N に何日前まで残すかを設定
```
## 構成済のアーカイブ・ログの削除方針のみを考慮したアーカイブログ削除
```
% rman target /
RMAN> delete archivelog all;

### 指定した日数以外を削除(例：N日前以前のアーカイブログを削除）
 RMAN> DELETE ARCHIVELOG UNTIL TIME 'sysdate - N';　※ N に何日前まで残すかを設定

```
## ASMからアーカイブログ削除
```
# su - grid
$ asmcmd
ASMCMD> cd +RECO/ユニーク名/ARCHIVELOG
ASMCMD> ls
ASMCMD> rm -r *
ASMCMD> exit
```
## ノーアーカイブログモードへの切り替え
```
SQL> shutdown immediate
SQL> startup mount;
SQL> alter database noarchivelog;
SQL> alter database open;
```

## アーカイブログモードへの切り替え
```
SQL> shutdown immediate
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;
```

## パスワード期限を変更
```
SQL> alter profile default limit password_life_time unlimited;
```

## パスワード変更
```
alter user ユーザ名 identified by <新しいパスワード>;
```

## ロックされたユーザを解除
```
alter user ユーザ名 account unlock;
```

## Force Logging機能の有効/無効
```
### 無効
SQL> ALTER DATABASE NO FORCE LOGGING;

### 有効
SQL> ALTER DATABASE FORCE LOGGING;

### 確認
SQL> select FORCE_LOGGING from V$DATABASE;

### PDB単位
SQL> alter container database <PDB名> ENABLE FORCE LOGGING;
SQL> alter container database <PDB名> DISABLE FORCE LOGGING;
```

## ディレクトリ・オブジェクトの作成
```
SQL> CREATE OR REPLACE DIRECTORY 名前 AS 'ディレクトリパス';
```
# その他
## sqlplusを見やすく
### linesize
表示幅の調整が可能

```
set linesize ***

例
set linesize 20
SQL> select * from v$version;

BANNER ↓「-」の数の調整と、一行で表示させるカラム数と思えば良き。
--------------------
BANNER_FULL
--------------------
BANNER_LEGACY
--------------------
    CON_ID
----------
Oracle Database 19c
Enterprise Edition R
elease 19.0.0.0.0 -
Production
Oracle Database 19c

```
### col
カラムごとの表示幅の調整が可能

```
col カラム名 format a横幅

例
col BANNER format a15
SQL> col BANNER_FULL format a20;
SQL> select BANNER,BANNER_FULL from v$version;

BANNER　↓「-」の数の調整だと思えば良き
---------------
BANNER_FULL
--------------------
Oracle Database
 19c Enterprise
 Edition Releas
e 19.0.0.0.0 -
Production
Oracle Database 19c
Enterprise Edition R
elease 19.0.0.0.0 -
Production

BANNER
---------------
BANNER_FULL
--------------------
Version 19.10.0.0.0
```

### colとlinesizeを合わせて使う

colとlinesizeを合わせて使うと見やすくなる。


```
SQL> col BANNER format a30
SQL> col BANNER_FULL format a45;
SQL> set linesize 100;
SQL> select BANNER,BANNER_FULL from v$version;

BANNER                         BANNER_FULL
------------------------------ ---------------------------------------------
Oracle Database 19c Enterprise Oracle Database 19c Enterprise Edition Releas
 Edition Release 19.0.0.0.0 -  e 19.0.0.0.0 - Production
Production                     Version 19.10.0.0.0

```