HERNK’S JOURNAL

Strobist

Posted by: hernk on: 29 March 2009

Strobist berasal dari kata strobe, yang dalam istilah fotografi berarti alat yang memproduksi cahaya secara terus menerus. Dengan bahasa yang lebih populer Strobist adalah fotografer yang senang menggunakan flash (blitz) secara off-camera. Jika umumnya, di masa sebelumnya orang menggunakan flash dengan cara diletakkan diatas hot-shoe kamera, maka para strobist menggunakan flash dengan jarak tertentu dari kamera. Bagaimana caranya?

Alat yang paling dibutuhkan untuk menggunakan flash secara off-camera adalah mekanisme wireless trigger (pemantik nirkabel). Pada beberapa kamera dan flash modern, kemampuan nirkabel ini sudah ada secara integrated. Di sistem Nikon di sebut sebagai CLS (Creative Lighting System) sementara di sistem Canon disebut sebagai E-TTL (Evaluative – Trough The Lens). Jangan artikan secara harfiah istilah CLS dan E-TTL, karena bisa membuat bingung artinya, lebih baik ikuti penjelasan berikut ini.

Sistem pemantik nirkabel ini berfungsi untuk menyalakan flash secara sinkron ketika kita menekan tombol shutter pada kamera. Jadi flash akan menyala ketika kita menekan shutter selayaknya flash tersebut berada di dudukan hot shoe di kamera. Uniknya, kita bisa mensinkronisasi lebih dari satu flash bersamaan sekaligus dalam suatu pemotretan. Untuk sebuah foto fashion yang dilakukan outdoor, bisa dibutuhkan 3-5 flash (bahkan bisa lebih banyak) yang dinyalakan secara off-camera. Alat wireless trigger ini umumnya menggunakan gelombang radio atau sinar infra merah untuk menyalakan flash slave (budak atau flash lain yang harus tunduk pada flash utama).

Pada generasi fotografi yang masih menggunakan film, sudah ada trigger yang menggunakan cahaya sebagai trigger. Alat ini umum dikenal sebagai mata kucing (synchro eye) yang berbasis pada pencahayaan flash dari master yang segera diikuti oleh slave-nya. namun penggunaan mata kucing hanya terbatas di studio saja, karena kepekaan mata kucing ini tidak akan bekerja pada lokasi outdoor.

Walaupun kita memotret dengan matahari yang masih bersinar, namun dengan menggunakan teknik strobist, kita bisa mengisolasi cahaya matahari, yaitu dengan cara menggunakan speed sekitar 1/200 sehingga foto akan menjadi under lighting. Untuk menambahkan cahaya pada subyek kita dapat menambahkan flash secara off-camera (dari sisi kiri) sehingga cahaya yang jatuh tidak datar sebagaimana kita letakkan flash di shoe kamera. Speed 1/200 adalah speed maksimal yang masih dapat melakukan sinkronisasi antara kamera dengan flash, namun beberapa kamera keluaran terbaru mampu melakukan sinkronisasi lebih dari batas tersebut. Banyak fotografer yang memanfaatkan sinar matahari sebagai background untuk teknik strobist ini, sehingga akan menghasilkan foto-foto yang indah.

bharata
source : http://citizenimages.kompas.com/forum/viewtopic.php?f=59&t=11

Server Info

Posted by: hernk on: 17 February 2009

Solaris: check OS level: uname -a
application support: isainfo -v
General Info: /usr/platform/sun4u/sbin/ ./prtdiag -v | more
Amount Memory: /usr/sbin/prtconf | grep size

AIX: check OS leveL: lslpp -l bos.rte or uname -a
Hardware Info: lscfg
Amount Memory: lsattr -El mem0
General Info: lsattr -El sys0

PRAGMA AUTONOMOUS_TRANSACTION

Posted by: hernk on: 14 February 2009

The AUTONOMOUS_TRANSACTION pragma marks a routine as autonomous; that is, independent of the main transaction.

In this context, a routine is one of the following:

* Top-level (not nested) anonymous PL/SQL block
* Standalone, packaged, or nested subprogram
* Method of a SQL object type
* Database trigger

When an autonomous routine is invoked, the main transaction is suspended. The autonomous transaction is fully independent of the main transaction: they share no locks, resources, or commit dependencies. The autonomous transaction does not affect the main transaction.

Changes made by an autonomous transaction become visible to other transactions when the autonomous transaction commits. They become visible to the main transaction when it resumes only if its isolation level is READ COMMITTED (the default).

source : oracle.com

How to find locked objects

Posted by: hernk on: 6 February 2009

Here is the script how to find locked objects in oracle.

select
oracle_username
os_user_name,
locked_mode,
object_name,
object_type
from
v$locked_object a,dba_objects b
where
a.object_id = b.object_id

