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

среда, 14 января 2015 г.

Установка пакетов в Linux

Oracle Linux 7

# cd /etc/yum.repos.d
# wget http://public-yum.oracle.com/public-yum-ol7.repo

Oracle Linux 6

# cd /etc/yum.repos.d
# wget http://public-yum.oracle.com/public-yum-ol6.repo

Oracle Linux 5

# cd /etc/yum.repos.d
# wget http://public-yum.oracle.com/public-yum-el5.repo



rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}(%{ARCH})\n' binutils \
compat-libcap1 \
compat-libstdc++-33 \
gcc \
gcc-c++ \
glibc \
glibc-devel \
ksh \
libgcc \
libstdc++ \
libstdc++-devel \
libaio \
libaio-devel \
make \
sysstat | grep not

yum install binutils -y
yum install compat-libcap1 -y
yum install compat-libstdc++-33 -y
yum install gcc -y
yum install gcc-c++ -y
yum install glibc -y
yum install glibc-devel -y
yum install ksh -y
yum install libgcc -y
yum install libstdc++ -y
yum install libstdc++-devel -y
yum install libaio -y
yum install libaio-devel -y
yum install make -y
yum install sysstat -y





rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}(%{ARCH})\n' compat-libstdc++-33.i686 \
glibc.i686 \
glibc-devel.i686 \
libgcc.i686 \
libstdc++.i686 \
libstdc++-devel.i686 \
libaio.i686 \
libaio-devel.i686 | grep not

yum install compat-libstdc++-33.i686 -y
yum install glibc.i686 -y
yum install glibc-devel.i686 -y
yum install libgcc.i686 -y
yum install libstdc++.i686 -y
yum install libstdc++-devel.i686 -y
yum install libaio.i686 -y
yum install libaio-devel.i686 -y



Опционально можно установить:

yum install libXext -y
yum install libXext.i686 -y
yum install libXtst -y
yum install libXtst.i686 -y
yum install libX11 -y
yum install libX11.i686 -y
yum install libXau -y
yum install libXau.i686 -y
yum install libxcb -y
yum install libxcb.i686 -y
yum install libXi -y
yum install libXi.i686 -y


Для работы с источниками данных ODBC:

yum install unixODBC -y
yum install unixODBC-devel -y


OpenSSH требует, чтобы был установлен пакет zlib-devel,
который содержит заголовочные файлы и библиотеки нужные программам,
использующим библиотеки zlib компрессии и декомпрессии.

yum install zlib-devel -y


пятница, 14 марта 2014 г.

Использование grep

$cat  /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log | grep -i -e ORA-12012 -e ORA-00942

ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist


$grep -i -e ORA-12012 -e ORA-00942  /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist


$egrep -i "ORA-12012|ORA-00942" /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist


$grep 'ORA-12012\|ORA-00942' /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist


$grep -w 'ORA-12012\|ORA-00942' /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist


$egrep -w 'ORA-12012|ORA-00942' /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist


$egrep -wi --color 'ORA-12012|ORA-00942' /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist


$grep 'ORA-12012\|ORA-00942' /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist


$grep -E 'ORA-12012|ORA-00942' /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist


$grep -E 'log# 2 seq# 200'  /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

  Current log# 2 seq# 200 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 200 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771

$grep -E 'log# 2 seq# 20*'  /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

  Current log# 2 seq# 2 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 20 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 23 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 26 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 26 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 29 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 200 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 200 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771

$grep -E 'log# . seq# 20*'  /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

  Current log# 2 seq# 2 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 20 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 3 seq# 21 mem# 0: +DATA/em12c_p/onlinelog/group_3.259.841573771
  Current log# 1 seq# 22 mem# 0: +DATA/em12c_p/onlinelog/group_1.256.841573771
  Current log# 2 seq# 23 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 3 seq# 24 mem# 0: +DATA/em12c_p/onlinelog/group_3.259.841573771
  Current log# 1 seq# 25 mem# 0: +DATA/em12c_p/onlinelog/group_1.256.841573771
  Current log# 2 seq# 26 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 26 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 3 seq# 27 mem# 0: +DATA/em12c_p/onlinelog/group_3.259.841573771
  Current log# 1 seq# 28 mem# 0: +DATA/em12c_p/onlinelog/group_1.256.841573771
  Current log# 2 seq# 29 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 200 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 200 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 3 seq# 201 mem# 0: +DATA/em12c_p/onlinelog/group_3.259.841573771




$grep -E 'log# 2 seq# 20*|ORA-0094*'  /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

  Current log# 2 seq# 2 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 20 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 23 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 26 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 26 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 29 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
  Current log# 2 seq# 200 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
  Current log# 2 seq# 200 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
ORA-00942: table or view does not exist




пятница, 17 января 2014 г.

Расхождение между показаниями 'du' и 'df'



