Приветствую Вас Гость

DBA.UCOZ.RU

Четверг, 25.04.2024, 18:30
Главная » FAQ

Oracle [23]

Существуют следующие способы сбросить маркер максимального уровня заполнения и освободить при этом неиспользуемое табличное пространство:
  1. Переместить таблицу в другое табличное простанство с момощью команды ALTER TABLE owner.table MOVE TABLESPACE tablespace. Учитывайте при этом, что объекты ссылающиеся на эту таблицу перейдут в статус инвалидных. Нобходимо так же пересоздать индексы.
  2. Выполнить команду ALTER TABLE owner.table SHRINK SPACE. Предварительно надо перевести таблицу в режим row movement с помощью команды ALTER TABLE owner.table ENABLE ROW MOVEMENT. Объекты ссылающиеся на таблицу не переходят в статус инвалидных.

Прерывание выполнения задания осуществляется следующим образом:
  1. Подключиться от имени владельца задания.
  2. Выключить задание: exec sys.dbms_job.broken(job, TRUE);
  3. Уничтожить сеанс задания.
  4. Включить задание: exec sys.dbms_job.broken(job, FALSE, next_date);
Где job - идентификатор задания, next_date - дата следующего выполнения задания.

Пример:

SQL> exec sys.dbms_job.broken(28, TRUE);
SQL> alter system kill session '39, 23';
SQL> exec sys.dbms_job.broken(28, FALSE, SYSDATE + 1);


p.s.: владелец задания должен иметь права execute на пакет sys.dbms_job.



Если при подключении из Enterprise Manager Console  к  Oracle Database 10g Express Edition возникает ошибка

ORA-12705: Cannot access NLS data files or invalid environment specified

в файле oemapp.bat надо добавить к строке запуска -Duser.language=en -Duser.country=US

Пример:

%NT_START% %JRE% -Duser.language=en -Duser.country=US ...



Сеанс уничтожается с помощью команды ALTER SYSTEM KILL SESSION 'sid,serial#'. Значения sid и serial# можно получить из запроса к представлению v$session.




SQL> shutdown immediate;
SQL> startup nomount;
SQL> alter system enable restricted session;
SQL> alter database mount exclusive;
SQL> drop database;


Ждём...

База удалена




Пользователя можно создать двумя способами:

  1. С помощью команды CREATE USER. В качестве достоинства можно выделить возможность задания установок пользователя в одной команде.

  2. С помощью команды GRANT. В этом случае  одной командой создается пользователь и сразу же выдается необходимая привилегия. Недостатком этого способа является то, что пользователь имеет установки по умолчанию. Исправлять их придётся с помощью команды ALTER USER.
Примеры:

SQL> CREATE USER test IDENTIFIED BY gk28fgn9

или

SQL> GRANT create session TO test IDENTIFIED BY gk28fgn9



Временное табличное пространство пользователя меняется с помощью команды ALTER USER.

Пример:

SQL> ALTER USER  test TEMPORARY TABLESPACE  temp2



Аудит можно включить установив параметр audit_trail в значение db. При этом потребуется перезагрузка экземпляра.

Пример:

SQL> ALTER SYSTEM SET audit_trail=db SCOPE=SPFILE;



Комментарии к столбцам таблицы можно записать с помощью команды COMMENT:

Пример:

SQL> COMMENT ON COLUMN hr.employees.first_name IS 'First name of the employee. A not null column.'

Посмотреть комментарии к столбцам можно в представлениях all_col_comments, dba_col_comments, user_col_comments.

Пример:

SQL> SELECT owner, table_name, column_name, comments FROM all_col_comments;



SQL> shutdown immediate;

Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup mount;

ORACLE instance started.


Database mounted.

SQL> alter database open read only;

Database altered.

или

SQL> shutdown immediate;
SQL> startup open read only
ORACLE instance started.


Database mounted.
Database opened.

Теперь база открыта только для чтения. Проверить это можно с помощью следующего запроса:

SQL> SELECT open_mode FROM v$database;

OPEN_MODE
----------
READ ONLY



Сгенерировать случайное число можно с помощью:
  1. Пакета  dbms_random.

  2. Примеры:

    Генерация положительного дробного числа от 0 до 1:

    SQL>SELECT dbms_random.value FROM dual

    Генерация дробного числа в диапазоне от n до m:

    SQL>SELECT dbms_random.value(n, m) FROM dual

    Генерация целого положительного или отрицательного числа:

    SQL>SELECT dbms_random. random FROM dual

  3. Пакета DBMS_CRYPTO.

  4. Примеры:

    Генерация целого положительного или отрицательного числа :

    SQL>SELECT dbms_crypto.randominteger FROM duall

    Генерация целого положительного числа :

    SQL>SELECT dbms_crypto.randomnumber FROM duall


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

Эта опция применяется в следующих случаях:

  • После выполнения неполного восстановления или восстановления с использованием резервной копии контрольного файла.
  • После выполнения предыдущей команды OPEN RESETLOGS, незавершенной полностью.
  • После выполнения операции FLASHBACK DATABASE
  • Если созданный контрольный файл смонтирован, а оперативные журнальные файлы утеряны
