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

30 ноября 2012 г.

oracle: JDBC Thin Client in v$session

Заметки о том как отображаются сессии от JDBC Thin Client в v$session

Если попытаться посмотреть информацию о JDBC Thin Client в v$session, то всегда v$session.process = 1234

SELECT s.program,s.process, s.sid, s.seq#, s.event
  FROM v$session s


JDBC Thin Client1234489429653db file sequential read


Почему так происходит, почему PID клиентского процесса в OS всегда 1234 в случае с JDBC Thin Client ?

Ответ:


How to Set V$SESSION Properties Using the JDBC Thin Driver [ID 147413.1]

Note: The JDBC driver cannot correctly retrieve the values of some V$SESSION
properties on its own. Specifically, the driver exhibits the following behavior:

 - When querying the TERMINAL field of the V$SESSION table using the JDBC
Thin driver, the value returned is "unknown".

- When querying the PROCESS field of the V$SESSION table using the JDBC
Thin driver, the value returned is "1234".

- The driver returns the process ID as "1234" by default, since obtaining
a process ID is not possible using the JDBC Thin driver.




Java developer can provide value in code (if code change is an option) using Java Properties when creating JDBC connection:
         prop.put("v$session.process", clientProcess);
         prop.put("v$session.program", programName);

20 июня 2012 г.

windows: uptime

Как узнать uptime в windows

Start -> Run -> cmd
И в консоли набрать:
net statistics server
или немного сокращённо:
net stats srv

Uptime идёт после слов "Статистика после..." (Statistics since...)

14 июня 2012 г.

unix: lsof

Использование утилиты lsof в unix:


1. Просмотр всех соединений IPv4
$ lsof -i 4 -a

2. Просмотр всех соединений IPv4, открытых процессом с PID = 1234
$ lsof -i 4 -a -p 1234

3 .Список открытых файлов на устройстве /dev/sda1
$ lsof /dev/sda1

4. Кто не отдаёт cdrom
$ lsof /dev/cdrom

5. Список всех файлов открытых юзером
$ lsof -u guppi

6. Какой процесс использует данный файл?
$ lsof /etc/passwd

7. Какие ресурсы использует процесс?
$ lsof -c mc
или
$lsof -p pid




1 июня 2012 г.

bash tips&tricks

1. Повторить команду, выполненную ранее (!!).

$ date
Fri Jun  1 09:33:49 EEST 2012
$ !!
date
Fri Jun  1 09:33:51 EEST 2012


13 апреля 2012 г.

aix: команда errpt, отчёт об ошибках


Команда errpt ( см. man errpt)

Примеры использования:

# посмотреть детальные ошибки за указанный период времени( формат даты mmddhhmmyy)
# -s start_date, -e end_date
$ errpt -a  -s 0604090601  -e 0605090901 | more  
$ errpt -aD -s 0412010012 -e 0412023012 > /tmp/error.log

# посмотреть все ошибки определённого Resource Name, например SYSPROC или SYSVMM
$ errpt -a  -N SYSPROC |more
$ errpt -a  -N SYSVMM  > /tmp/err.log

# посмотреть ошибку по её идентификатору
$ errpt -j 5DFED6F1

# посмотреть менее детальный (чем errpt -a) список ошибок. AIX5 ONLY !!!!
$ errpt -A

# исключить дублирующиеся ошибки. AIX5 ONLY !!!!
$ errpt -D | more
$ errpt -aD | more  

aix: кто логинился в систему? команда last, файл wtmp


1. last - утилита, показывает, кто логинился к системе (см. man last)

В AIX эти данные хранятся в бинарном файле /var/adm/wtmp

2. Очистка содержимого /var/adm/wtmp

Иногда /var/adm/wtmp надо чистить:
$ /usr/sbin/acct/nulladm /var/adm/wtmp



aix: sar


Команда sar собирает статистическую информацию о работе системы.

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

$ sar -u 2 5

17:58:15    %usr    %sys    %wio   %idle
17:58:17      43       9       1      46
17:58:19      35      17       3      45
17:58:21      36      22      20      23
17:58:23      21      17       0      63
17:58:25      85      12       3       0