$df -h /u01
Filesystem            Size  Used Avail Use% Mounted on
/dev/cciss/c1d0p8      39G  5.8G   31G  16% /u01

$du -sh /u01
5.2G    /u01



$ /usr/sbin/lsof |grep /u01 |grep deleted |awk '{print $7,$2,$4,$9}' | sort -n | tail

1614001 10421 9w /u01/oracle/admin/art/adump/ora_10421.xml
1691210 17139 9w /u01/oracle/admin/art/adump/ora_17139.xml
1967865 28646 9w /u01/oracle/admin/art/adump/ora_28646.xml
2441753 28344 9w /u01/oracle/admin/art/adump/ora_28344.xml
2629109 5405 9w /u01/oracle/admin/art/adump/ora_5405.xml
3430422 8253 9w /u01/oracle/admin/art/adump/ora_8253.xml
7629320 8288 9w /u01/oracle/admin/art/adump/ora_8288.xml
8703518 8993 9w /u01/oracle/admin/art/adump/ora_8993.xml
104262556 8051 9w /u01/oracle/admin/art/adump/ora_8051.xml
320712351 25992 9w /u01/oracle/admin/art/adump/ora_25992.xml


Далее необходимо перезапустить процесс.

Как временное решение, можно освободить место так:


$ ls -latr /proc/25992/fd/ | grep ora_25992.xml

l-wx------ 1 oracle oinstall 64 Jan 17 10:49 9 -> /u01/oracle/admin/art/adump/ora_25992.xml (deleted)


$ cat /dev/null > /proc/25992/fd/9


$df -h /u01
Filesystem            Size  Used Avail Use% Mounted on
/dev/cciss/c1d0p8      39G  5.5G   31G  16% /u01

$du -sh /u01
5.2G    /u01

вторник, 7 сентября 2010 г.

RAW устройства в RHEL

Список доступных дисков:

# ls /dev/sd*
/dev/sda /dev/sda2
/dev/sda1 /dev/sda3

Здесь sda это весь диск, а sda[1-3] это 3 партиции на sda.

# cat /proc/partitions
major minor #blocks name

8 0 26214400 sda
8 1 104391 sda1
8 2 10482412 sda2
8 3 3148740 sda3

Добавим еще несколько новых дисков:

# ls /dev/sd*
/dev/sda /dev/sda2 /dev/sdc /dev/sde
/dev/sda1 /dev/sda3 /dev/sdb /dev/sdd

# cat /proc/partitions
major minor #blocks name

8 0 26214400 sda
8 1 104391 sda1
8 2 10482412 sda2
8 3 3148740 sda3
8 16 4194304 sdb
8 32 4194304 sdc
8 48 4194304 sdd
8 64 4194304 sde

На каждом из 4 новых дисков, необходимо создать хотя бы по одному
первичному разделу:

# 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.

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-522, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-522, default 522):
Using default value 522

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Аналогично создаем разделы на оставшихся дисках (sdc, sdd, sde)

В итоге получаем следующее:

# cat /proc/partitions
major minor #blocks name

8 0 26214400 sda
8 1 104391 sda1
8 2 10482412 sda2
8 3 3148740 sda3
8 16 4194304 sdb
8 17 4192933 sdb1
8 32 4194304 sdc
8 33 4192933 sdc1
8 48 4194304 sdd
8 49 4192933 sdd1
8 64 4194304 sde
8 65 4192933 sde1

В RHEL существует утилита для работы с raw-устройствами, называемая raw.

Привязка raw-устройств в ручную осуществляется так:

# /bin/raw /dev/raw/raw1 /dev/sdb1
# /bin/raw /dev/raw/raw2 /dev/sdc1
# /bin/raw /dev/raw/raw3 /dev/sdd1
# /bin/raw /dev/raw/raw4 /dev/sde1


Просмотр файлов устройств:

# ls -lR /dev/raw*

Для того чтобы автоматически привязка осуществлялась после перезагрузки системы
в RHEL необходимо выполнить некоторые настройки:

В RHEL до 5 версии, сырые устройства настраивались примерно так:

# vi /etc/sysconfig/rawdevices

/dev/raw/raw1 /dev/sdb1
/dev/raw/raw2 /dev/sdc1
/dev/raw/raw3 /dev/sdd1
/dev/raw/raw4 /dev/sde1


Restart the rawdevices service:

# service rawdevices restart

И чтобы после перезагрузки все сохранилось :

# vi /etc/rc.local

chown oracle:oinstall /dev/raw/raw1
chown oracle:oinstall /dev/raw/raw2
chown oracle:oinstall /dev/raw/raw3
chown oracle:oinstall /dev/raw/raw4
chmod 600 /dev/raw/raw1
chmod 600 /dev/raw/raw2
chmod 600 /dev/raw/raw3
chmod 600 /dev/raw/raw4

В RHEL 5 сопосталение устройств raw выполняется согласно правилам udev.