Добавил: Сергей Жилин (dba)

Двоичный файл параметров севера можно создать с помощью команды create spfile. Команду можно выполнять как при запущенном, так и при остановленном экземпляре. Но надо учитывать что при запущенном экземпляре файл не создаётся если путь к нему совпадает с используемым двоичным файл параметров севера.

Если принудительно не задавать путь к файлам, то используются пути по умолчанию:

$ORACLE_HOME/dbs для UNIX и Linux.
%ORACLE_HOME%\database для Windows.

Пример:

SQL> create spfile='spfileorcl.ora' from pfile='ora_init.ora';

File created.

Добавил: Сергей Жилин (dba)

Дамп блока данных можно сделать с помощью следующей команды:

ALTER SYSTEM DUMP DATAFILE <file#> BLOCK <block#>;

Если требуется сделать дамп нескольких блоков данных то используется следующая команда:

ALTER SYSTEM DUMP DATAFILE <file#> BLOCK MIN <min_block#> BLOCK MAX <max_block#>;

Параметры:

  • <file#> - номер файла данных в котором находится блок.
  • <block#> - номер блока данных, для которого делается дамп.
  • <min_block#> - минимальный номер диапазона блоков данных, для которых делается дамп.
  • <max_block#> - максимальный номер диапазона блоков данных, для которых делается дамп.

Параметры для сегментов можно найти с помощью следующего запроса:

SELECT file_id, block_id, blocks
  FROM dba_extents
 WHERE segment_name = <имя сегмента>;

Примеры:

SQL> SELECT file_id, block_id, blocks
  2> FROM dba_extents
  3> WHERE segment_name = 'T3';

FILE_ID BLOCK_ID BLOCKS
------- -------- ------
4       537      8

Выбрано: 1 строка

SQL> ALTER SYSTEM DUMP DATAFILE 4 BLOCK 537;

System altered

SQL> ALTER SYSTEM DUMP DATAFILE 4 BLOCK MIN 537 BLOCK MAX 544;

System altered

Если параметр timed_statistics выключен, то необходимо включить его:

SQL> ALTER SESSION SET timed_statistics=true;

Если требуется ограничить размер трассировочного файла, то нужно изменить параметр max_dump_file_size. Следующая команда ограничивает размер файла трассировки на уровне 200 Мб.:

SQL> ALTER SESSION SET max_dump_file_size='200M';

Включение трассировки сеанса на первом уровне:

SQL> ALTER SESSION SET sql_trace=true;

Включение трассировки сеанса на уровне 12 (переменные и события ожиданий) или других уровнях выполняется следующим образом:

SQL> ALTER SESSION SET EVENTS '10046 trace name context forever, level 12';

Уровни трассировки:

Уровень трассировкиФункция
1Базовая информация
4Дополнительно к первому уровню выводятся значения переменных
8Дополнительно к первому уровню выводятся события ожиданий
12Выводить данные уровней 1, 4 и 8

Выключение трассировки:

SQL> ALTER SESSION SET EVENTS '10046 trace name context off';

или

SQL> ALTER SESSION SET sql_trace=false;

P.S. Для выполнения трассировки сеанс должен иметь привилегию alter session.


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

  1. Создаётся текстовый файл параметров инициализации:

    SQL> CREATE PFILE FROM SPFILE;
  2. Выгружается экземпляр базы данных:

    SQL> SHUTDOWN IMMEDIATE;
  3. Делается резервная копия базы данных.

  4. В созданном ранее текстовом файле параметров инициализации добавляются следующие параметры:

    Путь к месту назначения архивных файлов (если такое место одно)

    LOG_ARCHIVE_DEST= 'LOCATION=c:\oracle\product\10.2.0\arc’

    Или если таких мест назначения несколько

    LOG_ARCHIVE_DEST_1= 'LOCATION=c:\oracle\product\10.2.0\arc'
    LOG_ARCHIVE_DEST_2= 'LOCATION=c:\oracle\product\10.2.0\arc'

    Формат имени архивного файла (если требуется изменить имя по умолчанию)

    LOG_ARCHIVE_FORMAT = arch_%t_%s_%r.arc

    Количество фоновых архивных процессов экземпляра (если требуется увеличить, по умолчанию два)

    LOG_ARCHIVE_MAX_PROCESSES=3
  5. Далее, монтируется экземпляр базы данных с использованием текстового файла параметров инициализации:

    SQL> STARTUP PFILE=%ORACLE_HOME%\database\initorcl.ora MOUNT;
  6. Включается режим архивации базы данных:

    SQL> ALTER DATABASE ARCHIVELOG;
  7. Экземпляр базы данных открывается в нормальном режиме:

    SQL> ALTER DATABASE OPEN;
  8. Создаётся двоичный файл параметров инициализации:

    SQL> CREATE SPFILE FROM PFILE;
  9. Архивируется вручную текущий журнал (для проверки):

    SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
  10. Выгружается экземпляр базы данных:

    SQL> SHUTDOWN IMMEDIATE;
  11. Делается резервная копия базы данных (файлов данных , контрольного файла)

  12. Запускается экземпляр базы данных в номальном режиме:

    SQL> STARTUP;
  13. Проверяется текущий режим архивирования базы данных:

    SQL> SELECT log_mode FROM sys.v$database;

    LOG_MODE
    ------------
    ARCHIVELOG