Average       44      15       5      35

где 2 - интервал опроса в секундах, 5 - кол-во опросов

В папке /var/adm/sa/ хранятся логи в бинарном виде за 31 день.
Чтобы посмотреть за 22-е число месяца лог нужно:

$ sar -f /var/adm/sa/sa22 -s 14:20 -e 15:00
, где -f указывает путь к логу (подробнее см. man sar)

5 апреля 2012 г.

oracle: импорт с помощью imp

Импорт в другое табличное пространство
Необходимо импортировать таблицу в другую базу данных в другую схему в другое табличное пространство. Так же можно разнести таблицу и индексы по разным табличным пространствам.

-- экспорт таблицы
exp user@sid FILE=exp_table.dmp TABLES=\(SCHEMA.TABLE_NAME\) STATISTICS=NONE

-- по желанию можно добавить ещё каких нибудь параметров экспорта, например:
exp user@sid FILE=exp_table.dmp TABLES=\(SCHEMA1.TABLE_NAME\) STATISTICS=NONE GRANTS=N INDEXES=N

Переливаем файл exp_table.dmp в то место, откуда будем экспортировать(на другой сервер, например).

Импорт в другую базу в другую схему в другое табличное пространство.
Общий алгоритм такой:
1. Создаем таблицу в нужной нам схеме, с нужным параметром TABLESPACE

Если есть возможность посмотреть sql-код создания исходной таблицы CREATE TABLE, то можно скопировать этот код в редактор или в какой нить Oracle Developer, отредактировать как нам надо с учётом новой схемы и табличного пространства и затем создать таблицу в нужном нам месте с нужными параметрами.

Можно сгенерировать sql-код  CREATE TABLE из файла экспорта exp_table.dmp .
Для этого используем утилиту импорта imp и опцию INDEXFILE.
imp user@sid2 file=exp_table.dmp TABLES=\(TABLE_NAME\) fromuser=SCHEMA1 touser=SCHEMA2 indexfile=create_table_name.sql

В итоге получим файл create_table_name.sql, имя которого задали в параметре INDEXFILE, при этом никакие данные не импортируются.
Редактируем файл как нам надо, и создаём таблицу.

2. Импортируем в созданную таблицу данные из файла exp_table.dmp .
imp user@sid2 file=exp_table.dmp TABLES=\(TABLE_NAME\) fromuser=SCHEMA1 touser=SCHEMA2 FEEDBACK=10000 IGNORE=Y

Не забываем при этом использовать параметр IGNORE=Y, он позволяет продолжить импорт в таблицу, которая уже существует, без него импорт выругается, что таблица уже существует.


21 марта 2012 г.

online source code formatter

Онлайн форматирование исходного кода для вставки в html http://quickhighlighter.com

oracle: какому объекту принадлежит блок


Есть file# (номер файла) и block# (номер блока).
Нужно узнать к какому объекту принадлежит этот блок.

SELECT owner,
       segment_name,
       segment_type
FROM   dba_extents
WHERE  file_id = FILE#
       AND block# BETWEEN block_id AND block_id + blocks - 1
       AND ROWNUM = 1;  

Искать может долго, несколько минут, поэтому добавляем условие "rownum=1",
чтобы если нашло строку не искало дальше, так будет быстрее.


24 февраля 2012 г.

windows: отключить ядро cpu

Бывает нужно по каким либо причинам отключить одно или несколько ядер в многоядерном CPU.

В Windows XP это делается так(подходит и для Windows Vista, 7):

На вкладке BOOT.INI жмём "Дополнительно..."

Ставим галочку напротив /NUMPROC и устанавливаем то количество ядер, которое хотим: 

И "откинувшись на спинку кресла" перезагружаемся...


unix: посмотреть зависимости библиотеки (ldd)


Команда ldd

