Wednesday, January 30, 2008
Примеры чекеров, скриптов sh
#!/bin/sh
PATH=/bin
LD=`(date --date='2 days ago' '+%b%d')`
RCPNTP=me@email
HOST=`uname -n`
if
ps -ef|grep -i $LD |grep rman
#if [ $? != 0 ];
then
echo "rman 2 days ago down on "$HOST|mailx -s "rman 2 days ago down on "$HOST ${RCPNTP} < /dev/null fi
##################
Чекает доступность по пингу хоста $HOST
#!/bin/sh
HOST=имя_сервера_который_чекаем
RCPNT=me@email ping -c 2 10.25.40.5 >/dev/null 2>&1
if [ $? -ne 0 ]; then
mail -s 'Alarm!!! Server is down. Check '$HOST $RCPNT < /dev/null
fi
#################
# Бэкапит файлы *jak* из директории /usr/local/BackUp по дням недели, удаляя устаревшие бэкапы
#!/bin/sh
PATH=/bin:/usr/bin:/usr/local/bin
BKPDIR=/usr/local/BackUp
TODAY=`date +'%a'`
TOMCAT=/usr/local/jakarta-tomcat-4.1.18
cd $TOMCAT
BKPFILES=`ls`
tar zcf $BKPDIR/$TODAY-jak.tar.gz $BKPFILES
find $BKPDIR/ -type f -name '*jak*' -mtime +2 -exec rm "{}" ";"
Wednesday, January 23, 2008
Physical Memory in HP-UX
1) Способ, не везде срабатывающий
# dmesg |grep Physical
2) Сработал на разных платформах
# /opt/ignite/bin/print_manifest |grep -i memory
Monday, January 21, 2008
Bonding и отключение поддержки IPv6 (sit0) в Centos 4.6
И тупо проверил выдергиванием кабелей по очереди - все работает.
Сообщил сетевикам, они настроили team на коммутаторах, но пожаловались на то, что с их стороны виден лишний MAC-адрес.
Действительно, в выводе # ifconfig -a маячит интерфейс "sit0 Link encap:IPv6-in-IPv4", который они и попросили убрать.
Очевидно поддержка IPv6 включена по дефолту в ядро 2.6.xxx
Для отключения IPv6 добавил в /etc/modprobe.conf
alias net-pf-10 off
alias ipv6 off
и перегрузился, после чего sit0 исчез из системы.
p.s. прикол в том, что на других боевых системах с Centos sit0 также присутствует :)
Thursday, January 17, 2008
Копирование пользователей с их правами
set head off
set pages 0
set long 9999999
spool user_script.sql
SELECT DBMS_METADATA.GET_DDL('USER', USERNAME) || '/' DDL
FROM DBA_USERS
UNION ALL
SELECT DBMS_METADATA.GET_GRANTED_DDL('ROLE_GRANT', USERNAME) || '/' DDL
FROM DBA_USERS
UNION ALL
SELECT DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT', USERNAME) || '/' DDL
FROM DBA_USERS
UNION ALL
SELECT DBMS_METADATA.GET_GRANTED_DDL('OBJECT_GRANT', USERNAME) || '/' DDL
FROM DBA_USERS;
spool off;
Wednesday, January 16, 2008
dbid в шаблоне %F
Дабы не искать его в логах лучше пользоваться шаблоном %F - при создании backup_set это первая последовательность цифр в имени файла при использовании шаблона %F - например,
configure controlfile autobackup format for device type disk to '/orabackup/rman2disk/back1_ctl_%F';
Friday, December 21, 2007
Грабелька с OVO-мониторингом баз Oracle (на Linux-ах)
Hi
We have the following situation. After a colleque of us restored partially a backup ( core dump happended) ORACLE is behaving somehow strange :
Logon to ORACLE using sqlplus works fine
Using the application that is normally used with the db alos works fine.
If the application tries to logon to ORACLE using programmatic access does not work at all .We always get the ORA-12546 error
We cannot fin whats wrong.
Has anyone a idea where we should search
Ответ оказался:
Make sure the permission on the oracle execuatble is correct. The oracle executable permission should be:
52224 -rwsr-sr-x 1 oracle dba 53431665 Aug 10 11:07 oracle
Explanation:
The error, ora-12546, occurs due to an incorrect setting on the oracle executable.
По AWR
select * from sys.wrm$_snapshot;
-- Просмотреть текущие настройки AWR
select * from dba_hist_wr_control;
-- Задать новые настройки AWR
begin
dbms_workload_repository.modify_snapshot_settings(
interval=>15,
retention=>10080);
end;
--Просмотреть представления с данными AWR
SELECT table_name, comments FROM dict WHERE table_name
LIKE 'DBA_HIST%'
order by 1;
-- Удалить AWR снапшоты (на примере ниже размер БД уменьшается с 10 до 3Гб)
define(`SMART_HOST',`smtp.provider.com')
And after do
# cd /etc/mail
# make
# killall -1 sendmail
# echo test|mail me@mydomain.com
Thursday, December 20, 2007
Убить неубиваемую сессию (ORA-00031: session marked for kill)
В таком случае сессию можно убить из Unix через убийство процесса
# kill pid, где pid - это spid из представления v$process, который можно узнать по ADDR. ADDR узнается по PADDR из v$session. Напр-р,
select spid from v$process where addr in
(select paddr from v$session where osuser='ADUser');
Если есть под рукой Toad , то в Session Browser spid для проблемной сессии можно посмотреть перейдя в закладку Process
Tuesday, December 18, 2007
FEATURE(`delay_checks')
http://dz.dn.ua/spam/antispam.html
Wednesday, December 12, 2007
Грабли с WMware
Tuesday, December 11, 2007
Грабли при Upgrade до 10.2.0.3
1) Ошибки как при запуске @?/rdbms/admin/catupgrd.sql, так и при запуске dbua (Ошибка звучала примерно так
DBUA thinks this is a Rerun operation and is trying to connect to the database with oracle home /oracle/product/10g. If you believe this is not a Rerun operation, remove the below file and invoke DBUA again.
/oracle/product/10g/cfgtoollogs/dbua/logs/Welcome_LIVE.txt ).
Оказалось, что были потеряны онлайн-логи БД - сообщение об этом я получал при
SQL> startup upgrade , но игнорировал ....
После того как проделал
SQL> recover database until cancel;
SQL> alter database open resetlogs;
(конечно на боевой базе после этого обязательно сделать полный бэкап базы) проблема ушла и после SQL> startup upgrade скрипт @?/rdbms/admin/catupgrd.sql начал свое исполнение.
Вывод 1: не игнорь недоступность онлайн-логов при "startup upgrade" .
---
2) Делал upgrade по Readme.html из архива патча. Потратив время, оказалось, что не стоит игнорить написанное черным по белому там - проверьте нет ли обновленного readme на металинке. В файле на металинке перед обновлением необходимо пропатчиться....
Вывод 2: прежде чем делать любые обновления, проверяй металинк, не обновился ли документ, описывающий данное обновление.
3) Нарвался на "тупейшую" засаду - скрипт catupgrd.sql завис бес каких либо сообщений, не сразу заглянув в алерт.лог я выяснил, что место в дисковой группе АСМ закончилось :( вот, засада.
Вывод 3: проверь достаточно ли свободного места в SYSTEM, SYSAUX, да и просто в дисковой группе.
Friday, December 07, 2007
Для установки запуска агента OVO
[root@mysrv OpC]# /usr/src/OVO/RPC_BBC/opc_inst -s <имя_сервера>
Для запуска и проверки статуса OVO-агента
[root@mysrv OpC]# /opt/OV/bin/OpC/opcagt -start
[root@mysrv OpC]# /opt/OV/bin/OpC/opcagt -status
VPO Managed Node status :
-------------------------
Control Agent /opt/OV/bin/OpC/opcctla (13529) is running
Message Agent /opt/OV/bin/OpC/opcmsga (13532) is running
BBC Local Location Broker /opt/OV/bin/llbserver (13533) is running
Subagent 1:
Action Agent /opt/OV/bin/OpC/opcacta (13534) is running
Logfile Encapsulator /opt/OV/bin/OpC/opcle (13535) is running
Monitor Agent /opt/OV/bin/OpC/opcmona (13536) is running
Message Interceptor /opt/OV/bin/OpC/opcmsgi (13537) is running
Subagent 12:
Performance Agent /opt/OV/bin/coda -redirect (13538) is running
Subagent 13:
Service Discovery Agent /opt/OV/bin/OvSvcDiscAgt /f -start (13539) is running
Wednesday, December 05, 2007
iptables - первый опыт :)
Активировал через Х-ы через Security.
Правила описываются в /etc/sysconfig/iptables
После добавления (изменения) правила в этот файлик
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5555 -s 10.27.115.223 -j ACCEPT
которое идентично стандартным за исключением того, что я добавил ip-адрес источника через ключ -s ('-s 10.27.115.223')
срестартил iptables
# /etc/init.d/iptables restart
Для проверки правил полезная командочка
# iptables-save > /root/firewall.rules2
Wednesday, November 07, 2007
Принципалы (principals), защищаемые (securables), разрешения (permissions) в SQL Server 2005
Securables (дословно "защищаемые") — еще одна важнейшая концепция системы безопасности SQL Server 2005. Это все, на что в SQL Server 2005 можно назначить разрешения.
Терминология системы безопасности SQL Server 2005, принципалы (principals), защищаемые (securables), разрешения (permissions)
Tuesday, October 23, 2007
первый бэкап и ресторе в MS SQL 2005 :)
Мне понравились доступность и понятность материалов из текнет и онлайн-букса.
Пример скрипта, который я нашел и который возможно нужен будет частенько для создания копии БД для разработчиков.
-- Скрипт создает копию БД (formonitor) из ее бэкапа под новым именем (DB_test) и новым расположением md- и ld-файлов БД.
USE master
GO
-- DROP DATABASE DB_test
RESTORE DATABASE DB_test
FROM disk='D:\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\formonitor.bak'
WITH RECOVERY ,
MOVE 'Formonitor' TO 'D:\Test_DB\DB_test.mdf',
MOVE 'Formonitor_log' TO 'D:\Test_DB\DB_test.ldf'
--
/*
Чтобы узнать логические имена файлов 'Formonitor' и 'Formonitor_log' из файла бэкапа formonitor.bak нужно сказать:
RESTORE FILELISTONLY
FROM disk='D:\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\formonitor.bak'
*/
Wednesday, October 10, 2007
первый снег ... собеседование у Оюны
>> не действительно красиво листва ещё не опала леса зелёно красно жёлтые и Байкал синий солнце и снег
Tuesday, September 25, 2007
Wednesday, September 05, 2007
Monday, August 20, 2007
Скрипты для перекомпиляции INVALID-объектов
Сейчас для компиляции инвалидных функций и процедур я пользуюсь sqlplus-скриптом с сайта Don'а Burleson'а invalid_func_proc.sql.
А для компиляции инвалидных пакетов и тел пакетов скриптом с Oracle-Base invalid_pkg.sql.
--invalid_func_proc.sql
set heading off;
set feedback off;
set echo off;
set lines 999;
set page 500;
spool run_invalid.sql
select
'ALTER ' || OBJECT_TYPE || ' ' ||
OWNER || '.' || OBJECT_NAME || ' COMPILE;'
from dba_objects
where status = 'INVALID'
and object_type in ('FUNCTION','PROCEDURE');
spool off;
set heading on;
set feedback on;
set echo on;
--@run_invalid.sql
--===========================
--invalid_pkg.sql.
SET SERVEROUTPUT ON SIZE 1000000
BEGIN
FOR cur_rec IN (SELECT owner,
object_name,
object_type,
DECODE(object_type, 'PACKAGE', 1,
'PACKAGE BODY', 2, 2) AS recompile_order
FROM dba_objects
WHERE object_type IN ('PACKAGE', 'PACKAGE BODY')
AND status != 'VALID'
ORDER BY 4)
LOOP
BEGIN
IF cur_rec.object_type = 'PACKAGE' THEN
EXECUTE IMMEDIATE 'ALTER ' || cur_rec.object_type ||
' "' || cur_rec.owner || '"."' || cur_rec.object_name || '" COMPILE';
ElSE
EXECUTE IMMEDIATE 'ALTER PACKAGE "' || cur_rec.owner ||
'"."' || cur_rec.object_name || '" COMPILE BODY';
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line(cur_rec.object_type || ' : ' || cur_rec.owner ||
' : ' || cur_rec.object_name);
END;
END LOOP;
END;
/
Sunday, August 19, 2007
Протестить mount over ssh?
http://www.cyberciti.biz/tips/rhel-centos-mounting-remote-filesystem-using-sshfs.html
да и вообще похоже много чего полезного здесь
Friday, August 17, 2007
su - oracle - Your default context is user_u:system_r:unconfined_t.
[root@mysrv]# su - oracle
Your default context is user_u:system_r:unconfined_t.
Do you want to choose a different one? [n]
[oracle@mysrv ~]$
Теперь ясно почему не сработал dbora.
Гугл посоветовал закомментарить в /etc/pam.d/su строку с pam_selinux.so open multiple
#session required /lib/security/$ISA/pam_selinux.so open multiple
session required /lib/security/$ISA/pam_selinux.so open
и это помогло.
Thursday, August 16, 2007
How to enable telnet in CentOS
1. Login to your server through SSH and su to root.
2. Type pico /etc/xinetd.d/telnet
3. Look for the line: disable = no and replace with disable = yes
4. Now restart the inetd service: /etc/rc.d/init.d/xinetd restart
5. Turn off it through chkconfig as well because it can still start through that.
/sbin/chkconfig telnet off
SQL> drop database;
SQL> startup mount EXCLUSIVE restrict force;
ORACLE instance started.
Total System Global Area 536870912 bytes
Fixed Size 1261860 bytes
Variable Size 167775964 bytes
Database Buffers 364904448 bytes
Redo Buffers 2928640 bytes
Database mounted.
SQL> drop database;
Обновление пакетов Linux на примере обновления open-ssh до 4.6p1 на CentOS 4.4
# wget ftp://chuck.ucs.indiana.edu/pub/array2/linux/fedora/linux/core/5/source/SRPMS/zlib-1.2.3-1.2.1.src.rpm
# rpmbuild --rebuild zlib-1.2.3-1.2.1.src.rpm
# rpm -Uhv /usr/src/redhat/RPMS/i386/zlib-*1.2.3-1.2.1.i386.rpm
2) Обновление из тарбола (на примере openssh)
# cd /usr/src/redhat/SOURCES
# wget ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-4.6p1.tar.gz
# tar zxvf openssh-4.6p1.tar.gz
Ищем файлик типа spec
# find . -type f -name *.spec
# cd openssh-4.6p1/contrib/redhat/
# vi openssh.spec
%define no_x11_askpass 1
%define no_gnome_askpass 1
# rpmbuild -bb --clean --target i586 openssh.spec
# cd /usr/src/redhat/RPMS/i586
# rpm -Uvh openssh-*4.6p1-1.i586.rpm
Во время установки ругнулось на зависимости старых пакетов
error: Failed dependencies:
openssh = 3.9p1-8.RHEL4.9 is needed by (installed) openssh-askpass-3.9p1-8.RHEL4.9.i386
openssh = 3.9p1-8.RHEL4.9 is needed by (installed) openssh-askpass-gnome-3.9p1-8.RHEL4.9.i386
- удалил их через
# rpm -e <пакеты, на которые ругалось>
После удаления повторил установку и перегрузил процесс sshd через
kill -1
3) Установка или обновление при помощи yum
#yum install XFree86-devel
#yum install gtk2-devel
#yum update openssl
mount NFS from HP-UX onto Oracle on Linux
1) на hp-ux под root'ом
- в /etc/rc.config.d/nfsconf значения параметров NFS_SERVER и START_MOUNTD заменил на 1.
- запустил /sbin/init.d/nfs.server start
- дамп файл лежит в /dmp, поэтому в /etc/exports добавил строчку
/dmp -anon=65534,async
- перечитал изменения /usr/sbin/exportfs -a
- проверил /usr/sbin/exportfs
2) на Linux под root'ом
также решил смонтировать и дал команду
$ mount name_of_server:/dmp /dmp -o rw,bg,hard,nointr,tcp,vers=3,timeo=300,rsize=32768,wsize=32768
Когда я ее дал в начале без опций $ mount name_of_server:/dmp /dmp, то при попытке сделать импорт из этой директории вывалилась ошибка:
ORA-27054: NFS file system where the file is created or resides is not mounted with correct options
Wednesday, August 15, 2007
RMAN-03002: failure of Duplicate Db command at
Тогда как сделать копию базы, если нет железа, где ее развернуть? Спросить у офисников VMWare-машинку. Удалось найти у них VMWare-машинку на 2Gb RAM, но дискового пространства всего лишь 170 Гб :( - больше нету. Ок, пока я поднял на ней Centos 4.4 и Oracle 10gR2.
Итак остаются две проблемы - для дамп-файла нет места на сервере. Также его нет на VMWare-сервере, который выделен под копию базы. Cетевой экспорт посредством network_link не подходит, т.к. в базе огромная куча таблиц с полями типа LONG (Интересно убрано ли это ограничение в недавно выложенной 11g?).
Доовольный и потирая руки, т.к. никогда не делал его, я ответил себе - нужно попробовать RMAN duplicate!!! Проведя тесты у себя на тестовой базе, подготовил duplicate.rcv c содержимым:
run {
allocate auxiliary channel 'aux_sbt' type 'sbt_tape';
duplicate target database to 'SID новой базы'
skip tablespace 'ненужный TS';
}
exit;
Запустил команду
$ rman target / auxiliary sys/passwd@
и .... получил ошибки, основной смысл которых RMAN-03002: failure of Duplicate Db command at .... Погуглив и пошаривши по металинку осеняет!!! кого я гоню-то - и грустно и смешно :( ОСи то разные :( Тесты я провел на Linux-ах и с той и с этой стороны, а под продакшн базой у меня сервачок HP rp5470 с HP-UX 11.11, когда как для тестовой копии я поднял Linux - другого варианта не было. Известно, что при RMAN restore (который является частью duplicate) возможны только одинаковые ОСи. Вот он пример того, как что-то зная в теории, выпускаешь из виду на практике, пока не "наступишь"... Эээхх....
А с копией базы на самом деле оказалось не все потеряно. Эту боевую базу поднимал я и располагал данные на MSA1000. Тоже неплохой опыт был. Т.к. вот к моему серваку был подключен еще один такой же массив. Соответственно с него мне и выделили раздельчик на 300Гб - благо еще была возможность. Для того, чтобы подмаунтить его коллега использовал ioscan, insf , funC -disk и sam. Саначала создал volume group vg01, а в ней и раздел lvol9 с монтированием его в /dmp. Дальше дело техники - expdp и ipmdp по сети.
Кстати, impdp по сети с дамп-файлом еще делать не приходилось и надеюсь все сработает - щас пока молотит expdp. Через некоторое время добавлю продолжение.
Saturday, August 11, 2007
Перенос базы в новую ASM_DISKGROUP
При подготовке к данному переносу почитал доку, ноты металинка и провел ряд тестов на своей тестовой базе в VMVare-машине. В результате составил след.инструкцию, которую и использовал при работе с продакшн базой.
====
Задача: Перенести базу в новую asm_diskgroup
Данные: Имя новой asm_diskgroup - EVA01R1
1) Сделать бэкап control- файла
SQL> select name from v$controlfile;
SQL> alter database backup controlfile to '+EVA01R1';
2) Задать новое месторасположение control-файла в spfile
SQL> alter system set control_files='+EVA01R1\ITC\CONTROLFILE\CONTROL01.CTL' SCOPE=SPFILE;
Прим. если spfile не используется экземпляром, то прописать в его init.ora
3) Восстановить новый из старого control-файла
$ rman target /
RMAN > shutdown immediate;
RMAN > startup nomount;
RMAN> restore controlfile from '+EVA02/itc/controlfile/current.266.610247845';
4) Запустить копирование базы
RMAN> alter database mount;
RMAN> backup as copy database format ' +EVA01R1 ';
5) Переключить базу на копию
RMAN> switch database to copy;
RMAN> RUN
{
SWITCH TEMPFILE 1 TO '+EVA01R1';
}
6) Добавить в init.ora
параметр Db_create_file_dest=+eva01r1
7) Открыть базу
RMAN> alter database open;
8) Добавить в новую asm_diskgroup зеркальные копии онлайн-логов во всего журнальные группы экземпляра
alter database add logfile member ' +EVA01R1 ' to group 1 ;
alter database add logfile member ' +EVA01R1 ' to group 2;
alter database add logfile member ' +EVA01R1 ' to group 3 ;
alter database add logfile member ' +EVA01R1 ' to group 4 ;
alter database add logfile member ' +EVA01R1 ' to group 5 ;
9) Переключить журнал
alter system archive log current
10) Удалить старые копии журналов из старой asm_diskgroup
Можно использовать скрипт (здесь старая группа +EVA02)
declare
strSQL varchar2( 200 );
begin
for pList in (select member from v$logfile where member like '+EVA02/%' ) loop
strSQL:= 'alter database drop logfile member "' || pList.member || '"' ;
begin
EXECUTE IMMEDIATE strSQL;
end;
end loop;
end;
или вручную через
alter database drop logfile member '+EVA02/itc/onlinelog/group_1.256.609887989’
(имя файла изменять на свое)
Проверить остались ли старые файлы
select member from v$logfile where member like '+EVA02/%'
11) Переместить файл block_change_tracking
SQL> select status,filename
from v$block_change_tracking;
SQL> alter database disable block change tracking
SQL> alter database enable block change tracking
using file '+EVA01R1' reuse;
12) Проверить месторасположение всех фалов
select name from v$controlfile
union
select name from v$datafile
union
select name from v$tempfile
union
select member from v$logfile
union
select filename from v$block_change_tracking
13) Удалить все старые дисковые группы как ненужные
SQL> drop diskgroup eva01 including contents;
SQL> drop diskgroup eva02 including contents;
Friday, August 10, 2007
Добавление восьмого LUN'а с EVA5000 в Centos (ПРОДОЛЖЕНИЕ)
1) Похватится ли 8-й LUN системой?
2) Создастся ли /dev/mpath/3600508b4001039d90000600000d20000p1 , на базе которого должен создастся /dev/raw/raw17 ?
Ответы на все отрицательные :( Хотя после установки max-scsi-luns=255 ответы должны были быть положительными.
Пришлось пока просто прописать автостартап-скрипты для добавления 8-го LUNа и для монтирования с него raw-девайса для новой дисковой группы ASM Oracle. Как раз на нее и переливал впоследствии базу RMAN-ом.
[root@vld-olap-1 init.d]# cat /etc/init.d/addscsilun
#!/bin/sh
#
# chkconfig: 2345 1 99
# description: Adds new scsi LUN
#
/bin/echo "scsi add-single-device 0 0 0 8" > /proc/scsi/scsi
/bin/echo "scsi add-single-device 0 0 1 8" > /proc/scsi/scsi
/bin/echo "scsi add-single-device 1 0 0 8" > /proc/scsi/scsi
/bin/echo "scsi add-single-device 1 0 1 8" > /proc/scsi/scsi
#chkconfig --add addscsilun
проапдейтил скрипт маунта нового раздела в raw17 и все конечно заработало и проблема закрыта, но ... вопрос почему же 8-й LUN не подхватился системой после ребута остался нерешенным.
Thursday, August 09, 2007
Смена пароля SYS экземпляра ASM
Wednesday, August 08, 2007
Добавление восьмого LUN'а с EVA5000 в Centos
1) Вручную добавил данный LUN через
echo "scsi add-single-device 0 0 0 8" > /proc/scsi/scsi
echo "scsi add-single-device 0 0 1 8" > /proc/scsi/scsi
echo "scsi add-single-device 1 0 0 8" > /proc/scsi/scsi
echo "scsi add-single-device 1 0 1 8" > /proc/scsi/scsi
после чего появился файл /dev/dm-14
2) Вручную добавил вь-14
# multipathd -k
multipathd> add map dm-14
ok
после чего в /dev/mpath/ появилась ссылка на /dev/dm-14
3) Создал партицию из появившейся ссылки, т.е. в моем случае
# fdisk /dev/mpath/3600508b4001039d90000600000d20000
выдели все доступное пространство от первого до последнего цилиндра
Дал команду #partprobe
После чего я ожидал увидеть /dev/mpath/3600508b4001039d90000600000d20000p1, но этого не произошло.
Поэтому очень важно увидеть создание данного файла после ребута, т.к. именно после его создания startup-скриптами будет создан raw-девайс, на базе которого создается asm_diskgroup.
А пока я создал вручную raw через
# raw /dev/raw/raw17 /dev/mpath/3600508b4001039d90000600000d20000
А далее под oracle и ORACLE_SID=+asm создал группу
SQL> create diskgroup eva01r1 external redundancy disk /dev/raw/raw17;
Теперь нужно проверить во время ночных работ с перезагрузкой сервера и переливкой RMAN-ом базы в данную asm_diskgroup следующее:
1) Похватится ли 8-й LUN системой?
2) Создастся ли /dev/mpath/3600508b4001039d90000600000d20000p1 , на базе которого должен создастся /dev/raw/raw17 ?
Скрипт создания raw
cnt=10
for md in `ls /dev/mpath/*p1`
do
raw /dev/raw/raw$cnt $md
cnt=`expr $cnt + 1`
done;
Продолжение следует ...
Tuesday, August 07, 2007
per_free in tablespace/autoextent on
SELECT F.TABLESPACE_NAME,TO_CHAR ((T.TOTAL_SPACE - F.FREE_SPACE),'999,999') "USED (MB)",
TO_CHAR (F.FREE_SPACE, '999,999') "FREE (MB)",
TO_CHAR (T.TOTAL_SPACE, '999,999') "TOTAL (MB)",
TO_CHAR ((ROUND ((F.FREE_SPACE/T.TOTAL_SPACE)*100)),'999')||' %' PER_FREE
FROM (SELECT TABLESPACE_NAME, ROUND (SUM (BLOCKS*(SELECT VALUE/1024
FROM V$PARAMETER WHERE NAME = 'db_block_size')/1024) ) FREE_SPACE
FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F,
(SELECT TABLESPACE_NAME,ROUND (SUM (BYTES/1048576)) TOTAL_SPACE
FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME ) T
WHERE F.TABLESPACE_NAME = T.TABLESPACE_NAME
обнаружил пару ТС с 0% в значении PER_FREE
Вопрос: как проверить выставлен ли autoextent в файлах данного ТС?
Ответ: select * from dba_data_files
Friday, August 03, 2007
umask и Vintela VAS
Согласно Red Hat Knowledgebase Если id пользователя более, чем 99, то umask по-умолчанию должен быть 002, иначе 022 (см./etc/bashrc), но umask у пользователей VAS на CentOS упорно 022.
Вследствие чего возникает проблема, когда пользователь группы VAS не может изменить (удалить) файлы, созданные другим пользователем этой же группы VAS.
Т.е. пользователь VAS должен либо давать команду umask 002 (666-002=664), чтобы его коллеги по VAS-группе могли менять созданные им файлы либо подправить свой /home/user/.bashrc путем добавления в конце строки umask 002.
Но юзеры никак не хотят это принять и упорно ругают VAS :) Можно их понять ....
Надо подправить настройки для вновь создаваемых пользователей для Linux в
/etc/skel/.bashrc, откуда берет настройки /etc/default/useradd, просто добавив в конце строку umask 002.
А для тех пользователей, которые уже зарегились подправить их /home/AD-user/.bashrc
Thursday, August 02, 2007
Куда сыпятся логи стартап-скриптов в HP-UX?
Wednesday, August 01, 2007
Ссылки на БобрДобр
Monday, July 30, 2007
Поддержка ядром Linux определенного кол-ва scsi luns
1) How do I setup multiple LUNs on Red Hat Enterprise Linux 4?
How do I rebuild the initial ramdisk image?
2) Administer Linux on the fly с переводом на опеннете.
Ccылки к тому, что сегодня получил задание выяснить как увеличить кол-во поддерживаемых LUNs ядром Linux (Centos 4.4). Было высказано предположение, что у ядра есть параметр, подобный max scsi luns, дефолтовое значение которого 7, которое нужно увеличить. Про дефолтовое значение max_scsi_luns я не нашел ничего, но как оказалось на данном сервере после загрузки ОС вручную запускался скрипт rescan-scsi-bus.sh , использующий добавление дисков на лету echo "scsi add-single-device H C I L" > /proc/scsi/scsi и и который не без ограничений.
Вечером следующего дня я сделал установку Multiple LUNs с перестройкой образа RAM-диска по указанным ссылкам и это избавило от ручного запуска данного скрипта.
Также был автоматизирован запуск asm-экземпляра и базы Oracle и apache после загрузки ОС.
Friday, July 27, 2007
Thursday, June 28, 2007
Быстрый Logminer
$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus system/password @dbms.sql
2) Определи файлы, которые будут анализироваться логмайнером (в примере далее это файлы ASM типа +DBGROUP1/ccdb/onlinelog/group_2.262.593698089), например, вытащи активные журналы через
SELECT distinct member LOGFILENAME FROM V$LOGFILE;
3) Добавь полученные файлы в поле видимости пакета DBMS_LOGMNR
BEGIN
sys.DBMS_LOGMNR.ADD_LOGFILE
('+DBGROUP1/ccdb/onlinelog/group_2.262.593698089'); --замени на свои имена файлов
sys.DBMS_LOGMNR.ADD_LOGFILE
('+DBGROUP1/ccdb/onlinelog/group_3.263.593698095');
sys.DBMS_LOGMNR.ADD_LOGFILE
('+DBGROUP1/ccdb/onlinelog/group_1.261.593698085');
END;
4) Запусти начало анализа журналов
BEGIN
sys.DBMS_LOGMNR.START_LOGMNR
(options =>
dbms_logmnr.dict_from_online_catalog);
END;
5) Найди проблемную операцию и вытащи UNDO-запрос через запрос к V$LOGMNR_CONTENTS
Например,
select username,to_char(timestamp,'mm/dd/yy hh24:mi:ss') timestamp,
seg_type_name, seg_name, table_space, sql_redo,sql_undo, session# SID, serial#
from V$LOGMNR_CONTENTS
where operation = 'DELETE' -- Если нужно поменяй отслеживаемую операцию!!!
and table_space like 'USERS' -- Если нужно поменяй или убери ТС!!!
and to_char(timestamp,'mm/dd/yy hh24:mi:ss')> '06/27/07 17:00:00' -- Здесь задай свою дату!!!
order by 2 desc;
6) Остановить Logmnr-процесс
BEGIN
sys.Dbms_Logmnr.end_logmnr;
END;
Быстро сфлэшбэчиться 2 (to before drop;)
drop table adm_office; -- случайное удаление таблицы
select * from tab; -- видим строку с переименованной таблицей в системную
select * from recyclebin; --удостоверимся, что это наша удаленная таблица
--если в sqlplus, то можно SQL> show recyclebin
flashback table adm_office to before drop; -- сфлэшбэчим удаленную табличку
Итак я представил, что кто-то из юзеров удалил таблицу в своей схеме и позвонил мне. Я зашел под system'ом и не увидел удаленной таблицы в recyclebin. Тогда делаю запрос
select owner, object_name, original_name, type, droptime, can_undrop, can_purge from dba_recyclebin;
и вижу то, что нужно - схему, имя таблицы, время ее удаления и возможность восстановления!
Можно проверить эту табличку запросом к переименованной табличке, например:
select * from СХЕМА."BIN$kffqEdSnQd2u6rEnet3Pzg==$0"
Теперь осталось сфлэшбэчить данную табличку с указанием ее схемы-владельца
flashback table СХЕМА.adm_office to before drop;
Wednesday, June 27, 2007
Тесты c Logminer
Сначала нужно инсталлировать пакет DBMS_LOGMNR (далее шаг 1)
Затем выдать привилегию юзеру, который будет анализировать журнал (шаг 2 - сразу родился вопрос - когда я попытался сделать анализ от юзера adm, которому дал роль по статье, получил ошибку "Привилегий недостаточно" - поэтому вопрос с привилегиями пока открыт).
Тест в винде - если что-то удалено недавно и изменения сохранились в оперативных журналах (имена журналов мы возьмем из SELECT distinct member LOGFILENAME FROM V$LOGFILE;)
1) C:\>sqlplus / as sysdba
2) SQL> c:\oracle\product\10.2.0\db_1\rdbms\admin\dbmslm.sql;
3) SQL> GRANT EXECUTE_CATALOG_ROLE TO adm;
4) SQL> CREATE PUBLIC SYNONYM DBMS_LOGMNR FOR SYS.DBMS_LOGMNR;
5) SQL> SELECT distinct member LOGFILENAME FROM V$LOGFILE;
6) BEGIN
DBMS_LOGMNR.ADD_LOGFILE
('C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLWIN\REDO03.LOG');
DBMS_LOGMNR.ADD_LOGFILE
('C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLWIN\REDO02.LOG');
DBMS_LOGMNR.ADD_LOGFILE
('C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLWIN\REDO01.LOG');
END;
8) BEGIN
DBMS_LOGMNR.START_LOGMNR
(options =>
dbms_logmnr.dict_from_online_catalog);
END;
здесь dbms_logmnr.dict_from_online_catalog - как я понял из доки использование логмайнером словаря БД для анализа не только онлайн-журналов (dbms_logmnr.DICT_FROM_REDO_LOGS), но и заархивированных.
9) select username,to_char(timestamp,'mm/dd/yy hh24:mi:ss') timestamp,
seg_type_name, seg_name, table_space, sql_redo,sql_undo, session# SID, serial#
from V$LOGMNR_CONTENTS
where operation = 'DELETE'
and table_space like 'USERS'
and to_char(timestamp,'mm/dd/yy hh24:mi:ss')> '06/27/07 17:00:00'
order by 2 desc;
10) Нахожу нужную строку и из SQL_UNDO выбираю и выполняю соответствующий запрос, чтобы вернуть как было.
Прим. Cтолбец SQL_REDO – показывает оператор, который может быть выполнен, чтобы вызвать то же самое изменение, сделанное пользователем, и столбец SQL_UNDO – оператор, который может быть выполнен для отмены изменения.
Но что делать если произошло пакетное удаление или изменение? Думаю, pl/sql с курсорами, хотя не уверен. Надо будет протестить.
Tuesday, June 19, 2007
Не используйте нулевой сектор raw-девайса для Oracle ASM в Solaris 10
Вывод: выделяя девайс под раздел для Oracle ASM в Solaris 10 начните его не с нулевого, а с первого сектора. На других ОС-ях пока не было возможности проверить это. Ссылка на man dd
Thursday, June 14, 2007
CPU Apr 2007 на Solaris 10 (Sparc 64-bit)
В конце установки CPU пришлось поволноваться, когда получил это:
Inventory check OK: Patch ID 5901881 is registered in Oracle Home inventory with proper meta-data.
Verification of 'ar' actions failed. This is a known issue for this platform. Pl ease check the note 353150.1 on Metalink for the process to manually verify the files.
Files check OK: Files from Patch ID 5901881 are present in Oracle Home
Но следование упомянутой ноте 353150.1 показало, что "... all Source files are 4 bytes smaller than their respective Destination files AND the patch has successfully applied". Тесты с базой прошли успешно и она уже чуть более часа как в "плавании".
Tuesday, June 12, 2007
В dbca не вижу базы, созданной вручную
Хм... пока тема остается открытой.
Saturday, June 09, 2007
Error 45 initializing SQL*Plus
[oracle@centest ~]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.2.0 - Production on Sat Jun 9 10:19:14 2007
Copyright (c) 1982, 2005, Oracle. All Rights Reserved.
Error 45 initializing SQL*Plus
Internal error
Судя по металинку эта бага обнаруживается на разных платформах и версиях Oracle, нашел упоминание о Bug 3039738 (Oracle Cluster File System (OCFS) ) и в форуме данная проблема присутствует. Заглянул в первое попавшееся и когда вычитал реплику автора о подобной проблеме "Even I faced the same problem. But when I set the oracle_home,nls_lang and path environment variables it worked fine" сразу проверил свои переменные окружения и обалдел, когда увидел, что HOSTNAME=my_server_name.other_domain.ru :)
Заглянул в /etc/hosts, /etc/resolv.conf, /etc/sysconfig/network - так и есть, там прописан не мой, а "левый" домен.
Исправил, ребутнулся - ошибка осталась :(
Проблема остается открытой ...
Thursday, June 07, 2007
grant select on все таблицы одной схемы другой схеме?
SET ECHO OFF
SET NEWPAGE 0
SET SPACE 0
SET PAGESIZE 0
SET FEEDBACK OFF
SET HEADING OFF
SET TRIMSPOOL ON
spool grants2user2.sql
select 'grant select on '''||owner||'.'||table_name||''' to user2;' from dba_tables where owner='USER1';
spool off;
exit;
Wednesday, June 06, 2007
Вывод списка ролей (пример использования %ROWTYPE)
cursor get_roles is -- Объявляем курсор
select * from dba_roles;
v_roles get_roles%ROWTYPE; --Объявляем переменную, работающую с курсором
begin
open get_roles;
loop
exit when get_roles%NOTFOUND; --Оператор цикла для просмотра всех записей таблицы
dbms_output.enable;
fetch get_roles into v_roles; --Фетчим курсор в переменную
dbms_output.put_line(TO_CHAR(v_roles.role));
end loop;
close get_roles;
end;
/
Tuesday, June 05, 2007
Создание скрипта сохранения и изменения паролей
set pages 0;
set linesize 140;
set feedback off;
set termout off;
column cmd_line format a80
column tick format a3
column sum_bytes format 999,999,999,999
spool return_pass.spool.sql;
select 'alter user "'||username||'" identified by values '''||password||''';' from dba_users;
spool off;
spool change_pass.spool.sql;
select 'alter user "'||username||'" identified by qqq;' from dba_users;
spool off;
exit;
Open Relay Checker etc.
http://tests.nettools.ru/
http://www.mxtoolbox.com/blacklists.aspx
IP-калькуляторы
http://ipcalc.dewil.ru
http://www.cotse.com/networkcalculator.html
Monday, June 04, 2007
create_roles.sql
set heading off
set termout off
set linesize 1000
set trimspool on
set verify off
spool roles.sql
select 'create role ' || r.role || ';'
from dba_roles r;
spool off;
exit;
Thursday, May 31, 2007
Bastille
#bastille -b
Проверить можно через vsftpd, если он установлен
На команду #service vsftpd status
Ответ: vsftpd dead but subsys locked
Wednesday, May 30, 2007
Ошибки создания JOBs при импорте схем под system
Написал такой код для удаления этих job-ов, который сработал.
declare
j number;
begin
for j in (select job from dba_jobs where log_user in ('SYSTEM'))
loop begin
DBMS_JOB.REMOVE(j.job);
COMMIT;
end;
end loop;
end;
Tuesday, May 29, 2007
Полезняшки
from v$sql s, v$session u
where s.hash_value = u.sql_hash_value
and sql_text not like '%from v$sql s, v$session u%'
order by u.sid;
Monday, May 28, 2007
Тест с установкой Oracle на CentOS 5
"Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2". Загляните в /etc/redhat-release и поменяйте версию. Подсказку нашел на одной из
ссылок по установке Oracle 10gR2 на Red Hat 5.
Следующая грабля связана с rawdevices, на базе которых поднимается Oracle ASM.
Я не нашел ни /etc/init.d/rawdevices, ни /etc/sysconfig/rawdevices. Помог FAQ How do I add raw device mapping in Red Hat Enterprise Linux 5?. Ну и ссылка на русскую доку по RHEL возможно пригодится
Установил Oracle и создал базу на базе ASM успешно. Все работает, но когда попробовал перелить несколько схем из другой БД при помощи impdp с network_link, но получил ошибки
ORA-31626: job does not exist
ORA-31650: timeout waiting for master process response
.....Думаю, тестировать далее нет смысла - если будет время продолжим тесты, но сейчас я откажусь от CentOS 5 в своих работах с Oracle 10gR2.
dmesg в crontab.root
Написал скриптик-чекер, которые проверял права на диски ежеминутно из крона и высылал на эл.почту уведомление об их изменении. Время от времени такие сообщения начали сыпаться на почту и я заметил в, что /tmp появляется файлик ioscan.out именно в то же время когда прилетает уведомление.
Оказалось, что в /var/spool/cron/crontab.root прописана строка 05,15,25,35,45,55 * * * * /usr/sbin/dmesg - >>/var/adm/messages
man dmesg сказал
dmesg - collect system diagnostic messages to form error log
....If the - argument is specified, dmesg computes (incrementally) the new messages since the last time it was run and places these on the standard output....
Отключение этой строки из крона помогло.
Т.е. crontab -e позволяет управлять лишь /var/spool/cron/crontabs/user, а не всем кроном юзера user.
Wednesday, May 23, 2007
Block change tracking (Сказочно, но проверить!)
Информация о физическом расположении всех изменений, заносится в файл отслеживания изменений change tracking file фоновым процессом CTWR (change tracking writer).
При включенном режиме отслеживания файл измененных блоков автоматически используется RMAN-ом.
Для просмотра включен ли режим отслеживания измененных блоков
sys@ORCL> select status from v$block_change_tracking;
STATUS
----------
DISABLED
Для того, чтобы включить отслеживание измененных блоков без указания имени файла нужно удостовериться установлен ли параметр db_create_file_dest
sys@ORCL> show parameter db_create_file_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string +ASM_DATA
Если параметр включен как в примере выше, то включение без указания имени файла.
sys@ORCL> alter database enable block change tracking;
sys@ORCL> select status,filename from v$block_change_tracking;
STATUS FILENAME
---------- --------------------------------------------------
ENABLED +ASM_DATA/orcl/changetracking/ctf.303.623334603
При выключенном параметре parameter db_create_file_dest
sys@ORCL> alter database enable block change tracking
2> using file '/mydir/rman_change_track.f'
3> REUSE;
Friday, May 18, 2007
/dev/async, см. 393314.1
Database storage is ASM on an HP-UX system.
A disk fails in an ASM diskgroup.
ASM does not recover and I/Os hang indefinitely.
All types of SQL statements requiring I/O can be affected.
Asynchronous I/O is enabled.
Solution
To implement the solution enable minor device number 4 for device /dev/async, i.e.
crw-rw-rw- 1 bin bin 101 0x000004 Sep 12 2006 /dev/async
Major and minor device numbers are assigned to a character device when the device is created with mknod. In order to change minor device number, /dev/async needs to be recreated.
$ /sbin/mknod /dev/async c 101 0x0
Thursday, May 10, 2007
ограничения network_link
- определить есть ли партиционированные таблицы в схеме-источнике можно через
select distinct(owner) from dba_objects where object_type like 'TABLE PARTITION';
или, например, для схем User1, User2, User3
select * from dba_tab_partitions where table_owner in ('USER1','USER2','USER1');
- определить есть ли таблицы xmltype схемы-источника можно через
select distinct(owner) from dba_xml_tables;
Также наблюдается проблема с импортом через network_link данных из таблиц, имеющих столбцы типа LONG. Поэтому перед выполнением импорта лучше сразу определить такие таблицы через
select owner,table_name,column_name,data_type from dba_tab_columns
where owner in ('USER1','USER2','USER1') and data_type='LONG' order by 2;
и сделать импорт этих таблиц через DUMPFILE:
Tuesday, May 08, 2007
Проблема со special файл диска MSA1000 в HP-UX
bash-2.05b# ls -l /dev/rdsk/c20t1*
crw-rw-r-- 1 oracle dba 188 0x141000 May 4 11:58 /dev/rdsk/c20t1d0
crw-rw-r-- 1 oracle dba 188 0x141100 May 4 11:58 /dev/rdsk/c20t1d1
crw-rw-r-- 1 oracle dba 188 0x141200 May 4 11:58 /dev/rdsk/c20t1d2
crw-rw-r-- 1 oracle dba 188 0x141300 May 4 11:58 /dev/rdsk/c20t1d3
crw-rw-r-- 1 oracle dba 188 0x141400 Apr 24 09:29 /dev/rdsk/c20t1d4
crw-rw-r-- 1 oracle dba 188 0x141500 May 4 11:58 /dev/rdsk/c20t1d5
crw-rw-r-- 1 oracle dba 188 0x141600 May 4 11:58 /dev/rdsk/c20t1d6
Было предложено удалить и пересоздать этот special-файл след.образом.
1) удалить special files через
# rmsf /dev/rdsk/c20t1d4
# rmsf /dev/rdsk/c20t1d4
2) Запустить insf, ioscan
И если новый special–файл /dev/rdsk/c20t1d4 не создался, то перечитать по хардварному адресу LUN-а, взятому из ioscan –funC disk
bash-2.05b# ioscan -funC disk
disk 75 0/12/0/0.1.11.0.0.1.4 sdisk CLAIMED DEVICE HP MSA VOLUME
insf -e –H 0/12/0/0.1.11.0.0.1.4
Далее для Oracle ASM изменил владельца и атрибуты полученного special-файла
#chown oracle:dba /dev/rdsk/c20t1d4
#chmod 0664 /dev/rdsk/c20t1d4
И сегодня эта же проблема замечена вновь
bash-2.05b# ls -l /dev/rdsk/c20t1*
crw-rw-r-- 1 oracle dba 188 0x141000 May 8 09:12 /dev/rdsk/c20t1d0
crw-rw-r-- 1 oracle dba 188 0x141100 May 8 09:12 /dev/rdsk/c20t1d1
crw-rw-r-- 1 oracle dba 188 0x141200 May 8 09:11 /dev/rdsk/c20t1d2
crw-rw-r-- 1 oracle dba 188 0x141300 May 8 09:11 /dev/rdsk/c20t1d3
crw-rw-r-- 1 oracle dba 188 0x141400 May 4 12:58 /dev/rdsk/c20t1d4
crw-rw-r-- 1 oracle dba 188 0x141500 May 8 09:11 /dev/rdsk/c20t1d5
crw-rw-r-- 1 oracle dba 188 0x141600 May 8 09:11 /dev/rdsk/c20t1d6
Для временного решения данной проблемы добавил в крон периодическое выполнение скрипта my_checker.sh
# my_checker.sh
#!/usr/bin/sh
RCPNT=my@email.com
LOG=/oracle/product/my_checker.log
LSCMD='ls -l /dev/rdsk/c20t1*'
PATH=/usr/bin:/bin
DATE=`date +'%d/%m/%Y-%H:%M'`
${LSCMD}>> ${LOG}
if grep -i "sys" ${LOG}
then
cat ${LOG}|mailx -s "WARNING from HP-UX at "${DATE} ${RCPNT}
/sbin/init.d/chown_oracle_dba
rm -f ${LOG}
else rm -f ${LOG}
fi
# /sbin/init.d/chown_oracle_dba
#!/usr/bin/sh
PATH=/usr/bin
chown oracle:dba /dev/rdsk/c18t0*
chmod 660 /dev/rdsk/c18t0*
chown oracle:dba /dev/rdsk/c20t1*
chmod 660 /dev/rdsk/c20t1*
Monday, May 07, 2007
alter database open resetliogs;
Для симуляции потери online-logs, удалил их вручуную через 'asmcmd -p' при закрытой базе. При попытке открыть базу после этого ошибка
sys@ORCL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01139: RESETLOGS option only valid after an incomplete database recovery
Делаем recover until cancel (либо until time) и открываем базу.
sys@ORCL> alter database recover until cancel;
sys@ORCL> alter database open resetlogs;
Database altered.
ИЛИ
sys@ORCL> alter database recover automatic until time "to_date('2007-07-05:15:00:00','YYYY-MM-DD:HH24:MI:SS')";
sys@ORCL> alter database open resetliogs;
Database altered.
И ВАЖНО ПОМНИТЬ, что после OPEN RESETLOGS необходимо сразу сделать полный бэкап базы, т.к. все предыдущие потеряют актуальность.
expdp & impdp
1) create directory dpump_dir1 as '/home/oracle/dmp', если нет возможности воспользоваться существующей директорией из select * from dba_directories;
2) expdp system/passwd directory=dpump_dir1 dumpfile=myfile.dmp schemas=user1,user2,user3;
3) Копируем файлик на сервер, где нужна копия схемы в '/home/oracle/dmp2';
4) create directory dpump_dir2 as '/home/oracle/dmp2';
5) impdp system/passwd directory=dpump_dir2 dumpfile=myfile.dmp schemas=user1,user2,user3
ИЛИ через network_link
1) create database link mylink
connect to system identified by passwd
using 'service_name';
2) create directory dpump_dir1 as '/home/oracle/dmp'
3) ipmdp system/passwd directory=dpump_dir1 job_name=dpimp_job1 schemas=user1,user2,user2 network_link=mylink
log-и будут "сыпаться" в файл import.log директории /home/oracle/dmp
Жмем ctrl+c, набираем help и "балдеем" :)
Import> help
Вспоминая, что “сердцем” любой операции Data Pump является мастер-таблица. Это ключ к возможности Data Pump продолжать прерванные задания....
Выйдя из интерактивного режима позже подсоединиться к процессу можно по заданному job_name через $impdp system/passwd attach=dpimp_job1
Имя джобы можно посмотреть через
select * from dba_datapump_jobs;
===========
Через пару дней появилась задача перелить в нерабочее время схему обновленную User1 из одной базы в другую под именем User2. Написал скрипт, запускаемый из at или cron под root'ом.
В листинге далее необходимо добавить '<<' перед первым EOF
#!/bin/sh
RCPNT=me@mydomain.ru
ORACLE_HOME=/oracle/product/10.2.0/OraHome1
ORACLE_SID=mydb
NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251
ORA_NLS10=$ORACLE_HOME/nls/data
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/local/lib:/lib:/usr/lib
PATH=/bin:/sbin:$ORACLE_HOME/bin:$PATH:$HOME/bin
su - oracle -c "sqlplus system/passwd EOF
drop user user2 cascade;
exit;
EOF"
su - oracle -c "impdp system/passwd directory=data_pump_dir job_name=dp_user2 schemas=user1 remap_schema=user1:user2 network_link=mydb2"
DATE=`date +'%d/%m/%Y-%H:%M'`
echo "See logs of User2 dumped at "${DATE}|mail -s "User2 dumped" ${RCPNT}
# Скрипт проверил - работает.
Засады и ограничения:
1) Скрипт-то сработал и перелил схему, но .... оказалось, что при ремаппинге необходимо "возвращать" пароль импортированной схемы... "Чтите доку как грицо". И поэтому добавляем в скриптик (необходимо добавить '<<' перед первым EOF):
su - oracle -c "sqlplus system/passwd EOF
alter user user2 identified by values oldpasswd_of_user;
exit;
EOF"
Иначе user2 не сможет залогиниться под своим паролем.
Если много юзеров, воспользуемся скриптом
set pages 0;
set feedback off;
set termout off;
spool user_pass.sql;
select 'alter user "'||username||'" identified by values '''||password||''';'
from dba_users REM where username in ('USER1','USER2','USER3');
spool off;
exit;
2) Также при импорте СХЕМЫ (а не базы) по network_link не требуется создавать идентичную схему. Схема будет создана автоматом. За исключением того, что если у импортируемой схемы табличное пространство по умолчанию отличается от Users и такого ТС нет на целевой базе, то его необходимо просто создать.
Wednesday, May 02, 2007
к интеграции Oracle с DP 5.1
При смене сервера dp, например, в Linux нужно в /usr/omni/config/cell/cell_server изменить имя сервера на новое и сделать service xinetd restart
к установке Oracle ASM on MSA1000 на HP-UX 11.11
#ioscan
#insf
#ioscan -funC disk (информация об определенных в системе дисках) и эту ссылку Interpreting Hardware Paths.
Данная ссылка поможет определить разные пути к одному и тому же диску, которые c целью обеспечения failover можно будет оформить в виде масок разных failgroup's.
Например,
SQL> alter system set asm_diskstring='/dev/rdsk/c18t0*','/dev/rdsk/c20t1*';
System altered.
SQL> create diskgroup msa1000 normal redundancy
2 failgroup fg1 disk '/dev/rdsk/c18t0*'
3 failgroup fg2 disk '/dev/rdsk/c20t1*';
Diskgroup created.
После установки библиотеки клиента DP и интеграции c Oracle, проверить доступность ленточек можно через
#ioscan -funC tape
Wednesday, April 18, 2007
PHSS_32508 при установке Oracle 10g R2 на HP-UX PA-RISC (64-Bit)
==
Что это за патчи?
PHSS_32508 - patch for ANSI C++ compiler
PHSS_32509 - patch for ANSI C compiler
PHSS_32510 - patch for the ANSI C/C++/fortran optimizer
PHSS_32731 - patch for Serviceguard
==
А и не надо их ставить (для PL/SQL Native вообще должно быть достаточно gcc 3.4.0) - просто игнорируйте
Checking for PHSS_32508; found Not found. Failed <<<<
Checking for PHSS_32509; found Not found. Failed <<<<
Checking for PHSS_32510; found Not found. Failed <<<<
Checking for PHSS_32731; found Not found. Failed <<<<
и продолжайте установку.
Tuesday, April 03, 2007
...telnet в Solaris 10
....для входа на удаленную систему без пароля под пользователем root достаточно набрать: telnet -l "-froot" host. Суть в передаче аргумента опции "-l" программе login без проверки, login в свою очередь интерпретирует "-f" - как вход без запроса пароля.
http://www.opennet.ru/opennews/art.shtml?num=9842
http://sunsolve.sun.com/search/document.do?assetkey=1-26-102802-1
Итак, если вы юзаете релизы Solaris s10u1 и s10u2, то просто отключите telnet.
bash-3.00# inetadm|grep telnet
enabled maintenance svc:/network/telnet:default
bash-3.00# inetadm -d svc:/network/telnet:default
bash-3.00# inetadm|grep telnet
disabled disabled svc:/network/telnet:default
Или через svcadm disable svc:/network/telnet:default
Tuesday, March 27, 2007
Амра, молодец!
Wednesday, March 21, 2007
Мистер Хитклиф? - спросил я
- Мистер Хитклиф? - спросил я.
В ответ он молча кивнул.
- Мистер Локвуд, ваш новый жилец, сэр.
................
Кто-то же читает это? Интересно, когда придет время, когда можно будет также просто в свое удовольствие почитать худ.литературу? :)
Monday, March 19, 2007
Быстро сфлэшбэчиться
Самый частый и быстро исправляемый случай - Юзер по запарке менее чем полчаса назад удалил сообщение из таблицы message.
--
select * from message order by msg_date desc;
delete from message where msg_date > '18.03.2007'
commit;
create table t1 as
select * from message as of
timestamp sysdate-1/24/60*30 where msg_date > '18.03.2007';
select * from t1;
insert into message select * from t1;
--или по тупому затолкать все, что было полчаса назад
insert into message select * from message as of timestamp sysdate-1/24/60*30 where msg_date > '18.03.2007';
commit;
2) ...
Sunday, March 11, 2007
Ссылки пока
http://otn.oracle.com - бес комментов, просто увидев статью Смайли в популярных, подумал, что правильно - удобная ведь ... не было б цены, если б ее проапгрейдить насчет ASM on raw without ASM-libs :)
Stat-утилиты и анализ производительности системы
==
BASH Programming - Introduction HOW-TO
Linux Shell Scripting Tutorial v1.05r3 - A Beginner's handbook
10 Seconds Guide to Bash Shell Scripting
Арх-ра и топология вычислительных систем, с минитестами
Saturday, March 10, 2007
Tuesday, March 06, 2007
Жесть от квесть?
Hi Bair,
I have checked with Konstantin he has explained to your account manager that this document is not ready and is not customer-facing. Hopefully they have explained this to you.
I believe this question has now been answered so I will now close this case down.
Kind Regards,
Ewan
При этом странно то, что этот мануал заявлен у них на сайте как готовый и VAS давно уже продается с этой заявляемой у них на сайте возможностью (проверил сейчас ссылку - они даже не удосужились убрать ее) и ... получается до сих пор никто из их клиентов, приобретших VAS, не пытался настроить заявленную ими аутентификацию в ORACLE из AD при помощи VAS ? ....
Wednesday, February 14, 2007
к VAS tips
Если нужно посмотреть какие AD-учетки попали в кэш VAS нужно дать команду
/opt/quest/libexec/vas/sqlite3 /var/opt/quest/vas/authcache/vas_auth.vdb "select * from authcache;"
Проверил вход в сервер (HP-UX) с его консоли при отключенной сети под своей AD-учеткой, которая есть в его кэше - логон сработал, пользователя AD сервер авторизовал.
Tuesday, February 13, 2007
тест по интеграции Secure Path с Oracle ASM
Стола задачка - создать дисковую группу ASM на базе Virtual device file-ов, созданных Secure Path'ом, доступ к которым обеспечивается multipathing-ом.
Идея реализована - лишь для чистоты эксперимента сегодня
будет проверена доступность данных после краха одного из "путей" SP……путем "вытыкания" одного из шнурочков из порта :)
Вечером: тест с "вытыканием" сработал.
Похоже, это решение будет реплицироваться дальше.
======
HP StorageWorks Enterprise Virtual Array 5000 - Overview
HP StorageWorks Secure Path, Overview & Features
Active/active vs. active/passive arrays
==
LUN, разделы и тома
LUN — это логическая ссылка на часть подсистемы хранения. LUN может указывать на диск, часть диска, целый дисковый массив или раздел дискового массива в подсистеме. Эта логическая ссылка, при ее назначении серверу сети SAN, играет роль физического диска, доступного для записи и чтения данных этим сервером. Применение LUN делает проще управление ресурсами хранилища в сети SAN, поскольку они служат как логическими идентификаторами, для которых можно назначать привилегии доступа и контроля.
Sunday, January 21, 2007
Solaris Volume Manager
http://solaris-center.ru/docs/svm.html
Thursday, January 18, 2007
Oracle - 32-bit или 64-bit?
1) Если Oracle запущен в 32-битном режиме то при обращении к полю address представления v$sql мы увидим 8 символов, а при обращении в 64-битном режиме - 16 символов.
Например, для 32-битного режима:
select address from v$sql where rownum <>
а для 64-битного -
ADDRESS
----------------
78BA1040787F3E44
2) #file $ORACLE_HOME/bin/oracle
Например,
#file /u01/app/oracle/product/10.2.0/Db_1/bin/oracle
/u01/app/oracle/product/10.2.0/Db_1/bin/oracle: ELF 64-bit MSB executable SPARCV 9 Version 1, dynamically linked, not stripped
#file /u01/app/oracle/product/10.2.0/db_1/bin/oracle
/u01/app/oracle/product/10.2.0/db_1/bin/oracle: setuid setgid ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped
==============================================
Определить битовость на HPUX
# getconf KERNEL_BITS
Thursday, December 28, 2006
Скриптец для удаления множества пакаджей Солярки
system SUNWnafos Northern Africa OS Support
system SUNWnafow Northern Africa OW Support
Скриптик помогает создать файлик, при запуске которого можно удалить все эти пакаджи разом.
1) Наваять скрипт 1.pl
#/bin/perl
while (
(undef, my $a, undef)=split;
print "pkgrm -n $a\n";}
2) pkginfo|grep
3) chmod 755 aaa
Запустить aaa
Monday, December 25, 2006
Обход ограничения на 8 символов в логине в HPUX
#touch I_ACCEPT_RESPONSIBILITY_FOR_BYPASSING_SECURITY_CHECKS
Friday, December 22, 2006
FTP upload&download
1) Закачка из из своей винды с сервера БД
Создал два файлика download.bat и ftpdownload.txt
--download.bat
ftp -i -s:ftpdownload.txt
--ftpdownload.txt
open мой хост
oracle
мой пароль
binary
mget /orabackup/dmp
quit
2) Закачка с винды на винду
--ftpdownload.txt
open мой виндовый хост
мое_имя
мой_пароль
binary
get os\1.txt
get os\2.txt
get os\3.txt
get Oracle4Linux\11.txt
get Oracle4Linux\22.txt
quit
По ASM
SQL> select name,state,type,total_mb,free_mb from v$asm_diskgroup; --размер ASM
SQL>select name,path,mode_status,state,disk_number from v$asm_disk; --дисковые группы
Monday, December 11, 2006
dbora - автостарт базы после ребута сервера
1) Исправить /etc/oratab (поменять "N" на "Y")
2) поместить скрипт /etc/init.d/dbora (Листинг ниже)
# ls -l /etc/init.d/dbora
Владельцы и права такие
-rwxr-x--- 1 root dba 785 Mar 14 13:00 /etc/init.d/dbora
3) зарегистрировать сервис
#chkconfig --add dbora
4) проверить наличие сервиса и нужных уровней
# chkconfig --list dbora
dbora 0:on 1:off 2:off 3:on 4:off 5:on 6:on
5) Проверить автостарт базы и листнера перегрузив сервер (init 6). После проверки запущенных сервисов полезно заглянуть в $ORACLE_HOME/shutdown.log (лог остановки базы) и в $ORACLE_HOME/startup.log (лог старта базы).
Листинг /etc/init.d/dbora
==================================
# chkconfig: 0356 99 10
# description: Startup Oracle Instances \
#
ORACLE_OWNER=oracle
ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 ### (замените на свой ORACLE_HOME)
case "$1" in
start)
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart"
touch /var/lock/subsys/dbora
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/isqlplusctl start" ### закомментировать строку, если не нужен isqlplus
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/emctl start dbconsole" ### закомментировать строку, если не нужен EM
;;
stop)
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/isqlplusctl stop" ### закомментировать строку, если не запущен isqlplus
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/emctl stop dbconsole" ### закомментировать строку, если не запущен EM
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut"
rm -f /var/lock/subsys/dbora
su - $ORACLE_OWNER -c "ORACLE_HOME/bin/lsnrctl stop"
;;
*)
echo $"Usage: $prog {start|stop}"
exit 1
esac
exit
=============================================
Если же нужно стартовать базу на базе ASM, то
в /etc/udev/permissions.d/50-udev.permissions
правим атрибуты файлов raw-устройств, напр-р, в разделе # raw devices добавляем raw/*:oracle:dba:0660, удалив (закоментарив) raw/*:root:disk:0660
ram*:root:disk:0660
#raw/*:root:disk:0660
raw/*:oracle:dba:0660
И не забываем в /etc/oratab заменить N на Y
+ASM:/oracle/product/10.2.0/db_1:Y
Friday, December 08, 2006
Новая база
Думаю, успешная поддержка такой базы, потребует бОльших усилий и квалификации. И надеюсь не подведу себя и справлюсь. Надо будет через 2-3 месяца написать сюда отзыв для себя, каково же оно - начало ведения такой базы....
Wednesday, December 06, 2006
На мой "чистый" эл.адрес шлют спам
Это еще один аргумент админу почтового сервера, который утверждает, что ты либо сам "засветил" свой эл.адрес либо переписываешься с зараженными респондентами и получаешь теперь спам. "А вы уверены, что DHA (directory harvest attack) на вашем почтовике блокируются?"
Интересно, почему не добавлено в sendmail, exim и др. по дефолту средство блокировки таким образом атакующих IP-адресов?
Saturday, December 02, 2006
db_recovery_file_dest is same as db_create_file_dest
WARNING: db_recovery_file_dest is same as db_create_file_dest
Т.к. моя база на ASM, то запрос
select name,value from v$parameter where name like '%_file_dest%';
в качестве значения value для упомянутых параметров вернуло "+имя дисковой группы ASM" В моем случае это +DATA....
Думаю нет причин для беспокойств. Но на будущее, очевидно, лучше делать две дисковые группы.
Перед запуском $ORACLE_HOME/bin/asmcmd, чтобы посмотреть на "файловую систему"
необходимо сменить ORACLE_SID через export ORACLE_SID=+ASM.
Иначе ошибка asmcmd: command disallowed by current instance type.
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 года. ... далее
Старое фото: Бухта Золотой Рог
ОСНОВАНИЕ ВЛАДИВОСТОКА