Tuesday, November 28, 2006
LOGON_TIME, для трассировки сессий, запущенных на одном хосте
Например, для включения трассировки своей сессии, запускаем веб-приложение, регистрируемся и включаем трассировку след.образом:
select sid,serial#,osuser,TO_CHAR(logon_time, 'DD.MM.YYYY HH24:MI') "logon_time" from v$session where osuser='user';
Определяем по logon_time свою сессию и включаем трассировку своей сессии
exec sys.dbms_system.set_ev(sid,serial,10046,12,'');
и повторяем проблемные "щелчки", о которых сообщил юзер
===========
Также полезно использовать триггер after logon на включение трассировки
(после трассировки не забыть отключить его через alter trigger trace_login_trigger disable)
CREATE OR REPLACE TRIGGER trace_login_trigger
AFTER logon ON DATABASE
BEGIN
IF (USER = <'USERNAME'>) THEN
EXECUTE IMMEDIATE 'ALTER SESSION SET EVENTS ''10046 trace name
context forever, level 12';
END IF;
END;
Про snapshots
дифференциальное - BEGIN DBMS_SNAPSHOT.REFRESH('schema.SNP_BRANCH','?'); END;
полное - BEGIN DBMS_SNAPSHOT.REFRESH('schema.SNP_BRANCH','С'); END;
Saturday, November 18, 2006
По установке Oracle 10GR2 в Linux (John Smiley & Tim)
на основе
Installing Oracle Database 10g Release 2 on Linux x86, by John Smiley
Предполагается установка патчсета 10.2.0.2 [ 3 | 4 ] и создание новой базы данных, поэтому рассматривается установка без апргейда работающей в 10.2.0.1 БД.
ASM для новой базы данных сконфигурен без ASMlib, на rawdevices.
В примерах далее в выражениях "<<" My уберите кавычки.
Установка и настройка CentOS по дефолту со swap-разделом в 1,5 (или в 2, см.доку) объема RAM, достаточным количеством дискового пространства, c установкой X-ов, Gnome, sysstat, mc etc.
При дисковом пространстве на 12 Gb и RAM на 1024 Мб я выделил разделы след. образом: /boot - 100 мб swap - 1600 мб / - 7 Gb остальное оставил "сырым" под rawdevices.
Без выделения /usr, /var, /tmp , т.е. все будет "валиться" в корень /.
Сразу после установки CentOS в консоли сервера.
1) Т.к. мой сервер под Oracle находится в защищенной сетке для удобства сразу открываю ssh для root (в /etc/ssh/sshd_config раскомментировать строку PermitRootLogin yes), для нормального отображения системных шрифтов в mc правлю /etc/sysconfig/i18n удалением UTF-8 так, что остается LANG="en_US", SUPPORTED="en_US:en"
2) Для последующей установки Oracle через X разрешаю протокол XDMCP (если лень лезть в конфиги, то в GNOME достаточно просто включить галочку в "Applications-System Setting-Login Screen-XDMCP").
Если есть под рукой XManager, то можно не включать XDMCP, а подключаться через XStart XManager’а.
3) Далее удобнее работать в ssh-сессии через putty под root-ом.
Установить все необходимые пакеты (copy-paste).
# rpm -q binutils compat-db control-center gcc gcc-c++ glibc glibc-common gnome-libs libstdc++ libstdc++-devel make pdksh sysstat xscreensaver libaio openmotif21
В моем случае не хватало libaio и openmotif21, о чем сообщил мне запрос
package libaio is not installed package openmotif21 is not installed и я их доустановил прямо из директории CentOS/RPMS дистрибутивного диска (copy-paste).
# rpm -Uvh openmotif21-2.1.30-11.RHEL4.6.i386.rpm libaio-0.3.105-2.i386.rpm
Также опыт показал, что во время установки Oracle возникает ошибка, если не установлен пакет compat-libstdc++ . Поэтому необходимо проверить ее наличие (copy-paste)
# rpm -ql compat-libstdc++-33-3.2.3-47.3
Если no installed, то установить из rpm-ов
# rpm -i compat-libstdc++-33-3.2.3-47.3.i386.rpm
(в Enterprise Linux 4.4 # rpm -Uvh compat-libstdc++-296-2.96-132.7.2.i386.rpm)
И удостовериться, что все доступно в системе
# rpm -ql compat-libstdc++-33-3.2.3-47.3 /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.5.0.7
Конфигурирование Linux для установки Oracle
1) Заведение групп oinstall, dba и пользователя oracle (copy-paste)
# /usr/sbin/groupadd -g 502 oinstall
# /usr/sbin/groupadd -g 503 dba
# /usr/sbin/useradd -m -u 501 -g dba -G oinstall oracle
Проверка id и gid
# id oracle uid=501(oracle) gid=502(oinstall) groups=502(oinstall),503(dba)
Установка пароля passwd oracle через:
# passwd oracle
2) Создание директорий по OFA (copy-paste)
# mkdir /oracle
# chown -R oracle:oinstall /oracle
# chmod -R 775 /oracle
3) Конфигурирование параметров ядра (через copy-paste)
# cat >> /etc/sysctl.conf
<<MYEOF
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144
MYEOF
Проверить /sbin/sysctl -p
4) Установить Shell-лимиты для юзера oracle
#/bin/sh
cat >> /etc/security/limits.conf
<<MYEOF
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
MYEOF
# cat >> /etc/pam.d/login
<<MYEOF
session required /lib/security/pam_limits.so
MYEOF
# cat >> /etc/profile
<<MYEOF
if [ \$USER = "oracle" ]; then
if [ \$SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
MYEOF
# cat >> /etc/csh.login
<<MYEOF
if ( \$USER == "oracle" ) then
limit maxproc 16384
limit descriptors 65536
umask 022
endif
MYEOF
# cat >> /etc/profile
<<MYEOF
if [ \$USER = "oracle" ]; then
if [ \$SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
MYEOF
# cat >> /etc/csh.login
<<MYEOF
if ( \$USER == "oracle" ) then
limit maxproc 16384
limit descriptors 65536
umask 022
endif
MYEOF
Установка Oracle из графического окна.
….
=====
По созданию ASM на базе Rawdevices (взял здесь )
# ls /dev/sd*
sda sda1 sda2 sdb sdc sdd
# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
The number of cylinders for this disk is set to 1305.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1305, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1305, default 1305):
Using default value 1305
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
#
====
После рестарта появился девайс /dev/sda4
# fdisk -l
Disk /dev/sda: 12.8 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 778 6144862+ 83 Linux
/dev/sda3 1306 1566 2096482+ 82 Linux swap
/dev/sda4 779 1305 4233127+ 83 Linux
Partition table entries are not in disk order
Создаем директорию /dev/raw
# mkdir -p /dev/raw
и в файл /etc/sysconfig/rawdevices прописываем
/dev/raw/raw1 /dev/sda4
и делаем
# service rawdevices restart
Появился диск /dev/raw/raw1, к которому мы назначим хозяина и атрибуты
# chown oracle:dba /dev/raw/raw1
# chmod 660 /dev/raw/raw1
Также, чтобы после перезагрузки сервера атрибуты сохранились, добавим эти же строки в /etc/rc.local
# cat >> /etc/rc.local
<<My
chown oracle:dba /dev/raw/raw*
chmod 600 /dev/raw/raw*
My
Под рутом
# /oracle/product/10.2.0/db_1/bin/localconfig add
Затем создаем ASM-инстанс - для этого: ИЛИ запускаем GUI под юзером oracle, запускаем dbca и начинаем создание ASM-инстанса
Почему не вручную? Не вижу смысла создавать директории и файлы вручную, если так и так установка Oracle была из GUI.
Но ...
ИЛИ ВРУЧНУЮ на основе 2 статей Manually Creating an ASM Instance и Adventures in ASM (copy/paste)
# su - oracle
$ orapwd file=$ORACLE_HOME/dbs/orapw+asm password=my_passwd
$ mkdir -p $ORACLE_BASE/admin/+asm/bdump
$ mkdir -p $ORACLE_BASE/admin/+asm/cdump
$ mkdir -p $ORACLE_BASE/admin/+asm/hdump
$ mkdir -p $ORACLE_BASE/admin/+asm/pfile
$ mkdir -p $ORACLE_BASE/admin/+asm/udump
$ cat > $ORACLE_BASE/admin/+asm/pfile/init.ora
<<MY
*.background_dump_dest='/oracle/admin/+asm/bdump'
*.core_dump_dest='/oracle/admin/+asm/cdump'
*.instance_type='asm'
*.large_pool_size=12M
*.remote_login_passwordfile='SHARED'
*.user_dump_dest='/oracle/admin/+asm/udump'
MY
$ ln -s $ORACLE_BASE/admin/+asm/pfile/init.ora $ORACLE_HOME/dbs/init+asm.ora
$ export ORACLE_SID=+asm
# sqlplus "/ as sysdba"
SQL> startup
ASM instance started
Total System Global Area 75497472 bytes
Fixed Size 777852 bytes
Variable Size 74719620 bytes
Database Buffers 0 bytes
Redo Buffers 0 bytes
ORA-15110: no diskgroups mounted
SQL> create spfile from pfile;
SQL> alter system set asm_diskstring = '/dev/raw/raw*' scope=both;
SQL> alter system set asm_diskgroups = 'ASM_DATA' scope=both;
SQL> create diskgroup asm_data external redundancy disk '/dev/raw/raw1';
Полезно добавить в SQLPATH скриптик login.sql
==================
login.sql
set serveroutput on size 1000000
set trimspool on
set long 5000
set linesize 900
set pagesize 9999
column plan_plus_exp format a80
column global_name new_value gname
set termout off
define gname=+asm
column global_name new_value gname
select lower(user) || '@' || substr(global_name,1,
decode( dot, 0, length(global_name), dot-1) ) global_name
from (select global_name, instr(global_name,'.') dot from global_name );
set sqlprompt '&gname> '
set termout on
Thursday, November 16, 2006
Скоро на Сахалин!
Friday, October 13, 2006
Oracle's V$ Views
1) Инсталляция 10G в Linux http://www.oracle.com/technology/pub/articles/smiley_10gdb_install.html
2) http://www.ss64.com/orav/
3) http://www.adp-gmbh.ch/ora/misc/dynamic_performance_views.html
Sunday, October 01, 2006
По истории Приморья
ЧЖУРЧЖЭНИ В УССУРИЙСКЕ И ЕГО ОКРЕСТНОСТЯХ XI-XII ВЕК, читать
Впервые русские землепроходцы - отряд О.Степанова - побывали в Приморье в середине XVII в. Однако активное изучение и основание края началось в середине XIX вю. К этому же времени относится и интенсивное заселение края.
26 мая 1861 г. южные земли Дальнего Востока России, включая Приморскую область, были объявлены открытыми для заселения крестьянами и "предприимчивыми людьми всех сословий". Приморье заселяли казаки и крестьяне, демобилизованные чины армии и флота, ремесленники и квалифицированные рабочие-контрактники, каторжане и ссыльные, иностранцы, получившие российское подданство, и временно проживающие здесь отходники.
Только за 1861-1900 г.г. на Дальний Восток России, включая Приморье, прибыло 116 тыс. человек, из них почти 82 % крестьян и 9% казаков; за 1901-1916 г.г. сюда переселилось 287 тыс. человек.
В 1959 г. в Приморье возникли первые населенные пункты - казачьи станции на реке Уссури; в 1861-1866 г.г. появились перве крестьянские села на юге края. В 1860 г. был основан город Владивосток.далее
Первоначально Владивосток, или вернее тот пункт, где впоследствии развился настоящий Владивосток, был занят русскою воинскою силою, состоявшею из сорока нижних чинов 4-го линейного батальона под начальством прапорщика Комарова, 20 июня 1860 г. Команда эта была доставлена сюда на военном транспорте «Маньчжур», входившем, по-видимому, в состав эскадры особой экспедиции, под начальством адмирала П.В. Козакевича, которой было предписано занять и укрепить два пункта для небольших команд в гаванях Новгородской (Посьет) и Владивостоке, в заливе Петра Великого, крейсировать около него и описать все берега его от границ Кореи с юга до бухты Ольги к северу со всевозможной точностью и подробностью».
Наше побережье, как и весь Уссурийский край, официально перешли к нам по Пекинскому трактату 2 ноября 1860 года. ... далее
Старое фото: Бухта Золотой Рог
ОСНОВАНИЕ ВЛАДИВОСТОКА
Wednesday, September 27, 2006
Скоро на курсы DBA
У меня имеется опыт прослушивания 4-ех авторизованных курсов от MS и 1-го от Oracle и ... я понял, что понять и осмыслить тот объем информации, который нужно освоить "галопом по Европе" во время курсов просто невозможно физически, так как очень мало времени для этого и трудно смоделировать настоящие проблемные ситуации, которые могут возникать.
Поэтому думаю, что для максимального понимания, послекурсовой "домашний" практикум по тем же Student Guide обязателен. Прохождение которого как правило впоследствии помогает быстрее осмыслить проблему, разобраться в рабочей проблеме и найти оптимальный путь ее решения.
Да, как я помню, тогда по окончанию курсов всегда не было времени на этот домашний практикум по Student Guide, но .... возможно просто я неправильно расставлял приоритеты.
Да, после первых 3 курсов, MS занимаясь каждый день по вечерам во время курсов, я все же смог сдать экзамен на MCP Windows NT Server 4. Но впоследствии работая в этой области, я много раз убеждался как много я еще не знаю. Тогда после курсов я также не смог повторить домашний практикум.
Т.е. нынче надо будет собраться и после этих курсов по максимуму прогонять их в вечернее время. Очень надеюсь на это будет оставаться время и силы.
От прохождения домашнего практикума зависит то, как я быстро приближусь к тому, чтобы стать Oracle DBA.
И я спрашиваю себя: "Хорошо это уяснил? Через 3-4 месяца посмотрим".
Vintela Authentication Services
http://forum.sun.com/jive/thread.jspa?threadID=102574&tstart=0
В ответ на директиву высказать мнение о целесообразности покупки VAS я написал директорату:
"По решению от Vintela - как единая система для AD-authz для всех хостов нашей компании, данная технология может быть наиболее адекватной для наших нужд.
Но конечно желательно его предварительно протестировать в нашем зоопарке разных ОС и платформ.
В данный момент ситуация с тестированием AD-авторизации на UNIX-подобных системах у нас такая:
1) Для настройки единой аутентификации в разных Unix ОС, которые есть у нас можно использовать встроенные Native либо OpenSource-средства типа OpenLdap, PADL и MIT Kerberos, но везде приходится сталкиваться с нюансами, которые характерны для той или иной ОС. И разворачивание данного решения на наших рабочих UNIX-хостах может потребовать немало времени.
2) Решение с аутентификацией и авторизацией данными средствами работает в настоящий момент на трех тестовых серверах на базе ОС:
- Solaris 10x (10.25.66.222);
- HP UX 11 v2 (10.25.38.2);
- CentOS 4.3 (10.25.66.251).
но везде встала проблема с разграничением доступа к данным серверам по принадлежности AD-пользователей к тем или иным группам AD - независимо от принадлежности к соответствующим группам в AD и pam-политики UNIX-сервера пользователь авторизуется. Причем использовались разные средства, как native так и openldap и средства от padl.com.
Например, проблема c CentOS 4.3 проиллюстрирована ниже: пользователь test, который не являясь членом группы AD-DBA, авторизуется на CentOS, хотя при входе выскакивает баннер о необходимости быть членом этой группы для успешного входа.
login as: test
test@10.25.66.251's password:
You must be a msSFU30MemberUid of CN=AD-DBA,OU=UNIX-Groups,OU=UNIX-OU,DC=testdomain,DC=ru to login.
Last login: Mon Sep 25 12:24:13 2006 from ws234.testdomain.ru
[test@centest ~]$ id
uid=10118(test) gid=10007(AD-Adms) groups=10007(AD-Adms)
[test@centest ~]$
В Solaris и HP-UX также присутствует данная проблема, просто без подобного баннера.
3) Рано или поздно появится необходимость монтирования при помощи smbclient-ов домашних директорий пользователей AD с файлового сервера.
А это опять свои нюансы на каждой ОС. Т.е. для задейстования автомонтирования при логоне посредством Samba-клиентов возможно тоже потребуется бубен.
4) Это субъективно, но во многих форумах по решению тех или иных проблем с AD-авторизацией на UNIX-машинах, я не единожды встречал реплики о том, что сменив танцы с бубном на решение от Vintela подобные проблемы исчезли.
Вышеперечисленные пункты можно отнести в пользу тестирования решения от Vintela.
Также немаловажно наличие поддержки от их российского представительства.
Wednesday, August 09, 2006
LDAP-авторизация заработала
Monday, July 31, 2006
Чтение книг полезная вещь, но опасная как динамит
Когда-то Виктор Цой пел: «Чтение книг полезная вещь, но опасная как динамит». Современная бюрократия и буржуазия лучше других понимает подрывной характер книги, ее способность формировать думающих, критически мыслящих людей, способных задать себе и другим неправильные вопросы. Нас они видят в качестве дешевой рабочей силы и потребителя телевизионного суррогата. «Главное не напрягать мозги, меньше знаешь — крепче спишь»! Рыночный тоталитаризм должен быть комфортным! Разделение труда должно сопровождаться и разделением умственной деятельности. Одни работают и не думают, другие думают и управляют. Выход один: сопротивляться!
Tuesday, July 25, 2006
Ccылки
Docs by books http://www.oracle.com/pls/db102/portal.all_books
Первый месяц, Solaris AD, Kyte
http://www.microsoft.com/technet/itsolutions/cits/interopmigration/unix/usecdirw/08wsdsu.mspx
Интересно было бы проверить ее на Solaris 9 for Sparc, но пока такой возможности нет.
Также с сегодняшнего дня нужно вплотную приступить к чтению Oracle-литературы.
Tuesday, May 23, 2006
Запросы для вывода списка представлений V$
select * from dictionary where table_name like 'V$%';
select * from dba_views where view_name like 'V_$%';
• V$PARAMETER: To locate the trace file for USER_DUMP_DEST
• V$PROCESS: To find the process ID
• V$SESSION: To correctly identify your session’s information in the other views
• V$INSTANCE: To get the ORACLE_SID
Wednesday, May 17, 2006
посмотрю на тебя лет через 20
посмотрю на тебя лет через 20
alchidze (15:19:41 17/05/2006)
скажешь "эх. какой же я был тогда пацан" ((:
pinbol (15:19:53 17/05/2006)
хахаха...давай этот лог забьем в блог и через 20 лет почитаем )
alchidze (15:19:58 17/05/2006)
((((:
Командировка оформлена
Посмотреть IT Департамент, отделение, максимально ознакомиться с городом. Прогуляться по нему и почувствовать стоит ли действительно сюда переезжать всей семьей. Если стоит, то позвонить Оюне о том, что можно начинать думать и потихонечку хлопотать о переезде. По приезду узнать у шефа о возможном снятии жилья.
Ну и конечно же главное - это сделать первый шаг к прохождению испытательного срока на инженера DBA.
Tuesday, May 16, 2006
ссылки не только о параметре fast_start_mttr_target
Быстрое восстановление при старте для Oracle9i
http://www.sibinfo.ru/archive/news/04_01_22/admin_fast_9i.html
Лучшие практические методы администрирования СУБД Oracle9i
http://www.sibinfo.ru/archive/news/04_04_07/oracle_admin.html
http://www.citforum.ru/database/oracle/oracleadm/
http://citforum.yspu.yar.ru/database/oracle/oracleadm/
Повышение масштабируемости, производительности и готовности
Oracle 9iR2-RAC на Linux-системах
http://www.oracle.com/global/ru/oramag/june2003/gen_availability.html
Thursday, May 11, 2006
Представления V$ (не забывая про полезный desc)
V$Process - содержит информацию о всех процессах, которые подключены к БД, в том числе о фоновых и процессах пользователя
V$Bgprocess - список возможных фоновых процессов, причем в представление включен дополнительный столбец PADDR в котором выводится шестнадцатеричный адрес выполняемого фонового процесса. Когда процесс не запущен столбец PADDR имеет значение 0
Подписано в ГЭС и в практически последней инстанции!
Время уже второй час , а коммерсы все сидят у него - почему он им не дает пообедать-то?! :) Захожу, предупреждая, что по личному вопросу и рассказываю....Он быстро предлагает решение обратиться к Андрею, который с ними уже на ты и даже водку пил...в его исполнении проблема разрешится легко....через пару часов я имел и последнюю самую важную подпись....Правда т.к. скандал уже начат и начала работы комиссия, дали только на год и как сказал Андрей возможно будет штраф в 3 тыра - не очень приятно, но на общем фоне решенной проблемы не так страшно :)
Позвонил Вячеславу - автору моей двери - договорились назавтра на 8.30
Шпаргалки
Например, set nls_lang=russian_cis.ru8pc866
или содержимое login.sql из Кайта
для получения промпта типа ops$tkyte@ora10g>
define _editor=vi
set serveroutput on size 1000000
set trimspool on
set long 5000
set linesize 100
set pagesize 9999
column plan_plus_exp format a80
column global_name new_value gname
set termout off
define gname=idle
column global_name new_value gname
select lower(user) || '@' || substr( global_name, 1,
decode( dot, 0, length(global_name), dot-1) ) global_name
from (select global_name, instr(global_name,'.') dot from global_name );
set sqlprompt '&gname> '
set termout on