⭐️ Проверка базы данных Oracle, на что обратить внимание? ⭐️ (несколько личных мнений)

задняя часть Oracle
⭐️ Проверка базы данных Oracle, на что обратить внимание? ⭐️ (несколько личных мнений)

Это 8-й день моего участия в августовском испытании обновлений.Подробности о событии:Испытание августовского обновления

🌲 Предисловие 🌲

Если вам как администратору баз данных предоставляется совершенно новая автономная среда базы данных Oracle, на что вам следует обратить внимание? В этой статье обсуждаются только хосты Linux~

📢 Прежде всего заявляю, что ответы в этой статье не стандартные ответы, а лишь некоторые личные мнения.Приглашаю 👏🏻 всех дополнять и улучшать~

Прежде всего, конечно, подтвердите, является ли это базой данных одномашинного или кластерного режима! В этой статье в основном объясняется автономная база данных.

1. ⭐️ Уровень хоста ⭐️

1. 📚 Версия хоста и версия Oracle

Версия хоста:

cat /etc/system-release
cat /etc/redhat-release

在这里插入图片描述 Версия Oracle и версия патча:

sqlplus -version
opatch lspatches

在这里插入图片描述

2. 💻 Аппаратные ресурсы хоста

Включая загрузку ЦП, физическую память и использование диска.

Загрузка процессора и памяти:

top
free -m

在这里插入图片描述 在这里插入图片描述⚠️ Необходимо обратить внимание на то, не является ли нагрузка на процессор и использование физической памяти хоста аномальной, а также не слишком ли часто используется Swap.

Использование диска:

lsblk
fdisk -l
df -Th

在这里插入图片描述⚠️ Очевидно, вам нужно обратить внимание на использование диска и на наличие чрезмерного использования.

3. 📒 Запланированные задачи crontab

Общие запланированные задачи упорядочат некоторые стратегии резервного копирования или стратегии удаления архива, мы можем просмотреть их через crontab:

crontab -l

在这里插入图片描述

4. 🌿 Проверьте файл Hosts и конфигурацию сети.

cat /etc/hosts
ip addr
nmcli connection show

在这里插入图片描述 在这里插入图片描述

5. 🍄 Проверьте файл системных параметров

cat /etc/sysctl.conf

在这里插入图片描述⚠️ Обратите внимание, не установлены ли нестандартные параметры.

6. 🌻 Проверьте файл rc.local

Файл rc.local используется для настройки сценария автозапуска при загрузке, обычно он настроен на закрытие прозрачных огромных страниц или автозапуск при загрузке базы данных Oracle.

cat /etc/rc.local

在这里插入图片描述

7. 🍁 Конфигурация переменных среды

Ознакомьтесь с конфигурацией переменных среды, чтобы лучше ознакомиться со средой.

cat ~/.bash_profile
cat /home/oracle/.bash_profile

在这里插入图片描述 在这里插入图片描述

8. 🌵 Проверить системные службы

systemctl status firewalld.service
getenforce
cat /proc/cmdline
cat /etc/sysconfig/network

在这里插入图片描述

2. 💫 Уровень базы данных 💫

1. 🍔 Просмотр экземпляра базы данных и мониторинг

ps -ef|grep smon
su - oracle
lsnrctl status

在这里插入图片描述 在这里插入图片描述

2. 🍖 использование табличного пространства базы данных

