Показаны сообщения с ярлыком oracle. Показать все сообщения
Показаны сообщения с ярлыком oracle. Показать все сообщения

3 дек. 2010 г.

Маленькие хитрости Oracle ;)

Дано: Oracle 9,10 и выше ...


 1) Если вдруг Вам на миг показалось, что ваш клиент Оракловый "подвис" или находится в /"глубокой прост?рации"/ ... то подсмотреть можно следующим запросом, что же у него там такое творится таки:

SELECT OPNAME
      ,SID ,SERIAL# ,CONTEXT ,SOFAR ,TOTALWORK
      ,ROUND (SOFAR / TOTALWORK * 100, 2) "%_COMPLETE"
  FROM  V$SESSION_LONGOPS
  WHERE ROUND (SOFAR / TOTALWORK * 100, 2) <> 100

Фишка в том, что в таблицу V$SESSION_LONGOPS попадают запросы выполняющиеся более 6 секунд, мало того они туда попадают, ведутся попутно для этих записей счетчики обработанных блоков/строк/чегодругого (поле SOFAR) и всего таких блоков/строк/чегодругого (поле TOTALWORK) ...


2) Подсмотреть все известные линки на другие БАЗЫ ДАННЫХ известные серверу Оракла
select * from ALL_DB_LINKS;
это если вам приспичит делать выборки позже в перекрестных запросах меж баз данных
select * from sheme.table@db_link tbl1 inner join shema.table tbl2 on tbl2.field=tbl1.field ...;

* Кстати линки открываются (в данном случае публичный) следующим образом:
CREATE PUBLIC DATABASE LINK remote_name_link_db 
   CONNECT TO user_name IDENTIFIED BY user_pass
   USING 'use_name_remote_db';

22 нояб. 2010 г.

Export from Excel to Oracle DataBases

Цель: Быстренько перекинуть данные из Excel таблицы в таблицу базы данных Оракла ...


Решение: 

1) Сохраняем документ Excel как 'CSV' файл ... к примеру в файлик YOUFILE.CSV
2) Создаем таблицу с нужной нам структурой в БД Оракла в соответствии с полями CSV-файла ...

CREATE TABLE YOU_NAME_TABLE
(NAME_FIELD1 VARCHAR2(10),
NAME_FIELD2 NUMBER,
NAME_FIELD3 VARCHARC2(1));

3) Используем SQLLDR (может называться как SQLLOAD, находится в bin Oracle) для загрузки нашего файлика CSV в таблицу БД.
Для этого, создадим файлик SQLLDR.CTL (файл-сценарий для SQLLDR), в нём напишем следующее:

LOAD DATA INFILE YOUFILE.CSV
REPLACE
INTO TABLE YOU_NAME_TABLE
FIELDS TERMINATED BY ';'
(NAME_FIELD1,NAME_FIELD2,NAME_FIELD3)

сохраняемся ...
идем скорее в консольку и набираем:

sqlldr userid=USERNAME/PASSWORD@SERVER control=SQLLDR.CTL log=RESULTLOAD.LOG

ляпота, да и только =)