Я нашел ответ на этом руководстве по тому, как установить Oracle 11 г на CentOS 5.3. Я сделал некоторую незначительную тонкую настройку на init сценарии. Ради полноты я добавлю шаги здесь:
/etc/oratab
и измените последнее N
на конфигурационном файле к Y
.Как это:
orcl:/u01/app/oracle/product/11.2.0/dbhome_1:N
К этому:
orcl:/u01/app/oracle/product/11.2.0/dbhome_1:Y
/etc/init.d/dbora
.Это должно иметь это содержание:
#!/bin/sh
# chkconfig: 345 99 10
# description: Oracle auto start-stop script.
#
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORA_HOME.
ORA_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
ORA_OWNER=oracle
if [ ! -f $ORA_HOME/bin/dbstart ]
then
echo "Oracle startup: cannot start"
exit
fi
case "$1" in
'start')
# Start the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$ORA_HOME/bin/emctl start dbconsole"
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME"
;;
'stop')
# Stop the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$ORA_HOME/bin/emctl stop dbconsole"
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME"
;;
esac
Как это:
chmod 750 /etc/init.d/dbora
Как это:
chkconfig --level 345 dbora on
Протестируйте его с /etc/init.d/dbora start
и /etc/init.d/dbora stop
. Обязательно имейте корректный путь на dbora
сценарий.
Следующий сценарий создает случайный файл (вокруг 100M) в общей памяти, вычисляет ее контрольную сумму, затем скопируйте его в данное блочное устройство несколько раз так, чтобы целое устройство было заполнено копиями случайных данных при чтении его снова и вычисления его контрольной суммы, чтобы проверить, соответствует ли это действительно исходному.
Это производит вывод как:
We will create a test data file /dev/shm/testsource with size 100000000.
We will fill the device /dev/sdb (of size 16001036288) with this data (in 160 blocks) and then will check if the data is not corrupted.
This will erase all data in /dev/sdb.
Do you want to continue?
1) yes
2) no
#? 1
Creating test source file... (100000000)
Calculating source checksum...
9f4c31858b3bb1122974a5c9d8ec28c6f71b3367
Writing block 0 ...
Checking block 0 ... ok
Writing block 1 ...
Checking block 1 ... ok
Writing block 2 ...
Checking block 2 ... ok
Это требует dd, blockdev, сокращения, sha1sum,/dev/urandom и/dev/shm. Это требует доступа к устройству (обычно корень). Это было протестировано на Linux 2.6.3x. Это медленно. Можно изменить его, чтобы сделать несколько передач или делать все записи затем вся проверка или ожидать когда-то прежде, чем проверить ("исчезнуть" тест).
#!/bin/bash
TARGETDEVICE=$1
TESTFILE="/dev/shm/testsource"
BLOCKSIZE="100000000"
if [ -b "$1" ]; then
TARGETSIZE=$(blockdev --getsize64 $TARGETDEVICE)
if [ "$TARGETSIZE" -gt 0 ] ; then
let "BLOCKS=$TARGETSIZE / $BLOCKSIZE"
if [ "$BLOCKS" -lt 2 ] ; then
BLOCKSIZE=$TARGETSIZE
BLOCKS=1
fi
fi
echo "We will create a test data file $TESTFILE with size $BLOCKSIZE."
echo "We will fill the device $TARGETDEVICE (of size $TARGETSIZE) with this data (in $BLOCKS blocks) and then will check if the data is not corrupted."
echo "This will erase all data in $TARGETDEVICE."
echo "Do you want to continue?"
select choice in yes no ; do
if [ "$choice" == "yes" ] ; then
echo "Creating test source file... ($BLOCKSIZE)"
dd if=/dev/urandom of=$TESTFILE bs=$BLOCKSIZE count=1 status=noxfer 2> /dev/null
echo "Calculating source checksum..."
CHECKSUM=$(sha1sum $TESTFILE | cut -d " " -f 1)
echo $CHECKSUM
for ((y=0 ; y<$BLOCKS ; y++)) ; do
echo "Writing block $y ..."
dd if=$TESTFILE of=$TARGETDEVICE bs=$BLOCKSIZE count=1 seek=$y status=noxfer 2> /dev/null
echo -n "Checking block $y ... "
TESTCHECKSUM=$(dd if=$TARGETDEVICE bs=$BLOCKSIZE count=1 skip=$y status=noxfer 2> /dev/null | sha1sum | cut -d " " -f 1)
if [ "$CHECKSUM" == "$TESTCHECKSUM" ] ; then
echo "ok"
else
echo "MISMATCH"
echo "(found $TESTCHECKSUM)"
fi
done
rm -f $TESTFILE
break
fi
if [ "$choice" == "no" ] ; then
echo
echo "Operation cancelled"
echo
break
fi
done
else
echo
echo "Missing or wrong target device"
echo "Usage: $0 /dev/device"
echo
fi
Следующий сценарий создает случайный файл (вокруг 100M) в общей памяти, вычисляет ее контрольную сумму, затем скопируйте его в данное блочное устройство несколько раз так, чтобы целое устройство было заполнено копиями случайных данных при чтении его снова и вычисления его контрольной суммы, чтобы проверить, соответствует ли это действительно исходному.
Это производит вывод как:
We will create a test data file /dev/shm/testsource with size 100000000.
We will fill the device /dev/sdb (of size 16001036288) with this data (in 160 blocks) and then will check if the data is not corrupted.
This will erase all data in /dev/sdb.
Do you want to continue?
1) yes
2) no
#? 1
Creating test source file... (100000000)
Calculating source checksum...
9f4c31858b3bb1122974a5c9d8ec28c6f71b3367
Writing block 0 ...
Checking block 0 ... ok
Writing block 1 ...
Checking block 1 ... ok
Writing block 2 ...
Checking block 2 ... ok
Это требует dd, blockdev, сокращения, sha1sum,/dev/urandom и/dev/shm. Это требует доступа к устройству (обычно корень). Это было протестировано на Linux 2.6.3x. Это медленно. Можно изменить его, чтобы сделать несколько передач или делать все записи затем вся проверка или ожидать когда-то прежде, чем проверить ("исчезнуть" тест).
#!/bin/bash
TARGETDEVICE=$1
TESTFILE="/dev/shm/testsource"
BLOCKSIZE="100000000"
if [ -b "$1" ]; then
TARGETSIZE=$(blockdev --getsize64 $TARGETDEVICE)
if [ "$TARGETSIZE" -gt 0 ] ; then
let "BLOCKS=$TARGETSIZE / $BLOCKSIZE"
if [ "$BLOCKS" -lt 2 ] ; then
BLOCKSIZE=$TARGETSIZE
BLOCKS=1
fi
fi
echo "We will create a test data file $TESTFILE with size $BLOCKSIZE."
echo "We will fill the device $TARGETDEVICE (of size $TARGETSIZE) with this data (in $BLOCKS blocks) and then will check if the data is not corrupted."
echo "This will erase all data in $TARGETDEVICE."
echo "Do you want to continue?"
select choice in yes no ; do
if [ "$choice" == "yes" ] ; then
echo "Creating test source file... ($BLOCKSIZE)"
dd if=/dev/urandom of=$TESTFILE bs=$BLOCKSIZE count=1 status=noxfer 2> /dev/null
echo "Calculating source checksum..."
CHECKSUM=$(sha1sum $TESTFILE | cut -d " " -f 1)
echo $CHECKSUM
for ((y=0 ; y<$BLOCKS ; y++)) ; do
echo "Writing block $y ..."
dd if=$TESTFILE of=$TARGETDEVICE bs=$BLOCKSIZE count=1 seek=$y status=noxfer 2> /dev/null
echo -n "Checking block $y ... "
TESTCHECKSUM=$(dd if=$TARGETDEVICE bs=$BLOCKSIZE count=1 skip=$y status=noxfer 2> /dev/null | sha1sum | cut -d " " -f 1)
if [ "$CHECKSUM" == "$TESTCHECKSUM" ] ; then
echo "ok"
else
echo "MISMATCH"
echo "(found $TESTCHECKSUM)"
fi
done
rm -f $TESTFILE
break
fi
if [ "$choice" == "no" ] ; then
echo
echo "Operation cancelled"
echo
break
fi
done
else
echo
echo "Missing or wrong target device"
echo "Usage: $0 /dev/device"
echo
fi
badblocks
? – a CVn 24.07.2012, 11:54badblocks
? – a CVn 24.07.2012, 11:54