Oracle Database XE-21c

### SQL*Plus

・・・SQLの対話的な実行やデータベース管理作業をするためのコマンドラインツール


SQL*Plusの起動
```
$ sqlplus /nolog

SQL*Plus: Release 21.0.0.0.0 - Production on 日 11月 24 18:20:20 2024
Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.

SQL>
```

コンテナデータベースのCDBルートに管理ユーザSYSTEMでローカル接続。
・SYSユーザで接続するときは"as sysdba"を付ける。
・リモート接続する場合は"@"で始まる文字列をつける
```
SQL> connect / as sysdba
接続されました
SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL>
```

SQL*Plusの起動時にコンテナデータベースのCDBルートにローカル接続
```
SQL> sqlplus / as sysdba

SQL*Plus: Release 21.0.0.0.0 - Production on 日 11月 24 18:20:20 2024
Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL>
```
現在接続しているユーザを確認
```
show user;
```

PDBを表示
```
SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 XEPDB1                         READ WRITE NO
SQL> 
```
PDBを開く
```
SQL> SELECT NAME, OPEN_MODE FROM V$PDBS WHERE NAME = 'XEPDB1';

NAME      OPEN_MODE
--------- ----------
DSCGRP01  MOUNTED

SQL> ALTER PLUGGABLE DATABASE XEPDB1 OPEN;

プラガブル・データベースが変更されました。

SQL> SELECT NAME, OPEN_MODE FROM V$PDBS WHERE NAME = 'XEPDB1';

NAME        OPEN_MODE
----------- ----------
DSCGRP01    READ WRITE

SQL>

```






ユーザ一覧
```
SQL> SELECT USERNAME FROM USER_USERS;
```

テーブル一覧
```
SELECT TABLE_NAME FROM USER_TABLES;
```

ユーザ作成
```
SQL> CREATE USER ユーザ IDENTIFIED BY パスワード;
ユーザーが作成されました。

SQL> GRANT CREATE SESSION TO ユーザ;
権限付与が成功しました。

SQL> GRANT UNLIMITED TABLESPACE TO ユーザ;
権限付与が成功しました。

SQL> GRANT CREATE TABLE TO ユーザ;
権限付与が成功しました。

SQL>
```



PDB"XEPDB1"にtestユーザで接続
```
SQL> connect test/Pass123@localhost:1521/XEPDB1
接続されました。
SQL> show con_name

CON_NAME
------------------------------
XEPDB1
SQL> 
```

設定一覧
```
show parameters
SELECT * FROM V$NLS_PARAMETERS;

```
テーブルの定義を確認
```
DESC table_name;
```

＜主キーやユニーク制約がある列にはインデックスを作らない。＞
テーブル作成時に主キーやユニーク制約の存在する列にはすでにインデックスが作成されているから。

日本語が「?????」になるときはこれ
```
$ export NLS_LANG=Japanese_Japan.AL32UTF8
```




SQL
```
SQL> CREATE TABLE empoloyee (id CHAR(4), name VARCHAR2(16), salary NUMBER(10));
```

```
SQL> DESCRIBE empoloyee;

```




アーカイブモード・非アーカイブモード
```
SQL> archive log list
データベース・ログ・モード     非アーカイブ・モード
自動アーカイブ                 使用禁止
アーカイブ先                    /opt/oracle/homes/OraDBHome21cXE/dbs/arch
最も古いオンライン・ログ順序   3
現行のログ順序               5
SQL>
```

表示幅設定
```
SQL> show linesize;
linesize 80
SQL> set linesize 500;
```

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

Total System Global Area 1157625952 bytes
Fixed Size                  9685088 bytes
Variable Size             503316480 bytes
Database Buffers          637534208 bytes
Redo Buffers                7090176 bytes
データベースがマウントされました。
SQL> 
SQL> ALTER DATABASE ARCHIVELOG;

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

SQL> ALTER DATABASE OPEN;

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

SQL> archive log list
データベース・ログ・モード     アーカイブ・モード
自動アーカイブ                 有効
アーカイブ先                    /opt/oracle/homes/OraDBHome21cXE/dbs/arch
最も古いオンライン・ログ順序   3
アーカイブする次のログ順序    5
現行のログ順序               5
SQL>
```

### RMAN(Recovery Manager)
バックアップ用のツール
バックアップを取得するには、データベース起動中にRMANでデータベースのCDBルートに接続し、RMANのコマンドBACKUP DATABASEを実行

```
$ rman TARGET /

Recovery Manager: Release 21.0.0.0.0 - Production on 月 11月 25 00:27:40 2024
Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle and/or its affiliates.  All rights reserved.

ターゲット・データベース: XE (DBID=3066928077)に接続されました

RMAN> show all;

リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
db_unique_name XEのデータベースにおけるRMAN構成パラメータ:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/opt/oracle/dbs/snapcf_XE.f'; # default

RMAN>
```

### バックアップ取得
```
$ rman TARGET /

Recovery Manager: Release 21.0.0.0.0 - Production on 日 11月 24 23:23:21 2024
Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle and/or its affiliates.  All rights reserved.

ターゲット・データベース: XE (DBID=3066928077)に接続されました

RMAN>
RMAN> BACKUP DATABASE;

backupを24-11-24で開始しています
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています

（中略）

ontrol File and SPFILE Autobackupを24-11-24で開始しています
ピース・ハンドル=/opt/oracle/homes/OraDBHome21cXE/dbs/c-3066928077-20241124-00 コメント=NONE
Control File and SPFILE Autobackupを24-11-24で終了しました

RMAN> 
```

### リストア

```
$ rman TARGET /

Recovery Manager: Release 21.0.0.0.0 - Production on 月 11月 25 00:00:12 2024
Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle and/or its affiliates.  All rights reserved.

ターゲット・データベース: XE (DBID=3066928077)に接続されました

RMAN> startup mount

ターゲット・データベースに接続しました(起動していません)。
Oracleインスタンスが起動しました
データベースがマウントされました。

システム・グローバル領域の合計は、   1157625952バイトです。

Fixed Size                     9685088バイト
Variable Size                503316480バイト
Database Buffers             637534208バイト
Redo Buffers                   7090176バイト

RMAN> RESTORE DATABASE;

restoreを24-11-25で開始しています
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=54 デバイス・タイプ=DISK

（中略）

チャネルORA_DISK_1: バックアップ・ピース1がリストアされました
チャネルORA_DISK_1: リストアが完了しました。経過時間: 00:00:25
restoreを24-11-25で終了しました

RMAN> RECOVER DATABASE;

recoverを24-11-25で開始しています
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=46 デバイス・タイプ=DISK

メディア・リカバリを開始しています
メディア・リカバリが完了しました。経過時間: 00:00:05

recoverを24-11-25で終了しました

RMAN> ALTER DATABASE OPEN;

文が処理されました

RMAN> ALTER PLUGGABLE DATABASE ALL OPEN;

文が処理されました

RMAN>
```



コンテナ名とインスタンス名の違いは？SIDはどこで確認？


```
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 XEPDB1                         READ WRITE NO

SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;

INSTANCE_NAME
----------------
XE

```