1 сентября 2013 г.
30 ноября 2012 г.
oracle: JDBC Thin Client in v$session
Заметки о том как отображаются сессии от JDBC Thin Client в v$session
Если попытаться посмотреть информацию о JDBC Thin Client в v$session, то всегда v$session.process = 1234
Почему так происходит, почему 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);
Если попытаться посмотреть информацию о JDBC Thin Client в v$session, то всегда v$session.process = 1234
SELECT s.program,s.process, s.sid, s.seq#, s.event
FROM v$session s
FROM v$session s
| JDBC Thin Client | 1234 | 4894 | 29653 | db 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);
9 октября 2012 г.
oracle 11g: ADRCI утилита для анализа диагностики
В Oracle 11 произошли некоторые изменения в alert.log, теперь он представляет собой xml файл, но можно и найти его в текстовом виде ( искать в папке ../traces).
Появилась текстовая утилита ADRCI, которая позволяет работать с диагностическими данными, сообщениями и ошибками в alert.log.
Почитать об ADRCI можно тут и тут (или погуглить).
Для примера пару комманд:
Утилита имеет справку:
Появилась текстовая утилита ADRCI, которая позволяет работать с диагностическими данными, сообщениями и ошибками в alert.log.
Почитать об ADRCI можно тут и тут (или погуглить).
Для примера пару комманд:
$ adrci
adrci> SHOW INCIDENT -last 10
ADR Home = /oradump/diag/rdbms/cust1/cust1:
*************************************************************************
INCIDENT_ID PROBLEM_KEY CREATE_TIME
-------------------- ----------------------------------------------------------- ----------------------------------------
383543 ORA 600 [25027] 2012-09-18 01:02:56.410000 +03:00
383542 ORA 600 [kghstack_underflow_internal_1] 2012-09-18 01:02:44.434000 +03:00
adrci> SHOW INCIDENT -MODE DETAIL -P "INCIDENT_ID=383543"
adrci> SHOW INCIDENT -last 10
ADR Home = /oradump/diag/rdbms/cust1/cust1:
*************************************************************************
INCIDENT_ID PROBLEM_KEY CREATE_TIME
-------------------- ----------------------------------------------------------- ----------------------------------------
383543 ORA 600 [25027] 2012-09-18 01:02:56.410000 +03:00
383542 ORA 600 [kghstack_underflow_internal_1] 2012-09-18 01:02:44.434000 +03:00
adrci> SHOW INCIDENT -MODE DETAIL -P "INCIDENT_ID=383543"
Утилита имеет справку:
$ adrci
adrci> HELP
adrci> HELP
5 августа 2012 г.
oracle: Oracle Database Reference
Oracle® Database Reference 10g Release 2 (10.2) (Параметры инициализации, представления, метрики)
Oracle® Database Reference 11g Release 2 (11.2) (Параметры инициализации, представления, метрики)
Oracle® Database Reference 11g Release 2 (11.2) (Параметры инициализации, представления, метрики)
1 августа 2012 г.
20 июня 2012 г.
windows: uptime
Как узнать uptime в windows
Start -> Run -> cmd
И в консоли набрать:
net statistics server
или немного сокращённо:
net stats srv
Uptime идёт после слов "Статистика после..." (Statistics since...)
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. Просмотр всех соединений 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
12 июня 2012 г.
aix: настройка iSCSI инициатора в AIX 5.3
Wiki: http://en.wikipedia.org/wiki/ISCSI
В 2-х словах:
- позволяет подключать диски к серверу по Ethernet,
- target - сервер, который предоставляет дисковое пространство,
- initiator - клиент, который использует дисковое пространство.
1. Настройка инициатора
Настроить можно с помощью smit
1) Выберите Devices.
2) Выберите iSCSI.
3) Выберите iSCSI Protocol Device.
4) Выберите Change / Show Characteristics of an iSCSI Protocol Device.
Выберите устройство, которое ассоциировано с iSCSI инициатором, например, iscsi0.
Задайте Initiator Name (IQN), это имя задается по определённому формату (см. Wiki).
Придумаем следующее имя: iqn.2012-06.com.test
Это имя используется при подсоединению к iSCSI target.
Сохраняем настройки.
Сообщаем администратору target сервера наш iqn (iqn.2012-06.com.test).
В ответ он должен, сконфигурировать CHAP авторизацию для нашего инициатора, и прислать ip- адрес, iqn - имя таргета и пароль для CHAP авторизации.
Например:
ip - 192.168.0.1,
iqn - iqn.2000-01.com.hp:storage.p1000g4.5001caf1eb
password - iscsi_password
После этого редактируем на инициаторе файл /etc/iscsi/targets, а именно добавляем наш таргет для CHAP авторизации, примеры есть в самом файле /etc/iscsi/targets:
192.168.0.1 3260 iqn.2000-01.com.hp:storage.p1000g4.5001caf1eb "iscsi_password"
Сохраняем файл и переходим к п.2
2. Подключение диска
Если мы всё сделали правильно в п.1 и настроена маршрутизация между клиентом и сервером, то:
1) Вводим команду:
$ cfgmgr -v -l iscsi0
При вводе этой команды драйвер попытается соединиться с целевыми устройствами, перечисленными в файле /etc/iscsi/targets, и определить новый жесткий диск (hdisk) для всех LUN на найденных целевых устройствах.
2) Проверяем, что новый жесткий диск определился:
$ lsdev -Ccdisk |grep iSCSI
hdisk6 Available Other iSCSI Disk Drive
$ lspv hdisk6
$ lsattr -El hdisk6
3) Cделаем volume group, где iscsivg - имя группы, которое придумываем сами:
$ mkvg -y iscsivg hdisk6
4) Информация о группе, смотрим на Total PPs, чтобы знать какого размера делать логический volume(-мы):
$ lsvg iscsivg
Посмотреть какие логические volume(-мы) уже есть
$ lsvg -l iscsivg
5) Создаем logical volume, где
iscsi_vol01 - имя нового logical volume,
jfs2 - тип файловой системы,
3715 - размер logical volume (Total PPs из предыдущей команды п.4)
$ mklv -t jfs2 -y iscsi_vol01 iscsivg 3715
6) Включаем Auto Varyon = No, делаем это потому что функция varyonvg после рестарта выполняется раньше, чем инициализируется tcp/ip ( сам не проверял порядок )
$ chvg -a n iscsivg
7) Создаем файловую систему на volume, где
-d iscsi_vol01 - на какой волуме,
-m /mnt/iscsifs - точка монтирования
-A no - не монтировать файловую систему после рестарта,
-a logname=INLINE - jfs2 лог на том же волуме что и сама файловая jfs2:
$ crfs -v jfs2 -d iscsi_vol01 -m /mnt/iscsifs -A no -u iscsi -a logname=INLINE
8) Монтируем
$ mount /mnt/iscsifs
3. Монтирование после рестарта
1) Проверяем
$ lspv
2) Включаем группу
$ varyonvg iscsivg
3) Монтируем
$ mount /mnt/iscsifs
В 2-х словах:
- позволяет подключать диски к серверу по Ethernet,
- target - сервер, который предоставляет дисковое пространство,
- initiator - клиент, который использует дисковое пространство.
1. Настройка инициатора
Настроить можно с помощью smit
1) Выберите Devices.
2) Выберите iSCSI.
3) Выберите iSCSI Protocol Device.
4) Выберите Change / Show Characteristics of an iSCSI Protocol Device.
Выберите устройство, которое ассоциировано с iSCSI инициатором, например, iscsi0.
Задайте Initiator Name (IQN), это имя задается по определённому формату (см. Wiki).
Придумаем следующее имя: iqn.2012-06.com.test
Это имя используется при подсоединению к iSCSI target.
Сохраняем настройки.
Сообщаем администратору target сервера наш iqn (iqn.2012-06.com.test).
В ответ он должен, сконфигурировать CHAP авторизацию для нашего инициатора, и прислать ip- адрес, iqn - имя таргета и пароль для CHAP авторизации.
Например:
ip - 192.168.0.1,
iqn - iqn.2000-01.com.hp:storage.p1000g4.5001caf1eb
password - iscsi_password
После этого редактируем на инициаторе файл /etc/iscsi/targets, а именно добавляем наш таргет для CHAP авторизации, примеры есть в самом файле /etc/iscsi/targets:
192.168.0.1 3260 iqn.2000-01.com.hp:storage.p1000g4.5001caf1eb "iscsi_password"
Сохраняем файл и переходим к п.2
2. Подключение диска
Если мы всё сделали правильно в п.1 и настроена маршрутизация между клиентом и сервером, то:
1) Вводим команду:
$ cfgmgr -v -l iscsi0
При вводе этой команды драйвер попытается соединиться с целевыми устройствами, перечисленными в файле /etc/iscsi/targets, и определить новый жесткий диск (hdisk) для всех LUN на найденных целевых устройствах.
2) Проверяем, что новый жесткий диск определился:
$ lsdev -Ccdisk |grep iSCSI
hdisk6 Available Other iSCSI Disk Drive
$ lspv hdisk6
$ lsattr -El hdisk6
3) Cделаем volume group, где iscsivg - имя группы, которое придумываем сами:
$ mkvg -y iscsivg hdisk6
4) Информация о группе, смотрим на Total PPs, чтобы знать какого размера делать логический volume(-мы):
$ lsvg iscsivg
Посмотреть какие логические volume(-мы) уже есть
$ lsvg -l iscsivg
5) Создаем logical volume, где
iscsi_vol01 - имя нового logical volume,
jfs2 - тип файловой системы,
3715 - размер logical volume (Total PPs из предыдущей команды п.4)
$ mklv -t jfs2 -y iscsi_vol01 iscsivg 3715
6) Включаем Auto Varyon = No, делаем это потому что функция varyonvg после рестарта выполняется раньше, чем инициализируется tcp/ip ( сам не проверял порядок )
7) Создаем файловую систему на volume, где
-d iscsi_vol01 - на какой волуме,
-m /mnt/iscsifs - точка монтирования
-A no - не монтировать файловую систему после рестарта,
-a logname=INLINE - jfs2 лог на том же волуме что и сама файловая jfs2:
$ crfs -v jfs2 -d iscsi_vol01 -m /mnt/iscsifs -A no -u iscsi -a logname=INLINE
8) Монтируем
$ mount /mnt/iscsifs
3. Монтирование после рестарта
1) Проверяем
$ lspv
2) Включаем группу
$ varyonvg iscsivg
3) Монтируем
$ mount /mnt/iscsifs
5 июня 2012 г.
1 июня 2012 г.
oracle: show list of dbms packages
Посмотреть список dbms пакетов:
SELECT DISTINCT name,TYPE
FROM dba_source
WHERE name LIKE 'DBMS_%'
ORDER BY name;
FROM dba_source
WHERE name LIKE 'DBMS_%'
ORDER BY name;
bash tips&tricks
1. Повторить команду, выполненную ранее (!!).
$ date
Fri Jun 1 09:33:49 EEST 2012
$ !!
date
Fri Jun 1 09:33:51 EEST 2012
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
$ 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 -a -N SYSVMM > /tmp/err.log
# посмотреть ошибку по её идентификатору
$ errpt -j 5DFED6F1
# посмотреть менее детальный (чем errpt -a) список ошибок. AIX5 ONLY !!!!
$ errpt -A
# исключить дублирующиеся ошибки. AIX5 ONLY !!!!
$ errpt -D | more
$ errpt -aD | 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 - кол-во опросов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
В папке /var/adm/sa/ хранятся логи в бинарном виде за 31 день.
Чтобы посмотреть за 22-е число месяца лог нужно:
$ sar -f /var/adm/sa/sa22 -s 14:20 -e 15:00
, где -f указывает путь к логу (подробнее см. man sar)6 апреля 2012 г.
oracle: лицензирование
Источник: http://dba.ucoz.ru/index/0-53
Распространение программных продуктов Oracle (далее "Программы") осуществляется путем предоставления лицензий на их использование.
Продажа лицензий в России и странах СНГ производится только уполномоченными партнерами компании Oracle.
Техническая поддержка лицензируемых Программ предоставляется в течение одного года и приобретается вместе с лицензиями. По окончании срока действия технической поддержки, она может быть продлена на очередной годовой период.
Стоимость лицензий и технической поддержки рассчитывается на основании всемирного Прейскуранта Oracle ( Oracle Global Price List). Лицензируемые Программы предоставляются по каналам электронной связи или на носителях CD-ROM. Лицензирование Программ означает приобретение прав на их использование, а не покупку самих программных продуктов.
Основные варианты лицензирования:
- Named User Plus ("Именованный пользователь"). "Named User Plus" - лицо, уполномоченное использовать программы, установленные на одном или нескольких серверах, не зависимо от того, использует ли оно программу в данный момент времени или нет. Автоматическое устройство (не требующее участия человека) при возможности доступа к программам считается как Named User Plus в дополнение ко всем лицам, уполномоченным использовать программы. При использовании мультиплексирующих аппаратных или программных средств (например, монитора транзакций или веб-сервера) это число должно быть определено на входе мультиплексора. Число Named User Plus для ряда программ должно быть не менее установленного правилами лицензирования (см. раздел "Минимальное число пользователей").
5 апреля 2012 г.
oracle: импорт с помощью imp
Импорт в другое табличное пространство
Необходимо импортировать таблицу в другую базу данных в другую схему в другое табличное пространство. Так же можно разнести таблицу и индексы по разным табличным пространствам.
-- экспорт таблицы
-- по желанию можно добавить ещё каких нибудь параметров экспорта, например:
Переливаем файл exp_table.dmp в то место, откуда будем экспортировать(на другой сервер, например).
Импорт в другую базу в другую схему в другое табличное пространство.
Общий алгоритм такой:
1. Создаем таблицу в нужной нам схеме, с нужным параметром TABLESPACE
Если есть возможность посмотреть sql-код создания исходной таблицы CREATE TABLE, то можно скопировать этот код в редактор или в какой нить Oracle Developer, отредактировать как нам надо с учётом новой схемы и табличного пространства и затем создать таблицу в нужном нам месте с нужными параметрами.
Можно сгенерировать sql-код CREATE TABLE из файла экспорта exp_table.dmp .
Для этого используем утилиту импорта imp и опцию INDEXFILE.
В итоге получим файл create_table_name.sql, имя которого задали в параметре INDEXFILE, при этом никакие данные не импортируются.
Редактируем файл как нам надо, и создаём таблицу.
2. Импортируем в созданную таблицу данные из файла exp_table.dmp .
Не забываем при этом использовать параметр IGNORE=Y, он позволяет продолжить импорт в таблицу, которая уже существует, без него импорт выругается, что таблица уже существует.
Необходимо импортировать таблицу в другую базу данных в другую схему в другое табличное пространство. Так же можно разнести таблицу и индексы по разным табличным пространствам.
-- экспорт таблицы
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, он позволяет продолжить импорт в таблицу, которая уже существует, без него импорт выругается, что таблица уже существует.
29 марта 2012 г.
oracle: кто использует TEMPORARY Tablespaces
Нужно узнать какие сессии используют временное табличное пространство в данный момент:
SELECT DISTINCT s.username, s.sid, s.serial#, s.osuser, u.TABLESPACE, u.contents, u.segtype, u.extents, u.blocks
FROM v$session s, v$sort_usage u
WHERE s.saddr=u.session_addr
ORDER BY s.username, s.osuser;
FROM v$session s, v$sort_usage u
WHERE s.saddr=u.session_addr
ORDER BY s.username, s.osuser;
27 марта 2012 г.
oracle: параметр MAXEXTENTS для таблицы
Изменить параметр MAXEXTENTS для таблицы
ALTER TABLE TABLE_NAME storage (MAXEXTENTS unlimited);
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;
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",
чтобы если нашло строку не искало дальше, так будет быстрее.
Подписаться на:
Сообщения (Atom)