четверг, 1 мая 2014 г.

Установка PSU 11.2.0.3.10

 GRID INFRASTRUCTURE PATCH SET UPDATE 11.2.0.3.10 (INCLUDES DB PSU 11.2.0.3.10) (Patch)


Patch  18139678

Устанавливать так:

1. Stop the CRS managed resources running from DB homes.

# su - oraagent

$ emctl stop agent

# su - oradb

$ /u01/app/oradb/product/11.2.0.3/dbhome_1/bin/srvctl stop home -o /u01/app/oradb/product/11.2.0.3/dbhome_1 -s /export/home/oradb/state_file.oradb


2. Run the pre root script.

$su -

# /u01/app/11.2.0.3/grid/crs/install/roothas.pl -unlock


3. Unzipping

# su - oragrid

$cd /tmp

$unzip p18139678_112030_Linux-x86-64.zip


$ls -l
total 552336
drwxrwxr-x 4 oragrid oinstall 307 Jul 18 09:21 17592127
drwxr-xr-x 5 oragrid oinstall 302 Jul 18 09:21 18031683


4. Apply the CRS patch using.

Требования к OPatch version : 11.2.0.3.5


$ /u01/app/11.2.0.3/grid/OPatch/opatch napply -oh /u01/app/11.2.0.3/grid -local /tmp/17592127

$ /u01/app/11.2.0.3/grid/OPatch/opatch apply -oh /u01/app/11.2.0.3/grid -local /tmp/18031683



5. Run the pre script for DB component of the patch.

# su - oradb

$ /tmp/17592127/custom/server/17592127/custom/scripts/prepatch.sh -dbhome /u01/app/oradb/product/11.2.0.3/dbhome_1



6. Apply the DB patch.


$ /u01/app/oradb/product/11.2.0.3/dbhome_1/OPatch/opatch napply -oh /u01/app/oradb/product/11.2.0.3/dbhome_1 -local /tmp/17592127/custom/server/17592127
$ /u01/app/oradb/product/11.2.0.3/dbhome_1/OPatch/opatch apply -oh /u01/app/oradb/product/11.2.0.3/dbhome_1 -local /tmp/18031683



7. Run the post script for DB component of the patch.


$ /tmp/17592127/custom/server/17592127/custom/scripts/postpatch.sh -dbhome /u01/app/oradb/product/11.2.0.3/dbhome_1


8. Run the post script.

$su -

Run the post script.

# /u01/app/11.2.0.3/grid/rdbms/install/rootadd_rdbms.sh
# /u01/app/11.2.0.3/grid/crs/install/roothas.pl -patch


9. Start the CRS managed resources that were earlier running from DB homes.

# su - oradb

$ /u01/app/oradb/product/11.2.0.3/dbhome_1/bin/srvctl start home -o /u01/app/oradb/product/11.2.0.3/dbhome_1 -s /export/home/oradb/state_file.oradb


10. Проверяем:

$/u01/app/oradb/product/11.2.0.3/dbhome_1/OPatch/opatch lsinventory

$su - oragrid

$/u01/app/11.2.0.3/grid/OPatch/opatch lsinventory


вторник, 8 апреля 2014 г.

GAP Resolution

1. На STANDBY смотрим GAP:
$sqlplus "/as sysdba"
SQL*Plus: Release 11.2.0.3.0 Production on Fri Feb 7 10:24:00 2014
Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

SQL> SELECT * FROM V$ARCHIVE_GAP;
   THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#
---------- ------------- --------------
         1          1744           1751
SQL>

2. На PRYMARY восстанавливаем логи:
$export ORACLE_SID=testdb

$rman target /
Recovery Manager: Release 11.2.0.3.0 - Production on Fri Feb 7 10:25:29 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
connected to target database: testdb (DBID=97255669)

RMAN> connect catalog  'rman/passwd@catdb.sun.com';
connected to recovery catalog database

RMAN> run {
2> set archivelog destination to '/tmp';
3> restore archivelog from sequence 1744 until sequence 1751 thread 1;
4> }
executing command: SET ARCHIVELOG DESTINATION
Starting restore at 07-FEB-14
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=237 device type=DISK
channel ORA_DISK_1: starting archived log restore to user-specified destination
archived log destination=/tmp
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=1744
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=1745
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=1746
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=1747
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=1748
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=1749
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=1750
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=1751
channel ORA_DISK_1: reading from backup piece /u09/backups/oradb/rman/testdb/db_testdb_699_1_838841522
channel ORA_DISK_1: piece handle=/u09/backups/oradb/rman/testdb/db_testdb_699_1_838841522 tag=TAG20140206T193152
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
Finished restore at 07-FEB-14
RMAN> exit

