Oracle Database in fibre mode

Hi everybody,
Recently i was going through one document where the Cons and prons of Running Oracle Database Server(10g) in Microsoft Windows Operating Systems was being Discussed.
There i came across of Running the oracle Database in Fibre Mode which as it states: Employs Oracle Scheduled Fibres instead of O/S Scheduled threads...
Can anybody share some more light on running the DB in Fibre Mode...
What is this Fibre Mode actually....
Any help Appreciated...
Thanks & Regards,
Prosenjit Mukherjee

The pros and cons can be found at a far more easily visible level than getting into fibres versus threads.
1. Put antivirus software on the Windows server and performance will become glacial
2. In testing in my lab, without antivirus software, Oracle Enterprise Linux gives superior performance too all versions of Windows except 2008 Server.

Similar Messages

  • Oracle Database Client -- Oracle Database in SSL mode.

    Experts,
    I am trying to connect to a remote oracle database which in SSL mode. I installed "Oracle database client" on other server and trying to connect to remote database in SSL mode.
    Can you please provide brief steps ?
    Do I need configure any wallets on client side too ?. If yes, copying wallets from database server to client is enough ?
    Please help me.
    Thanks

    Pl do not post duplicates - Oracle Database Client --> Oracle Database in SSL mode.

  • How to setup oracle database to archivelog mode and auto delete ?

    Oracle 11g R2
    - How to setup database to archive log mode and have oracle only save 24 hours of archive logs
    and delete the rest. So at any given time I will have only 24 hours of archive log and not more.
    So only 1 day of archive logs.
    - Let me know the database parameters I need to setup to accomplish this.
    - I don't want to use the RMAN
    - I am not setting up the database to archive log mode for recovery purpose. I am setting up archive log mode
    so we can use the log miner tool to dig up achives to see log activity for any performance & tuning.
    Edited by: johnpau2013 on May 9, 2012 6:09 PM

    johnpau2013 wrote:
    Thanks everyone for there responses.
    I need to rephrase and explain everyone as what I wanted to do exactly. This might help everyone understand and suggest me.
    We have oracle database 11g r2. Its a test database. Nothing is critical. We use EXPDP utility to backup the entire database every night. Which is enough for us to recover incase something happens. Even if we loose some data. That's fine.
    We are testing our web application on this oracle test database for performance & tuning.
    One thing we have noticed is that the redo logs are switching very frequently. 50MB each log file and there are 5 logs. each log switches every 40 seconds. So we wanted to see what is getting written in this redo logs. We wanted to use the LOG MINER tool in OEM to read the logs. It needed our database to be setup in archive log mode. So the log miner can read the archive logs and show us the sql's within the archive logs.
    Now when we setup the archive log mode on our database. By default the archive logs destination was set to flash recovery area ( may be oracle default archive log location is flash recovery area folder).
    We have setup the db_recovery_file_dest_size to 100GB. Now within 2 days we have filled up the flash recovery area folder. Database was frozen. Then we realized that its because oracle couldn't write archive logs. Because it reached the 100GB. Then we physically deleted files in the flash recovery area folder. Thinking it would help us start the frozen oracle database. But it didn't . The we realized that we are doing something wrong. As Oracle does not know that at OS level we deleted the files. Then temporarily we changed the db_recovery_file_dest_size to 130GB and were able to start the oracle database. Later we turned OFF the archive log mode.
    Being a rookie DBA we would have not read something properly.
    Finally:
    We wanted to know how to always keep only 1 day of archive logs (only for our performance tuning ) and not more than that. All we need this 1 day of archive logs is to use the log miner to read them. Backup is NOT our priority here. Only be able to read the archive logs from LOG MINER is PRIORITY.
    Correct me if I am wrong.Okay, so its making much more sense now, thanks for explaining your requirement.
    Database won't honor anything that you would do over the o/s without telling it. Your deletion of the archive log from the o/s location is NOT updated in the control file of the database and that's why, even when you had deleted the entire 100GB , from the db perspective, the space was still marked as used. This is the same which would happen even if you would increase the space from 100gb to whatever size as well. To delete the space, you would need to update the database's control file and that you can do from RMAN using its two commands , crosscheck backup following with deleted expired backup . The first command would find that which database backup files are NOT on the o/s which are shown in the control file and would mark all of them as expired. The second command would simply delete those expired files. This would update the control file and you would have your 100gb or whatever space, given back to you.
    To keep the archive logs of just one day, set up that Retention Policy for RMAN to either number of copies using the Redundancy option(default and set to 1) or Recovery Window. I believe for you Redundancy would be a suitable choice but you can have a read and play around with it. Setting it up would mark the files as Obsoleted and finally, you can write a small RMAN script to delete those obsoleted files.
    Now, what I don't understand is that why you want to keep on generating the archive logs just for the log miner? If you would have generated them once and figure out the reason for extensive redo generation(did you try increasing the redo log file size, 50mb seems to be smallish) , I don't think that there is any reason to keep on generating the archive logs still .
    And last part, for your question asked about that whether we can use RMAN to put the db in the archive log and is it a backup tool, yes and yes.
    HTH
    Aman....

  • Problem running oracle 9i database in archivelog mode - database freezes

    Greetings,
    I recently needed to change a (test) database to archivelog mode to make online back-ups of this database. This posed no real problem although I seem to be unable to set the database to automatic archiving eventhough I edited the init.ora file (translation of the "archive log list" output between square brackets):
    SQL> archive log list
    Databaselogmodus Archiveermodus [Databaselogmode: Archivemode]
    Automatisch archiveren Gedeactiveerd [Automatic archiving: Deactivated]
    Archiveerbestemming O:\oracle\ora92\RDBMS [Archivedestionation: O:\oracle\ora92\RDBMS]
    Oudste on-line logreeks 12306
    Volgende logreeks voor archivering 12306
    Huidige logreeks 12308
    I added this to my init.ora file:
    # Archvie Log Destinations
    log_archive_start=TRUE
    log_archive_dest_1=%ORACLE_HOME%\database\archive
    log_archive_format="%%ORACLE_SID%%t_%s.arc"
    However, this is not the real problem (maybe it has something to do with it, which is why I mention it aswell), the real problem is that my database freezes when the archive log file is "full". When the archive file reaches ~102.400Kb it just freezes up and I need to restart the database.
    The following error is written to the alert_sid.log file:
    Thu Apr 17 09:19:55 2008
    Thread 1 cannot allocate new log, sequence 12309
    All online logs needed archiving
    Current log# 2 seq# 12308 mem# 0: O:\ORACLE\ORADATA\O\REDO02.LOG
    The problem seems to be that the oracle service can't start a new logfile when the previous one is full. Does anybody know how I could fix this?
    Thanks in advance,
    Bram

    Hello Maran, thanks for your quick response.
    I added the output of archivelog list in the original post, but it's in dutch so here's the (loose) translation of the output:
    SQL> archive log list
    Databaselog mode Archive mode
    Automatic archiving Deactivated
    Archive destionation O:\oracle\ora92\RDBMS
    Oldest on-line logsequence 12307
    Next logsequence for archiving 12307
    Current logsequence 12309
    Maybe something that can help with the troubleshooting:
    The archivelog file is written to O:\oracle\ora92\RDBMS but only AFTER the reboot, I've checked SYSTEM rights to the folder and it has full control.
    Babu, thanks aswell for your quick response.
    The location exists and space is available but the database doesn't seem to load (that part of) the ora.init file because the output of archive log list still refers to %ORACLE_HOME%\rdbms instead of %ORACLE_HOME%\database\archive.
    I've now executed alter system archive log all; and am executing the import where the database usually freezes to see if it still happens. So far I already had this written to the alert_sid.log file after executing the command:
    Completed: alter database open
    Thu Apr 17 10:00:11 2008
    ARCH: Evaluating archive log 1 thread 1 sequence 12307
    ARCH: Beginning to archive log 1 thread 1 sequence 12307
    Creating archive destination LOG_ARCHIVE_DEST_1: 'O:\ORACLE\ORA92\RDBMS\ARC12307.001'
    ARCH: Completed archiving log 1 thread 1 sequence 12307
    ARCH: Evaluating archive log 2 thread 1 sequence 12308
    ARCH: Beginning to archive log 2 thread 1 sequence 12308
    Creating archive destination LOG_ARCHIVE_DEST_1: 'O:\ORACLE\ORA92\RDBMS\ARC12308.001'
    ARCH: Completed archiving log 2 thread 1 sequence 12308
    And new log files were written to the directory (O:\oracle\ora92\RDBMS) and this time I didn't have to reboot for it to happen. Both were 100mb files without the database actually doing all that much though.
    Message was edited by:
    user616266

  • Why we need oracle database reboot to put database in  archivelog mode?

    I know how to enable archivelog mode, but what is the reason that to enable archive log we need database restart. which process forces to do that.

    SantoshGanjure wrote:
    Thanks a lot EdStevens for ur prompt response...I need something that satisfies my managers query.
    If the question has originated with the PHB, then my flippant answer is even more relevant ...
    PHB's are incapable of understanding the technical details, so I prefer to give them the 'executive summary':
    "Because that's the way Oracle is written.  We can argue over the technical merits of such a requirement 'till the cows come home.  But at the end of the day, we have to shut down the database because the 'alter database archivelog' command will only succeed when the database is in mount (not open) mode.  Now, let's work out how we can achieve our objective of putting the database in archivelog mode with minimal and appropriately scheduled down time."
    As for the actual down time, it's about as minimal as you can get.  How long does it take your database to complete a shutdown once the command is given?  How long does it take you to type "startup mount"?  How long does it take you to type "alter database archivelog"?  to type "alter database open;"?  For the database to complete the 'open' process?  You could even script it so as to eliminate the keyboard typing time.

  • Oracle ORA-01102故障: cannot mount database in EXCLUSIVE mode

    SQL> conn /as sysdba
    Connected to an idle instance.
    SQL> startup
    oracle instance started.
    Total System Global Area 276824064 bytes
    Fixed Size 778736 bytes
    Variable Size 137371152 bytes
    Database Buffers 138412032 bytes
    Redo Buffers 262144 bytes
    ORA-01102: cannot mount database in EXCLUSIVE mode
    出现这个问题,可能是由于断电的问题,解决方法是
    出现1102错误可能有以下几种可能:
    一、在HA系统中,已经有其他节点启动了实例,将双机共享的资源(如磁盘阵列上的裸设备)占用了;
    二、说明 oracle 被异常关闭时,有资源没有被释放,一般有以下几种可能,
    1、 oracle 的共享内存段或信号量没有被释放;
    2、 oracle 的后台进程(如SMON、PMON、DBWn等)没有被关闭;
    3、 用于锁内存的文件lk<sid>和sgadef<sid>.dbf文件没有被删除。
    首先,虽然我们的系统是HA系统,但是备节点的实例始终处在关闭状态,这点通过在备节点上查数据库状态可以证实。
    其次、是因系统掉电引起数据库宕机的,系统在接电后被重启,因此我们排除了第二种可能种的1、2点。最可疑的就是第3点了。
    查$ORACLE_HOME/dbs目录:
    $ cd $ORACLE_HOME/dbs
    $ ls sgadef*
    sgadef* not found
    $ ls lk*
    lkORA92
    果然,lk<sid>文件没有被删除。将它删除掉
    $ rm lk*
    再启动数据库,成功。
    如果怀疑是共享内存没有被释放,可以用以下命令查看:
    $ipcs -mop
    IPC status from /dev/kmem as of Thu Jul 6 14:41:43 2006
    T ID KEY MODE OWNER GROUP NATTCH CPID LPID
    Shared Memory:
    m 0 0×411c29d6 –rw-rw-rw- root root 0 899 899
    m 1 0×4e0c0002 –rw-rw-rw- root root 2 899 901
    m 2 0×4120007a –rw-rw-rw- root root 2 899 901
    m 458755 0×0c6629c9 –rw-r—– root sys 2 9113 17065
    m 4 0×06347849 –rw-rw-rw- root root 1 1661 9150
    m 65541 0xffffffff –rw-r–r– root root 0 1659 1659
    m 524294 0×5e100011 –rw——- root root 1 1811 1811
    m 851975 0×5fe48aa4 –rw-r—– oracle oinstall 66 2017 25076
    然后它ID号清除共享内存段:
    $ipcrm –m 851975
    对于信号量,可以用以下命令查看:
    $ ipcs -sop
    IPC status from /dev/kmem as of Thu Jul 6 14:44:16 2006
    T ID KEY MODE OWNER GROUP
    Semaphores:
    s 0 0×4f1c0139 –ra——- root root
    s 14 0×6c200ad8 –ra-ra-ra- root root
    s 15 0×6d200ad8 –ra-ra-ra- root root
    s 16 0×6f200ad8 –ra-ra-ra- root root
    s 17 0xffffffff –ra-r–r– root root
    s 18 0×410c05c7 –ra-ra-ra- root root
    s 19 0×00446f6e –ra-r–r– root root
    s 20 0×00446f6d –ra-r–r– root root
    s 21 0×00000001 –ra-ra-ra- root root
    s 45078 0×67e72b58 –ra-r—– oracle oinstall
    根据信号量ID,用以下命令清除信号量:
    $ipcrm -s 45078
    如果是 oracle 进程没有关闭,用以下命令查出存在的 oracle 进程:
    $ ps -ef|grep ora
    oracle 29976 1 0 Jun 22 ? 0:52 ora_dbw0_ora92
    oracle 29978 1 0 Jun 22 ? 0:51 ora_dbw1_ora92
    oracle 5128 1 0 Jul 5 ? 0:00 oracleora92 (LOCAL=NO)
    然后用kill -9命令杀掉进程
    $kill -9 <PID>
    总结:
    当发生1102错误时,可以按照以下流程检查、排错:
    1.如果是HA系统,检查其他节点是否已经启动实例;
    2.检查 oracle 进程是否存在,如果存在则杀掉进程;
    3.检查信号量是否存在,如果存在,则清除信号量;
    4.检查共享内存段是否存在,如果存在,则清除共享内存段;
    5.检查锁内存文件lk<sid>和sgadef<sid>.dbf是否存在,如果存在,则删除

    No, its still not helping..even after trying to kill the semaphores:
    /opt/oracle/product/db10g/dbs (ac4orcloms01-ac4:emrep)> ipcs
    ------ Shared Memory Segments --------
    key shmid owner perms bytes nattch status
    0x00000000 0 oracle 640 538968064 1 dest
    0x00000000 32769 oracle 600 192 1 dest
    0x00000000 65538 oracle 600 1474564 8 dest
    ------ Semaphore Arrays --------
    key semid owner perms nsems
    ------ Message Queues --------
    key msqid owner perms used-bytes messages
    /opt/oracle/product/db10g/dbs (ac4orcloms01-ac4:emrep)> ipcrm -m 32769
    /opt/oracle/product/db10g/dbs (ac4orcloms01-ac4:emrep)> ipcrm -m 65538
    /opt/oracle/product/db10g/dbs (ac4orcloms01-ac4:emrep)> ipcs
    ------ Shared Memory Segments --------
    key shmid owner perms bytes nattch status
    0x00000000 0 oracle 640 538968064 1 dest
    0x00000000 32769 oracle 600 192 1 dest
    0x00000000 65538 oracle 600 1474564 8 dest
    ------ Semaphore Arrays --------
    key semid owner perms nsems
    ------ Message Queues --------
    key msqid owner perms used-bytes messages
    /opt/oracle/product/db10g/dbs (ac4orcloms01-ac4:emrep)> ps -e f|grep emrep
    3273 ? Ds 0:00 ora_ckpt_emrep
    /opt/oracle/product/db10g/dbs (ac4orcloms01-ac4:emrep)>

  • Starting up an Oracle database in read only mode

    Is there a way to have an oracle database start up in "read only" mode every time the instance is shutdown and strated back up. I need to accomplish this without any sort of manual intervention? Is there a parameter that can be set in init.ora etc... ? I am using oracle version 9.2.
    Thanks in advance.

    Operating System info is useful.
    On *nix, it's a simple matter to edit the dbstart script.  On Windows, I'd start investigating the 'net start' command.                                                                                                                                                                                                                                                                                                                           

  • Install oracle database software in slient mode

    I would like to automate my Oracle database software installation.
    Can I execute runInstaller in sleep mode
    like
    dbca -silent -createDatabase -templateName General_Purpose.dbc \
    please can I get the exact syntax.

    user5846399 wrote:
    I would like to automate my Oracle database software installation.
    Can I execute runInstaller in sleep mode
    like
    dbca -silent -createDatabase -templateName General_Purpose.dbc \
    please can I get the exact syntax.Pl post details of OS and database versions. There is plenty of information in the Install Docs
    http://download.oracle.com/docs/cd/E11882_01/install.112/e16763/app_nonint.htm#BABFEECI
    HTH
    Srini

  • SQL Server database (read-only mode) in Oracle SQL Developer

    Hello,
    I connected SQL server database with Oracle SQL Developer 3.2.10.09, everything looks good except i can only browse data, i cannot change data in tables cannot insert new or delete rows. Query is also disabled (i got message: Query Builder is not supported for this connection type.) I used Third Party JDBC Drivers - jtds-1.2.6.jar as my connection to SQL server. Is there a way to change data in tables?
    Thank you.

    AFAIK editing table data in the grid is only possible with an Oracle database. On MS SQL you'll have to use update statements in the worksheet.
    Hope that helps,
    dhalek

  • Database in noarchivelog mode, truncate command issued

    Database in noarchivelog mode, truncate command has been issued how to restore the table?
    FACTS:-
    1. DB In noarchivelog Mode
    2. Cannot enable flash back mode because of 1. above
    3. No exports available
    4. No backup's Available.
    Any thoughts ?

    Oracle Support/ Professional Services has a Data Unloader (DUL) and ORA-00600 has DUDE, both of which may be able to extract information from data files that are corrupted, where the control files are lost, etc.
    These are not, however, cheap utilities. Unless the data itself is really valuable, it is generally not a viable option.
    Justin

  • Can't mount oracle database on linux system

    This is same as previous posting just added
    e-mail and username info fo forum posting.
    I am not able to mount an Oracle database.
    I am new to Oracle and am working on an Oracle8i installation on an
    Intel Linux Suse 6.3 platform. I am using only one harddrive and am
    not using the 4 mount points as mentioned for efficiecy purposes in
    the Oracle documentation..I am using the installation cd from Oracle8i
    for Linux Starter Kit by Oracle Press. If anyone has this book they
    can refer to pages 41-44 for the examples I followed.
    As sysdba in sqplplus using the STARTUP command I can not Mount the
    database -step 2 of the 3 stage process (Start, Mount and Open the
    database) of opening an Oracle database.
    I show the errors I encountered when I did the first 2 of the 3 steps
    in the step-by-step mode (STARTUP NOMOUNT pfile=, ALTER DATABASE
    MOUNT) in the sqlplus session and alert log respectively with startup
    nomount and alter database mount for this sqlplus session.
    Additionally I show the init.ora file lines referring to control file
    which seem to be referred to by the sqlplus error messages and the
    alert.log file. Perhaps some can give me some advice as what I can try
    to fix this problem.
    At the end of this e-mail I added several questions I had in regard to the control
    files. Any help is appreciated.
    Well, here are the sqlplus session results and its alert.log file:
    Oracle sqlplus session usr/oracle as sysdba
    oracle@CHESTNUT:~ > sqlplus
    SQL*Plus: Release 8.1.6.0.0 - Production on Mon Mar 19 20:47:49 2001
    (c) Copyright 1999 Oracle Corporation. All rights reserved.
    Enter user-name: usr/oracle as sysdba
    Connected to an idle instance.
    SQL> startup nomount pfile=/usr/oracle/dbs/init.ora ;
    ORACLE instance started.
    Total System Global Area 24989680 bytes
    Fixed Size 69616 bytes
    Variable Size 24637440 bytes
    Database Buffers 204800 bytes
    Redo Buffers 77824 bytes
    SQL> alter database mount ;
    alter database mount
    ERROR at line 1:
    ORA-00205: error in identifying controlfile, check alert log for more
    info
    SQL> shutdown immediate ;
    ORA-01507: database not mounted
    ORACLE instance shut down.
    SQL> exit
    Disconnected
    oracle@CHESTNUT:~ >
    alert.log file for above session
    Mon Mar 19 20:48:38 2001
    Starting ORACLE instance (normal)
    LICENSE_MAX_SESSION = 0
    LICENSE_SESSIONS_WARNING = 0
    LICENSE_MAX_USERS = 0
    Starting up ORACLE RDBMS Version: 8.1.6.1.0.
    System parameters with non-default values:
    processes = 50
    shared_pool_size = 3500000
    control_files = ora_control1, ora_control2
    db_block_buffers = 100
    log_buffer = 32768
    log_checkpoint_interval = 10000
    db_files = 80
    db_file_multiblock_read_count= 8
    global_names = TRUE
    db_name = DEFAULT
    parallel_max_servers = 5
    max_dump_file_size = 10240
    PMON started with pid=2
    Load Indicator not supported by OS !
    DBW0 started with pid=3
    LGWR started with pid=4
    CKPT started with pid=5
    SMON started with pid=6
    RECO started with pid=7
    Mon Mar 19 20:48:58 2001
    alter database mount
    Mon Mar 19 20:48:58 2001
    ORA-00202: controlfile: 'ora_control1'
    ORA-27037: unable to obtain file status
    Linux Error: 2: No such file or directory
    Additional information: 3
    Mon Mar 19 20:49:01 2001
    ORA-205 signalled during: alter database mount
    Mon Mar 19 20:49:12 2001
    Shutting down instance (immediate)
    License high water mark = 1
    Mon Mar 19 20:49:12 2001
    ALTER DATABASE CLOSE NORMAL
    ORA-1507 signalled during: ALTER DATABASE CLOSE NORMAL...
    archiving is disabled
    init.ora control files
    # define two control files by default
    control_files = (ora_control1, ora_control2)
    Here are my control file questions:
    I need to know several points:
    1) What are control files susposed to
    contain and how would I recognize them?
    I used the
    unix find /usr/oracle \*ctl* -print
    command to locate files with a ctl extension.
    This resulted in about a dozen such files in
    different directories as shown below:
    ./bin/lsnrctl
    ./bin/extractlib
    ./bin/agtctl
    ./bin/oidctl
    ./bin/lsnrctl0
    ./bin/agtctlO
    ./rdbms/demo/ulcase1.ctl
    ./rdbms/demo/ulcase10.ctl
    ./rdbms/demo/ulcase2.ctl
    ./rdbms/demo/ulcase3.ctl
    ./rdbms/demo/ulcase4.ctl
    ./rdbms/demo/ulcase5.ctl
    ./rdbms/demo/ulcase6.ctl
    ./rdbms/demo/ulcase7.ctl
    ./rdbms/demo/ulcase8.ctl
    ./rdbms/demo/ulcase9.ctl
    ./ldap/load/dn.ctl
    ./ldap/load/attr_store.ctl
    ./ord/ts/demo/tsquick/tsquick.ctl
    ./ord/ts/demo/usageutl/utildat.ctl
    ./ord/ts/demo/usage/stockdat.ctl
    ./ord/ts/demo/usage/stockinc.ctl
    ./ord/ts/demo/retrofit/sales.ctl
    ./ord/ts/demo/retrofit/sales2.ctl
    ./ord/ts/demo/applet/indexdemo.ctl
    ./javavm/admin/libjox8com_sun_jndi_ldap_ctl.so
    ./md/demo/examples/migctl.h
    ./md/demo/examples/migctl.c
    2) On page 100 in the book Oracle 8i A Beginners's
    by Oracle Press mention is made of a
    CREATE CONTROLFILE command that can under
    circumstances be used to re-create a control-file.
    but that is all that is said about it. Perhaps
    you might know something more about it.
    3) Would you recommend any good text for
    Oracle DBA's, especially for the problem of the sort
    that I am encountering?
    [email protected]
    null

    It's probably not supported on RHEL5/Centos5/etc., but...
    You can get the installer to function using the following steps:
    - extract the cal_linux_*.tar.gz, and cd into the OracleCalendar_inst directory
    In there is the actual installer, cal_linux.
    - the cal_linux is shell script wrapped around some binary blobs. The installer's
    problem is that Oracle is setting the LD_ASSUME_KERNEL=2.2.5 environment
    variable, which is a mistake on RHEL5. You need to make it not set that variable,
    but you need to do so in a way that the size of the shell script does not change at all,
    and none of the binary blobs are impacted.
    - the approach I took was
    mv cal_linux cal_linux.BAK
    sed -e 's/LD_ASSUME_KERNEL=2.2.5/LD_ASSUME_KERNEL= /g' < cal_linux.BAK > cal_linux
    chmod a+rx cal_linux
    cal_linux -i gui
    Note: you must have exactly 5 spaces in the substitution part of the sed command, because you're replacing 5 characters (2.2.5), and the size of the shell script must not change.
    If you do that, the installer should run (one warning from awk still) and you should be able to install the product.
    Tim

  • Connection pooling and auditing on an oracle database

    Integration of a weblogic application with an oracle backend,
    Connection pooling, and auditing ,2 conflicting requirements ?
    Problem statement :
    We are in the process of maintaining a legacy client server application where
    the client is
    written in PowerBuilder and the backend is using an Oracle database.
    Almost all business logic is implemented in stored procedures on the database.
    When working in client/server mode ,1 PowerBuilder User has a one-to-one relation
    with
    a connection(session) on the oracle database.
    It is a requirement that the database administrator must see the real user connected
    to the database
    and NOT some kind of superuser, therefore in the PowerBuilder app each user connects
    to the database
    with his own username.(Each user is configured on the database via a seperate
    powerbuilder security app).
    For the PowerBuilder app all is fine and this app can maintain conversional state(setting
    and
    reading of global variables in oracle packages).
    The management is pushing for web-based application where we will be using bea
    weblogic appserver(J2EE based).
    We have build an business app which is web-based and accessing the same oracle
    backend app as
    the PowerBuilder app is doing.
    The first version of this web-based app is using a custom build connector(based
    on JCA standard and
    derived from a template provided by the weblogic integration installation).
    This custom build connector is essentially a combination of a custom realm in
    weblogic terms
    and a degraded connection pool , where each web session(browser) has a one-to-one
    relation
    with the back end database.
    The reason that this custom connector is combining the security functionality
    and the pooling
    functionality , is because each user must be authenticated against the oracle
    database(security requirement)
    and NOT against a LDAP server, and we are using a statefull backend(oracle packages)
    which would make it
    difficult to reuse connections.
    A problem that surfaced while doing heavy loadtesting with the custom connector,
    is that sometimes connections are closed and new ones made in the midst of a transaction.
    If you imagine a scenario where a session bean creates a business entity ,and
    the session bean
    calls 1 entity bean for the header and 1 entity bean for the detail, then the
    header and detail
    must be created in the same transaction AND with the same connection(there is
    a parent-child relationship
    between header and detail enforced on the back end database via Primary and Foreing
    Keys).
    We have not yet found why weblogic is closing the connection!
    A second problem that we are experincing with the custom connector, is the use
    of CMP(container managed persistence)
    within entity beans.
    The J2EE developers state that the use of CMP decreases the develoment time and
    thus also maintenance costs.
    We have not yet found a way to integrate a custom connector with the CMP persistence
    scheme !
    In order to solve our loadtesting and CMP persistence problems i was asked to
    come up with a solution
    which should not use a custom connector,but use standard connection pools from
    weblogic.
    To resolve the authentication problem on weblogic i could make a custom realm
    which connects to the
    backend database with the username and password, and if the connection is ok ,
    i could consider this
    user as authenticated in weblogic.
    That still leaves me with the problem of auditing and pooling.
    If i were to use a standard connection pool,then all transaction made in the oracle
    database
    would be done by a pool user or super user, a solution which will be rejected
    by our local security officer,
    because you can not see which real user made a transaction in the database.
    I could still use the connection pool and in the application , advise the application
    developers
    to set an oracle package variable with the real user, then on arrival of the request
    in the database,
    the logic could use this package variable to set the transaction user.
    There are still problems with this approach :
    - The administrator of the database can still not see who is connected , he will
    only see the superuser connection.
    - This scheme can not be used when you want to use CMP persistence , since it
    is weblogic who will generate the code
    to access the database.
    I thought i had a solution when oracle provided us with a connection pool known
    as OracleOCIConnectionPool
    where there is a connection made by a superuser, but where sessions are multiplexed
    over this physical pipe with the real user.
    I can not seem to properly integrate this OCI connectionpool into weblogic.
    When using this pool , and we are coming into a bean (session or entity bean)
    weblogic is wrapping
    this pool with it's own internal Datasource and giving me back a connection of
    the superuser, but not one for the real user,
    thus setting me with my back to the wall again.
    I would appreciate if anyone had experienced the same problem to share a possible
    solution with us
    in order to satisfy all requirements(security,auditing,CMP).
    Many Thanks
    Blyau Gino
    [email protected]

    Hi Blyau,
    As Joe has already provided some technical advice,
    I'll try to say something on engineering process level.
    While migrating an application from one technology to
    other, like client-server to n-tier in you case, customers and
    stakeholders want to push into the new system as many old
    requirements as possible. This approach is AKA "we must
    have ALL of the features of the old system". Mostly it happens
    because they don't know what they want. Ad little understanding
    of abilities of the new technology, and you will get a requirement
    like the one you have in you hands.
    I think "DBA must see real user" is one of those. For this
    type of requirements it can make sense to try to drop it,
    or to understand its nature and suggest alternatives. In this
    particular case it can be a system that logs user names,
    login and logout times.
    Blind copying of old features into an incompatible new architecture
    may endanger the whole project and can result in its failure.
    Hope this helps.
    Regards,
    Slava Imeshev
    "Blyau Gino" <[email protected]> wrote in message
    news:[email protected]...
    >
    Integration of a weblogic application with an oracle backend,
    Connection pooling, and auditing ,2 conflicting requirements ?
    Problem statement :
    We are in the process of maintaining a legacy client server applicationwhere
    the client is
    written in PowerBuilder and the backend is using an Oracle database.
    Almost all business logic is implemented in stored procedures on thedatabase.
    When working in client/server mode ,1 PowerBuilder User has a one-to-onerelation
    with
    a connection(session) on the oracle database.
    It is a requirement that the database administrator must see the real userconnected
    to the database
    and NOT some kind of superuser, therefore in the PowerBuilder app eachuser connects
    to the database
    with his own username.(Each user is configured on the database via aseperate
    powerbuilder security app).
    For the PowerBuilder app all is fine and this app can maintainconversional state(setting
    and
    reading of global variables in oracle packages).
    The management is pushing for web-based application where we will be usingbea
    weblogic appserver(J2EE based).
    We have build an business app which is web-based and accessing the sameoracle
    backend app as
    the PowerBuilder app is doing.
    The first version of this web-based app is using a custom buildconnector(based
    on JCA standard and
    derived from a template provided by the weblogic integrationinstallation).
    This custom build connector is essentially a combination of a custom realmin
    weblogic terms
    and a degraded connection pool , where each web session(browser) has aone-to-one
    relation
    with the back end database.
    The reason that this custom connector is combining the securityfunctionality
    and the pooling
    functionality , is because each user must be authenticated against theoracle
    database(security requirement)
    and NOT against a LDAP server, and we are using a statefull backend(oraclepackages)
    which would make it
    difficult to reuse connections.
    A problem that surfaced while doing heavy loadtesting with the customconnector,
    >
    is that sometimes connections are closed and new ones made in the midst ofa transaction.
    If you imagine a scenario where a session bean creates a business entity,and
    the session bean
    calls 1 entity bean for the header and 1 entity bean for the detail, thenthe
    header and detail
    must be created in the same transaction AND with the same connection(thereis
    a parent-child relationship
    between header and detail enforced on the back end database via Primaryand Foreing
    Keys).
    We have not yet found why weblogic is closing the connection!
    A second problem that we are experincing with the custom connector, is theuse
    of CMP(container managed persistence)
    within entity beans.
    The J2EE developers state that the use of CMP decreases the develomenttime and
    thus also maintenance costs.
    We have not yet found a way to integrate a custom connector with the CMPpersistence
    scheme !
    In order to solve our loadtesting and CMP persistence problems i was askedto
    come up with a solution
    which should not use a custom connector,but use standard connection poolsfrom
    weblogic.
    To resolve the authentication problem on weblogic i could make a customrealm
    which connects to the
    backend database with the username and password, and if the connection isok ,
    i could consider this
    user as authenticated in weblogic.
    That still leaves me with the problem of auditing and pooling.
    If i were to use a standard connection pool,then all transaction made inthe oracle
    database
    would be done by a pool user or super user, a solution which will berejected
    by our local security officer,
    because you can not see which real user made a transaction in thedatabase.
    I could still use the connection pool and in the application , advise theapplication
    developers
    to set an oracle package variable with the real user, then on arrival ofthe request
    in the database,
    the logic could use this package variable to set the transaction user.
    There are still problems with this approach :
    - The administrator of the database can still not see who is connected ,he will
    only see the superuser connection.
    - This scheme can not be used when you want to use CMP persistence , sinceit
    is weblogic who will generate the code
    to access the database.
    I thought i had a solution when oracle provided us with a connection poolknown
    as OracleOCIConnectionPool
    where there is a connection made by a superuser, but where sessions aremultiplexed
    over this physical pipe with the real user.
    I can not seem to properly integrate this OCI connectionpool intoweblogic.
    When using this pool , and we are coming into a bean (session or entitybean)
    weblogic is wrapping
    this pool with it's own internal Datasource and giving me back aconnection of
    the superuser, but not one for the real user,
    thus setting me with my back to the wall again.
    I would appreciate if anyone had experienced the same problem to share apossible
    solution with us
    in order to satisfy all requirements(security,auditing,CMP).
    Many Thanks
    Blyau Gino
    [email protected]

  • How to insert a image file into oracle database

    hi all
    can anyone guide me how to insert a image file into oracle database now
    i have created table using
    create table imagestore(image blob);
    but when inserting i totally lost don't know what to do how to write query to insert image file

    Hi I don't have time to explain really, I did have to do this a while ago though so I will post a code snippet. This is using the commons file upload framework.
    Firstly you need a multi part form data (if you are using a web page). If you are not using a web page ignore this bit.
    out.println("<form name=\"imgFrm\" method=\"post\" enctype=\"multipart/form-data\" action=\"FileUploadServlet?thisPageAction=reloaded\" onSubmit=\"return submitForm();\"><input type=\"FILE\" name=\"imgSource\" size='60' class='smalltext' onKeyPress='return stopUserInput();' onKeyUp='stopUserInput();' onKeyDown='stopUserInput();' onMouseDown='noMouseDown(event);'>");
    out.println("   <input type='submit' name='submit' value='Submit' class='smalltext'>");
    out.println("</form>"); Import this once you have the jar file:
    import org.apache.commons.fileupload.*;Now a method I wrote to upload the file. I am not saying that this is correct, or its the best way to do this. I am just saying it works for me.
    private boolean uploadFile(HttpServletRequest request, HttpSession session) throws Exception {
            boolean result = true;
            String fileName = null;
            byte fileData[] = null;
            String fileUploadError = null;
            String imageType = "";
            String error = "";
            DiskFileUpload fb = new DiskFileUpload();
            List fileItems = fb.parseRequest(request);
            Iterator it = fileItems.iterator();
            while(it.hasNext()){
                FileItem fileItem = (FileItem)it.next();
                if (!fileItem.isFormField()) {
                    fileName = fileItem.getName();
                    fileData = fileItem.get();
                    // Get the imageType from the filename extension
                    if (fileName != null) {
                        int dotPos = fileName.indexOf('.');
                        if (dotPos >= 0 && dotPos != fileName.length()-1) {
                            imageType = fileName.substring(dotPos+1).toLowerCase();
                            if (imageType.equals("jpg")) {
                                imageType = "jpeg";
            String filePath = request.getParameter("FILE_PATH");
            session.setAttribute("filePath", filePath);
            session.setAttribute("fileData", fileData);
            session.setAttribute("fileName", fileName);
            session.setAttribute("imageType", imageType);
            return result;  
         } And now finally the method to actually write the file to the database:
    private int writeImageFile(byte[] fileData, String fileName, String imageType, String mode, Integer signatureIDIn, HttpServletRequest request) throws Exception {
            //If the previous code found a file that can be uploaded then
            //save it into the database via a pstmt
            String sql = "";
            UtilDBquery udbq = getUser(request).connectToDatabase();
            Connection con = null;
            int signatureID = 0;
            PreparedStatement pstmt = null;
            try {
                udbq.setUsePreparedStatements(true);
                con = udbq.getPooledConnection();
                con.setAutoCommit(false);
                if((!mode.equals("U")) || (mode.equals("U") && signatureIDIn == 0)) {
                    sql = "SELECT SEQ_SIGNATURE_ID.nextval FROM DUAL";
                    pstmt = con.prepareStatement(sql);
                    ResultSet rs = pstmt.executeQuery();
                    while(rs.next()) {
                       signatureID = rs.getInt(1);
                    if (fileName != null && imageType != null) {
                        sql = "INSERT INTO T_SIGNATURE (SIGNATURE_ID, SIGNATURE) values (?,?)";
                        InputStream is2 = new ByteArrayInputStream(fileData);
                        pstmt = con.prepareStatement(sql);
                        pstmt.setInt(1, signatureID);
                        pstmt.setBinaryStream(2, is2, (int)(fileData.length));
                        pstmt.executeUpdate();
                        pstmt.close();
                        con.commit();
                        con = null;
                if(mode.equals("U") && signatureIDIn != 0) {
                    signatureID = signatureIDIn.intValue();
                    if (fileName != null && imageType != null) {
                        sql = "UPDATE T_SIGNATURE SET SIGNATURE = ? WHERE SIGNATURE_ID = ?";
                        InputStream is2 = new ByteArrayInputStream(fileData);
                        pstmt = con.prepareStatement(sql);
                        pstmt.setBinaryStream(1, is2, (int)(fileData.length));
                        pstmt.setInt(2, signatureID);
                        pstmt.executeUpdate();
                        pstmt.close();
                        con.commit();
                        con = null;
            } catch (Exception e) {
                con = null;
                throw new Exception(e.toString());
            return signatureID;
       }

  • How to take a Hot backup of Oracle database

    1: put the db in archive log mode
    2: set the db_sid to correct one
    3: login to sqlplus
    4: verify the name of the db that you are connected to
    select name from v$database;
    5: check if the db is in archive log made
    select log_mode from v$database;
    if not in archive log mode
    another command to check
    archive log list;
    6: find where on disk oracle writes archive log when it is in archive log mode
    sql> show parameter log_archive_dest_1;
    if the value is found to be 0, that means no values will be recorded, so we need to change it
    sql> alter system set log_archive_dest_1='LOCATION=c:\database\oradata\finance\archived_logs\'
    scope=spfile;
    7: shutdown immediate; < this is done just to prepare the db for hot backups >
    8: startup the db in mount mode
    startup mount;
    ( 3 startup types : nomount - just starts the instance, mount - locates the control files and open up according to the values, open - finds the datafiles from the control files and opens up the db )
    9: put the db in archive log mode
    alter database archivelog;
    10: open the database
    alter database open;
    11: check the status of the db
    select log_mode from v$database;
    SQL> archive log list;
    12: create a directory for archived log
    check if its empty, if empty we need to switch
    sql> alter system archive log current;
    run it 5 times < need to put / and enter > , then check the archive log dir , we will find files
    13: make a table in the database and insert data in it
    create table employees (fname varchar(2));
    check the table
    desc employees;
    insert values
    insert into employees values ('Mica');
    14: tablespace must be in hot backup mode
    check the status
    select * from v$backup;
    if found not active, then we need to change
    we cannot put the db in hot backup mode, unless it is archive log mode
    change to hot backup mode
    alter database begin backup;
    check the status
    select * from v$backup;
    15: now we can only COPY DBF FILES
    copy *dbf <distination location>
    16: need to take the db out to hot backup mode
    alter database end backup;
    17: need to make another archive log switch
    alter system archive log current;
    18: need to copy control files now, need to do a binary bckup
    alter database backup controlfile to '<location>\controlbackup';
    19: insert more values to the table
    insert into employess values ('NASH')
    COMMIT;
    make another archive log switch : alter system archive log current;
    do the same process for more values
    20 : backup all the archive logs to a new location
    21: shutdown the db and simulate a hw error, delete all the files from the database folder
    22: try to start the sqlplus and db ::: error
    23: copy all the backups to the db dir
    need to copy the control files, rename the binary backup of the control file and make the copies as needed
    24: try to mount the db, error < must use reset logs or noreset logs >
    25: need to do a recovering of the database
    shutdown
    restore the archive logs
    startup mount;
    recover database until cancel using backup controlfile;
    it will ask for a log file :
    yes for recovery
    cancel for cancelling recovery
    26: check status: open the database in readonly
    alter database open read only;
    check the tables to see the data
    shutdown immediate
    shartup mount;
    recover again : recover database until cancel using backup controlfile;
    if oracle is asking for a log that do nto exist , all we have to do is type cancel
    27: open the database
    alter database open;
    need to do reset logs
    alter database open resetlogs;
    28: check the db that you are connected, check the tables
    thanks and regards
    VKN
    site admin
    http://www.nitrofuture.com

    A very long list ... let me make it shorter.
    SQL> archive log list;If I see this:
    Database log mode              No Archive ModeI put the database into archivelog mode and leave it there forever.
    If it is in archivelog mode:
    RMAN> TARGET SYS/<password>@<service_name> NOCATALOG
    RMAN> BACKUP DATABASE PLUS ARCHIVELOG;Though there are a lot of things one could do better such as incrementals with block change tracking, creating an RMAN catalog, etc.

  • Installation oracle database 10.2 on mac snow leopard server

    Hi.,
    I am trying to install oracle database 10.2 on mac server snow leopard but getting following error:
    rsgsoftware:Disk1 oracle$ ./runInstaller
    Starting Oracle Universal Installer...
    No pre-requisite checks found in oraparam.ini, no system pre-requisite checks will be executed.
    Preparing to launch Oracle Universal Installer from /tmp/OraInstall2009-08-31_10-22-39AM. Please wait ...The Java RunTime Environment was not found at /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Home/bin/java. Hence, the Oracle Universal Installer cannot be run.
    Please visit http://www.javasoft.com and install JRE version 1.3.1 or higher and try again.
    : No such file or directory
    hence JRE is inbuilt with mac.
    Can any one help me in this regard.
    --SD                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

    damorgan wrote:
    I am trying to use my pet cat as a boat and it doesn't work either.That's because, just like the OP, you are not taking the right approach. You simply need to MODIFY the cat - in your case, by adding a few things: a keel, ribs, hull, mast, sails, rudder, tiller (to name a few).
    Similarly, OP needs to MODIFY Snow Leopard by adding the appropriate infrastructure, executables, and configuration to meet the install requirements. Just because that implies a different kernel and system libs doesn't mean it can't be done.
    Just don't let the animal rights people (or professional administrator) know about the mods.

Maybe you are looking for

  • Can't get rid of space without the page shifting out of view

    Hello. I've got a big space appearing above my title line in this page. http://www.sarahpellerdesign.com/jordan/schooner.html See how there is a lot of white space above the words "Schooner Adventuress"? So, I went to the code and saw this on line 56

  • Need to book & pay outward freight before Receipt of FG - Subcontracting

    Dear All, " In case of Subcontracting, we are required to pay both, Outward Freight on material sent to Party for Job Work & Inward Freight on Material received from the party. While raising PO, the Freight amount is considered to include both Inward

  • How do I get iTunes to remember my password?

    Every time I start iTunes it asks me for my password.  This began after I changed my mac.com password.  Is there a way to get iTunes to remember my password so I don't have to re-enter every time I get into iTunes?

  • Fact design accumulative snapshot

    This is Loan domain and I am trying to create an accumulative snap shot table at loan level with following columns on 01-jan-2011 this snap shot would be like LOAN_KEY,LOAN_DATE,DEPOSIT_DATE,RETURN_DATE,CLEAR_DATE,WRITEOFF_DATE,LOAN_PAIDOFF_DATE, LOA

  • How do we get information from an MFR reader and write it into a log file?

    We are working on a project using an MFR 4100 reader with a serial port to read data from RFID tags into an Excel or text file.  So far, when we run our VI, the data from tags shows up fine on the front panel but shows up as garbage in the Excel/text