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.
ThanksPl 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 PMjohnpau2013 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,
BramHello 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]
nullIt'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 fileHi 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.comA 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.
--SDdamorgan 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