Recovery Manager complete.
$

3. Копируем их на STANDBY:
$scp -pr testdb* stby:/tmp/
testdb_1_1744_8377911 100% |*********************************************************************************|  3476 KB    00:00   
testdb_1_1745_8377911 100% |*********************************************************************************|  1340 KB    00:00   
testdb_1_1746_8377911 100% |*********************************************************************************|   790 KB    00:00   
testdb_1_1747_8377911 100% |*********************************************************************************|   764 KB    00:00   
testdb_1_1748_8377911 100% |*********************************************************************************| 24433 KB    00:00   
testdb_1_1749_8377911 100% |*********************************************************************************|   909 KB    00:00   
testdb_1_1750_8377911 100% |*********************************************************************************|   626 KB    00:00   
testdb_1_1751_8377911 100% |*********************************************************************************|  1024       00:00   
$

4. Регистрируем их на STANDBY в controlfile:
$export ORACLE_SID=testdb

$sqlplus "/as sysdba"
SQL*Plus: Release 11.2.0.3.0 Production on Fri Feb 7 10:32:45 2014
Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

SQL> ALTER DATABASE REGISTER LOGFILE '/tmp/testdb_1_1744_837791122.arc';
ALTER DATABASE REGISTER LOGFILE '/tmp/testdb_1_1744_837791122.arc'
*
ERROR at line 1:
ORA-16089: archive log has already been registered

SQL> ALTER DATABASE REGISTER LOGFILE '/tmp/testdb_1_1745_837791122.arc';
Database altered.

SQL>  ALTER DATABASE REGISTER LOGFILE '/tmp/testdb_1_1746_837791122.arc';
 ALTER DATABASE REGISTER LOGFILE '/tmp/testdb_1_1746_837791122.arc'
*
ERROR at line 1:
ORA-16089: archive log has already been registered

SQL> ALTER DATABASE REGISTER LOGFILE '/tmp/testdb_1_1747_837791122.arc';
Database altered.

SQL> ALTER DATABASE REGISTER LOGFILE '/tmp/testdb_1_1748_837791122.arc';
Database altered.

SQL> ALTER DATABASE REGISTER LOGFILE '/tmp/testdb_1_1749_837791122.arc';
Database altered.

SQL> ALTER DATABASE REGISTER LOGFILE '/tmp/testdb_1_1750_837791122.arc';
Database altered.

SQL> ALTER DATABASE REGISTER LOGFILE '/tmp/testdb_1_1751_837791122.arc';
Database altered.
SQL>

5. После этого необходимо перестартовать MRP процесс

пятница, 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




суббота, 22 февраля 2014 г.

PowerShell

 Найдем все команды  PowerShell и приложения Windows со словом process :

PS C:\Users\angor> Get-Command *process*

CommandType     Name                                               ModuleName       
-----------     ----                                               ----------       
Cmdlet          Debug-Process                                      Microsoft.Power...
Cmdlet          Get-Process                                        Microsoft.Power...
Cmdlet          Start-Process                                      Microsoft.Power...
Cmdlet          Stop-Process                                       Microsoft.Power...
Cmdlet          Wait-Process                                       Microsoft.Power...
Application     qprocess.exe                                                        

PS C:\Users\angor>


Далее, по интересующему нас командлету можно получить справку:

PS C:\Users\angor> Get-Help Stop-Process

детальную информацию:

PS C:\Users\angor> Get-Help Stop-Process -Detailed


или полную информацию:

PS C:\Users\angor> Get-Help Stop-Process -Full


для некоторых командлетов можно увидеть и примеры:

PS C:\Users\angor> Get-Help Stop-Process -Examples



Командлеты работают с объектами.
Например командлет Get-ChildItem выдает объекты File и Folder для всех папок и файлов в текущем каталоге.

Вывод командлета можно перенаправить в файл ( используя символ > )  или в канал на вход другого командлета
( используя символ | ).

Если нет перенаправлений, то PowerShell форматирует список объектов в текст и выводит его на экран.


Пример:

PS C:\projects> Get-ChildItem


    Directory: C:\projects