Для этого в файл /etc/udev/rules.d/60-raw.rules нужно добавить строку:

ACTION=="add", KERNEL=="device_name", RUN+="raw /dev/raw/rawX %N"

Здесь вместо device_name необходимо указать имя исходного блочного устройства,
например /dev/sda1, а вместо X номер (например raw1)

Если известно не имя устройства, а его мажорный (A) и минорный (B) номера, строка будет выглядеть так:

ACTION=="add", ENV{MAJOR}="A", ENV{MINOR}="B", RUN+="raw /dev/raw/rawX %M %m"

Также, для установки разрешений в конце файла добавим правило:

ACTION=="add", KERNEL=="raw*", OWNER=="root", GROUP=="dba", MODE=="0660"


Содержимое файла /etc/udev/rules.d/60-raw.rules должно выглядеть примерно так:

ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw4 %N"

# set permissions on these disks for the Oracle Owner user.
ACTION=="add", KERNEL=="raw*", OWNER=="oracle", GROUP=="oinstall", MODE=="0660"


Если от старой системы в файле /etc/sysconfig/rawdevices (в RHEL) накопилось
большое количество raw-устройств, сконвертировать их можно с помощью скрипта:

#!/bin/sh

grep -v "^ *#" /etc/sysconfig/rawdevices | grep -v "^$" | while read dev major minor ; do
if [ -z "$minor" ]; then
echo "ACTION==\"add\", KERNEL==\"${major##/dev/}\", RUN+=\"/usr/bin/raw $dev %N\""
else
echo "ACTION==\"add\", ENV{MAJOR}==\"$major\", ENV{MINOR}==\"$minor\", RUN+=\"/usr/bin/raw $dev %M %m\""
fi
done


Проверка правил udev:

# udevtest /block/sdb/sdb1 | grep raw
main: run: '/bin/raw /dev/raw/raw1 /dev/.tmp-8-17'

# udevtest /class/raw/raw1 | grep mode
udev_node_add: creating device node '/dev/raw/raw1', major = '162',
minor = '1', mode = '0660', uid = '500', gid = '500'

Чтобы без перезагрузки применить эти правила, выполните команду:

# udevtrigger


После перезапуска udev убедиться, что устройства создались, можно следующим образом:

# raw -qa
/dev/raw/raw1: bound to major 8, minor 17
/dev/raw/raw2: bound to major 8, minor 33
/dev/raw/raw3: bound to major 8, minor 49
/dev/raw/raw4: bound to major 8, minor 65


Сервис udev должен быть запущен

# start_udev
Starting udev: [ OK ]


Проверим, можем ли мы из под oracle что-то писать на сырое устройство можно так:

$ dd if=/dev/zero of=/dev/raw/raw1 bs=1М count=100


Как альтернативный вариант, для установки разрешений можно попробовать создать отдельный файл:

# vi /etc/udev/rules.d/99-raw-perms.rules

KERNEL=="raw[1-4]", MODE="0640", GROUP="oinstall", OWNER="oracle"

Лучше использовать UUID

$ more /etc/udev/rules.d/60-raw.rules
# Enter raw device bindings here.
#
# An example would be:
# ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1 %N"
# to bind /dev/raw/raw1 to /dev/sda, or
# ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"
# to bind /dev/raw/raw2 to the device with major 8, minor 1.

ACTION=="add", KERNEL=="sd*[1]", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="3600a0b8000263e8c000014a44c9bc710", RUN+="/bin/raw /dev/raw/raw1 %N" SYMLINK+="redoa"
ACTION=="add", KERNEL=="sd*[1]", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="3600a0b8000263ce2000015584c9bd23f", RUN+="/bin/raw /dev/raw/raw2 %N" SYMLINK+="redob"
ACTION=="add", KERNEL=="sd*[1]", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="3600a0b8000263ce2000015594c9bd3cd", RUN+="/bin/raw /dev/raw/raw3 %N" SYMLINK+="data"
ACTION=="add", KERNEL=="sd*[1]", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="3600a0b8000263e8c000014a64c9bc942", RUN+="/bin/raw /dev/raw/raw4 %N" SYMLINK+="fra"

# set permissions on these disks for the Oracle Owner user.
ACTION=="add", KERNEL=="raw[1-4]", OWNER=="oragrid", GROUP=="asmdba", MODE=="0660"



Команда devlabel

# devlabel add -s /dev/raw/raw1 -d /dev/sdb1 --uid `id -u oracle` --gid `id -g oracle`
RAW: /dev/raw/raw1 -> /dev/sdb1
Added /dev/raw/raw1 to /etc/sysconfig/devlabel

# raw -qa
/dev/raw/raw1: bound to major 8, minor 17.


Настройка  сырых  устройств  в RHEL 5 и RHEL 6:

