Oracle Hints

  • Установка Оракла под Линукс
  • Свободное место в БД Oracle
  • Oracle memlock
  • ipcs
  • Проверка SQL-запроса на оптимизацию
  • Версия Оракла

Установка Оракла под Линукс

Создать пользователя oracle и группу dba:

# groupadd -g 199 dba
# useradd -u 199 -g 199 -l -m -n oracle

Перенаправить “выхлоп” почты на специальный адрес (если нужно):

# echo 'dba@oramezo.org' >~oracle/.forward

Создать каталог для Оракла:

# mkdir /opt/oracle
# chown oracle:dba /opt/oracle

Настроить окружение. Для чего добавить в ~oracle/.bash_profile следующие строки:

export NLS_LANG=AMERICAN_AMERICA.UTF8
export ORACLE_HOME=/opt/oracle/10R2
export ORACLE_SID=ORCL
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH

Настроить системные лимиты. Для чего в /etc/security/limits.conf добавить следующие строки:

oracle        -        memlock   3145728
oracle        -        nofile       63536
oracle        -        nproc       16384

После чего раскатать дистриб в /opt/oracle/10R2

Свободное место в БД Oracle

Понадобилось по работе смотреть сколько занято/свободно в БД Оракла.

Нашёл в Инете полезный запрос - может, ещё кому пригодится. Выдаёт информацию о размере и оставшемся свободном месте для каждого tablespace в базе.

Версия 1

COLUMN FILE_SIZE FORMAT a30
SELECT a.name, b.tablespace_name, SUBSTR('Free : '||sum(b.bytes)/1024/1024,1,30) File_Size
FROM dba_free_space b, v$database a
GROUP BY b.tablespace_name, a.name
UNION
SELECT a.name, b.tablespace_name, SUBSTR('Total: '||sum(b.bytes)/1024/1024,1,30)
FROM dba_data_files b, v$database a
GROUP BY b.tablespace_name, a.name
ORDER BY 1,2,3;

Версия 2

Но “выхлоп” предыдущего запроса слишком многословен и не очень удобен. Нам на работе хотелось бы более компактной и удобочитаемой выдачи. В результате, мы с коллегой написали новый запрос, который выдает сведения о полном размере каждого tablespace и количестве свободного места в одну строчку, а не в две. Кроме того, он не показывает UNDO и TEMP. Также был изменен формат чисел - для нас более удобно считать уже в гигабайтах, точнее в сотнях гигабайт. Вот этот запрос:

SELECT t.tablespace_name,
(SELECT TO_CHAR(SUM(b.bytes)/1024/1024/1024, '99990.000')||' G' FROM dba_data_files b
 WHERE b.tablespace_name=t.tablespace_name) Total,
(SELECT TO_CHAR(SUM(f.bytes)/1024/1024/1024, '99990.000')||' G' FROM dba_free_space f
 WHERE f.tablespace_name=t.tablespace_name) Free
FROM dba_tablespaces t
WHERE t.status='ONLINE' AND t.contents='PERMANENT'
ORDER BY 1;
EXIT

Oracle memlock

Если Оракл при запуске жалуется на недостаток памяти, проверьте файл: /etc/security/limits.conf - там должны быть строчки:

oracle        -        memlock     3145728
oracle        -        nofile      63536
oracle        -        nproc       16384

ipcs

The ipcs command can be used to obtain the status of all System V IPC objects.

ipcs     -q:    Show only message queues
ipcs     -s:    Show only semaphores
ipcs     -m:    Show only shared memory
ipcs --help:    Additional arguments

Полезно использовать для отслеживания использования памяти Ораклом (SGA), особенно в случае возникновения проблем.

see also:

Проверка SQL-запроса на оптимизацию

SQL> EXPLAIN PLAN FOR sql-query
SQL> @$ORACLE_HOME/rdbms/admin/utlxpls.SQL

В ответ Оракл “расскажет” как он оптимизирует указанный запрос.

Версия Оракла

SELECT * FROM v$version
WHERE banner LIKE 'Oracle%';

One Comment

  1. Ora Mezo » Blog Archive » Oracle Hints:

    [...] всю информацию, касающуюся Оракла, в одну статью: Oracle Hints. Category: Сайт |   Tags: dba, oracle [...]