sqlplus / as sysdba
col TABLESPACE_NAME for a20
select tbs_used_info.tablespace_name,
       tbs_used_info.alloc_mb,
       tbs_used_info.used_mb,
       tbs_used_info.max_mb,
       tbs_used_info.free_of_max_mb,
       tbs_used_info.used_of_max || '%' used_of_max_pct
  from (select a.tablespace_name,
               round(a.bytes_alloc / 1024 / 1024) alloc_mb,
               round((a.bytes_alloc - nvl(b.bytes_free,
                                          0)) / 1024 / 1024) used_mb,
               round((a.bytes_alloc - nvl(b.bytes_free,
                                          0)) * 100 / a.maxbytes) used_of_max,
               round((a.maxbytes - a.bytes_alloc + nvl(b.bytes_free,
                                                       0)) / 1048576) free_of_max_mb,
               round(a.maxbytes / 1048576) max_mb
          from (select f.tablespace_name,
                       sum(f.bytes) bytes_alloc,
                       sum(decode(f.autoextensible,
                                  'YES',
                                  f.maxbytes,
                                  'NO',
                                  f.bytes)) maxbytes
                  from dba_data_files f
                 group by tablespace_name) a,
               (select f.tablespace_name,
                       sum(f.bytes) bytes_free
                  from dba_free_space f
                 group by tablespace_name) b
         where a.tablespace_name = b.tablespace_name(+)) tbs_used_info
 order by tbs_used_info.used_of_max desc;

在这里插入图片描述

3. 🍢 Проверьте состояние резервной копии RMAN

rman target /
list backup;

sqlplus / as sysdba
col status for a10
col input_type for a20
col INPUT_BYTES_DISPLAY for a10
col OUTPUT_BYTES_DISPLAY for a10
col TIME_TAKEN_DISPLAY for a10

select input_type,
       status,
       to_char(start_time,
               'yyyy-mm-dd hh24:mi:ss'),
       to_char(end_time,
               'yyyy-mm-dd hh24:mi:ss'),
       input_bytes_display,
       output_bytes_display,
       time_taken_display,
       COMPRESSION_RATIO
  from v$rman_backup_job_details
 where start_time > date '2021-07-01'
 order by 3 desc;

在这里插入图片描述

4. 🍡 Проверить избыточность контрольного файла

Проверьте количество и расположение управляющих файлов, а также наличие в них избыточности.

sqlplus / as sysdba
show parameter control_files
select name from v$controlfile;

在这里插入图片描述 在这里插入图片描述

5. 🍭 Проверьте файл параметров

Проверьте файл параметров базы данных, чтобы убедиться, что параметры используются нормально.

sqlplus / as sysdba
show parameter spfile
create pfile='/home/oracle/pfile.ora' from spfile;

strings /home/oracle/pfile.ora

在这里插入图片描述 在这里插入图片描述

6. 🍬 Включены ли архивация и флэшбэк

sqlplus / as sysdba
archive log list
select open_mode,log_mode,flashback_on,force_logging from v$database;

在这里插入图片描述

7. 🍗 Проверьте онлайн-логи и частоту переключения

Проверьте размер онлайн-журнала:

set line222
col member for a100
select f.group#,f.member,l.sequence#,l.bytes/1024/1024,l.archived,l.status,l.first_time 
from v$logfile f,v$log l 
where f.group# = l.group# 
order by f.group#,f.member;

在这里插入图片描述 Проверьте частоту переключения онлайн-журнала:

col day for a30
SELECT
  SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH:MI:SS'),1,5)  DAY,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'00',1,0)) H00,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'01',1,0)) H01,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'02',1,0)) H02,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'03',1,0)) H03,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'04',1,0)) H04,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'05',1,0)) H05,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'06',1,0)) H06,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'07',1,0)) H07,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'08',1,0)) H08,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'09',1,0)) H09,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'10',1,0)) H10,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'11',1,0)) H11,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'12',1,0)) H12,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'13',1,0)) H13,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'14',1,0)) H14,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'15',1,0)) H15,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'16',1,0)) H16,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'17',1,0)) H17,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'18',1,0)) H18,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'19',1,0)) H19,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'20',1,0)) H20,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'21',1,0)) H21,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'22',1,0)) H22,
  SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'23',1,0)) H23,
  COUNT(*)                                                                      TOTAL
FROM
  v$log_history  a where SYSDATE - first_time < 35
GROUP BY SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH:MI:SS'),1,5) order by 1;

8. 🍕 Просмотр набора символов базы данных

select * from nls_database_parameters;

在这里插入图片描述

9. 🍯 Проверка на недопустимые объекты

SELECT owner,object_name,object_type,status
FROM dba_objects
WHERE status <> 'VALID'
ORDER BY owner,object_name;