Есть какая то shared library (например libCSGcsvPP.so), нужно посмотреть её зависимости:
$ ldd libCSGcsvPP.so
libCSGcsvPP.so needs:
         /dm/appl/BDDM/lib/libMECS.so
         /usr/lib/libthread.a(shr.o)
         /usr/lib/libC.a(shr.o)
         /usr/lib/libC.a(ansi_32.o)
         /usr/lib/libc.a(shr.o)
         /usr/lib/lib++.so
         /u01/app/oracle/product/9.2.0.5.0/lib/libclntsh.a(shr.o)
         /usr/lib/libpthreads.a(shr_xpg5.o)
         /usr/lib/librtl.a(shr.o)
         /usr/lib/libc_r.a(shr.o)
         /usr/lib/libC.a(ansicore_32.o)
         /usr/lib/libC.a(shrcore.o)
         /usr/lib/libC.a(shr2.o)
         /usr/lib/libC.a(shr3.o)
         /unix
         /usr/lib/libcrypt.a(shr.o)
         /usr/lib/libdl.a(shr.o)
         /usr/lib/libodm.a(shr.o)
         /usr/lib/libc.a(aio.o)
         /usr/lib/libpthreads.a(shr_comm.o)

21 декабря 2011 г.

oracle: Выполнить запрос в pl/sql коде

Выполнить запрос в pl/sql коде:

DECLARE
     pc_id           number := 1;
BEGIN
          DBMS_OUTPUT.PUT_LINE('pc_id: '||pc_id);
          insert into GUPPI.DEPT(DEPTNO,DNAME,LOC) values (pc_id, 'TEST', 'TEST_LOC');
          commit;

              EXCEPTION
              WHEN OTHERS THEN
              pc_id:= 0;
              DBMS_OUTPUT.PUT_LINE('Error pc_id: '||pc_id);
           
END;
/

16 ноября 2011 г.

CPU Info

Platform Command(s)
AIX lparstat -i
FreeBSD sysctl hw.model
HP/UX ioscan -fnC processor
Linux cat /proc/cpuinfo
Mac OS X system_profiler SPHardwareDataType
SCO OpenServer 5 hw
uname -X
SCO Unixware 7 psrinfo -v
Solaris SPARC kstat > /tmp/kstat.output
Solaris x86 uname -X
Tru64 psrinfo -v

31 октября 2011 г.

blogger: гаджет "Поиск" аналогичный поиску в навигационной панели

Поиск по блогу организуется путем добавления гаджета HTML/JavaScript. На странице настроек гаджета название меняем, например, на «Поиск в блоге», а в поле «Содержание» пишем:


<nobr><form id="searchthis" method="get" action="/search" style="display:inline;"><input id="search-box" name="q" type="text" size="20"/> <input id="search-btn" type="submit" value="Поиск"/></form></nobr> 
 

Получается функция поиска, полностью аналогичная той, что была в навигационной панели.

18 октября 2011 г.

aix: top processes by memory usage

1. Процессы, уоторые отъедают больше всего памяти
Выводит список процессов отсортированных по использованию памяти(2й столбец vsz)

ps -ef -o pid,vsz,comm |sort -nr +1

vsz - объём памяти в кб

1 сентября 2011 г.

bash: специальные параметры

Специальные параметры

Параметр    Правила замены

*    Заменяется позиционными параметрами, начиная с первого. Если замена производится внутри двойных кавычек, то этот параметр заменяется на одно единственное слово, составленное из всех позиционных параметров, разделенных первым символом специальной переменной IFS (о ней будет сказано ниже). То есть ``$*'' эквивалентно ``$1c$2c...'', где c - первый символ в значении переменной IFS. Если IFS присвоено пустое значение или ее значение не установлено, параметры разделяются пробелами

@    Заменяется позиционными параметрами, начиная с первого. Если замена производится внутри двойных кавычек, то каждый параметр заменяется отдельным словом. Так, ''$@'' эквивалентно ''$1'' ''$2'' ... Если позиционных параметров нет, то значение не присваивается (параметр @ просто удаляется)

#    Заменяется десятичным значением числа позиционных параметров

?    Заменяется статусом выхода последнего из выполнявшихся на переднем плане программных каналов

-(дефис)    Заменяется текущим набором значений флагов, установленных с помощью встроенной команды set или при запуске самой оболочки