# ls -la /dev/sd*
brw-rw---- 1 root disk 8,  0 Feb 26 10:01 /dev/sda
brw-rw---- 1 root disk 8,  1 Feb 26 10:01 /dev/sda1
brw-rw---- 1 root disk 8,  2 Feb 26 10:01 /dev/sda2
brw-rw---- 1 root disk 8, 16 Feb 26 12:45 /dev/sdb
brw-rw---- 1 root disk 8, 17 Feb 26 12:46 /dev/sdb1
brw-rw---- 1 root disk 8, 32 Feb 26 10:01 /dev/sdc
brw-rw---- 1 root disk 8, 48 Feb 26 12:46 /dev/sdd
brw-rw---- 1 root disk 8, 49 Feb 26 12:47 /dev/sdd1


# cat /proc/partitions
major minor  #blocks  name

   8       16  143247360 sdb
   8       17  143243541 sdb1
   8        0  143247360 sda
   8        1     512000 sda1
   8        2  142734336 sda2
   8       48  143247360 sdd
   8       49  143243541 sdd1
   8       32  143247360 sdc
 252        0   52428800 dm-0
 252        1   12369920 dm-1
  11        0    1048575 sr0
 252        2   77934592 dm-2
   8       32  143247360 sdc


fdisk /dev/sdc

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.

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-522, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-522, default 522):
Using default value 522

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

# cat /proc/partitions
major minor  #blocks  name

   8       16  143247360 sdb
   8       17  143243541 sdb1
   8        0  143247360 sda
   8        1     512000 sda1
   8        2  142734336 sda2
   8       48  143247360 sdd
   8       49  143243541 sdd1
   8       32  143247360 sdc
   8       33  143243541 sdc1
 252        0   52428800 dm-0
 252        1   12369920 dm-1
  11        0    1048575 sr0
 252        2   77934592 dm-2


Для  RHEL 6:


#/sbin/scsi_id -g -u -d /dev/sdc

SSun_Data_D0A07736


Create file /etc/udev/rules.d/99-oracle-asmdevices.rules with this 2 lines

KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent",
RESULT=="SSun_Data_D0A07736", NAME="asm-disk1", OWNER="oragrid", GROUP="asmadmin", MODE="0660"


#udevadm test /block/sdc/sdc1

#udevadm control --reload-rules

#start_udev


Для  RHEL 5

#ls -la /dev/asm-*

brw-rw---- 1 oragrid asmadmin 8, 33 Feb 26 15:15 /dev/asm-disk1


#/sbin/scsi_id -g -u -s /block/sdc
SSun_Data_D0A07736

# vi /etc/udev/rules.d/99-oracle-asmdevices.rules

KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent",
RESULT=="SSun_Data_D0A07736", NAME="asm-disk1", OWNER="oragrid", GROUP="asmadmin", MODE="0660"

#udevtest /block/sdc/sdc1

#udevtrigger

# start_udev
Starting udev: [  OK  ]
#

# ls -l /dev/asm-*
brw-rw---- 1 oragrid asmadmin 8, 33 Mar  6 07:56 /dev/asm-disk1
#


вторник, 8 декабря 2009 г.

Подготовка RHEL6/7 Для Oracle 12c

Note 1961997.1


Установка пакетов:


yum -y install binutils.x86_64 \
compat-libcap1.x86_64 \
compat-libstdc++-33.i686 \
compat-libstdc++-33.x86_64 \
gcc.x86_64 \
gcc-c++.x86_64 \
glibc.i686 \
glibc.x86_64 \
glibc-devel.i686 \
glibc-devel.x86_64 \
ksh.x86_64 \
libaio.i686 \
libaio.x86_64 \
libaio-devel.i686 \
libaio-devel.x86_64 \
libgcc.i686 \
libgcc.x86_64 \
libstdc++.i686 \
libstdc++.x86_64 \
libstdc++-devel.i686 \
libstdc++-devel.x86_64 \
libXi.i686 \
libXi.x86_64 \
libXtst.i686 \
libXtst.x86_64 \
make.x86_64 \
sysstat.x86_64 \



Для устранения ошибки Bug 21151912 -> Doc ID 2062336.1

Installation of 12.1.0.2 Oracle Database Server/Client on RHEL 7/OL7
reports pre-requisite package 'compat-libstdc++' missing. (Doc ID 2062336.1)


yum -y install compat-libstdc++-33.x86_64 \
compat-libstdc++-33.i686


ALERT: Setting RemoveIPC=yes on Redhat 7.2 Crashes ASM and Database Instances


as Well as Any Application That Uses a Shared Memory Segment (SHM) or Semaphores (SEM) (Doc ID 2081410.1)

Set RemoveIPC=no in /etc/systemd/logind.conf

Set RemoveIPC=no in /etc/systemd/logind.conf
Reboot the server or restart systemd-logind as follows:

$ su - root
$ systemctl daemon-reload
$ systemctl restart systemd-logind


Смотрим размеры физической памяти и Swap


