はじめに

こんにちは!ゆうきです🤗
これまでの記事
「ひとりでできるもん」シリーズはいかがでしたでしょうか?
●Tera Termってなぁに??
●仮想Linuxサーバってなぁに??
●Linuxひとりでできるもん
関連記事になりますのであわせてご覧くださいね。

今回は前回の記事に引き続きデータベースの停止起動トラブルを紹介していきたいと思います🍀

 

本記事では、実機操作を通して情報処理技術の理解を深めることを目的としており、
皆様の環境での動作を保証するものではありません。👀

前回のおさらい

Oracleのデータベースは次のようにファイルを読み込みながら状態が変わり
OPEN状態になることで正常起動します。

●NOMOUNT → パラメータファイル
●MOUNT → 制御ファイル
●OPEN → データファイル

今回はそれぞれのファイルのうち、データファイルを破壊することで
データベースが起動しなくなる様子を観察してみましょう。

データベースを停止する

前々回の記事を参考に、データベースを停止していきましょう。

データファイルを破壊する

データファイルのコピーを取得する

データファイルが正常に、起動に使えることが確認できたら、
破壊後速やかにデータベースを復旧できるように、コピーを取得します。
データファイルのファイルサイズはパラメータファイルや制御ファイルと比較して大きいです。
システムの残り容量に注意しながら作業しないと、データがあふれる場合がありますのでご注意ください。

前回ご紹介した SCN の問題がありますので、
データファイルと一緒に制御ファイルをコピーするのがおススメです⭐

 

 

 

 

 

[oracle@localhost oradata]$ ls -lR
.:
合計 4
drwxr-x---. 2 oracle oinstall 4096  8月  6 16:12 ORCL

./ORCL:
合計 2140240
-rw-r-----. 1 oracle oinstall  10600448  8月 20 13:54 control01.ctl
-rw-r-----. 1 oracle oinstall  10600448  8月 20 13:54 control02.ctl
-rw-r-----. 1 oracle oinstall 209715712  8月 20 13:53 redo01.log
-rw-r-----. 1 oracle oinstall 209715712  8月 20 13:54 redo02.log
-rw-r-----. 1 oracle oinstall 209715712  8月 20 13:53 redo03.log
-rw-r-----. 1 oracle oinstall 576724992  8月 20 13:54 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 734011392  8月 20 13:54 system01.dbf
-rw-r-----. 1 oracle oinstall  20979712  8月  4 08:33 temp01.dbf
-rw-r-----. 1 oracle oinstall 220209152  8月 20 13:54 undotbs01.dbf
-rw-r-----. 1 oracle oinstall   5251072  8月 20 13:54 users01.dbf
[oracle@localhost oradata]$ pwd
/opt/oracle/base/oradata
[oracle@localhost oradata]$
[oracle@localhost oradata]$
[oracle@localhost oradata]$
[oracle@localhost oradata]$ ls -l ~
合計 10356
-rw-r-----. 1 oracle oinstall 10600448  8月  6 14:00 control01.ctl
-rw-r-----. 1 oracle oinstall     3584  7月 15 15:27 spfileorcl.ora
drwxr-xr-x. 2 oracle oinstall        6  6月 29 17:01 ダウンロード
drwxr-xr-x. 2 oracle oinstall        6  6月 29 17:01 テンプレート
drwxr-xr-x. 2 oracle oinstall        6  6月 29 17:01 デスクトップ
drwxr-xr-x. 2 oracle oinstall        6  6月 29 17:01 ドキュメント
drwxr-xr-x. 2 oracle oinstall        6  6月 29 17:01 ビデオ
drwxr-xr-x. 2 oracle oinstall        6  6月 29 17:01 音楽
drwxr-xr-x. 2 oracle oinstall        6  6月 29 17:01 画像
drwxr-xr-x. 2 oracle oinstall        6  6月 29 17:01 公開
[oracle@localhost oradata]$ cp -ipR ORCL ~
[oracle@localhost oradata]$ ls -l ~
合計 10360
drwxr-x---. 2 oracle oinstall     4096  8月  6 16:12 ORCL
-rw-r-----. 1 oracle oinstall 10600448  8月  6 14:00 control01.ctl
-rw-r-----. 1 oracle oinstall     3584  7月 15 15:27 spfileorcl.ora
drwxr-xr-x. 2 oracle oinstall        6  6月 29 17:01 ダウンロード
drwxr-xr-x. 2 oracle oinstall        6  6月 29 17:01 テンプレート
drwxr-xr-x. 2 oracle oinstall        6  6月 29 17:01 デスクトップ
drwxr-xr-x. 2 oracle oinstall        6  6月 29 17:01 ドキュメント
drwxr-xr-x. 2 oracle oinstall        6  6月 29 17:01 ビデオ
drwxr-xr-x. 2 oracle oinstall        6  6月 29 17:01 音楽
drwxr-xr-x. 2 oracle oinstall        6  6月 29 17:01 画像
drwxr-xr-x. 2 oracle oinstall        6  6月 29 17:01 公開
[oracle@localhost oradata]$ ls -l ~/ORCL
合計 2140240
-rw-r-----. 1 oracle oinstall  10600448  8月 20 13:54 control01.ctl
-rw-r-----. 1 oracle oinstall  10600448  8月 20 13:54 control02.ctl
-rw-r-----. 1 oracle oinstall 209715712  8月 20 13:53 redo01.log
-rw-r-----. 1 oracle oinstall 209715712  8月 20 13:54 redo02.log
-rw-r-----. 1 oracle oinstall 209715712  8月 20 13:53 redo03.log
-rw-r-----. 1 oracle oinstall 576724992  8月 20 13:54 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 734011392  8月 20 13:54 system01.dbf
-rw-r-----. 1 oracle oinstall  20979712  8月  4 08:33 temp01.dbf
-rw-r-----. 1 oracle oinstall 220209152  8月 20 13:54 undotbs01.dbf
-rw-r-----. 1 oracle oinstall   5251072  8月 20 13:54 users01.dbf
[oracle@localhost oradata]$

 


