qlaster
CREATE TABLE CUSTOMER
(ID NUMBER(5,0) NOT NULL ENABLE,
CAPTION VARCHAR2(100 BYTE),
DESCRIPTION VARCHAR2(100 BYTE),
CTLNAME VARCHAR2(100 BYTE),
CONSTRAINT PK_ACCBOOK PRIMARY KEY (ID));
вторник, 31 марта 2015 г.
четверг, 26 марта 2015 г.
[успешно] LibreOffice для OEL
Загрузка, распаковка и установка:
cd /tmpЕсли процесс завершится с ошибкой: "Package libobasis4.4-pyuno-4.4.1.2-2.x86_64.rpm is not signed", тогда можно:
wget http://download.documentfoundation.org/libreoffice/stable/4.4.1/rpm/x86_64/LibreOffice_4.4.1_Linux_x86-64_rpm.tar.gz
tar -zxvf LibreOffice_4.4.1_Linux_x86-64_rpm.tar.gz
cd LibreOffice_4.4.1.2_Linux_x86-64_rpm/RPMS
yum localinstall *.rpm
yum localinstall *.rpm --nogpgcheck
среда, 25 марта 2015 г.
Sybase IDE
- dictman;
- Oracle SQL Developer с установленным JDBC-драйвером (не удалось до конца разобраться, как настроить подключение к локальному серверу);
- "родной" "Interactive SQL" ("C:\Program Files (x86)\Sybase\SQL Anywhere 7\win32\dbisqlg.exe")
- Oracle SQL Developer с установленным JDBC-драйвером (не удалось до конца разобраться, как настроить подключение к локальному серверу);
- "родной" "Interactive SQL" ("C:\Program Files (x86)\Sybase\SQL Anywhere 7\win32\dbisqlg.exe")
вторник, 24 марта 2015 г.
Виртуальные нюансы
---
23.04.2012
Разобраться с тонкостями и нюансами работы с HASP (USB-ключи Guardian, Sentinel, хаспы для 1С итд итп) и FDD (floppy disk drive) на виртуальных серверах (Hyper-V, VMWare ESXi, итд итп).
---
24.03.2015
Успешно проверена работы USB-HASP Sentinel UltraKey:
- ОС хоста: Oracle Enterprise Linux 5.11 x64 (+ драйвера Sentinel x64);
- ПО виртуализации: VirtualBox 4.3.24;
- ОС виртуальной машины: Windows XP SP3 x32 + Java 1.7u51 x32 (+ драйвера Sentinel x32).
---
23.04.2012
Разобраться с тонкостями и нюансами работы с HASP (USB-ключи Guardian, Sentinel, хаспы для 1С итд итп) и FDD (floppy disk drive) на виртуальных серверах (Hyper-V, VMWare ESXi, итд итп).
---
24.03.2015
Успешно проверена работы USB-HASP Sentinel UltraKey:
- ОС хоста: Oracle Enterprise Linux 5.11 x64 (+ драйвера Sentinel x64);
- ПО виртуализации: VirtualBox 4.3.24;
- ОС виртуальной машины: Windows XP SP3 x32 + Java 1.7u51 x32 (+ драйвера Sentinel x32).
---
понедельник, 23 марта 2015 г.
Выпадение крови
Диалог мамы с сыном:
— Иди на тротуар, а то машина тебя задавит.
— И тогда из меня выпадет кровь?
— Иди на тротуар, а то машина тебя задавит.
— И тогда из меня выпадет кровь?
Sentinel Protection Server для Linux
После установки драйверов и сервера за утилитами следует ходить сюда:
/opt/sentinel
/opt/safenet_sentinel
--
Если пытаешься перенести лиц.ГЗ на Linux x64, то остановись, ибо Поддержка ГЗ-2010, #687. Только x32.
/opt/sentinel
/opt/safenet_sentinel
--
Если пытаешься перенести лиц.ГЗ на Linux x64, то остановись, ибо Поддержка ГЗ-2010, #687. Только x32.
вторник, 17 марта 2015 г.
ousers.sh
cat ousers.sh
#!/bin/bash
# 17.03.2015
# Selecting usernames and their statuses from dba_users (ORACLE)
daScr=/tmp/osu_120629.sql
echo SET PAGESIZE 0\;>$daScr
if [ -z $1 ]; then # Выполнять этот блок, если скрипт запущен без ключей.
echo select username \|\| case when account_status=\'OPEN\' then \'\' else \' \(\' \|\| account_status \|\| \'\)\' end case from dba_users>>$daScr
echo where default_tablespace=\'USERS\'>>$daScr
echo and username not in \(\'APEX_PUBLIC_USER\',\'ORACLE_OCM\'\,\'SPATIAL_CSW_ADMIN_USR\',\'SPATIAL_WFS_ADMIN_USR\'\) --Исключаем из выборки пользователей, которые создаются по-умолчанию в процессе установки и конфигурирования Oracle>>$daScr
echo and username like \'%=_%\' escape \'=\' -- Включаем в выборку только тех пользователей, у которых в имени есть символ подчеркивания \(мы только так схемы и называем\)>>$daScr
echo order by account_status desc, username asc\;>>$daScr
echo exit\;>>$daScr
sqlplus -S / as sysdba @$daScr
if [[ -n $DISPLAY ]]; then read -p 'Press ENTER key to exit.'; fi
elif [ $1 == "-s" ]; then # Скрипт выводит список схем с указанием размера каждой из них
echo select owner, to_char\(sum\(bytes\)/1048576,\'999G999G999G999D999\'\) \"SIZE \(MB\)\" from dba_segments group by owner order by sum\(\bytes\) desc\;>>$daScr
echo exit\;>>$daScr
sqlplus -S / as sysdba @$daScr
else
echo Usage:
echo $0 [-s]
fi
rm $daScr
#!/bin/bash
# 17.03.2015
# Selecting usernames and their statuses from dba_users (ORACLE)
daScr=/tmp/osu_120629.sql
echo SET PAGESIZE 0\;>$daScr
if [ -z $1 ]; then # Выполнять этот блок, если скрипт запущен без ключей.
echo select username \|\| case when account_status=\'OPEN\' then \'\' else \' \(\' \|\| account_status \|\| \'\)\' end case from dba_users>>$daScr
echo where default_tablespace=\'USERS\'>>$daScr
echo and username not in \(\'APEX_PUBLIC_USER\',\'ORACLE_OCM\'\,\'SPATIAL_CSW_ADMIN_USR\',\'SPATIAL_WFS_ADMIN_USR\'\) --Исключаем из выборки пользователей, которые создаются по-умолчанию в процессе установки и конфигурирования Oracle>>$daScr
echo and username like \'%=_%\' escape \'=\' -- Включаем в выборку только тех пользователей, у которых в имени есть символ подчеркивания \(мы только так схемы и называем\)>>$daScr
echo order by account_status desc, username asc\;>>$daScr
echo exit\;>>$daScr
sqlplus -S / as sysdba @$daScr
if [[ -n $DISPLAY ]]; then read -p 'Press ENTER key to exit.'; fi
elif [ $1 == "-s" ]; then # Скрипт выводит список схем с указанием размера каждой из них
echo select owner, to_char\(sum\(bytes\)/1048576,\'999G999G999G999D999\'\) \"SIZE \(MB\)\" from dba_segments group by owner order by sum\(\bytes\) desc\;>>$daScr
echo exit\;>>$daScr
sqlplus -S / as sysdba @$daScr
else
echo Usage:
echo $0 [-s]
fi
rm $daScr
osize.sh
cat osize.sh
#!/bin/sh
# 11.03.2015
daScr=/tmp/ots_150306.sql
echo SET LINESIZE 125\;>$daScr
echo SET PAGESIZE 90\;>>$daScr
if [ -z $1 ]; then # Выполнять этот блок, если скрипт запущен без ключей.
echo --DBA_DATA_FILES>>$daScr
echo SELECT /\* + RULE \*/>>$daScr
echo df.tablespace_name,>>$daScr
echo round\(sum\(df.maxbytes\)/1048576\) \"SizeMAX\(MB\)\",>>$daScr
echo --round\(sum\(df.bytes\)/1048576\) \"SizeCUR\(MB\)\",>>$daScr
echo round\(\(sum\(df.maxbytes\) - sum\(df.bytes\)\)/1048576\) \"Free\(MB\)\",>>$daScr
echo 100-round\(\(sum\(df.bytes\)\*100\)/sum\(df.maxbytes\)\)\|\|\'\%\' \"Free\(%\)\">>$daScr
echo FROM dba_data_files df>>$daScr
echo GROUP BY df.tablespace_name>>$daScr
echo UNION ALL>>$daScr
echo --DBA_TEMP_FILES>>$daScr
echo SELECT /\* + RULE \*/>>$daScr
echo df.tablespace_name,>>$daScr
echo round\(sum\(df.maxbytes\)/1048576\),>>$daScr
echo --round\(sum\(df.bytes\)/1048576\),>>$daScr
echo round\(\(sum\(df.maxbytes\) - sum\(df.bytes\)\)/1048576\),>>$daScr
echo 100-round\(\(sum\(df.bytes\)\*100\)/sum\(df.maxbytes\)\)\|\|\'\%\'>>$daScr
echo FROM dba_temp_files df>>$daScr
echo GROUP BY df.tablespace_name>>$daScr
echo order by 1 desc\;>>$daScr
echo exit\;>>$daScr
sqlplus -S / as sysdba @$daScr
if [[ -n $DISPLAY ]]; then read -p 'Press ENTER key to exit.'; fi # Если скрипт запущен в GUI, то окно не закрываем.
elif [ $1 == "-g" ]; then # Скрипт выводит дополнительный столбец (SizeCUR - текущий фактический размер на диске), и все числовые значения, группируются по разрядам.
echo --DBA_DATA_FILES>>$daScr
echo SELECT /\* + RULE \*/>>$daScr
echo df.tablespace_name,>>$daScr
echo to_char\(round\(sum\(df.maxbytes\)/1048576\),\'999G999G999G999\'\) \"SizeMAX\(MB\)\",>>$daScr
echo to_char\(round\(sum\(df.bytes\)/1048576\),\'999G999G999G999\'\) \"SizeCUR\(MB\)\",>>$daScr
echo to_char\(round\(\(sum\(df.maxbytes\)-sum\(df.bytes\)\)/1048576\),\'999G999G999G999\'\) \"Free\(MB\)\",>>$daScr
echo 100-round\(\(sum\(df.bytes\)\*100\)/sum\(df.maxbytes\)\)\|\|\'\%\' \"Free\(%\)\">>$daScr
echo FROM dba_data_files df>>$daScr
echo GROUP BY df.tablespace_name>>$daScr
echo UNION ALL>>$daScr
echo --DBA_TEMP_FILES>>$daScr
echo SELECT /\* + RULE \*/>>$daScr
echo df.tablespace_name,>>$daScr
echo to_char\(round\(sum\(df.maxbytes\)/1048576\),\'999G999G999G999\'\),>>$daScr
echo to_char\(round\(sum\(df.bytes\)/1048576\),\'999G999G999G999\'\),>>$daScr
echo to_char\(round\(\(sum\(df.maxbytes\) - sum\(df.bytes\)\)/1048576\),\'999G999G999G999\'\),>>$daScr
echo 100-round\(\(sum\(df.bytes\)\*100\)/sum\(df.maxbytes\)\)\|\|\'\%\'>>$daScr
echo FROM dba_temp_files df>>$daScr
echo GROUP BY df.tablespace_name>>$daScr
echo order by 1 desc\;>>$daScr
echo exit\;>>$daScr
sqlplus -S / as sysdba @$daScr
else
echo Usage:
echo $0 [-g]
fi
rm $daScr
Размер схем Oracle
--Для DBA (c примером форматирования числа: группировка цифр по разрядам с помощью TO_CHAR)
select owner, to_char(sum(bytes)/1048576,'999G999G999G999D999') "SIZE (MB)" from dba_segments group by owner order by sum(bytes) desc;
понедельник, 16 марта 2015 г.
Размер таблиц схемы Oracle
--Для SYSDBA
--Для пользователя схемы:
select t.TABLE_NAME, sum(s.bytes)/1048576 "SIZE (MB)"
from dba_segments s join dba_tables t on t.owner=s.owner and t.TABLE_NAME=s.SEGMENT_NAME
where t.owner=upper('<OWNER_NAME>')
group by t.TABLE_NAME
order by sum(s.bytes) desc;
--Для пользователя схемы:
select t.TABLE_NAME, sum(s.bytes)/1048576 "SIZE (MB)"
from user_segments s join user_tables t on t.TABLE_NAME=s.SEGMENT_NAME
group by t.TABLE_NAME
order by sum(s.bytes) desc;
пятница, 13 марта 2015 г.
importdp.sh - вариант без FROM_USERNAME
Формат команды
./import.sh <ИМЯ НОВОЙ СХЕМЫ> <ФАЙЛ ДАМПА>
Данная редакция скрипта "самостоятельно узнаёт" "старое" имя схемы, которое скрывается в параметре OWNER_NAME в файле дампа.
Может работать только с дампами, содержащими лишь одну схему!
Перед импортом создает схему с предустановленным в параметре NEW_SCHEMA_PASSWD паролем.
cat importdp.sh
#!/bin/sh
# Set the parameters first
# -------------------------------------
# system user name
SYSTEM=<DBA_USERNAME>
# system user password
PASSWD=<DBA_PASSWORD>
# Instance name (if any)
URL=@<ORACLE_SID>
# New schema password
NEW_SCHEMA_PASSWD=<NEW_SCHEMA_PASSWD>
# Set the ORACLE_HOME variable to find an "imp" utility
# ORACLE_HOME=/usr/oracle
# -------------------------------------
help() {
echo "-------------------------------------"
echo "Logical Database restore utility v0.1"
echo "-------------------------------------"
echo "USAGE:"
echo "./importdp.sh <TO_USERNAME> <FILE_NAME>"
echo
echo "EXAMPLE:"
echo "./importdp.sh LNXTEST23 lnx.dmp"
}
if [ $# -eq 0 ] ; then
help;
exit 1;
fi
TO_USERNAME=$1
FILENAME=$2
LOGFILE="restore_$TO_USERNAME.log"
if [ "$FILENAME" == "" ] ; then
FILENAME="expdat.dmp";
fi
if [ "$TO_USERNAME" == "" ] ; then
TO_USERNAME=$FROM_USERNAME;
fi
if [ "$ORACLE_HOME" != "" ] ; then
CMD="$ORACLE_HOME/bin/impdp";
else
CMD="impdp";
fi
if [ ! -f $FILENAME ] ; then
echo "ERROR:"
echo "File $FILENAME does not exist.";
exit 1;
fi
# block_150312_2116(begin)
# d.aryshtaev@bftcom.com, 13.03.2015 02:31 IRKT
# Проверка наличия новой схемы (импорт будет выполнен только в случае, если новой схемы в экземпляре Oracle нет):
daScr=/tmp/imp_150312_2100.sql
echo SET PAGESIZE 0\;>$daScr
echo select count\(\*\) from dba_users where username=upper\(\'$TO_USERNAME\'\)\;>>$daScr
echo exit\;>>$daScr
daUsrCnt=`sqlplus -S / as sysdba @$daScr`
if [ $daUsrCnt == 0 ]; then
# block_150312_2116_A(begin)
# Создаем схему до импорта, чтобы сразу же задать ей пароль [потому что мы ленимся :-) ]:
echo create user $TO_USERNAME identified by $NEW_SCHEMA_PASSWD\;>$daScr
echo grant connect\,resource to $TO_USERNAME\;>>$daScr
echo grant select on v_\$locked_object to $TO_USERNAME\;>>$daScr
echo GRANT SELECT ANY DICTIONARY TO $TO_USERNAME\;>>$daScr
echo exit \;>>$daScr
sqlplus -S / as sysdba @$daScr
# block_150312_2116_B(begin)
# Вытаскиваем OWNER_NAME из дампа и запоминаем значение в переменной FROM_USERNAME:
daDDLfile=tmp_ddl_`date +%y%m%d_%H%M%S`.txt
$CMD $SYSTEM/$PASSWD$URL SILENT=ALL NOLOGFILE=Y DIRECTORY=BACKUP_DIR DUMPFILE=$FILENAME SQLFILE=$daDDLfile
daStrFromDDL=`cat $daDDLfile|grep "CREATE USER"`
rm $daDDLfile
FROM_USERNAME=${daStrFromDDL:14:$(expr `expr index "${daStrFromDDL:14}" \"` - 1)}
# block_150312_2116_B(end)
# block_150312_2116_A(end)
echo "-----------------------------------------"
echo "Restoring from $FROM_USERNAME to $TO_USERNAME using dump $FILENAME ..."
echo "-----------------------------------------"
export NLS_DATE_FORMAT="YYYY-MM-DD"
export NLS_TIMESTAMP_FORMAT="YYYY-MM-DD HH24:MI:SS"
$CMD $SYSTEM/$PASSWD$URL SCHEMAS=$FROM_USERNAME DIRECTORY=BACKUP_DIR REMAP_SCHEMA=$FROM_USERNAME:$TO_USERNAME TRANSFORM=OID:N DUMPFILE=$FILENAME LOGFILE=$LOGFILE
else
# Если новая схема уже существует, то сообщаем об этом пользователю и не выполняем импорт:
echo Schema $TO_USERNAME already exists.
fi
rm $daScr
# block_150312_2116(end)
./import.sh <ИМЯ НОВОЙ СХЕМЫ> <ФАЙЛ ДАМПА>
Данная редакция скрипта "самостоятельно узнаёт" "старое" имя схемы, которое скрывается в параметре OWNER_NAME в файле дампа.
Может работать только с дампами, содержащими лишь одну схему!
Перед импортом создает схему с предустановленным в параметре NEW_SCHEMA_PASSWD паролем.
cat importdp.sh
#!/bin/sh
# Set the parameters first
# -------------------------------------
# system user name
SYSTEM=<DBA_USERNAME>
# system user password
PASSWD=<DBA_PASSWORD>
# Instance name (if any)
URL=@<ORACLE_SID>
# New schema password
NEW_SCHEMA_PASSWD=<NEW_SCHEMA_PASSWD>
# Set the ORACLE_HOME variable to find an "imp" utility
# ORACLE_HOME=/usr/oracle
# -------------------------------------
help() {
echo "-------------------------------------"
echo "Logical Database restore utility v0.1"
echo "-------------------------------------"
echo "USAGE:"
echo "./importdp.sh <TO_USERNAME> <FILE_NAME>"
echo
echo "EXAMPLE:"
echo "./importdp.sh LNXTEST23 lnx.dmp"
}
if [ $# -eq 0 ] ; then
help;
exit 1;
fi
TO_USERNAME=$1
FILENAME=$2
LOGFILE="restore_$TO_USERNAME.log"
if [ "$FILENAME" == "" ] ; then
FILENAME="expdat.dmp";
fi
if [ "$TO_USERNAME" == "" ] ; then
TO_USERNAME=$FROM_USERNAME;
fi
if [ "$ORACLE_HOME" != "" ] ; then
CMD="$ORACLE_HOME/bin/impdp";
else
CMD="impdp";
fi
if [ ! -f $FILENAME ] ; then
echo "ERROR:"
echo "File $FILENAME does not exist.";
exit 1;
fi
# block_150312_2116(begin)
# d.aryshtaev@bftcom.com, 13.03.2015 02:31 IRKT
# Проверка наличия новой схемы (импорт будет выполнен только в случае, если новой схемы в экземпляре Oracle нет):
daScr=/tmp/imp_150312_2100.sql
echo SET PAGESIZE 0\;>$daScr
echo select count\(\*\) from dba_users where username=upper\(\'$TO_USERNAME\'\)\;>>$daScr
echo exit\;>>$daScr
daUsrCnt=`sqlplus -S / as sysdba @$daScr`
if [ $daUsrCnt == 0 ]; then
# block_150312_2116_A(begin)
# Создаем схему до импорта, чтобы сразу же задать ей пароль [потому что мы ленимся :-) ]:
echo create user $TO_USERNAME identified by $NEW_SCHEMA_PASSWD\;>$daScr
echo grant connect\,resource to $TO_USERNAME\;>>$daScr
echo grant select on v_\$locked_object to $TO_USERNAME\;>>$daScr
echo GRANT SELECT ANY DICTIONARY TO $TO_USERNAME\;>>$daScr
echo exit \;>>$daScr
sqlplus -S / as sysdba @$daScr
# block_150312_2116_B(begin)
# Вытаскиваем OWNER_NAME из дампа и запоминаем значение в переменной FROM_USERNAME:
daDDLfile=tmp_ddl_`date +%y%m%d_%H%M%S`.txt
$CMD $SYSTEM/$PASSWD$URL SILENT=ALL NOLOGFILE=Y DIRECTORY=BACKUP_DIR DUMPFILE=$FILENAME SQLFILE=$daDDLfile
daStrFromDDL=`cat $daDDLfile|grep "CREATE USER"`
rm $daDDLfile
FROM_USERNAME=${daStrFromDDL:14:$(expr `expr index "${daStrFromDDL:14}" \"` - 1)}
# block_150312_2116_B(end)
# block_150312_2116_A(end)
echo "-----------------------------------------"
echo "Restoring from $FROM_USERNAME to $TO_USERNAME using dump $FILENAME ..."
echo "-----------------------------------------"
export NLS_DATE_FORMAT="YYYY-MM-DD"
export NLS_TIMESTAMP_FORMAT="YYYY-MM-DD HH24:MI:SS"
$CMD $SYSTEM/$PASSWD$URL SCHEMAS=$FROM_USERNAME DIRECTORY=BACKUP_DIR REMAP_SCHEMA=$FROM_USERNAME:$TO_USERNAME TRANSFORM=OID:N DUMPFILE=$FILENAME LOGFILE=$LOGFILE
else
# Если новая схема уже существует, то сообщаем об этом пользователю и не выполняем импорт:
echo Schema $TO_USERNAME already exists.
fi
rm $daScr
# block_150312_2116(end)
четверг, 12 марта 2015 г.
importdp.sh - вариант с FROM_USERNAME
#!/bin/sh
# Set the parameters first
# -------------------------------------
# system user name
SYSTEM=<DBA_USERNAME>
# system user password
PASSWD=<DBA_PASSWORD>
# Instance name (if any)
URL=@<ORACLE_SID>
# New schema password
NEW_SCHEMA_PASSWD=<NEW_SCHEMA_PASSWD>
# block_150312_2116(begin)
# Проверка наличия новой схемы (импорт будет выполнен только в случае, если новой схемы в экземпляре Oracle нет):
daScr=/tmp/imp_150312_2100.sql
echo SET PAGESIZE 0\;>$daScr
echo select count\(\*\) from dba_users where username=upper\(\'$2\'\)\;>>$daScr
echo exit\;>>$daScr
export daUsrCnt=`sqlplus -S / as sysdba @$daScr`
if [ $daUsrCnt == 0 ]; then
# block_150312_2116_A(begin)
# Создаем схему до импорта, чтобы сразу же задать ей пароль [потому что мы ленимся :-) ]:
echo create user $2 identified by $NEW_SCHEMA_PASSWD\;>$daScr
echo grant connect\,resource to $2\;>>$daScr
echo grant select on v_\$locked_object to $2\;>>$daScr
echo exit \;>>$daScr
sqlplus / as sysdba @$daScr
# Весь остальной скрипт ниже не изменялся.
# block_150312_2116_A(end)
# Set the ORACLE_HOME variable to find an "imp" utility
# ORACLE_HOME=/usr/oracle
# -------------------------------------
help() {
echo "-------------------------------------"
echo "Logical Database restore utility v0.1"
echo "-------------------------------------"
echo "USAGE:"
echo "./importdp.sh <FROM_USERNAME> [<TO_USERNAME>] [<FILE_NAME>]"
echo
echo "EXAMPLE:"
echo "./importdp.sh LNXSTEND23 LNXTEST23 lnx.dmp"
}
if [ $# -eq 0 ] ; then
help;
exit 1;
fi
FROM_USERNAME=$1
TO_USERNAME=$2
FILENAME=$3
LOGFILE="restore_$TO_USERNAME.log"
if [ "$FILENAME" == "" ] ; then
FILENAME="expdat.dmp";
fi
if [ "$TO_USERNAME" == "" ] ; then
TO_USERNAME=$FROM_USERNAME;
fi
if [ "$ORACLE_HOME" != "" ] ; then
CMD="$ORACLE_HOME/bin/impdp";
else
CMD="impdp";
fi
if [ ! -f $FILENAME ] ; then
echo "ERROR:"
echo "File $FILENAME does not exist.";
exit 1;
fi
echo "-----------------------------------------"
echo "Restoring from $FROM_USERNAME to $TO_USERNAME using damp $FILENAME ..."
echo "-----------------------------------------"
export NLS_DATE_FORMAT="YYYY-MM-DD"
export NLS_TIMESTAMP_FORMAT="YYYY-MM-DD HH24:MI:SS"
$CMD $SYSTEM/$PASSWD$URL SCHEMAS=$FROM_USERNAME DIRECTORY=BACKUP_DIR REMAP_SCHEMA=$FROM_USERNAME:$TO_USERNAME TRANSFORM=OID:N DUMPFILE=$FILENAME LOGFILE=$LOGFILE
else
# Если новая схема уже существует, то сообщаем об этом пользователю и не выполняем импорт:
echo Schema $2 already exists.
fi
rm $daScr
# block_150312_2116(end)
# Set the parameters first
# -------------------------------------
# system user name
SYSTEM=<DBA_USERNAME>
# system user password
PASSWD=<DBA_PASSWORD>
# Instance name (if any)
URL=@<ORACLE_SID>
# New schema password
NEW_SCHEMA_PASSWD=<NEW_SCHEMA_PASSWD>
# block_150312_2116(begin)
# Проверка наличия новой схемы (импорт будет выполнен только в случае, если новой схемы в экземпляре Oracle нет):
daScr=/tmp/imp_150312_2100.sql
echo SET PAGESIZE 0\;>$daScr
echo select count\(\*\) from dba_users where username=upper\(\'$2\'\)\;>>$daScr
echo exit\;>>$daScr
export daUsrCnt=`sqlplus -S / as sysdba @$daScr`
if [ $daUsrCnt == 0 ]; then
# block_150312_2116_A(begin)
# Создаем схему до импорта, чтобы сразу же задать ей пароль [потому что мы ленимся :-) ]:
echo create user $2 identified by $NEW_SCHEMA_PASSWD\;>$daScr
echo grant connect\,resource to $2\;>>$daScr
echo grant select on v_\$locked_object to $2\;>>$daScr
echo exit \;>>$daScr
sqlplus / as sysdba @$daScr
# Весь остальной скрипт ниже не изменялся.
# block_150312_2116_A(end)
# Set the ORACLE_HOME variable to find an "imp" utility
# ORACLE_HOME=/usr/oracle
# -------------------------------------
help() {
echo "-------------------------------------"
echo "Logical Database restore utility v0.1"
echo "-------------------------------------"
echo "USAGE:"
echo "./importdp.sh <FROM_USERNAME> [<TO_USERNAME>] [<FILE_NAME>]"
echo
echo "EXAMPLE:"
echo "./importdp.sh LNXSTEND23 LNXTEST23 lnx.dmp"
}
if [ $# -eq 0 ] ; then
help;
exit 1;
fi
FROM_USERNAME=$1
TO_USERNAME=$2
FILENAME=$3
LOGFILE="restore_$TO_USERNAME.log"
if [ "$FILENAME" == "" ] ; then
FILENAME="expdat.dmp";
fi
if [ "$TO_USERNAME" == "" ] ; then
TO_USERNAME=$FROM_USERNAME;
fi
if [ "$ORACLE_HOME" != "" ] ; then
CMD="$ORACLE_HOME/bin/impdp";
else
CMD="impdp";
fi
if [ ! -f $FILENAME ] ; then
echo "ERROR:"
echo "File $FILENAME does not exist.";
exit 1;
fi
echo "-----------------------------------------"
echo "Restoring from $FROM_USERNAME to $TO_USERNAME using damp $FILENAME ..."
echo "-----------------------------------------"
export NLS_DATE_FORMAT="YYYY-MM-DD"
export NLS_TIMESTAMP_FORMAT="YYYY-MM-DD HH24:MI:SS"
$CMD $SYSTEM/$PASSWD$URL SCHEMAS=$FROM_USERNAME DIRECTORY=BACKUP_DIR REMAP_SCHEMA=$FROM_USERNAME:$TO_USERNAME TRANSFORM=OID:N DUMPFILE=$FILENAME LOGFILE=$LOGFILE
else
# Если новая схема уже существует, то сообщаем об этом пользователю и не выполняем импорт:
echo Schema $2 already exists.
fi
rm $daScr
# block_150312_2116(end)
пятница, 6 марта 2015 г.
Расчет размера табличных пространств Oracle (еще один подход к снаряду)
--DBA_DATA_FILES
SELECT /* + RULE */
df.tablespace_name,
round(sum(df.maxbytes)/1048576) "Size (MAX) (MB)",
round(sum(df.bytes)/1048576) "Size (CRNT) (MB)",
round((sum(df.maxbytes) - sum(df.bytes))/1048576) "Free (MB)",
round((sum(df.bytes)*100)/sum(df.maxbytes)) "Free (MAX) (%)"
FROM dba_data_files df
GROUP BY df.tablespace_name
UNION ALL
--DBA_TEMP_FILES
SELECT /* + RULE */
df.tablespace_name,
round(sum(df.maxbytes)/1048576),
round(sum(df.bytes)/1048576),
round((sum(df.maxbytes) - sum(df.bytes))/1048576),
round((sum(df.bytes)*100)/sum(df.maxbytes))
FROM dba_temp_files df
GROUP BY df.tablespace_name
order by 1 desc;
/* bash-вариант */
cat osize.sh
#!/bin/sh
daScr=/tmp/ots_150306.sql
echo --DBA_DATA_FILES>$daScr
echo SELECT /\* + RULE \*/>>$daScr
echo df.tablespace_name,>>$daScr
echo round\(sum\(df.maxbytes\)/1048576\) \"SizeMAX\(MB\)\",>>$daScr
echo round\(sum\(df.bytes\)/1048576\) \"SizeCUR\(MB\)\",>>$daScr
echo round\(\(sum\(df.maxbytes\) - sum\(df.bytes\)\)/1048576\) \"Free\(MB\)\",>>$daScr
echo round\(\(sum\(df.bytes\)\*100\)/sum\(df.maxbytes\)\) \"Free\(MAX\)\(%\)\">>$daScr
echo FROM dba_data_files df>>$daScr
echo GROUP BY df.tablespace_name>>$daScr
echo UNION ALL>>$daScr
echo --DBA_TEMP_FILES>>$daScr
echo SELECT /\* + RULE \*/>>$daScr
echo df.tablespace_name,>>$daScr
echo round\(sum\(df.maxbytes\)/1048576\),>>$daScr
echo round\(sum\(df.bytes\)/1048576\),>>$daScr
echo round\(\(sum\(df.maxbytes\) - sum\(df.bytes\)\)/1048576\),>>$daScr
echo round\(\(sum\(df.bytes\)\*100\)/sum\(df.maxbytes\)\)>>$daScr
echo FROM dba_temp_files df>>$daScr
echo GROUP BY df.tablespace_name>>$daScr
echo order by 1 desc\;>>$daScr
echo exit\;>>$daScr
if [ $USER == root ]
then
su - oracle -c "sqlplus / as sysdba @$daScr"
else
sqlplus / as sysdba @$daScr
fi
rm $daScr
if [[ -n $DISPLAY ]]; then read -p 'Press ENTER key to exit.'; fi
SELECT /* + RULE */
df.tablespace_name,
round(sum(df.maxbytes)/1048576) "Size (MAX) (MB)",
round(sum(df.bytes)/1048576) "Size (CRNT) (MB)",
round((sum(df.maxbytes) - sum(df.bytes))/1048576) "Free (MB)",
round((sum(df.bytes)*100)/sum(df.maxbytes)) "Free (MAX) (%)"
FROM dba_data_files df
GROUP BY df.tablespace_name
UNION ALL
--DBA_TEMP_FILES
SELECT /* + RULE */
df.tablespace_name,
round(sum(df.maxbytes)/1048576),
round(sum(df.bytes)/1048576),
round((sum(df.maxbytes) - sum(df.bytes))/1048576),
round((sum(df.bytes)*100)/sum(df.maxbytes))
FROM dba_temp_files df
GROUP BY df.tablespace_name
order by 1 desc;
/* bash-вариант */
cat osize.sh
#!/bin/sh
daScr=/tmp/ots_150306.sql
echo --DBA_DATA_FILES>$daScr
echo SELECT /\* + RULE \*/>>$daScr
echo df.tablespace_name,>>$daScr
echo round\(sum\(df.maxbytes\)/1048576\) \"SizeMAX\(MB\)\",>>$daScr
echo round\(sum\(df.bytes\)/1048576\) \"SizeCUR\(MB\)\",>>$daScr
echo round\(\(sum\(df.maxbytes\) - sum\(df.bytes\)\)/1048576\) \"Free\(MB\)\",>>$daScr
echo round\(\(sum\(df.bytes\)\*100\)/sum\(df.maxbytes\)\) \"Free\(MAX\)\(%\)\">>$daScr
echo FROM dba_data_files df>>$daScr
echo GROUP BY df.tablespace_name>>$daScr
echo UNION ALL>>$daScr
echo --DBA_TEMP_FILES>>$daScr
echo SELECT /\* + RULE \*/>>$daScr
echo df.tablespace_name,>>$daScr
echo round\(sum\(df.maxbytes\)/1048576\),>>$daScr
echo round\(sum\(df.bytes\)/1048576\),>>$daScr
echo round\(\(sum\(df.maxbytes\) - sum\(df.bytes\)\)/1048576\),>>$daScr
echo round\(\(sum\(df.bytes\)\*100\)/sum\(df.maxbytes\)\)>>$daScr
echo FROM dba_temp_files df>>$daScr
echo GROUP BY df.tablespace_name>>$daScr
echo order by 1 desc\;>>$daScr
echo exit\;>>$daScr
if [ $USER == root ]
then
su - oracle -c "sqlplus / as sysdba @$daScr"
else
sqlplus / as sysdba @$daScr
fi
rm $daScr
if [[ -n $DISPLAY ]]; then read -p 'Press ENTER key to exit.'; fi
четверг, 5 марта 2015 г.
Сисадмин
[5 марта 2015 г. 11:46] Денис З.:
«
Мила (11:44:18 5/03/2015)
у нас на нескольких компах плохо работает инет со вчерашнего дня
Мила (11:44:30 5/03/2015)
сегодня повторно пришел сисадмин
Мила (11:44:37 5/03/2015)
посидел за моим компом
Мила (11:45:02 5/03/2015)
сажусь после него - запрос в яндексе "как определить скорость интернета"
»
«
Мила (11:44:18 5/03/2015)
у нас на нескольких компах плохо работает инет со вчерашнего дня
Мила (11:44:30 5/03/2015)
сегодня повторно пришел сисадмин
Мила (11:44:37 5/03/2015)
посидел за моим компом
Мила (11:45:02 5/03/2015)
сажусь после него - запрос в яндексе "как определить скорость интернета"
»
среда, 4 марта 2015 г.
(В процессе) Автоматический импорт дампов Oracle
== Автоматический импорт дампов. Плюс, сюда же: как автоматизировать поиск OWNER_NAME в файле дампа? ==
Реализовано с помощью SQLFILE. Источник.
--
http://koenigocm.blogspot.ru/2012/08/automatic-import-using-filewatcher.html - вникнуть, проверить
--
bft_dbn, bdkvsk
https://ru.wikipedia.org/wiki/Hudson
http://cvs.bft.local:8081/jenkins/job/dump.restore.v2/
Реализовано с помощью SQLFILE. Источник.
--
http://koenigocm.blogspot.ru/2012/08/automatic-import-using-filewatcher.html - вникнуть, проверить
--
bft_dbn, bdkvsk
https://ru.wikipedia.org/wiki/Hudson
http://cvs.bft.local:8081/jenkins/job/dump.restore.v2/
вторник, 3 марта 2015 г.
Информация о винчестере с ОС
[root@dbserver ~]# smartctl -i /dev/sdd
[root@dbserver ~]# fdisk -l /dev/sdd
smartctl 5.42 2011-10-20 r3458 [x86_64-linux-2.6.39-400.215.10.el5uek] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Model Family: Western Digital Caviar Blue Serial ATA
Device Model: WDC WD1600AAJS-75PSA0
Serial Number: WD-WMAP98490365
LU WWN Device Id: 5 0014ee 0003feca0
Firmware Version: 05.06H05
User Capacity: 160,000,000,000 bytes [160 GB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: 7
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Tue Mar 3 12:37:09 2015 KRAT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
[root@dbserver ~]# fdisk -l /dev/sdd
Disk /dev/sdd: 160.0 GB, 160000000000 bytes
60 heads, 12 sectors/track, 434027 cylinders
Units = cylinders of 720 * 512 = 368640 bytes
Device Boot Start End Blocks Id System
/dev/sdd1 * 1 284 102234 83 Linux
/dev/sdd2 285 434027 156147480 8e Linux LVM
понедельник, 2 марта 2015 г.
Информация о крайнем подключении к БД Oracle
Реализован скрипт, который показывает дату крайнего подключения к базам Oracle:
Пример:
/* bash-вариант */:
----
Необходимо, чтобы заполнялась таблица dba_audit_session, для этого:
alter system set audit_trail=true scope=spfile; --включение параметра
audit connect; --либо аудит любого подключения
audit create session whenever successful; --либо аудит только успешно созданных сессий (сейчас указано это)
create pfile from spfile; - сохранить параметры
Перезапустить экземпляр Oracle.
select du.username||case when du.account_status='OPEN' then '' else ' ('||du.account_status||')' end USERNAME, to_char(max(da.TIMESTAMP),'DD.MM.YYYY') LASTLOGON
from dba_users du left join dba_audit_session da on da.username=du.username
where du.default_tablespace='USERS'
and du.username not in ('APEX_PUBLIC_USER','ORACLE_OCM','SPATIAL_CSW_ADMIN_USR','SPATIAL_WFS_ADMIN_USR') --Исключаем из выборки пользователей, которые создаются по-умолчанию в процессе установки и конфигурирования Oracle
and du.username like '%=_%' escape '=' -- Включаем в выборку только тех пользователей, у которых в имени есть символ подчеркивания (мы только так схемы и называем)
group by du.username||case when du.account_status='OPEN' then '' else ' ('||du.account_status||')' end
order by 1 asc;
Пример:
[oracle@dbserver playground]$ ./olastlogon.sh
USERNAME                                                      LASTLOGON
----------------------------------------------------------------- ----------
F_ANGARSK_150218                                              04.03.2015
F_BRATSK_150218
F_IRKOBL_150129                                                   06.03.2015
3 rows selected.
/* bash-вариант */:
cat olastlogon.sh
#!/bin/bash
# Selecting usernames and their statuses from dba_users with last logon info from dba_audit_session (ORACLE)
daScr=/tmp/osu_140829.sql
echo SET LINESIZE 150\;>$daScr
echo SET PAGESIZE 300\;>>$daScr
echo select du.username\|\|case when du.account_status=\'OPEN\' then \'\' else \' \(\'\|\|du.account_status\|\|\'\)\' end USERNAME, to_char\(max\(da.TIMESTAMP\),\'\DD.MM.YYYY'\) LASTLOGON>>$daScr
echo from dba_users du left join dba_audit_session da on da.username=du.username>>$daScr
echo where du.default_tablespace=\'USERS\'>>$daScr
echo and du.username not in \(\'APEX_PUBLIC_USER\',\'ORACLE_OCM\'\,\'SPATIAL_CSW_ADMIN_USR\',\'SPATIAL_WFS_ADMIN_USR\'\) --Исключаем из выборки пользователей, которые создаются по-умолчанию в процессе установки и конфигурирования Oracle>>$daScr
echo and du.username like \'%=_%\' escape \'=\' -- Включаем в выборку только тех пользователей, у которых в имени есть символ подчеркивания \(мы только так схемы и называем\)>>$daScr
echo group by du.username\|\|case when du.account_status=\'OPEN\' then \'\' else \' \(\'\|\|du.account_status\|\|\'\)\' end>>$daScr
echo order by 1 asc\;>>$daScr
echo exit\;>>$daScr
if [ $USER == root ]
then
su - oracle -c "sqlplus / as sysdba @$daScr"
else
sqlplus / as sysdba @$daScr
fi
rm $daScr
if [[ -n $DISPLAY ]]; then read -p 'Press ENTER key to exit.'; fi
----
Необходимо, чтобы заполнялась таблица dba_audit_session, для этого:
alter system set audit_trail=true scope=spfile; --включение параметра
audit connect; --либо аудит любого подключения
audit create session whenever successful; --либо аудит только успешно созданных сессий (сейчас указано это)
create pfile from spfile; - сохранить параметры
Перезапустить экземпляр Oracle.
воскресенье, 1 марта 2015 г.
Sony XPERIA M2: отключение приложений от Sony
Отключение приложения "What's new" от Sony без root-доступа:
I) подключить смартфон в режиме отладки по USB (+ ADB)
II) выполнить команды ADB:
II.1) adb shell
II.2) pm block com.sonymobile.advancedwidget.entrance
II.4) adb reboot
Отключение приложения "Альбом" от Sony:
II.2) pm block com.sonyericsson.album (приводит к тому, что невозможно изменить фоновый рисунок на экране блокировки, но с этим можно жить);
Отключение дополнения для камеры "TimeShift" от Sony:
II.2) pm hide com.sonymobile.android.addoncamera.timeshift
Отключение приложения "Small Apps" от Sony:
II.2) pm hide com.sony.smallapp.launcher
II.2.1) pm hide com.sony.smallapp.app.widget
I) подключить смартфон в режиме отладки по USB (+ ADB)
II) выполнить команды ADB:
II.1) adb shell
II.2) pm block com.sonymobile.advancedwidget.entrance
Примечание: если Android 5.1.1, то команда такая:II.3) exit
pm hide com.sonymobile.advancedwidget.entrance
II.4) adb reboot
Отключение приложения "Альбом" от Sony:
II.2) pm block com.sonyericsson.album (приводит к тому, что невозможно изменить фоновый рисунок на экране блокировки, но с этим можно жить);
Отключение дополнения для камеры "TimeShift" от Sony:
II.2) pm hide com.sonymobile.android.addoncamera.timeshift
Отключение приложения "Small Apps" от Sony:
II.2) pm hide com.sony.smallapp.launcher
II.2.1) pm hide com.sony.smallapp.app.widget
Android: драйвер для ADB-интерфейса
Бвыает, что при подключении в режиме "Отладка по USB" к Windows в диспетчере задач Android-смартфон определяется как "Неизвестное устройство" с надписью "Android". Помогает следующее:
1) скачать, установить и запустить Android Studio;
2) в главном окне открыть пункт "Configure" -> "SDK Manager";
3) выбрать пакет "Google USB Driver" и нажать кнопку "Install 1 packages...";
4) в диспетчере устройств Windows для неизвестного устройства "Android" установить драйвера: пункт меню "Обновить драйверы..." -> кнопка "Выбрать драйвер из списка уже установленных драйверов" -> кнопка "Установить с диска..." -> указать путь "%LOCALAPPDATA%\Android\sdk\extras\google\usb_driver" -> в открывшемся списке выбрать "Android ADB Interface";
P.S. Во время каждого подключения через adb-консоль на смартфоне будет появляться запрос о предоставлении разрешения.
P.P.S. Штатная команда остановки ADB-сервера: adb.exe kill-server.
1) скачать, установить и запустить Android Studio;
2) в главном окне открыть пункт "Configure" -> "SDK Manager";
3) выбрать пакет "Google USB Driver" и нажать кнопку "Install 1 packages...";
4) в диспетчере устройств Windows для неизвестного устройства "Android" установить драйвера: пункт меню "Обновить драйверы..." -> кнопка "Выбрать драйвер из списка уже установленных драйверов" -> кнопка "Установить с диска..." -> указать путь "%LOCALAPPDATA%\Android\sdk\extras\google\usb_driver" -> в открывшемся списке выбрать "Android ADB Interface";
P.S. Во время каждого подключения через adb-консоль на смартфоне будет появляться запрос о предоставлении разрешения.
P.P.S. Штатная команда остановки ADB-сервера: adb.exe kill-server.
Labels:
adb,
adb driver,
adb_driver,
android,
android sdk,
android studio,
android_studio,
google,
google_driver,
google_usb,
google_usb_driver,
sdk,
usb,
usb_driver
/etc/fstab, /dev/sda1, boot fail
Когда из файла /etc/fstab комментирую строку про /dev/sda1:
после перезагрузки Linux не загружается, сообщая:
upd:
Оказалось, что сам дебил - причина была в том, что комментирование строки я выполнял устанавливая символ ";" в начале строки, а надо было ставить символ "#" (ну либо, действительно, удалять строку).
[root@dbserver ~]# cat /etc/fstab
/dev/VolGroup00/LogVol00 / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/VolGroup00/LogVol01 swap swap defaults 0 0
/dev/sda1 /mnt/hd2tb ext3 defaults 0 2 ;вот эту
после перезагрузки Linux не загружается, сообщая:
...
Checking filesystems
fsck.ext3: No such file or directory while trying to open /dev/sda1
upd:
Оказалось, что сам дебил - причина была в том, что комментирование строки я выполнял устанавливая символ ";" в начале строки, а надо было ставить символ "#" (ну либо, действительно, удалять строку).
/ read only
При сбое во время загрузки ОС Linux корневая директория "/" монтируется с уровнем доступа "только чтение" (read only). Чтобы получить возможность вносить изменения в системные файлы, необходимо перемонтировать корневой раздел в режиме "чтения и изменения" (read-write), например, внести изменения в /etc/fstab, нужно выполнить команду:
mount / -o remount,rw
+
mount / -o remount,rw
+
Подписаться на:
Сообщения (Atom)
Архив
-
►
2019
(44)
- декабря (2)
- октября (6)
- сентября (9)
- августа (1)
- июля (1)
- июня (2)
- мая (2)
- апреля (2)
- марта (2)
- февраля (9)
- января (8)
-
►
2018
(54)
- декабря (4)
- ноября (3)
- октября (6)
- сентября (4)
- августа (2)
- июля (2)
- мая (3)
- апреля (4)
- марта (11)
- февраля (6)
- января (9)
-
►
2017
(55)
- декабря (4)
- ноября (14)
- октября (1)
- сентября (3)
- августа (10)
- июля (2)
- июня (5)
- мая (2)
- апреля (3)
- марта (4)
- февраля (4)
- января (3)
-
►
2016
(111)
- декабря (12)
- ноября (4)
- октября (14)
- сентября (7)
- августа (7)
- июля (14)
- июня (12)
- мая (8)
- апреля (5)
- марта (16)
- февраля (10)
- января (2)
-
▼
2015
(96)
- декабря (2)
- ноября (4)
- октября (3)
- сентября (6)
- августа (2)
- июля (2)
- июня (2)
- мая (11)
- апреля (14)
- марта (24)
- февраля (21)
- января (5)
-
►
2014
(72)
- декабря (18)
- ноября (16)
- октября (2)
- сентября (7)
- августа (4)
- июля (1)
- июня (4)
- мая (5)
- апреля (3)
- марта (3)
- февраля (6)
- января (3)
-
►
2013
(33)
- декабря (3)
- ноября (2)
- октября (3)
- сентября (2)
- августа (1)
- июля (1)
- июня (2)
- мая (5)
- апреля (2)
- марта (2)
- февраля (1)
- января (9)
-
►
2012
(181)
- ноября (6)
- октября (11)
- сентября (6)
- августа (5)
- июля (6)
- июня (25)
- мая (24)
- апреля (14)
- марта (20)
- февраля (38)
- января (26)