Mode                LastWriteTime     Length Name                                   
----                -------------     ------ ----                                   
d----          1/4/2014   2:03 AM            old                                    
-a---         2/14/2014   2:29 AM      11884 install_oracle                         
-a---         2/14/2014   4:46 AM      10314 install_oracle_2                       
-a---          1/4/2014   2:12 AM       1309 neuro.py                               
-a---          1/4/2014   6:02 AM       1876 neuro1.py                              


Этот командлет возвратил пять объектов ( один типа  System.IO.DirectoryInfo и четыре типа  System.IO.FileInfo )

Эти объекты обладают многочисленными методами и свойствами, но в заголовке таблицы командлет по умолчанию вывел всего пять свойств
(Mode, LastWriteTime, Length, Name)

Чтобы узнать все остальные свойства и методы  объектов данного типа, необходимо передать эти объекты на вход другого командлета Get-Member:


PS C:\projects> Get-ChildItem | Get-Member


   TypeName: System.IO.DirectoryInfo

Name                      MemberType     Definition                                 
----                      ----------     ----------                                 
Mode                      CodeProperty   System.String Mode{get=Mode;}              
Create                    Method         void Create(), void Create(System.Securit...
CreateObjRef              Method         System.Runtime.Remoting.ObjRef CreateObjR...
CreateSubdirectory        Method         System.IO.DirectoryInfo CreateSubdirector...
Delete                    Method         void Delete(), void Delete(bool recursive) 
EnumerateDirectories      Method         System.Collections.Generic.IEnumerable[Sy...
EnumerateFiles            Method         System.Collections.Generic.IEnumerable[Sy...
EnumerateFileSystemInfos  Method         System.Collections.Generic.IEnumerable[Sy...
PSParentPath              NoteProperty   System.String PSParentPath=Microsoft.Powe...
PSPath                    NoteProperty   System.String PSPath=Microsoft.PowerShell...
PSProvider                NoteProperty   System.Management.Automation.ProviderInfo...
Attributes                Property       System.IO.FileAttributes Attributes {get;...
CreationTime              Property       datetime CreationTime {get;set;}           
CreationTimeUtc           Property       datetime CreationTimeUtc {get;set;}        
Exists                    Property       bool Exists {get;}                         
BaseName                  ScriptProperty System.Object BaseName {get=$this.Name;}   
.....

   TypeName: System.IO.FileInfo

Name                      MemberType     Definition                                 
----                      ----------     ----------                                 
Mode                      CodeProperty   System.String Mode{get=Mode;}              
AppendText                Method         System.IO.StreamWriter AppendText()        
CopyTo                    Method         System.IO.FileInfo CopyTo(string destFile...
Create                    Method         System.IO.FileStream Create()              
CreateObjRef              Method         System.Runtime.Remoting.ObjRef CreateObjR...
CreateText                Method         System.IO.StreamWriter CreateText()        
Decrypt                   Method         void Decrypt()
Delete                    Method         void Delete()                            
ToString                  Method         string ToString()                          
PSChildName               NoteProperty   System.String PSChildName=g                
PSDrive                   NoteProperty   System.Management.Automation.PSDriveInfo ...
PSIsContainer             NoteProperty   System.Boolean PSIsContainer=False         
PSParentPath              NoteProperty   System.String PSParentPath=Microsoft.Powe...
PSPath                    NoteProperty   System.String PSPath=Microsoft.PowerShell...
PSProvider                NoteProperty   System.Management.Automation.ProviderInfo...
Attributes                Property       System.IO.FileAttributes Attributes {get;...
CreationTime              Property       datetime CreationTime {get;set;}           
Name                      Property       string Name {get;}                         
BaseName                  ScriptProperty System.Object BaseName {get=if ($this.Ext...
VersionInfo               ScriptProperty System.Object VersionInfo {get=[System.Di...
.....


PS C:\projects>



Так так данные типы объектов обладают методом  Delete, то его можно использовать для удаления файлов и папок из указанного каталога:


Например:

PS C:\projects> Get-ChildItem c:\temp


    Directory: C:\temp


Mode                LastWriteTime     Length Name                                   
----                -------------     ------ ----                                   
d----         2/23/2014   4:31 AM            aa                                     
d----         2/23/2014   4:31 AM            bb                                     
-a---         2/23/2014   4:31 AM          1 cc                                     
-a---         2/23/2014   4:31 AM          1 dd                                     


PS C:\projects> (Get-ChildItem c:\temp).Delete()
PS C:\projects> Get-ChildItem c:\temp

PS C:\projects>

Все объекты были удалены.


Все хорошо, но существует несколько командлетов выполняющих универсальные действия:

Remove-Item
Move-Item
Rename-Item
Copy-Item

которые могут быть использованы с файловыми объектами для удаления, перемещения, переименования и копирования.

С данными командлетами можно использовать дополнительные опции:

Remove-Item -WhatIf
реально файлы удаляться не будут, но вывод покажет какие файлы были бы удалены без этой опции.

Remove-Item -Confirm
а эта опция потребует подтвердить удаление файлов.


Пример:

PS C:\projects> Get-ChildItem c:\temp


    Directory: C:\temp


Mode                LastWriteTime     Length Name                                   
----                -------------     ------ ----                                   
d----         2/23/2014   4:21 AM            aa                                     
d----         2/23/2014   4:21 AM            bb                                     
-a---         2/23/2014   4:21 AM          1 cc                                     
-a---         2/23/2014   4:21 AM          1 dd                                     



PS C:\projects> Get-ChildItem c:\temp | Remove-Item -WhatIf
What if: Performing the operation "Remove Directory" on target "C:\temp\aa".
What if: Performing the operation "Remove Directory" on target "C:\temp\bb".
What if: Performing the operation "Remove File" on target "C:\temp\cc".
What if: Performing the operation "Remove File" on target "C:\temp\dd".

PS C:\projects>

Ничего реально не удалилось.



PS C:\projects>
PS C:\projects> Get-ChildItem c:\temp | Remove-Item -Confirm

Потребовала подтверждения


PS C:\projects> Get-ChildItem c:\temp
PS C:\projects>

Объекты удалены, после подтверждения.











пятница, 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

понедельник, 13 января 2014 г.

Process IO Top utility with Solaris DTrace


Скрипт из блога:

http://lserinol.blogspot.ru/2009/04/process-io-top-utility-with-solaris.html


#!/usr/bin/bash
# process_io_top -  show procesess by top read/write KB I/O per file
#            Written by Levent Serinol (lserinol@gmail.com)
#            http://lserinol.blogspot.com
# Apr/14/2009
#
# USAGE: process_io_top [-s interval] [-p pid]
#    
#     -s interval     # gather and show statistics in given interval (seconds)
#     -p pid        # show read/write KB I/O just for given PID
#     -h         # show usage information
#
# eg:
#    process_io_top    -s 10   
#
#
#
####################################################################################
interval=5
show_pid=0
pid=0

function usage()
{
echo "
USAGE: io.sh [-s interval] [-p pid]
         -s             # set interval, default is 5 seconds
         -p pid         # pid
  eg,
         io -p 630                # io activity of pid 630
         io -s 10                 # refresh output in every 10 seconds";
}

while getopts h:p:s:a name
do
        case $name in
        p)         show_pid=1; pid=$OPTARG ;;
        s)         interval=$OPTARG ;;
        h|?)    usage;
                  exit 1
        esac
done

/usr/sbin/dtrace -Cws <( cat <
 inline int PID        = $pid;
 inline int SHOW_PID    = $show_pid;
 inline int INTERVAL    = $interval;


#pragma D option quiet
#pragma D option aggsortrev


dtrace:::BEGIN
{
  secs = INTERVAL;
  printf("Please wait....\n");
}

io:::start
/ (SHOW_PID == 1) && ( pid == PID) /
{
    self->rw=args[0]->b_flags & B_READ ? "R" : "W";
    @files[pid,execname,self->rw,args[2]->fi_pathname] = sum (args[0]->b_bcount);
    @total_blks[self->rw]=count();
    @total_bytes[self->rw]=sum (args[0]->b_bcount);
    self->rw=0;
}

io:::start
/ SHOW_PID == 0 /
/* SHOW_PID == 0 && args[2]->fi_pathname != "" */
{
    self->rw=args[0]->b_flags & B_READ ? "R" : "W";
    @files[pid,execname,self->rw,args[2]->fi_pathname] = sum (args[0]->b_bcount);
    @total_blks[self->rw]=count();
    @total_bytes[self->rw]=sum (args[0]->b_bcount);
    self->rw=0;
}

profile:::tick-1s
{
        secs--;
}


profile:::tick-1s
/secs == 0/
{

    trunc(@files,30);
    normalize(@files,1024);
    system("/usr/bin/clear");
    printf("%Y ",walltimestamp);
    printa("%s %@11d blocks, ",@total_blks);
    printa("%s %@11d bytes, ",@total_bytes);
    printf("\n%6s %-12s %3s %8s %3s\n", "PID", "CMD","R/W", "KB", "FILE");
    printa("%6d %-12.12s %1s %@10d %s\n",@files);
    secs = INTERVAL;

}
dtrace:::END
{
        trunc(@files);
}
EOF
)


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

Простой перцептрон


Простой перцептрон состоит из нескольких входов inp_t[1], inp_t[2] ... inp_t[n].
Каждому входу соответствует некий вес  w[1], w[2] ... w[n].
Также имеется вход активации inp_b с весом w_b.
На вход активации постоянно подается единица,  а вес на входе активации задает порог срабатывания перцептрона.

На выходе перцептрона  может быть либо единица 1 либо -1 в зависимости от входных сигналов и весовых коэффициентов.

Условие срабатывания перцептрона ( когда на выходе появляется единица) :

w_b +   w[1] *  inp_t[1] + w[2] *  inp_t[2] + ...+ w[n] *  inp_t[n]  > 0

Но можно и не различать входы inp_t и inp_b, а просто предположить, что у перцептрона  есть еще один вход inp_t[0], на который всегда подается единица, а w_b записать как w[0].
Тогда условие срабатывания перцептрона можно записать так:

w[0] *  inp_t[0] + w[1] *  inp_t[1] + w[2] *  inp_t[2] + ...+ w[n] *  inp_t[n]  > 0

Обучение перцептрона сводится к такому подбору весов w[0]...w[n] , при которых для всех
входных наборов данных  (inp_t[1], inp_t[2] ... inp_t[n]),  (inp_t[1], inp_t[2] ... inp_t[n]) ... (inp_t[1], inp_t[2] ... inp_t[n]), на выходе появлялось бы требуемое целевое значение out_t , соответствующее каждому входному набору.

Если реальное выходное значение перцептрона  out_r  отличается от требуемого целевого значения out_t,  то необходимо подправить веса w[0]....w[n] перцептрона.

На каждом шаге обучения веса w[0]....w[n] должны изменяться в соответствии с правилом:

w[i] += t * (out_t - out_r) * inp_t[i]

где  t - это небольшая константа (обычно  0,05 - 0,2) , которая задает скорость обучения.

Например обучим перцептрон логической функции дизъюнкции (операции ИЛИ).

 inp_t[1]  inp_t[2]  out_t

0    0   -1
0    1    1
1    0    1
1    1    1

На вход алгоритму подаем скорость обучения t = 0,1
и входной вектор из четырех тестовых наборов [[0,0,-1],[0,1,1],[1,0,1],[1,1,1]]
в соответствии с таблицей истинности логической операции ИЛИ.
на выходе должны получить вектор весовых коэффициентов w[0]....w[n]



Алгоритм обучения простого перцептрона:

import random

def PerTrain(t, v):

    w = []

    # инициализируем начальные веса маленькими случайными значениями
    for i in range(len(v[0])):
        w.append((random.randrange(-5,5))/50.0)

    chw = True
    while (chw == True):

       chw = False
      
       for tst_n in v:
           
            # получаем входные значения из тесового набора
            # единицу добавляем для входа активации  ( inp_t[0] = 1)
            inp_t = [1] + tst_n[0:len(tst_n) - 1]
          
            # получаем целевое выходное значение из тестового набора
            out_t = tst_n[len(tst_n) - 1]
          
            # реальное выходное значение будет вычислено позже
            out_r = 0

            # вычисляем выходное значение перцептрона (out_r)
            for i in range(len(w)):
                out_r += w[i] * inp_t[i]

            if out_r > 0:
                out_r = 1
            else:
                out_r = -1

           
            if (out_r != out_t):
                chw = True
                # если на каком либо тестовом наборе перцептрон не сработал, то пересчитываем веса
                for i in range(len(w)):
                    w[i] += t * (out_t - out_r) * inp_t[i]
                   
                break  

    return w

rez = PerTrain(0.1,[[0,0,-1],[0,1,1],[1,0,1],[1,1,1]])

print(rez)



Например получили такие веса:

[-0.1, 0.14, 0.16]

Проверяем:

print(1*-0.1 + 0*0.14 + 0*0.16)
print(1*-0.1 + 0*0.14 + 1*0.16)
print(1*-0.1 + 1*0.14 + 0*0.16)
print(1*-0.1 + 1*0.14 + 1*0.16)

в результате получаем:

-0.1
0.06
0.04000000000000001
0.2

что действительно соответствует дизъюнкции:

-1
 1
 1
 1