The possible values for lock_mode are:
1: null,
2: Row Share (SS),
3: Row Exclusive (SX),
4: Share (S),
5: Share Row Exclusive (SSX) and
6: Exclusive(X)

Improving SQL*Loader’s Performance

Posted by: hernk on: 29 January 2009

# by Sanjay Mishra

Drop indexes before loading data

If you are loading a substantial amount of data, I recommend dropping the indexes on the target table before doing the load. Index maintenance takes time, and it generates extra disk I/O.

Each time a new row is inserted into a table, all the indexes for the table must be updated. It’s possible even that the I/O requirements of updating indexes will exceed those for inserting the row in the first place. By dropping indexes on the target table, you allow the load to proceed more quickly. After the load is complete, you can recreate the indexes. You may need to experiment a bit to find the point at which it becomes more efficient to rebuild indexes after the load than to maintain them during the load.

There is one exception to my suggestion of dropping indexes before a load. Indexes associated with primary key and unique key constraints should never be dropped. To do so sacrifices data integrity. You need such indexes in place at all times so that the proper business rules are enforced.
#

Use TRUNCATE instead of REPLACE

If you want to delete existing data from a table before loading it, I recommend using the TRUNCATE keyword instead of the REPLACE keyword in your INTO TABLE clause.

The REPLACE keyword causes SQL*Loader to issue a DELETE statement against the target table before beginning the load. A SQL DELETE operation carries with it a lot of baggage. Transactional integrity must be maintained, so deleted rows are written to rollback segments so they are available in the event the transaction is rolled back. In addition, a database redo log entry will be written for each database block affected by the DELETE. Given a large table, the amount of extra I/O can be substantial.

You also risk running out of rollback segment space. The TRUNCATE keyword, on the other hand, causes SQL*Loader to issue a SQL TRUNCATE TABLE statement. Such a statement does not generate any rollback segment entries. In addition, it only results in one redo log entry–for the statement itself.

Bottom line: If you can use TRUNCATE instead of REPLACE and your target table is not of a trivial size, your performance gain will be significant.
#

Use a larger bind array

The bind array is the area in memory where SQL*Loader stores a batch of data to be loaded. When the bind array fills, it is transmitted to the database. Generally, the larger the bind array, the more rows can be loaded in one operation, and the better your performance will be.

The bind array size is controlled by the READSIZE and BINDSIZE parameters, and the default size is 64KB (256KB in Oracle9i). Finding the optimal setting for a given load takes a bit of trial and error.

First, increase the READSIZE and BINDSIZE settings (usually, both should be the same). Then, determine the number of rows that will fit within the bind array, and set the ROWS parameter to that value. Run the load. If you see a performance gain, try increasing the bind array size once again. Continue this process until you are comfortable with the performance.
#

Avoid use of CONTINUEIF and CONCATENATE

If at all possible, prepare your input data in such a way that you have a one-to-one correspondence between physical and logical records.

SQL*Loader does allow you to join multiple physical records into one logical record using the CONTINUEIF and CONCATENATE keywords, but this joining involves some amount of overhead. You’re better off if you can avoid that overhead, so whenever you have control over the format of your input data, strive to avoid the need to concatenate multiple physical records together.

5.

Load fixed-width data instead of delimited data

If you have the option of loading from either fixed-width or delimited data files, choose the fixed-width data. You’ll save the rather significant overhead of scanning each record for delimiters.
6.

Avoid character set conversion

SQL*Loader supports character set conversion between the character set used in the input data file and the character set used by the database server. However, character set conversion takes time and requires CPU resources. If you can keep all character sets the same, you avoid that overhead and your load will run faster than if these conversions needed to be made.
7.

Avoid unnecessary NULLIF and DEFAULTIF clauses

The NULLIF and DEFAULTIF clauses allow you to set a column to NULL or to its default value given a specified condition in the input record. Any NULLIF and DEFAULTIF clauses that you specify in your control file need to be evaluated for each row in your input file. This poses a considerable amount of processing overhead.

Avoid NULLIF and DEFAULTIF clauses where you can and your load will run that much faster.
8.

Perform direct path loads

A direct path load is one in which SQL*Loader writes directly to your database’s datafiles, as opposed to loading data by executing SQL INSERT statements. Because the direct path bypasses standard SQL statement processing, it results in a significant performance improvement. Direct path loads can’t be used in all circumstances, but when they can be used, the performance benefits are significant.

While it will not always be possible to apply all of these techniques in every environment, the more you can employ the better. If you implement the tips that are most appropriate to your situation, you should notice a significant improvement in SQL*Loader’s performance.

Categories

Blog Stats

  • 43,510 hits

Archives

Flickr Photos

bicycle

just a boat

broken

bakau

More Photos

Web Stat

Blog Worth


My blog is worth $564.54.
How much is your blog worth?