Файл временного табличного пространства можно удалить следующим образом:

SQL> ALTER DATABASE TEMPFILE 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\Temp02.dbf' DROP;

База данных изменена

При этом, сам файл в операционной системе не удаляется. Его можно позже удалить вручную.

Для того чтобы сразу удалить файл из операционной системы одной командой необходимо выполнить:

SQL> ALTER DATABASE TEMPFILE 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\Temp02.dbf' DROP INCLUDING DATAFILES;

База данных изменена

или

SQL> ALTER TABLESPACE temp DROP TEMPFILE 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\Temp02.dbf';

Табличное пространство изменено

Файл временного табличного пространства не может быть удалён если он является единственным во временном табличном пространстве.

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

Добавил: Сергей Жилин (dba)

Поле показывает общее время всех выполнений данного задания в секундах. Значение имеет накопительный характер и в него, вместе с временем непосредственного выполнения, входит так же время ожиданий задания (очереди блокировок, искуственные задержки, системные ожидания).
Добавил: Сергей Жилин (dba)

Вычислить разницу между двумя датами в соседних строках одного столбца можно с помощью аналитических функций LAG или LEAD. Первая возвращает значение из предыдущей строки столбца. Вторая из последующей строки столбца. К примеру, следующий запрос выводит время первой записи в предыдущем журнальном файле:

SELECT first_time, LAG(first_time, 1) OVER (ORDER BY first_time) prev_time FROM v$log_history

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

SELECT first_time, prev_time, EXTRACT(MINUTE FROM (first_time - prev_time) DAY TO SECOND) delta FROM ( SELECT first_time, LAG(first_time, 1) OVER (ORDER BY first_time) prev_time FROM v$log_history )

Увидеть список скрытых параметров можно с помощью следующего запроса:

SELECT ksppinm, ksppstvl, ksppdesc
  FROM x$ksppi x, x$ksppcv y  
 WHERE x.indx = y.indx and ksppinm LIKE '__%' ESCAPE '_'

Для просмотра требуются права sys. Таблица x$ksppi содержит имена параметров,  таблица x$ksppcv их значения для текущего сеанса. Если требуется получить значения скрытых параметров экземпляра то надо заменить таблицу x$ksppcv таблицей x$ksppsv.

Добавил: Сергей Жилин (dba)

Файлы оперативного журнала включают в себя:

  • Все изменения сделанные операторами DML без текста этих операторов:

    • INSERT
    • UPDATE
    • DELETE
    • SELECT FOR UPDATE

  • Все изменения сделанные в словаре данных операторами DDL, включая текст этих операторов (только для версии 9.0.1 и выше).
  • Все изменения, сделанные рекурсивными операторами
Добавил: Сергей Жилин (dba)

Псевдостолбец CONNECT_BY_ISLEAF в ранних версиях Oracle можно заменить следующим выражением:

DECODE(LEVEL + 1, LEAD(LEVEL) OVER (ORDER BY ROWNUM), 0, 1)

Пример:

SQL>           SELECT LPAD(' ', (level-1)*2, ' ')  || last_name "Employee",
  2>                  DECODE(LEVEL + 1, LEAD(LEVEL) OVER (ORDER BY ROWNUM), 0, 1) "IsLeaf",
  3>                  LEVEL
  4>             FROM hr.employees
  5>            WHERE LEVEL <= 3 AND department_id = 80
  6>       START WITH employee_id = 100
  7> CONNECT BY PRIOR employee_id = manager_id AND LEVEL <= 4;
 
Employee       IsLeaf LEVEL
-------------- ------ -----
  Russell      0      2   
    Tucker     1      3   
    Bernstein  1      3   
    Hall       1      3   
    Olsen      1      3   
    Cambrault  1      3   
    Tuvault    1      3   
  Partners     0      2   
    King       1      3   
    Sully      1      3   
    McEwen     1      3   
    Smith      1      3   
    Doran      1      3   
    Sewall     1      3   

Добавил: Сергей Жилин (dba)

вопрос в том чтобы бэкапы делались не на тот же сервер где база, а в другое место в сети
пытался прописать sql>alter system set log_archive_dest='C:\temp\';
но получал ошибку
подвопрос: что будет если сеть пропадет на некоторое время?
log_archive_dest это параметр куда пишутся файлы архивных журналов. К бэкапам это отношение не имеет.

Буквально на днях выложу на alldba.ru статью Дублирование базы данных с помощью RMAN. Там есть как сделать бэкап RMAN используя NFS.

Вот пример из статьи:

backup database format=’/mnt/export/backup_%U.bkp’;

Когда в NFS монтируется удалённый каталог, то можно указать опцию hard, то есть в случае пропадания сети, подключение потом восстановится само.

Добавил: Константин