# grep MemTotal /proc/meminfo
# grep SwapTotal /proc/meminfo


Установка параметров ядра


Общий объём доступной разделяемой памяти (в страницах)


kernel.shmall

Max shared memory = shmall * page_size (так будет в байтах)

Размер страницы:

$ getconf PAGE_SIZE
4096

Например, мы хотим под SGA выделить 10GB

10*1024*1024*1024=107374182240 (10Gb in bytes)
107374182240/4096=2621440
kernel.shmall = 2621440 

kernel.shmall рекомендуется выставлять в максимальное значение
(т.е. равным размеру физической памяти в системе в страницах)
Минимальное рекомендованное значение kernel.shmall = 6291456


Например, в системе 64GB RAM, выделяем всю под shared memory
Если размер страницы равен 4096 Bytes, то kernel.shmall вычисляется так:

64 Gb
64 * 262144 = 16777216

65536 Mb
65536 * 256 = 16777216

67108864 Kb
67108864 / 4 = 16777216.0

68719476736 Bytes
68719476736 / 4096 = 16777216.0

kernel.shmall = 16777216

Закомментируем существующий параметр:
sed -ie 's/^kernel.shmall/#kernel.shmall/g' /etc/sysctl.conf

Вычисляем и устанавливаем новое значение:
MemTotal Kb / 4
echo "kernel.shmall = $(awk '$1 == "MemTotal:"{tmp=$2/4; printf"%0.0f\n", tmp}' /proc/meminfo)" >> /etc/sysctl.conf

Применить параметры ядра

$ sysctl -p


Максимальный размер сегмента разделяемой памяти (в байтах)


kernel.shmmax 

Рекомендуется выставлять 1/2 от размера физической памяти в системе (в байтах)

К примеру для 64 Гб это будет:

64*1024*1024*1024=68719476736 (64Gb in bytes)
68719476736/2=34359738368
kernel.shmmax = 34359738368


64 Gb
64 * 536870912  = 34359738368

65536 Mb
65536 * 524288  = 34359738368

67108864 Kb
67108864 * 512  = 34359738368

68719476736 Bytes
68719476736 / 2 = 34359738368
                 

kernel.shmmax  = 34359738368

Закомментируем существующий параметр:
sed -ie 's/^kernel.shmmax/#kernel.shmmax/g' /etc/sysctl.conf

Вычисляем и устанавливаем новое значение:
MemTotal Kb * 512
echo "kernel.shmmax = $(awk '$1 == "MemTotal:"{tmp=$2*512; printf"%0.0f\n", tmp}' /proc/meminfo)" >> /etc/sysctl.conf

Применить параметры ядра

$ sysctl -p


Максимальное число сегментов разделяемой памяти для всей системы


kernel.shmmni 

Рекомендуется установить kernel.shmmni  =  4096

Применить параметры ядра

$ sysctl -p


Рекомендуемые значения других параметров ядра следующие:


kernel.sem = 250 32000 100 128
fs.file-max = 6815744
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
kernel.panic_on_oops = 1


Устанавливаем

cat << EOF >> /etc/sysctl.conf
kernel.shmmni = 4096
net.ipv4.ip_local_port_range = 9000 65535
kernel.sem = 250 32000 100 128
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048576
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.panic_on_oops = 1
EOF


Применить параметры ядра

$ sysctl -p


Сетевые параметры:


Устранить обрывы связи для долго работающих запросов
при использовании фаерволов между БД и клиентом

Добавить в /etc/sysctl.conf

cat >> /etc/sysctl.conf << EOF
###########################################
### For CheckPoint Timeout ################
###########################################
net.ipv4.tcp_keepalive_intvl = 75
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_time = 2700
###########################################
EOF


Применить параметры ядра

$ sysctl -p



Настройка Shell Limits:


Убедитесь, что последняя версия PAM загружена в
/etc/pam.d/login file

cat > /etc/pam.d/login << EOF
#+-------------------------------+
#| Setting parameters for Oracle |
#+-------------------------------+
session required pam_limits.so
EOF


Set Shell limits for oracle users:

cat > /etc/security/limits.d/70-oracle.conf << EOF
#+-------------------------------+
#| Setting parameters for Oracle |
#+-------------------------------+
oracle soft nofile 131072
oracle hard nofile 131072
oracle soft nproc 131072
oracle hard nproc 131072
# For 64 Gb Installed : 67108864=64*1024*1024 (размер в Kb)
oracle soft memlock 67108864
oracle hard memlock 67108864
#
EOF


Set Shell limits for root users:


cat > /etc/security/limits.d/70-root.conf << EOF
#+-------------------------------------+
#| Setting limits root [for Oracle DB] |
#+-------------------------------------+
root soft nofile 131072
root hard nofile 131072
root soft nproc 131072
root hard nproc 131072
# For 64 Gb Installed : 67108864=64*1024*1024 (размер в Kb)
root soft memlock 67108864
root hard memlock 67108864
#
EOF