データファイルの位置はSELECT文で確認することができます👀
今回はデータベースを停止した状態でコピーできる、すべてのデータをコピーしておきましょう。
ただし、パラメータファイルは前々回の記事で取得したものがすでにあるので、この記事での説明を割愛します。

 

SQL> select NAME from v$datafile;

NAME
--------------------------------------------------------------------------------
/opt/oracle/base/oradata/ORCL/system01.dbf
/opt/oracle/base/oradata/ORCL/sysaux01.dbf
/opt/oracle/base/oradata/ORCL/undotbs01.dbf
/opt/oracle/base/oradata/ORCL/users01.dbf

SQL> select NAME from v$tempfile;

NAME
--------------------------------------------------------------------------------
/opt/oracle/base/oradata/ORCL/temp01.dbf

SQL> select MEMBER from v$logfile;

MEMBER
--------------------------------------------------------------------------------
/opt/oracle/base/oradata/ORCL/redo01.log
/opt/oracle/base/oradata/ORCL/redo02.log
/opt/oracle/base/oradata/ORCL/redo03.log

SQL> select NAME from v$controlfile;

NAME
--------------------------------------------------------------------------------
/opt/oracle/base/oradata/ORCL/control01.ctl
/opt/oracle/base/oradata/ORCL/control02.ctl

SQL>

 

データベースのコピー対象ファイルはたくさんありますので、もれなくコピーするように気を付けて下さいね🍀

データファイルを破壊する

データファイルを破壊してみましょう。
これまでの記事でご紹介した2種類の破壊の手法を使用します。

・データファイルを0で上書きする

[oracle@localhost ORCL]$ ls -l
合計 2140240
-rw-r-----. 1 oracle oinstall  10600448  8月 21 14:59 control01.ctl
-rw-r-----. 1 oracle oinstall  10600448  8月 21 14:59 control02.ctl
-rw-r-----. 1 oracle oinstall 209715712  8月 20 15:05 redo01.log
-rw-r-----. 1 oracle oinstall 209715712  8月 21 14:59 redo02.log
-rw-r-----. 1 oracle oinstall 209715712  8月 20 15:05 redo03.log
-rw-r-----. 1 oracle oinstall 576724992  8月 21 14:59 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 734011392  8月 21 14:59 system01.dbf
-rw-r-----. 1 oracle oinstall  20979712  8月 20 22:02 temp01.dbf
-rw-r-----. 1 oracle oinstall 220209152  8月 21 14:59 undotbs01.dbf
-rw-r-----. 1 oracle oinstall   5251072  8月 21 14:59 users01.dbf
[oracle@localhost ORCL]$ pwd
/opt/oracle/base/oradata/ORCL
[oracle@localhost ORCL]$ dd if=/dev/zero of=system01.dbf bs=1 count=734011392
734011392+0 レコード入力
734011392+0 レコード出力
734011392 バイト (734 MB) コピーされました、 1153.4 秒、 636 kB/秒
[oracle@localhost ORCL]$ echo $?
0
[oracle@localhost ORCL]$

 

