目次
はじめに
こんにちは!ゆうきです🤗
これまでの記事
「ひとりでできるもん」シリーズはいかがでしたでしょうか?
●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停止起動ひとりでできるもん(制御ファイル破壊編)