Проверяем:

su - oracle -c 'id; ulimit -a'
su - root -c 'id; ulimit -a'




Настройка /dev/shm


Для сервера с RAM=64 GB

su - root
df -h /dev/shm/
umount /dev/shm
mount -t tmpfs shmfs -o size=64g /dev/shm

Добавить строчку в /etc/fstab следующего содержания:

cat >> /etc/fstab <
tmpfs /dev/shm tmpfs size=64g 0 0
EOF


Требование к размеру файловых систем


/tmp -> требуется минимум 1 GB


Установить точное время


ntpdate omega.local
Настройка NTP daemon
Настроить запуск демона с параметром -x :
ntpd -u ntp:ntp -p /var/run/ntpd.pid -x

Настройка разрешения имен


В файле /etc/resolv.conf добавить domain omega.local

Installing the cvuqdisk Package for Linux (RAC only)


rpm -qi cvuqdisk
rpm -iv cvuqdisk-1.0.9-1.rpm


Disabling Transparent HugePages


Необходимо выбрать наиболее удобный вариант

Настройка загрузчика

в /boot/grub/grub.conf -> добавить опцию transparent_hugepage=never

kernel /vmlinuz-2.6.32-504.1.3.el6.x86_64 ro root=LABEL=/ transparent_hugepage=never



Скрипт автозапуска

В файле /etc/rc.local добавить скрипт отключение Transparent HugePages

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi


Начинася с Oracle Linux 7 в ядер UEK, transparent hugepages отключены по умолчанию,
никаких действий принимать не надо!



Настройка Hugepages


Oracle может использовать Hugepages для размещения SGA.
Hugepages не вытесняются в swap.
Процессор уменьшит число трансляций виртуальных адресов памяти в физические.
Кеш CPU Translation Lookaside Buffers (TLB) будет реже устаревать.

При использовании больших страниц памяти shared memory для СУБД настраивать не нужно.
Но если используется ASM, то для его экземпляра зарезервируем 1024 МБ shared memory,
поэтому размер /dev/shm быть не менее  1024 МБ

 $ sqlplus / as sysasm

Для версии 11.2.0.3 и ниже (Note 265633.1)  минимально необходимые параметры:
alter system set memory_target    = 320M scope=spfile sid='*';
alter system set shared_pool_size = 128M scope=spfile sid='*';
alter system set large_pool_size  =  64M scope=spfile sid='*';

Для версии 11.2.0.4 и выше (Note 1536039.1 и Note 1982132.1):
alter system set memory_target    = 1024M scope=spfile sid='*';
alter system set shared_pool_size =  128M scope=spfile sid='*';
alter system set large_pool_size  =   64M scope=spfile sid='*';

Для высоконагруженных многопроцессорных систем (Note 437924.1) 
Для версии 11.2.0.3 и выше:
alter system set memory_max_target= 2048M  scope=spfile sid='*';
alter system set memory_target    = 1536M  scope=spfile sid='*';
alter system set shared_pool_size = 128M   scope=spfile sid='*';
alter system set large_pool_size  = 64M    scope=spfile sid='*';



Необходимо отключить автоматическое управление памятью AMM
alter system set memory_target=0

Количество больших страниц памяти задаётся параметром ядра vm.nr_hugepages.
Можно динамически изменять количество hugepages, но лучше резервировать их при загрузке ОС.


Информацию об использовании hugepages можно узнать из /proc/meminfo:

bash-4.2$ grep Huge /proc/meminfo
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
bash-4.2$


Покажет
- сколько всего выделено страниц
- сколько свободных страниц
- сколько зарезервированных страниц
- размер одной страницы памяти



Рассчитаем необходимое количество страниц:

На сервере 64 Gb
Параметры экземпляра такие:

memory_max_target    = 61440M
memory_target        = 61440M
sga_max_size         = 36864M
sga_target           = 36864M

pga_aggregate_target = 24576M


Если размер страницы равен 2 Mb (2048 Kb)
то количество страниц расчитываем так:


для sga_max_size = 36 Gb

36 Gb
36 * 512               = 18432

36864 Mb
36864 * 0.5            = 18432

37748736 Kb
37748736 / 2048        = 18432

38654705664 Bytes
38654705664 / 2097152  = 18432


Необходимо выделить небольшой запас свободных страниц hugepages

18432 увеличим до 18450

vm.nr_hugepages = 18450

Проверьте настройку лимитов


/etc/security/limits.conf

Пользователю, от которого запускается СУБД разрешено блокировать память такого размера

oracle soft memlock 67108864
oracle hard memlock 67108864

$ ulimit -l

Отключите AMM


SQL> alter system set memory_target=0;
System altered.

SQL> alter system set memory_max_target=0;
System altered.

Установите рассчитанное значение параметру  vm.nr_hugepages


