23 апреля 2013 г.

Oracle Web Services Manager Gateway Is Slow


На московском узле портала gosuslugi.ru стал зависать сервер с Oracle Web Services Manager

Нашел подходящую статью с описанием:
Oracle Web Services Manager Gateway Is Slow And Causes Locks [ID 967020.1]


Для исправления нужно создать 2 индекса и очистить пул:

CREATE INDEX orawsm.IDX_MPSTORE_TEST_1 ON orawsm.MEASUREMENT_PERSISTED_STORE (STORETIME) LOGGING TABLESPACE USERS NOPARALLEL;
       
CREATE INDEX orawsm.IDX_pipeline_TEST_1 ON orawsm.PIPELINES (policy_id, pipeline_status,pipeline_major_ver, pipeline_minor_ver ) LOGGING TABLESPACE USERS NOPARALLEL;

alter system flush shared_pool;

5 февраля 2013 г.

Ошибка TNS-12555: TNS:permission denied



При старте листенера на одном из серверов получил ошибку:

Starting /opt/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /opt/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Log messages written to /opt/oracle/diag/tnslsnr/asur-nsi-db-02/listener/alert/log.xml
Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
TNS-12555: TNS:permission denied
 TNS-12560: TNS:protocol adapter error
  TNS-00525: Insufficient privilege for operation
   Linux Error: 1: Operation not permitted

Listener failed to start. See the error message(s) above...

В интернете нашел, что  причина в каталоге /var/tmp/.oracle

Для проверки:

ls -la /var/tmp/.oracle
total 44
drwxrwxrwt 2 root   oracle 4096 Feb  5 15:44 .
drwxrwxrwt 3 root   root   4096 Mar 22  2012 ..
srwxrwxrwx 1 oracle oracle    0 Mar 22  2012 s#12914.1
srwxrwxrwx 1 oracle oracle    0 Mar 22  2012 s#12914.2
srwxrwxrwx 1 oracle oracle    0 Mar 22  2012 s#13198.1
srwxrwxrwx 1 daemon root      0 May 14  2012 s#16174.1
srwxrwxrwx 1 daemon root      0 May 14  2012 s#16174.2
srwxrwxrwx 1 daemon root      0 Apr  2  2012 s#18732.1
srwxrwxrwx 1 daemon root      0 Apr  2  2012 s#18732.2
srwxrwxrwx 1 daemon root      0 Mar 22  2012 s#4741.1
srwxrwxrwx 1 daemon root      0 Apr 11  2012 s#7507.2
srwxrwxrwx 1 daemon root      0 Oct  6 12:45 sEXTPROC1
srwxrwxrwx 1 oracle oracle    0 Mar 22  2012 sEXTPROC1521

Как видно, несколько файлов имеют владельцем другую группу.
Для исправления:
chown -R oracle:oracle /var/tmp/.oracle


1 февраля 2013 г.

Opening of wallet based credential store failed. Reason java.io.IOException

Скопировал сервер с Oracle Aplication Server 10 на другой хост. 

1) При старте получил ошибку: 
Opening of wallet based credential store failed. Reason java.io.IOException

Для исправления нужно сделать:
chmod -R 777 /tmp

2) Нужно исправить файл hosts


29 января 2013 г.

Удаление архивных логов


Настроил несколько standby серверов, после этого появилась проблема с удалением архивных логов Oracle.

По официальной документации делаем так:
- настроить архивирование логов с помощью rman
- настроить  RETENTION POLICY
- включить mandatory для передачи архивных логов
- затем удалять логи с помощью
backup archivelog all delete input;
- на standby сервере можно использовать что-то вроде
delete archivelog all completed before 'sysdate';
или
delete archivelog until time ‘SYSDATE-10';

Этот вариант мне не подошел, пришлось удалять все логи вручную с помощью скриптов:

#!/bin/bash

echo "start ..."

. /home/oracle/scripts/oraenv.sh

export NLS_DATE_FORMAT="DD-MON-RRRR HH24:MI:SS"
export TODAY=`date '+%Y%m%d'`
export TIME=`date '+%H%M%S'`

echo "step 2 ..."


cd /home/oracle/scripts

rm /home/oracle/scripts/1.tmp

sqlplus -s / as sysdba << EOF
set heading off
set pages 0 echo off feedback off
spool /home/oracle/scripts/1.tmp
select max(sequence#)-10 from v\$archived_log where dest_id=5 and thread#=1 and standby_dest='YES' and applied ='YES';
spool off;
exit;
EOF

echo "step 3 ..."

seq1=`cat /home/oracle/scripts/1.tmp | awk 'NR==1{print $1}'`

echo "step 4 ..."
echo "seq1 = $seq1"


echo $seq1
echo "delete noprompt archivelog until sequence $seq1 thread 1;"

rman msglog /home/oracle/scripts/PRIMARY_ARC_DEL.${TODAY}_${TIME}.log << EOF
connect target /
run{
delete noprompt archivelog until sequence $seq1 thread 1;
}
EOF

echo "done ..."


exit


22 января 2013 г.

Краткая инструкция по установке Standby сервера


ON PRIMARY

1) Прописать на каждом из 3-х узлов в /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