在这里插入图片描述

10. 🍋 Проверить объекты таблицы разделов

set line222
col high_value for a100
select t2.TABLE_OWNER,t1.table_name, t1.max_partition_name, t2.high_value
  from (select table_name, max(partition_name) as max_partition_name
          from dba_tab_partitions
         group by table_name) t1,
       (select TABLE_OWNER,table_name, partition_name, high_value
          from dba_tab_partitions
         where tablespace_name not in ('SYSAUX', 'SYSTEM')) t2
 where t1.table_name = t2.table_name
   and t1.max_partition_name = t2.partition_name
   order by 1,2;

在这里插入图片描述Необходимо обратить внимание на максимально расширенный раздел раздела и на необходимость его расширения.Рекомендуется расширить его заранее, чтобы избежать дробления.

3. ❄️ Уровень отчетности ❄️

С помощью собственных отчетов Oracle awr, ash, awrsqrpt и других вы можете четко понять текущую ситуацию с базой данных.

1. 🍉 авт отчет

AWR содержит подробный набор операций с базой данных и часто используется для анализа проблем с производительностью коллекции.

sqlplus / as sysdba @?/rdbms/admin/awrrpt.sql

Отчет AWR можно сгенерировать с помощью приведенных выше команд.Во время процесса вам необходимо указать тип отчета и период захвата.Пожалуйста, проверьте, как его использовать самостоятельно.Вы также можете подписаться на мой официальный аккаунт, чтобы получить орлиный глаз awr видеоурок по настройке бесплатно.在这里插入图片描述

2. 🍊 пепельный отчет

ash может собирать более подробную информацию, чем отчеты AWR, он может быть точным до минуты и чаще используется.

sqlplus / as sysdba @?/rdbms/admin/ashrpt.sql

Вышеупомянутый метод генерации, период времени является необязательным, и по умолчанию используется получение отчета от текущего времени до 15 минут назад.

3. 🍒 отчет awrsqrpt

Для отчетов, используемых для анализа проблем производительности с одним SQL, необходимо знать SQL_ID.

sqlplus / as sysdba @?/rdbms/admin/awrsqrpt.sql

Вам необходимо указать период времени и sql_id, чтобы получить соответствующий отчет sql.

4. 🍑 отчет sqltrpt

Обычно используемый вместе с отчетом awrsqrpt, вы можете получить предложения по оптимизации SQL, предоставленные Oracle.Вообще говоря, рекомендуется создать больше индексов и профилей, которые подходят для новичков, чтобы оптимизировать использование SQL.

sqlplus / as sysdba @?/rdbms/admin/sqltrpt.sql

Требуется только SQL_ID.

5. 🍍отчет о добавлении

addmrpt — это отчет, созданный оракулом путем автоматической диагностики отчета awr.

sqlplus / as sysdba @?/rdbms/admin/addmrpt.sql

Только для справки, реальная помощь не имеет смысла. Процедура требует ввода периода времени.

6. 🌽 Отчет о проверке здоровья

Этот тип отчета о проверке работоспособности обычно представляет собой отчет, созданный при выполнении скрипта, написанного человеком.Результат проверки определяется человеком и обычно включает указанную выше необходимую информацию. Конечно, официальный Oracle также предоставляет полный метод создания отчетов базы данных.Я не буду вводить здесь слишком много.Друзья, которым это нужно, могут связаться со мной, чтобы получить его.

⚡️ Напишите в конце ⚡️

Благодаря вышеуказанным проверкам я считаю, что у вас есть общее представление о системе баз данных, с которой вы впервые контактируете.Далее вам нужно только медленно и глубоко проанализировать, а затем сформулировать набор спецификаций эксплуатации и обслуживания, которые соответствуют реальной ситуации. .

ヾ(◍°∇°◍)ノ゙


Этот обмен заканчивается здесь~

Если вы считаете, что статья полезна для вас,Нравится, Избранное, Следите, Комментируйте, Поддержка четырех ссылок одним щелчком мыши, ваша поддержка является самой большой движущей силой для моего творчества.