・データファイルを削除する

[oracle@localhost ORCL]$ ls -l
合計 2140240
-rw-r-----. 1 oracle oinstall  10600448  8月 21 15:55 control01.ctl
-rw-r-----. 1 oracle oinstall  10600448  8月 21 15:55 control02.ctl
-rw-r-----. 1 oracle oinstall 209715712  8月 20 15:05 redo01.log
-rw-r-----. 1 oracle oinstall 209715712  8月 21 14:59 redo02.log
-rw-r-----. 1 oracle oinstall 209715712  8月 20 15:05 redo03.log
-rw-r-----. 1 oracle oinstall 576724992  8月 21 14:59 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 734011392  8月 21 15:31 system01.dbf
-rw-r-----. 1 oracle oinstall  20979712  8月 20 22:02 temp01.dbf
-rw-r-----. 1 oracle oinstall 220209152  8月 21 14:59 undotbs01.dbf
-rw-r-----. 1 oracle oinstall   5251072  8月 21 14:59 users01.dbf
[oracle@localhost ORCL]$ pwd
/opt/oracle/base/oradata/ORCL
[oracle@localhost ORCL]$ rm -i system01.dbf
rm: 通常ファイル `system01.dbf' を削除しますか? y
[oracle@localhost ORCL]$ ls -l
合計 1423432
-rw-r-----. 1 oracle oinstall  10600448  8月 21 15:55 control01.ctl
-rw-r-----. 1 oracle oinstall  10600448  8月 21 15:55 control02.ctl
-rw-r-----. 1 oracle oinstall 209715712  8月 20 15:05 redo01.log
-rw-r-----. 1 oracle oinstall 209715712  8月 21 14:59 redo02.log
-rw-r-----. 1 oracle oinstall 209715712  8月 20 15:05 redo03.log
-rw-r-----. 1 oracle oinstall 576724992  8月 21 14:59 sysaux01.dbf
-rw-r-----. 1 oracle oinstall  20979712  8月 20 22:02 temp01.dbf
-rw-r-----. 1 oracle oinstall 220209152  8月 21 14:59 undotbs01.dbf
-rw-r-----. 1 oracle oinstall   5251072  8月 21 14:59 users01.dbf
[oracle@localhost ORCL]$

 

データベースを起動する

破壊した状態でデータベースを起動してみましょう。

・データファイルを0で上書きした場合

[oracle@localhost ORCL]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Aug 21 15:50:41 2020
Version 19.3.0.0.0

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

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  838858176 bytes
Fixed Size                  8902080 bytes
Variable Size             595591168 bytes
Database Buffers          230686720 bytes
Redo Buffers                3678208 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/opt/oracle/base/oradata/ORCL/system01.dbf'


SQL> quit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[oracle@localhost ORCL]$

アラートログの出力が以下のようになります。

2020-08-21T15:50:55.474883+09:00
Starting ORACLE instance (normal) (OS id: 17119)
2020-08-21T15:50:56.065872+09:00
****************************************************
 /dev/shm will be used for creating SGA
Large pages will not be used. Only standard 4K pages will be used
****************************************************
2020-08-21T15:50:56.116815+09:00
**********************************************************************
2020-08-21T15:50:56.117239+09:00
Dump of system resources acquired for SHARED GLOBAL AREA (SGA)

2020-08-21T15:50:56.117983+09:00
 Per process system memlock (soft) limit = 128G
2020-08-21T15:50:56.119278+09:00
 Expected per process system memlock (soft) limit to lock
 instance MAX SHARED GLOBAL AREA (SGA) into memory: 800M
2020-08-21T15:50:56.119873+09:00
 Available system pagesizes:
  4K, 2048K
2020-08-21T15:50:56.120521+09:00
 Supported system pagesize(s):
2020-08-21T15:50:56.120901+09:00
  PAGESIZE  AVAILABLE_PAGES  EXPECTED_PAGES  ALLOCATED_PAGES  ERROR(s)
2020-08-21T15:50:56.121280+09:00
        4K       Configured          204805          204805        NONE
2020-08-21T15:50:56.121510+09:00
 Reason for not supporting certain system pagesizes:
2020-08-21T15:50:56.121716+09:00
  2048K - Dynamic allocate and free memory regions
2020-08-21T15:50:56.122103+09:00
**********************************************************************
2020-08-21T15:51:22.975772+09:00
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
2020-08-21T15:51:23.341962+09:00
Initial number of CPU is 1
Number of processor cores in the system is 1
Number of processor sockets in the system is 1
Capability Type : Network
capabilities requested : 7 detected : 0 Simulated : 0
Capability Type : Runtime Environment
capabilities requested : 400000FF detected : 40000000 Simulated : 0
Capability Type : Engineered Systems
capabilities requested : 7 detected : 0 Simulated : 0
Capability Type : Database Test
capabilities requested : 3 detected : 0 Simulated : 0
Using LOG_ARCHIVE_DEST_1 parameter default value as /opt/oracle/home/dbs/arch
Autotune of undo retention is turned on.
IMODE=BR
ILAT =51
LICENSE_MAX_USERS = 0
SYS auditing is enabled
2020-08-21T15:51:24.209872+09:00
NOTE: remote asm mode is local (mode 0x1; from cluster type)
2020-08-21T15:51:24.428903+09:00
NOTE: Using default ASM root directory ASM
NOTE: remote asm mode is local (mode 0x1; from cluster type)
NOTE: Cluster configuration type = NONE [2]
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0.
ORACLE_HOME:    /opt/oracle/home
System name:    Linux
Node name:      localhost.localdomain
Release:        4.14.35-1818.3.3.el7uek.x86_64
Version:        #2 SMP Mon Sep 24 14:45:01 PDT 2018
Machine:        x86_64
Using parameter settings in server-side spfile /opt/oracle/home/dbs/spfileorcl.ora
System parameters with non-default values:
  processes                = 300
  nls_language             = "JAPANESE"
  nls_territory            = "JAPAN"
  memory_target            = 800M
  control_files            = "/opt/oracle/base/oradata/ORCL/control01.ctl"
  control_files            = "/opt/oracle/base/oradata/ORCL/control02.ctl"
  db_block_size            = 8192
  compatible               = "19.0.0"
  undo_tablespace          = "UNDOTBS1"
  remote_login_passwordfile= "EXCLUSIVE"
  dispatchers              = "(PROTOCOL=TCP) (SERVICE=orclXDB)"
  local_listener           = "LISTENER_ORCL"
  audit_file_dest          = "/opt/oracle/base/admin/orcl/adump"
  audit_trail              = "DB"
  db_name                  = "orcl"
  open_cursors             = 300
  diagnostic_dest          = "/opt/oracle/base"
2020-08-21T15:51:24.539182+09:00
============================================================
NOTE: PatchLevel of this instance 0
============================================================
Starting background process PMON
2020-08-21T15:51:25.257005+09:00
PMON started with pid=2, OS id=17167
2020-08-21T15:51:25.258977+09:00
Starting background process CLMN
2020-08-21T15:51:25.337167+09:00
CLMN started with pid=3, OS id=17169
Starting background process PSP0
2020-08-21T15:51:25.367835+09:00
PSP0 started with pid=4, OS id=17171
Starting background process VKTM
2020-08-21T15:51:25.445206+09:00
VKTM started with pid=5, OS id=17173 at elevated (RT) priority
2020-08-21T15:51:25.465399+09:00
VKTM running at (1)millisec precision with DBRM quantum (100)ms
Starting background process GEN0
2020-08-21T15:51:25.482986+09:00
GEN0 started with pid=6, OS id=17177
Starting background process MMAN
2020-08-21T15:51:25.540633+09:00
MMAN started with pid=7, OS id=17179
Starting background process GEN1
Starting background process DIAG
2020-08-21T15:51:25.823939+09:00
GEN1 started with pid=9, OS id=17183_17184
2020-08-21T15:51:26.220502+09:00
DIAG started with pid=8, OS id=17187
Starting background process OFSD
2020-08-21T15:51:26.271622+09:00
Starting background process DBRM
2020-08-21T15:51:26.307377+09:00
OFSD started with pid=11, OS id=17189_17190
2020-08-21T15:51:26.309683+09:00
Oracle running with ofslib:'Oracle File Server Library' version=2
2020-08-21T15:51:26.333681+09:00
DBRM started with pid=13, OS id=17192
Starting background process VKRM
2020-08-21T15:51:26.354689+09:00
VKRM started with pid=14, OS id=17194
Starting background process SVCB
2020-08-21T15:51:26.379050+09:00
SVCB started with pid=15, OS id=17196
Starting background process PMAN
2020-08-21T15:51:26.425398+09:00
PMAN started with pid=16, OS id=17198
Starting background process DIA0
2020-08-21T15:51:26.444195+09:00
DIA0 started with pid=17, OS id=17200
Starting background process DBW0
Starting background process LGWR
2020-08-21T15:51:26.779096+09:00
DBW0 started with pid=18, OS id=17202
2020-08-21T15:51:26.797706+09:00
LGWR started with pid=19, OS id=17204
Starting background process CKPT
2020-08-21T15:51:26.833578+09:00
CKPT started with pid=20, OS id=17206
Starting background process SMON
2020-08-21T15:51:26.853299+09:00
SMON started with pid=21, OS id=17208
Starting background process SMCO
2020-08-21T15:51:26.898817+09:00
SMCO started with pid=22, OS id=17210
Starting background process RECO
2020-08-21T15:51:26.918504+09:00
RECO started with pid=23, OS id=17212
Starting background process LREG
2020-08-21T15:51:26.958829+09:00
LREG started with pid=25, OS id=17216
Starting background process PXMN
2020-08-21T15:51:27.013819+09:00
PXMN started with pid=27, OS id=17220
Starting background process FENC
2020-08-21T15:51:27.033410+09:00
FENC started with pid=28, OS id=17222
Starting background process MMON
2020-08-21T15:51:27.055838+09:00
MMON started with pid=29, OS id=17224
Starting background process MMNL
2020-08-21T15:51:27.257213+09:00
MMNL started with pid=30, OS id=17226
2020-08-21T15:51:27.258204+09:00
starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
2020-08-21T15:51:27.346137+09:00
starting up 1 shared server(s) ...
Starting background process TMON
Setting CPU count to 1
ORACLE_BASE from environment = /opt/oracle/base
2020-08-21T15:51:27.774198+09:00
TMON started with pid=28, OS id=17233
2020-08-21T15:51:28.397381+09:00
ALTER DATABASE   MOUNT
2020-08-21T15:51:29.394485+09:00
PGA_AGGREGATE_LIMIT specified is high
2020-08-21T15:51:29.394663+09:00
WARNING: pga_aggregate_limit value is too high for the
amount of physical memory on the system
  PGA_AGGREGATE_LIMIT is 2048 MB
  PGA_AGGREGATE_TARGET is 0 MB.
  physical memory size is 1727 MB
  limit based on physical memory and SGA usage is 1554 MB
  MEMORY_MAX_TARGET is 800 MB
Using default pga_aggregate_limit of 2048 MB
2020-08-21T15:51:32.783049+09:00
.... (PID:17234): Redo network throttle feature is disabled at mount time
2020-08-21T15:51:32.827433+09:00
Successful mount of redo thread 1, with mount id 1576860160
2020-08-21T15:51:32.830178+09:00
Database mounted in Exclusive Mode
Lost write protection disabled
.... (PID:17234): Using STANDBY_ARCHIVE_DEST parameter default value as /opt/oracle/home/dbs/arch [krsd.c:18141]
Completed: ALTER DATABASE   MOUNT
2020-08-21T15:51:33.245827+09:00
ALTER DATABASE OPEN
2020-08-21T15:51:34.039456+09:00
Errors in file /opt/oracle/base/diag/rdbms/orcl/orcl/trace/orcl_dbw0_17202.trc:
ORA-01157: ???????1???/???????? - DBWR??????????????????
ORA-01110: ???????1: '/opt/oracle/base/oradata/ORCL/system01.dbf'
ORA-27048: skgfifi: ?????????????????
Additional information: 2
Ping without log force is disabled:
  instance mounted in exclusive mode.
2020-08-21T15:51:34.200762+09:00
Errors in file /opt/oracle/base/diag/rdbms/orcl/orcl/trace/orcl_ora_17246.trc:
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/opt/oracle/base/oradata/ORCL/system01.dbf'
2020-08-21T15:51:34.406291+09:00
Errors in file /opt/oracle/base/diag/rdbms/orcl/orcl/trace/orcl_mz00_17249.trc:
ORA-01110: f[^t@C
                 1: '/opt/oracle/base/oradata/ORCL/system01.dbf'
ORA-01565: t@C
              '/opt/oracle/base/oradata/ORCL/system01.dbf'?・?G [・教?欺
ORA-27048: skgfifi: t@C
                       ?wb_[?鉐・
                                 ・径
Additional information: 2
2020-08-21T15:51:34.539249+09:00
Errors in file /opt/oracle/base/diag/rdbms/orcl/orcl/trace/orcl_ora_17246.trc:
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/opt/oracle/base/oradata/ORCL/system01.dbf'
ORA-1157 signalled during: ALTER DATABASE OPEN...
2020-08-21T15:51:38.495177+09:00
Checker run found 1 new persistent data failures

 

ALTER DATABASE OPEN までは正常に動作していて、その直後からエラーが出ていることがわかりますね。
エラーが出ているところがデータファイルの読み込みに失敗している部分です。
ORAエラーが文字化けしている場合は、
メッセージを、マニュアルを参照して確認しましょう。
ブック → Database エラー・メッセージ → ORA-00000からORA-00000
を参照します。

 

・データファイルを削除した場合

[oracle@localhost ORCL]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Aug 21 16:01:38 2020
Version 19.3.0.0.0

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

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  838858176 bytes
Fixed Size                  8902080 bytes
Variable Size             595591168 bytes
Database Buffers          230686720 bytes
Redo Buffers                3678208 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/opt/oracle/base/oradata/ORCL/system01.dbf'


SQL> quit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[oracle@localhost ORCL]$

アラートログの出力

     中略
2020-08-21T16:01:44.419242+09:00
ALTER DATABASE   MOUNT
2020-08-21T16:01:46.987903+09:00
PGA_AGGREGATE_LIMIT specified is high
2020-08-21T16:01:46.988455+09:00
WARNING: pga_aggregate_limit value is too high for the
amount of physical memory on the system
  PGA_AGGREGATE_LIMIT is 2048 MB
  PGA_AGGREGATE_TARGET is 0 MB.
  physical memory size is 1727 MB
  limit based on physical memory and SGA usage is 1554 MB
  MEMORY_MAX_TARGET is 800 MB
Using default pga_aggregate_limit of 2048 MB
2020-08-21T16:01:48.440181+09:00
.... (PID:17966): Redo network throttle feature is disabled at mount time
2020-08-21T16:01:48.447106+09:00
Successful mount of redo thread 1, with mount id 1576835176
2020-08-21T16:01:48.447939+09:00
Database mounted in Exclusive Mode
Lost write protection disabled
.... (PID:17966): Using STANDBY_ARCHIVE_DEST parameter default value as /opt/oracle/home/dbs/arch [krsd.c:18141]
Completed: ALTER DATABASE   MOUNT
2020-08-21T16:01:48.545520+09:00
ALTER DATABASE OPEN
2020-08-21T16:01:48.612554+09:00
Errors in file /opt/oracle/base/diag/rdbms/orcl/orcl/trace/orcl_dbw0_17935.trc:
ORA-01157: ???????1???/???????? - DBWR??????????????????
ORA-01110: ???????1: '/opt/oracle/base/oradata/ORCL/system01.dbf'
ORA-27037: ???????????????????
Linux-x86_64 Error: 2: No such file or directory
Additional information: 7
Ping without log force is disabled:
  instance mounted in exclusive mode.
2020-08-21T16:01:48.623402+09:00
Errors in file /opt/oracle/base/diag/rdbms/orcl/orcl/trace/orcl_ora_17976.trc:
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/opt/oracle/base/oradata/ORCL/system01.dbf'
2020-08-21T16:01:48.624549+09:00
Errors in file /opt/oracle/base/diag/rdbms/orcl/orcl/trace/orcl_ora_17976.trc:
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/opt/oracle/base/oradata/ORCL/system01.dbf'
ORA-1157 signalled during: ALTER DATABASE OPEN...
2020-08-21T16:01:48.633110+09:00
Errors in file /opt/oracle/base/diag/rdbms/orcl/orcl/trace/orcl_mz00_17978.trc:
ORA-01110: f[^t@C
                 1: '/opt/oracle/base/oradata/ORCL/system01.dbf'
ORA-01565: t@C
              '/opt/oracle/base/oradata/ORCL/system01.dbf'?・?G [・教?欺
ORA-27037: t@C
              EXe[^X?鞴湘・国B
Linux-x86_64 Error: 2: No such file or directory
Additional information: 7
Checker run found 1 new persistent data failures

制御ファイルの時と同じように、
0で上書きしたときとデータファイルを削除したときとは違う出力となりました。

破壊すると起動しなくなることが確認できましたね。
アラートログには壊れ方によって出力に差が出ることもわかりました。

それでは、破壊したデータベースを復旧させてみましょう❗
破壊する前に取得したコピーを利用して復旧します。
復旧のさせ方はカンタンで、最初にMOUNTモードで起動しているデータベースを停止して、
コピーを取得した元の場所と同じ場所にファイルを戻すだけです。

実際に作業すると以下のようになります。

・データベースを停止

[oracle@localhost ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Aug 25 14:05:44 2020
Version 19.3.0.0.0

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


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> select host_name, instance_name, status from v$instance;

HOST_NAME
--------------------------------------------------------------------------------
INSTANCE_NAME
------------------------------------------------
STATUS
------------------------------------
localhost.localdomain
orcl
MOUNTED


SQL> shutdown
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.
SQL> quit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[oracle@localhost ~]$

しっかり停止していることを、アラートログでも確認しておきましょう。

2020-08-25T14:06:13.034000+09:00
Shutting down ORACLE instance (normal) (OS id: 29960)
Stopping background process SMCO
2020-08-25T14:06:14.306428+09:00
Shutting down instance: further logons disabled
Stopping background process MMNL
2020-08-25T14:06:15.328125+09:00
Stopping background process MMON
2020-08-25T14:06:17.376809+09:00
License high water mark = 1
2020-08-25T14:06:17.409407+09:00
Dispatchers and shared servers shutdown

Data Pump shutdown on PDB: 0 in progress
ALTER DATABASE CLOSE NORMAL
Stopping Emon pool
ORA-1109 signalled during: ALTER DATABASE CLOSE NORMAL...
ALTER DATABASE DISMOUNT
Shutting down archive processes
Archiving is disabled
Completed: ALTER DATABASE DISMOUNT
.... (PID:29960): Archival disabled due to shutdown: 1090
Shutting down archive processes
Archiving is disabled

IM on ADG: Start of Empty Journal

IM on ADG: End of Empty Journal
JIT: pid 29960 requesting stop
2020-08-25T14:06:17.450028+09:00
Stopping background process VKTM
2020-08-25T14:06:17.467710+09:00
.... (PID:29960): Archival disabled due to shutdown: 1090
Shutting down archive processes
Archiving is disabled
JIT: pid 29960 requesting stop
2020-08-25T14:06:34.108282+09:00
Instance shutdown complete (OS id: 29960)

 

・コピーしたファイルを元の場所にリストア

[oracle@localhost oradata]$ ls -lR
.:
合計 4
drwxr-x---. 2 oracle oinstall 4096  8月 25 14:18 ORCL

./ORCL:
合計 1423432
-rw-r-----. 1 oracle oinstall  10600448  8月 25 14:17 control01.ctl
-rw-r-----. 1 oracle oinstall  10600448  8月 25 14:17 control02.ctl
-rw-r-----. 1 oracle oinstall 209715712  8月 20 15:05 redo01.log
-rw-r-----. 1 oracle oinstall 209715712  8月 21 14:59 redo02.log
-rw-r-----. 1 oracle oinstall 209715712  8月 20 15:05 redo03.log
-rw-r-----. 1 oracle oinstall 576724992  8月 21 14:59 sysaux01.dbf
-rw-r-----. 1 oracle oinstall  20979712  8月 20 22:02 temp01.dbf
-rw-r-----. 1 oracle oinstall 220209152  8月 21 14:59 undotbs01.dbf
-rw-r-----. 1 oracle oinstall   5251072  8月 21 14:59 users01.dbf
[oracle@localhost oradata]$ cp -pR ~/ORCL ./
[oracle@localhost oradata]$ ls -lR
.:
合計 4
drwxr-x---. 2 oracle oinstall 4096  8月  6 16:12 ORCL

./ORCL:
合計 2140240
-rw-r-----. 1 oracle oinstall  10600448  8月 20 13:54 control01.ctl
-rw-r-----. 1 oracle oinstall  10600448  8月 20 13:54 control02.ctl
-rw-r-----. 1 oracle oinstall 209715712  8月 20 13:53 redo01.log
-rw-r-----. 1 oracle oinstall 209715712  8月 20 13:54 redo02.log
-rw-r-----. 1 oracle oinstall 209715712  8月 20 13:53 redo03.log
-rw-r-----. 1 oracle oinstall 576724992  8月 20 13:54 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 734011392  8月 20 13:54 system01.dbf
-rw-r-----. 1 oracle oinstall  20979712  8月  4 08:33 temp01.dbf
-rw-r-----. 1 oracle oinstall 220209152  8月 20 13:54 undotbs01.dbf
-rw-r-----. 1 oracle oinstall   5251072  8月 20 13:54 users01.dbf
[oracle@localhost oradata]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Aug 25 14:23:39 2020
Version 19.3.0.0.0

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

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  838858176 bytes
Fixed Size                  8902080 bytes
Variable Size             595591168 bytes
Database Buffers          230686720 bytes
Redo Buffers                3678208 bytes
Database mounted.
Database opened.


SQL> select host_name, instance_name, status from v$instance;

HOST_NAME
--------------------------------------------------------------------------------
INSTANCE_NAME
------------------------------------------------
STATUS
------------------------------------
localhost.localdomain
orcl
OPEN


SQL> quit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[oracle@localhost oradata]$

正常に起動しましたね。

うまくできなかった場合は、
細部までデータベースとファイルの状態を確認してみてください。
きっとどこかが間違っているはずです。

おわりに

3記事を通して、NOMOUNT, MOUNT, OPEN状態の修復作業をご紹介いたしました。いかがでしたでしょうか。

特に今回は、データベース全体のコピーを取得する方法をご紹介したので、自学自習できる範囲が大幅に広がったと思います。

SYSTEM表領域を今回は破壊しましたが、実は破壊するデータ(ユーザ表領域、TEMP表領域、REDOログ)および
破壊する時点でのデータベースの状態(OPEN状態、停止状態)でアラートログの出力や動作が変わってきます。

特にOPEN状態でデータベースのデータを破壊するパターンは、
いつアラートログに異常が検知されるかなど、ファイルにより異なりますので、ぜひ興味をもってチャレンジしてみてください。

私も新卒の時に、データベースがこんなに簡単に復旧できるものだと知っていたら、いろいろチャレンジできたなと思い返す記事になりました🤗

今回で、起動停止とそれに伴うトラブルの記事は一旦終わりにしたいと思います🍀
ここまで通して読んでくださった方、ありがとうございます🤗
この記事が初めての方は、バックナンバーもご覧くださいませ👀

DB停止起動ひとりでできるもん
DB停止起動ひとりでできるもん(パラメータファイル破壊編)
DB停止起動ひとりでできるもん(制御ファイル破壊編)

投稿者プロフィール

技術チーム
技術チーム
DBひとりでできるもんを盛り上げるべく、技術チームが立ち上がりました。ひとりでできるもんと言いつつ、技術者が読んでプッとなるような、極めてピンポイントでマニアックな技術ネタを執筆していきます!