DOCSTB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = xxxxxxxxxx)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = docstb)
    )
  )

DOC =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = xxxxxxxxxxxxx)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = doc)
    )
  )

ON STANDBY

2) Прописать тоже самое, что и в пункте

3) Прописать статический листенер в /u01/app/oracle/product/11.2.0/grid/network/admin/listener.ora  , чтобы мы могли удаленно подсоединиться к базе в состоянии nomount

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME=docstb)
      (ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME = docstb)
    )
  )


ON PRIMARY

4) Скопировать файл паролей с одного из узлов на стендбай и переименовать его в orapwdocstb


ON STANDBY

5) Создаём audit trail директорию в $ORACLE_BASE/admin

cd /u01/app/oracle/admin
mkdir docstb
cd docstb
mkdir adump

6) Создаём файл параметров initdocstb.ora в директории /u01/app/oracle/product/11.2.0/dbhome_1/dbs/

db_name=docstb

7) Устанавливаем ORACLE_SID=docstb и запускаем базу в режиме nomount

startup nomount

ON PRIMARY

8) Выполняем команды

alter system set log_archive_config='DG_CONFIG=(doc,docstby,docstb)';
alter system set log_archive_dest_3='SERVICE=DOCSTB VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=docstb';
alter system set log_archive_dest_state_3=enable;


9) Создаем скрипт standby.sql

run {
     allocate channel doc type disk;
     allocate auxiliary channel docstb type disk;
     duplicate target database for standby
     from active database
spfile
     set cluster_database='FALSE'
     set user_dump_dest='/u01/app/oracle/diag/rdbms/docstb/trace'
     set core_dump_dest='/u01/app/oracle/diag/rdbms/docstb/cdump'
     set background_dump_dest='/u01/app/oracle/diag/rdbms/docstb/trace'
     set audit_file_dest='/u01/app/oracle/admin/docstb/adump'
     set db_create_file_dest='+STBY'
     set db_recovery_file_dest='+STBY'
     set db_recovery_file_dest_size='300G'
     set local_listener=''
     set remote_listener=''
     set service_names='docstb'
     set db_unique_name='docstb'
     set db_file_name_convert='+DATA','+STBY'
     set log_file_name_convert='+DATA','+STBY'
     set control_files='+STBY/docstb/controlfile/docstb.ctl'
     set log_archive_max_processes='5'
     set fal_client='docstb'
     set fal_server='doc'
     set standby_file_management='AUTO'
     set log_archive_config='DG_CONFIG=(doc,docstb)'
     set log_archive_dest_2='SERVICE=DOC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=doc';
     }

10) Запускаем скрипт на одном из узлов

rman target sys/xxxxxxx
connect auxiliary sys/xxxxxxxxxxx@docstb
@/u01/app/oracle/product/11.2.0/dbhome_1/dbs/standby.sql

ON STANDBY

11)
alter database recover managed standby database using current logfile disconnect from session;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
alter database open read only;
alter database recover managed standby database using current logfile disconnect from session;

alter system set dg_broker_start=TRUE;


ON PRIMARY

12)

dgmgrl> connect sys/******
dgmgrl> add database docstb as  connect identifier is docstb;
 dgmgrl> enable configuration;

15 января 2013 г.

Установка Crypto Pro JSP


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


C:\jcp\lib>install "D:\oracle\soasuite\asgw2\jdk\jre" СЕРИЙНЫЙ_НОМЕР "НАЗВАНИЕ_ОРГАНИЗАЦИИ"

14 января 2013 г.

Небольшая инструкция использования ASM без asmlib


В версии red hat 6.3 не поддерживается asmlib. 
Инструкция сделана на основе документа во вложении Configure RAW on ASM.docx

On first node

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


2) # cat /proc/partitions  -- проверяем создание партиции
major minor  #blocks  name

   8        0  104857600 sda
   8        1     512000 sda1
   8        2   74984448 sda2
   8       16  524288000 sdb
   8       17  524281243 sdb1
253        0   35745792 dm-0
253        1   16777216 dm-1
253        2   22458368 dm-2

3) Open /etc/udev/rules.d/60-raw.rules and put these lines there for all disks

ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"


ACTION=="add", KERNEL=="raw*", OWNER=="oracle", GROUP=="oinstall",  MODE=="0660"


3) Run following commands to bound raw disks:
# /bin/raw /dev/raw/raw1 /dev/sdb1

4) Starting udev
# start_udev


ON second node

1) # /sbin/partprobe  --обновляет /proc/partitions

2) Run following commands to bound raw disks:
# /bin/raw /dev/raw/raw1 /dev/sdb1

3) Starting udev
# start_udev

Недостатки:
К сожалению, при такой конфигурации не работает часть функционала ASM, например ACFS:

ASMCMD> volcreate -G data -s 1G  volume_test
ORA-15032: not all alterations performed
ORA-15490: not all instances could add/drop the volume (DBD ERROR: OCIStmtExecute)