Объектные привилегии пользователя GAAP
select 'grant ' || privilege || ' on ' ||owner||'.' ||table_name || ' to ' ||grantee ||';'
from dba_tab_privs
where grantee = 'GAAP'
Какие роли у пользователя GAAP
select 'create role '||granted_role || ' NOT IDENTIFIED' ||';'
from dba_role_privs
where grantee = 'GAAP'
Cоздаём привилегии для роли GAAP_ACCESS
select 'grant ' || privilege || ' on ' ||owner||'.' ||table_name || ' to ' ||grantee ||';'
from dba_tab_privs
where grantee = 'GAAP_ACCESS'
пятница, 10 июля 2009 г.
среда, 10 июня 2009 г.
Java
Sample Java program
Put the following sample code in a file called Hello.java:
public class Hello {
public static void main(String[] args) {
for (int i=0; i < args.length; i++) {
System.out.println("Hello " + args[i]);
}
}
}
Compiling Java programs
Use the javac utility to compiler a java program:
javac Hello.java
Running Java programs
Start our "java" program (Hello) and pass some arguments to it (World):
java Hello World
Put the following sample code in a file called Hello.java:
public class Hello {
public static void main(String[] args) {
for (int i=0; i < args.length; i++) {
System.out.println("Hello " + args[i]);
}
}
}
Compiling Java programs
Use the javac utility to compiler a java program:
javac Hello.java
Running Java programs
Start our "java" program (Hello) and pass some arguments to it (World):
java Hello World
пятница, 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
# 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
среда, 6 мая 2009 г.
Oracle Table DUAL
SQL> DROP TABLE SYS.DUAL ;
Table dropped.
SQL> CREATE TABLE SYS.DUAL
2 (
3 DUMMY VARCHAR2(1 BYTE)
4 )
5 TABLESPACE SYSTEM;
Table created.
SQL> CREATE PUBLIC SYNONYM DUAL FOR SYS.DUAL;
Synonym created.
SQL> GRANT SELECT ON SYS.DUAL TO PUBLIC WITH GRANT OPTION;
Grant succeeded.
SQL> INSERT INTO dual VALUES ('X');
1 row created.
SQL> SELECT * FROM dual;
D
-
X
Не делать shutdown после drop
SQL> drop table dual;
Table dropped.
SQL> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 188743680 bytes
Fixed Size 1286460 bytes
Variable Size 96472772 bytes
Database Buffers 88080384 bytes
Redo Buffers 2904064 bytes
Database mounted.
ORA-01092: ORACLE instance terminated. Disconnection forced
SQL>
Table dropped.
SQL> CREATE TABLE SYS.DUAL
2 (
3 DUMMY VARCHAR2(1 BYTE)
4 )
5 TABLESPACE SYSTEM;
Table created.
SQL> CREATE PUBLIC SYNONYM DUAL FOR SYS.DUAL;
Synonym created.
SQL> GRANT SELECT ON SYS.DUAL TO PUBLIC WITH GRANT OPTION;
Grant succeeded.
SQL> INSERT INTO dual VALUES ('X');
1 row created.
SQL> SELECT * FROM dual;
D
-
X
Не делать shutdown после drop
SQL> drop table dual;
Table dropped.
SQL> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 188743680 bytes
Fixed Size 1286460 bytes
Variable Size 96472772 bytes
Database Buffers 88080384 bytes
Redo Buffers 2904064 bytes
Database mounted.
ORA-01092: ORACLE instance terminated. Disconnection forced
SQL>
четверг, 30 апреля 2009 г.
Oracle Temp Usage
Oracle Temp Usage:
SELECT A.tablespace_name tablespace, D.mb_total,
SUM (A.used_blocks * D.block_size) / 1024 / 1024 mb_used,
D.mb_total - SUM (A.used_blocks * D.block_size) / 1024 / 1024 mb_free
FROM v$sort_segment A,
(
SELECT B.name, C.block_size, SUM (C.bytes) / 1024 / 1024 mb_total
FROM v$tablespace B, v$tempfile C
WHERE B.ts#= C.ts#
GROUP BY B.name, C.block_size
) D
WHERE A.tablespace_name = D.name
GROUP by A.tablespace_name, D.mb_total;
select b.tablespace,b.segfile#,b.segblk#,b.blocks
,a.sid,a.serial#,a.username,a.osuser,a.status
from v$session a
,v$sort_usage b
where a.saddr = b.session_addr
order by b.tablespace,b.segfile#,b.segblk#,b.blocks;
SELECT A.tablespace_name tablespace, D.mb_total,
SUM (A.used_blocks * D.block_size) / 1024 / 1024 mb_used,
D.mb_total - SUM (A.used_blocks * D.block_size) / 1024 / 1024 mb_free
FROM v$sort_segment A,
(
SELECT B.name, C.block_size, SUM (C.bytes) / 1024 / 1024 mb_total
FROM v$tablespace B, v$tempfile C
WHERE B.ts#= C.ts#
GROUP BY B.name, C.block_size
) D
WHERE A.tablespace_name = D.name
GROUP by A.tablespace_name, D.mb_total;
select b.tablespace,b.segfile#,b.segblk#,b.blocks
,a.sid,a.serial#,a.username,a.osuser,a.status
from v$session a
,v$sort_usage b
where a.saddr = b.session_addr
order by b.tablespace,b.segfile#,b.segblk#,b.blocks;
воскресенье, 26 апреля 2009 г.
UNIX
Заметки:
Параметры ядра Linux можно устанавливать так:
Половину всей "MemTotal" отдаём под hugepages (при "MemTotal Kb"/2048 была бы отдана вся память)
echo "vm.nr_hugepages = $(awk '$1 == "MemTotal:"{tmp=$2/4096; printf"%0.0f\n", tmp}' /proc/meminfo)" >> /etc/sysctl.conf
Максимальный размер сегмента разделяемой памяти составляет половину всей "MemTotal"
sed -ie 's/^kernel.shmmax/#kernel.shmmax/g' /etc/sysctl.conf
echo "kernel.shmmax = $(awk '$1 == "MemTotal:"{tmp=$2*512; printf"%0.0f\n", tmp}' /proc/meminfo)" >> /etc/sysctl.conf
Половину всей "MemTotal" отдаём под Shared Memory (при "MemTotal Kb"/4 была бы отдана вся память)
sed -ie 's/^kernel.shmall/#kernel.shmall/g' /etc/sysctl.conf
echo "kernel.shmall = $(awk '$1 == "MemTotal:"{tmp=$2/8; printf"%0.0f\n", tmp}' /proc/meminfo)" >> /etc/sysctl.conf
ora soft memlock = "MemTotal Kb" * 0.901
echo "ora soft memlock $(awk '$1 == "MemTotal:"{tmp=$2*0.901; printf"%0.0f\n", tmp}' /proc/meminfo)" >> /etc/security/limits.conf
ora hard memlock = "MemTotal Kb" * 0.901
echo "ora hard memlock $(awk '$1 == "MemTotal:"{tmp=$2*0.901; printf"%0.0f\n", tmp}' /proc/meminfo)" >> /etc/security/limits.conf
Пример:
cat << EOF >> /etc/security/limits.conf
ora soft nofile 65536
ora hard nofile 65536
ora hard nproc 65536
ora soft nproc 65536
EOF
echo "ora soft memlock $(awk '$1 == "MemTotal:"{tmp=$2/2; printf"%0.0f\n", tmp}' /proc/meminfo)" >> /etc/security/limits.d/99-grid-oracle-limits.conf
echo "ora hard memlock $(awk '$1 == "MemTotal:"{tmp=$2/2; printf"%0.0f\n", tmp}' /proc/meminfo)" >> /etc/security/limits.d/99-grid-oracle-limits.conf
cat << EOF >> /etc/sysctl.conf
kernel.sem = 250 32000 100 1024
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
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.panic_on_oops = 1
EOF
sed -ie 's/^kernel.shmmax/#kernel.shmmax/g' /etc/sysctl.conf
sed -ie 's/^kernel.shmall/#kernel.shmall/g' /etc/sysctl.conf
echo "kernel.shmall = $(awk '$1 == "MemTotal:"{tmp=$2/8; printf"%0.0f\n", tmp}' /proc/meminfo)" >> /etc/sysctl.conf
echo "vm.nr_hugepages = $(awk '$1 == "MemTotal:"{tmp=$2/4096; printf"%0.0f\n", tmp}' /proc/meminfo)" >> /etc/sysctl.conf
echo "kernel.shmmax = $(awk '$1 == "MemTotal:"{tmp=$2*512; printf"%0.0f\n", tmp}' /proc/meminfo)" >> /etc/sysctl.conf
yum -y install libXp libaio-devel sysstat unixODBC unixODBC-devel gcc elfutils glibc-devel glibc-headers gcc-c++ kernel-headers libstdc++-devel elfutils-libs elfutils-libelf-devel xorg-x11-utils ksh compat-libcap1 compat-libstdc++-33 tuned unzip
chkconfig tuned on
service tuned start
Настройка sshd_config на Linux:
Установить необходимые пакеты:
yum install nc
yum install xauth
yum install xclock
yum install xorg-x11-fonts*
yum search fuser
yum install psmisc
yum list elfutils-libelf-devel
yum install elfutils-libelf-devel
yum search screen
yum install screen.x86_64
vi /etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
/bin/systemctl status sshd.service
/bin/systemctl restart sshd.service
Настройка sshd_config на AIX
# vi /etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
# stopsrc -s sshd; sleep 2; startsrc -s sshd
Crontab
Запись crontab- файла в общем случае состоит из семи полей:
минуты часы день месяц день_недели имя_пользователя команда
Допустимые значения временных параметров:
| Параметр | Допустимый интервал |
| минуты | 0-59 |
| часы | 0-23 |
| день месяца | 1-31 |
| месяц | 1-12 |
| день недели | 0-7 (0-Вс,1-Пн,2-Вт,3-Ср,4-Чт,5-Пт,6-Сб,7-Вс) |
- * — любая цифра;
- целое число;
- целые числа через запятую — задание дискретного множества значений, например 1,2,5;
- два целых числа, разделенные дефисом, соответствующие диапазону значений, например 3-6.
Каждую минуту:
* * * * *
Каждый час, с использованием переменных cron:
@hourly ~/script.sh
Каждый день в 03:15 запускать скрипт:
15 3 * * * ~/script.sh
Каждый понедельник:
0 0 * * 1
Каждый четный час:
* */2 * * *
Тоже что и выше, но расписанное полностью:
* 0,2,4,6,8,10,12,14,16,18,20,22 * * *
Каждые 10 минут:
*/10 * * * *
Новый год
59 23 31 dec *
Каждый будний день в 22:00:
0 22 * * 1-5
каждый час в 15 минут;
15 * * * *
каждую минуту, между 00:00 и 00:59.
* 0 * * *
Запуск программы с графической оболочкой (GUI); каждую минуту будет отображаться сообщение с текстом:
0-59 * * * * DISPLAY=:0 gdialog --msgbox "Hello World\!" 25 20 > /dev/null
Запуск скрипта каждый понедельник в 9:00 и 18:00 часов:
0 9,18 * * 1 /home/angor/script.sh
Запуск скрипта каждый день в 0:30 и 12:30:
30 */12 * * * script.sh
Запуск команды каждый месяц 1 числа в 12:00:
0 12 1 * * command
Запуск скрипта в полночь с понедельника по пятницу:
0 0 * * 1-5 /home/angor/script.sh
# выполнять скрипт backupscript каждые 5 минут
*/5 * * * * /root/backupscript.sh
# выполнять скрипт backupscript каждый день в час ночи
0 1 * * * /root/backupscript.sh
# выполнять скрипт каждый месяц первого числа в три часа ночи пятнадцать минут
15 3 1 * * /root/backupscript.sh
# Выполнять задание в 18 часов 7 минут 13 мая если это пятница
7 18 13 5 5 /home/angor/myscript.sh
# Выполнять задание раз в час в 0 минут
0 */1 * * * /home/angor/myscript.pl
# Выполнять задание каждые семь часов в 0 минут
0 */7 * * * /home/angor/myscript.sh
# Выполнять задание по воскресеньям в 10 час 30 минут
30 10 * * 0 /home/angor/myscript.pl
# Пример запуска скрипта python каждую минуту:
* * * * * export DISPLAY=:0 && /usr/bin/python /home/angor/script.py
#Или так:
* * * * * export DISPLAY=:0 && cd /home/angor && ./script.py
# Пример запуска скрипта php в 5 утра каждый день:
0 5 * * * /usr/bin/php -q /home/angor/script.php
Пример для тестовой базы:
# Reserv Crontab to text file:
0 03 * * * crontab -l > ${HOME}/bin/crontab_oracle.lst
# Checking filesystem usage:
30 08 * * * ${HOME}/bin/pkg/monitor_fs/_run.sh 80 Warning > /dev/null 2>> /tmp/crontab_oracle.err
09,39 * * * * ${HOME}/bin/pkg/monitor_fs/_run.sh 90 Error > /dev/null 2>> /tmp/crontab_oracle.err
# Rman Backups:
00 20 * * * ${HOME}/bin/pkg/rman_backup/_run.sh testdb > /dev/null 2>> /tmp/crontab_oracle.err
# ADRCI purge
30 06 * * 0 ${HOME}/bin/pkg/adrci_purge/_run.sh > /dev/null 2>> /tmp/crontab_oracle.err
# Clean system audit
06 04 * * * ${HOME}/bin/pkg/clean_sys_audit/_run.sh 7 > /dev/null 2>> /tmp/crontab_oracle.err
# MAINTANANCE_STATISTICS:
00 06 * * 0 ${HOME}/bin/pkg/gather_statistics/_run.sh testdb > /dev/null 2>> /tmp/crontab_oracle.err
Продолжительность выполнения скрипта:
start_secs=$(/usr/xpg4/bin/awk 'BEGIN{srand();print srand()}')
begin_backup="`date +%Y.%m.%d" "%H:%M:%S`"
sqlplus '/ as sysdba' << EOF > /dev/null
alter database backup controlfile to trace as '$RMAN_BKP/$ORACLE_SID/ctrl_trace_${ORACLE_SID}' reuse;
create pfile='$RMAN_BKP/$ORACLE_SID/init${ORACLE_SID}.bkp' from spfile;
exit;
EOF
cp -pr ${orapwd_filename} $RMAN_BKP/$ORACLE_SID/orapw${ORACLE_SID}
$UTL_RMAN target / catalog 'rman/pass@catdb' cmdfile ${rman_cmdfile} log=${log_file}
###$UTL_RMAN target / cmdfile ${rman_cmdfile} log=${log_file}
finish_secs=$(/usr/xpg4/bin/awk 'BEGIN{srand();print srand()}')
end_backup="`date +%Y.%m.%d" "%H:%M:%S`"
let diff_secs=($finish_secs - $start_secs)
let days=$diff_secs/86400
let remainder=$diff_secs%86400
let hours=$remainder/3600
let remainder=$remainder%3600
let minutes=$remainder/60
let seconds=$remainder%60
size=$(du -sh /u09/backups/oradb/rman/${ORACLE_SID}/oradata/ | awk '{print $1}')
echo "Begin backup: $begin_backup" >> ${log_file}
echo "End backup: $end_backup" >> ${log_file}
echo "Duration: Days = $days, Hours = $hours, Minutes = $minutes, Seconds = $seconds" >>${log_file}
echo "Size: $size" >>${log_file}
вторник, 7 апреля 2009 г.
VxVM Striped Mirrors
Striped Mirrors
vxassist -g datadg make db001_v 10g layout=stripe,mirror stwidth=256 ncol=3 A1D0 A1D1 A1D3 A1D4 A1D5 A1D6
mkfs -F vxfs /dev/vx/rdsk/datadg/db001_v
mount -F vxfs /dev/vx/dsk/datadg/db001_v /var/temp
A simple concat
vxassist -g datadg make 10.1.0.3_v 5g layout=mirror A1L1 A1R1
-------------------------------------------------------------
If vxassist fails to make a mirror we can use vxmake
USe vxprint to find unused space as below
sd A1D1-O4 - A1D1 13335804 4445268 - c1t8d0 ENA
sd A1D1-O3 - A1D1 17781072 4445268 - c1t8d0 ENA
sd A1D1-I4 - A1D1 53343216 4445268 - c1t8d0 ENA
tncbu01:root# vxmake -g datadg plex spare layout=stripe stwidth=64 sd=A1D1-O4,A1D1-O3,A1D1-I4,A1D1-I5,A1D1-I6,A1D2-04,A1D2-I4,A1D2-I5,A1D2-I6,A1D3-O3,A1D3-I3,A1D3-I4,A1D3-I5,A1D3-I6
vxmake -g datadg -U fsgen vol spare_v plex=spare
vxmake -g datadg plex spare2 layout=stripe stwidth=64 sd=A1D4-O5,A1D4-O4,A1D4-O3,A1D4-I4,A1D4-I5,A1D4-I6,A1D5-O5,A1D5-O4,A1D5-O3,A1D5-I4,A1D5-I5,A1D5-I6,A1D6-O3,A1D6-I3,A1D6-I4
vxplex att spare_v spare2
vxvol -g datadg start spare_v
newfs /dev/vx/rdsk/datadg/spare_v
vxvol -g datadg resync spare_v
----------------------------------------------------------------
To manually configure each stage
disk offset (for 1st this is 0 then number in active column + number in next
column (length) for last vol)
1048640 = 1 gig
vxdg -g rootdg free
DISK DEVICE TAG OFFSET LENGTH FLAGS
rootdisk c1t0d0s2 c1t0d0 16386407 54737883 -
rootmirror c1t1d0s2 c1t1d0 12289806 58828707 -
vxmake -g rootdg sd root-db001 disk=rootdisk offset=16386407 len=4194560
vxmake -g rootdg sd root-db001a disk=rootmirror offset=16386407 len=4194560
vxmake -g rootdg sd root-db002 disk=rootdisk offset=20580967 len=4194560
vxmake -g rootdg sd root-db002a disk=rootmirror offset=20580967 len=4vxass194560
vxmake -g rootdg plex db001 layout=stripe stwidth=64 sd=root-db001,root-db001a
vxmake -g rootdg plex db002 layout=stripe stwidth=64 sd=root-db002,root-db002a
vxmake -g rootdg -o largefiles -Ufsgen vol db001_v plex=db001
vxmake -g rootdg -o largefiles -Ufsgen vol db002_v plex=db002
vxvol -g rootdg start db001_v
vxvol -g rootdg start db002_v
mkfs -F vxfs /dev/vx/rdsk/rootdg/db001_v
mkfs -F vxfs /dev/vx/rdsk/rootdg/db002_v
mkdir /db001 /db002
mount -F vxfs /dev/vx/dsk/rootdg/db001_v /db001
mount -F vxfs /dev/vx/dsk/rootdg/db002_v /db002
/usr/lib/fs/vxfs/fsadm -F vxfs -o largefiles /db001
/usr/lib/fs/vxfs/fsadm -F vxfs -o largefiles /db002
add entries to vfstab
/dev/vx/dsk/rootdg/db001_v /dev/vx/rdsk/rootdg/db001_v /db001 vxfs 3 yes largefiles
/dev/vx/dsk/rootdg/db002_v /dev/vx/rdsk/rootdg/db002_v /db002 vxfs 3 yes largefiles
vxassist -g datadg make db001_v 10g layout=stripe,mirror stwidth=256 ncol=3 A1D0 A1D1 A1D3 A1D4 A1D5 A1D6
mkfs -F vxfs /dev/vx/rdsk/datadg/db001_v
mount -F vxfs /dev/vx/dsk/datadg/db001_v /var/temp
A simple concat
vxassist -g datadg make 10.1.0.3_v 5g layout=mirror A1L1 A1R1
-------------------------------------------------------------
If vxassist fails to make a mirror we can use vxmake
USe vxprint to find unused space as below
sd A1D1-O4 - A1D1 13335804 4445268 - c1t8d0 ENA
sd A1D1-O3 - A1D1 17781072 4445268 - c1t8d0 ENA
sd A1D1-I4 - A1D1 53343216 4445268 - c1t8d0 ENA
tncbu01:root# vxmake -g datadg plex spare layout=stripe stwidth=64 sd=A1D1-O4,A1D1-O3,A1D1-I4,A1D1-I5,A1D1-I6,A1D2-04,A1D2-I4,A1D2-I5,A1D2-I6,A1D3-O3,A1D3-I3,A1D3-I4,A1D3-I5,A1D3-I6
vxmake -g datadg -U fsgen vol spare_v plex=spare
vxmake -g datadg plex spare2 layout=stripe stwidth=64 sd=A1D4-O5,A1D4-O4,A1D4-O3,A1D4-I4,A1D4-I5,A1D4-I6,A1D5-O5,A1D5-O4,A1D5-O3,A1D5-I4,A1D5-I5,A1D5-I6,A1D6-O3,A1D6-I3,A1D6-I4
vxplex att spare_v spare2
vxvol -g datadg start spare_v
newfs /dev/vx/rdsk/datadg/spare_v
vxvol -g datadg resync spare_v
----------------------------------------------------------------
To manually configure each stage
disk offset (for 1st this is 0 then number in active column + number in next
column (length) for last vol)
1048640 = 1 gig
vxdg -g rootdg free
DISK DEVICE TAG OFFSET LENGTH FLAGS
rootdisk c1t0d0s2 c1t0d0 16386407 54737883 -
rootmirror c1t1d0s2 c1t1d0 12289806 58828707 -
vxmake -g rootdg sd root-db001 disk=rootdisk offset=16386407 len=4194560
vxmake -g rootdg sd root-db001a disk=rootmirror offset=16386407 len=4194560
vxmake -g rootdg sd root-db002 disk=rootdisk offset=20580967 len=4194560
vxmake -g rootdg sd root-db002a disk=rootmirror offset=20580967 len=4vxass194560
vxmake -g rootdg plex db001 layout=stripe stwidth=64 sd=root-db001,root-db001a
vxmake -g rootdg plex db002 layout=stripe stwidth=64 sd=root-db002,root-db002a
vxmake -g rootdg -o largefiles -Ufsgen vol db001_v plex=db001
vxmake -g rootdg -o largefiles -Ufsgen vol db002_v plex=db002
vxvol -g rootdg start db001_v
vxvol -g rootdg start db002_v
mkfs -F vxfs /dev/vx/rdsk/rootdg/db001_v
mkfs -F vxfs /dev/vx/rdsk/rootdg/db002_v
mkdir /db001 /db002
mount -F vxfs /dev/vx/dsk/rootdg/db001_v /db001
mount -F vxfs /dev/vx/dsk/rootdg/db002_v /db002
/usr/lib/fs/vxfs/fsadm -F vxfs -o largefiles /db001
/usr/lib/fs/vxfs/fsadm -F vxfs -o largefiles /db002
add entries to vfstab
/dev/vx/dsk/rootdg/db001_v /dev/vx/rdsk/rootdg/db001_v /db001 vxfs 3 yes largefiles
/dev/vx/dsk/rootdg/db002_v /dev/vx/rdsk/rootdg/db002_v /db002 vxfs 3 yes largefiles
Подписаться на:
Сообщения (Atom)