$    Заменяется идентификатором процесса (PID) оболочки

!    Заменяется идентификатором процесса (PID) последней из выполняющихся фоновых (асинхронно выполнявшихся) команд

0    Заменяется именем оболочки или запускаемого скрипта. Если bash запускается для выполнения командного файла, $0 равно имени этого файла. В противном случае это значение равно полному пути к оболочке

bash: условные выражения

# -a file
Верно, если файл с именем file существует.

# -b file
Верно, если file существует и является специальным файлом блочного устройства.

# -c file
Верно, если file существует и является специальным файлом символьного устройства.

# -d file
Верно, если file существует и является каталогом.

# -e file
Верно, если файл с именем file существует.

# -f file
Верно, если файл с именем file существует и является обычным файлом.

# -g file
Верно, если файл с именем file существует и для него установлен бит смены группы.

# -h file или -L file
Верно, если файл с именем file существует и является символической ссылкой.

# -k file
Верно, если файл с именем file существует и для него установлен "sticky'' bit.

# -p file
Верно, если файл с именем file существует и является именованным каналом (FIFO).

# -r file
Верно, если файл с именем file существует и для него установлено право на чтение

# -s file
Верно, если файл с именем file существует и его размер больше нуля.

# -t fd
Верно, если дескриптор файла fd открыт и указывает на терминал.

# -u file
Верно, если файл с именем file существует и для него установлен бит смены пользователя.

# -w file
Верно, если файл с именем file существует и для него установлено право на запись.

# -x file
Верно, если файл с именем file существует и является исполняемым.

# -O file
Верно, если файл с именем file существует и его владельцем является пользователь, на которого указывает эффективный идентификатор пользователя.

# -G file
Верно, если файл с именем file существует и принадлежит группе, определяемой эффективным идентификатором группы.

# -S file
Верно, если файл с именем file существует и является сокетом.

# -N file
Верно, если файл с именем file существует и изменялся с тех пор, как был последний раз прочитан.

# file1 -nt file2
Верно, если файл file1 имеет более позднее время модификации, чем file2.

# file1 -ot file2
Верно, если файл file1 старше, чем file2.

# file1 -ef file2
Верно, если файлы file1 и file2 имеют одинаковые номера устройств и индексных дескрипторов (inode).

# -o optname
Верно, если задействована опция оболочки optname. Пояснения см. на странице man bash.

# -z string
Верно, если длина строки равна нулю.

# -n string
Верно, если длина строки не равна нулю.

# string1 == string2
Верно, если строки совпадают. Вместо == может использоваться =.

# string1 !== string2
Верно, если строки не совпадают.

# string1 < string2
Верно, если строка string1 лексикографически предшествует строке string2 (для текущей локали).

# string1 > string2
Верно, если строка string1 лексикографически стоит после строки string2 (для текущей локали).

# arg1 OP arg2
Здесь OP - это одна из операций арифметического сравнения: -eq (равно), -ne (не равно), -lt (меньше чем), -le (меньше или равно), -gt (больше), -ge (больше или равно). В качестве аргументов могут использоваться положительные или отрицательные целые.

# !(expression)
Булевский оператор отрицания.

# expression1 -a expression2
Булевский оператор AND (И). Верен, если верны оба выражения.

# expression1 -o expression2
Булевский оператор OR (ИЛИ). Верен, если верно любое из двух выражений.
 

25 июля 2011 г.

oracle: DELETE

1. Удалить все записи, где sal < 1000, можно двумя вариантами:

-- можно так
delete from (select * from emp where sal< 1000);

-- или "классический"
delete from emp where sal < 1000;

5 июля 2011 г.

wget

Нужно скачать много файлов шаблона file_NNN.ext с одного места.

На perl пишем скрипт:

open (MYFILE, '>>files.txt');
for ($count = 500; $count < 600; $count++) {
    print MYFILE "http://www.url.net/files/".$count.".ext\n" ;
}
close (MYFILE);

Получаем файл со ссылками files.txt

Далее тянем их при помощи wget:

wget -c -i files.ext