Под root

# vi /etc/sysctl.conf
vm.nr_hugepages = 18450


# sysctl -p
# sysctl vm.nr_hugepages=18450

shutdown immediate;

# reboot


Проверяем:

# grep ^Huge /proc/meminfo


Примечание:


Есть такой bash-скрипт  (MOS) note 401749.1
Который рассчитывает рекомендуемое значение vm.nr_hugepages.


#!/bin/bash
#
# hugepages_settings.sh
#
# Linux bash script to compute values for the
# recommended HugePages/HugeTLB configuration
#
# Note: This script does calculation for all shared memory
# segments available when the script is run, no matter it
# is an Oracle RDBMS shared memory segment or not.
# Check for the kernel version
KERN=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'`
# Find out the HugePage size
HPG_SZ=`grep Hugepagesize /proc/meminfo | awk {'print $2'}`
# Start from 1 pages to be on the safe side and guarantee 1 free HugePage
NUM_PG=1
# Cumulative number of pages required to handle the running shared memory segments
for SEG_BYTES in `ipcs -m | awk {'print $5'} | grep "[0-9][0-9]*"`
do
   MIN_PG=`echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q`
   if [ $MIN_PG -gt 0 ]; then
      NUM_PG=`echo "$NUM_PG+$MIN_PG+1" | bc -q`
   fi
done
# Finish with results
case $KERN in
   '2.4') HUGETLB_POOL=`echo "$NUM_PG*$HPG_SZ/1024" | bc -q`;
          echo "Recommended setting: vm.hugetlb_pool = $HUGETLB_POOL" ;;
   '2.6') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
    *) echo "Unrecognized kernel version $KERN. Exiting." ;;
esac
# End 



$ chmod u+x ./hugepages_setting.sh 
$ ./hugepages_settings.sh
.
.
.
Recommended setting: vm.nr_hugepages = nnnn




пятница, 8 мая 2009 г.

Linux cpu usage and memory

# mpstat 1 10

# ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10


#ps -eo pcpu,pid,user,args,pmem | sort -k 1 -r | head -10


for i in `seq 1 10`; do ps -eo pcpu,pid,user,args,pmem | sort -k 1 -r | head -10; sleep 1; clear; done

четверг, 19 февраля 2009 г.

Настройка Multipath on Linux

Подготовить ASM disk для Grid Infrastructure


http://docs.oracle.com/database/121/LADBI/app_manual.htm#LADBI8065
http://docs.oracle.com/cd/E11882_01/install.112/e47689/pre_install.htm#LADBI1202

Note: Oracle recommends that you create a single whole-disk PRIMARY partition
on each disk to use.

$ fdisk /dev/sdc

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p < -  Enter p
Partition number (1-4): 1
First cylinder (1-16709, default 1): 1
Last cylinder, +cylinders or +size{K,M,G} (1-16709, default 16709): 16709

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.


$ ls -al /dev/sdc*
brw-rw---- 1 root disk 8, 32 Jan 29 16:40 /dev/sdc
brw-rw---- 1 root disk 8, 33 Jan 29 16:40 /dev/sdc1

$ partprobe -s /dev/sdc

/dev/sdc: msdos partitions 1


Настройка ПО Multipath



To work on VMware Fusion, set the following on the .vmx file;
without this entry, the scsi_id command does not return any values by default.
disk.EnableUUID = "TRUE"

# su - root
# yum install device-mapper-multipath
# mpathconf
# mpathconf --enable --user_friendly_names y --with_module y --with_multipathd y --with_chkconfig y

# multipath -ll


mpathc (36000c298b7d4d54eb873153d6254bcae) dm-4 VMware,Virtual disk
size=128G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 2:0:2:0 sdc 8:32 active ready running
mpathb (36000c2914cdc65086c8f424e512044ec) dm-3 VMware,Virtual disk
size=128G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 2:0:1:0 sdb 8:16 active ready running


Ignoring Local Disks when Generating Multipath Devices


/dev/sda is the internal disk
/dev/sdb is the internal disk


# su – root

# /lib/udev/scsi_id --whitelisted --device=/dev/sda
36000c291ecbd84c5b584072ef62c2b0b

#  /lib/udev/scsi_id --whitelisted --device=/dev/sdb
36000c2914cdc65086c8f424e512044ec

vi /etc/multipath.conf


blacklist {
  wwid 36000c291ecbd84c5b584072ef62c2b0b
  wwid 36000c2914cdc65086c8f424e512044ec
}

# service multipathd reload

Create Alias


# su - root
# /lib/udev/scsi_id --whitelisted --device=/dev/sdc

36000c298b7d4d54eb873153d6254bcae

# vi /etc/multipath.conf
multipaths {
multipath {
  wwid 36000c298b7d4d54eb873153d6254bcae
  alias DATA_disk01
  }
}

# service multipathd reload

# multipath –ll


DATA_disk01 (36000c298b7d4d54eb873153d6254bcae) dm-4 VMware,Virtual disk
size=128G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 2:0:2:0 sdc 8:32 active ready running

List config Multipath


# cat /etc/multipath.conf

defaults {
        user_friendly_names yes
        find_multipaths     yes
}

multipaths {
multipath {
  wwid 36000c298b7d4d54eb873153d6254bcae
  alias DATA_disk01
  }
}

blacklist {
  wwid 36000c291ecbd84c5b584072ef62c2b0b
  wwid 36000c2914cdc65086c8f424e512044ec
}


# ls -al /dev/mapper

total 0
drwxr-xr-x  2 root root     160 Jan 29 23:12 .
drwxr-xr-x 20 root root    4280 Jan 29 23:12 ..
crw-rw----  1 root root 10, 236 Jan 29 17:45 control
lrwxrwxrwx  1 root root       7 Jan 29 23:13 DATA_disk01 -> ../dm-4
lrwxrwxrwx  1 root root       7 Jan 29 23:13 DATA_disk01p1 -> ../dm-5 -> Наш ASM диск
lrwxrwxrwx  1 root root       7 Jan 29 17:45 orabinvg-orabinlv -> ../dm-2
lrwxrwxrwx  1 root root       7 Jan 29 17:45 vg_dc1oel67-lv_root -> ../dm-0
lrwxrwxrwx  1 root root       7 Jan 29 17:45 vg_dc1oel67-lv_swap -> ../dm-1


Установка ASMLib


http://www.oracle.com/technetwork/server-storage/linux/asmlib/ol6-1709075.html
http://docs.oracle.com/database/121/LADBI/app_manual.htm#LADBI8065


$ su - root
$ yum install kmod-oracleasm
$ yum install oracleasm-support
$ download http://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.12-1.el6.x86_64.rpm
$ rpm -Uhv /tmp/oracleasmlib-2.0.12-1.el6.x86_64.rpm


-- Проверка

$ rpm -qa | grep asm
oracleasmlib-2.0.12-1.el6.x86_64
oracleasm-support-2.1.8-1.el6.x86_64
kmod-oracleasm-2.0.8-6.el6_7.x86_64


Configure ASMLib using the following command

$ /usr/sbin/oracleasm configure -i

Default user to own the driver interface []:        oracle
Default group to own the driver interface []:       oinstall
Start Oracle ASM library driver on boot (y/n) [n]:  y
Scan for Oracle ASM disks on boot (y/n) [y]:        y
Writing Oracle ASM library driver configuration:    done

Within /etc/sysconfig/oracleasm,
set the ORACLEASM_SCANORDER and ORACLEASM_SCANEXCLUDE parameters as follows:

# ORACLEASM_SCANORDER: Matching patterns to order disk scanning
ORACLEASM_SCANORDER="dm"

# ORACLEASM_SCANEXCLUDE: Matching patterns to exclude disks from scan
ORACLEASM_SCANEXCLUDE="sd"


Run the following oracleasm command to ensure that oracleasm is enabled.


# /etc/init.d/oracleasm enable

Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver:                     [  OK  ]
Scanning the system for Oracle ASMLib disks:               [  OK  ]

# /usr/sbin/oracleasm scandisks
# /usr/sbin/oracleasm listdisks


Создать ASM Disk


--Run the following oracleasm command to create and label all Oracle related volumes
--as an ASM disk. The example below creates an ASM disk labeled DATA_DISK01_P1.

# su - root
# /usr/sbin/oracleasm createdisk DATA_DISK01_P1 /dev/mapper/DATA_disk01p1

# /usr/sbin/oracleasm querydisk /dev/mapper/DATA_disk01p1

Device "/dev/mapper/DATA_disk01p1" is marked an ASM disk with the label "DATA_DISK01_P1"

# ls -al /dev/oracleasm/disks/*
brw-rw---- 1 oracle oinstall 252, 3 Jan 29 23:59 /dev/oracleasm/disks/DATA_DISK01_P1


How to map device name to ASMLIB disk (Doc ID 1098682.1)

su - root

#!/bin/bash
for asmlibdisk in `ls /dev/oracleasm/disks/*`
  do
    echo "ASMLIB disk name: $asmlibdisk"
    asmdisk=`kfed read $asmlibdisk | grep dskname | tr -s ' '| cut -f2 -d' '`
    echo "ASM disk name: $asmdisk"
    majorminor=`ls -l $asmlibdisk | tr -s ' ' | cut -f5,6 -d' '`
    device=`ls -l /dev | tr -s ' ' | grep -w "$majorminor" | cut -f10 -d' '`
    echo "Device path: /dev/$device"
done



ASMLIB disk name: /dev/oracleasm/disks/DATA_DISK01_P1
ASM disk name: DATA_DISK01_P1
Device path: /dev/dm-4