11.2.0.1 I am still resolving the locking issues in our database Often the delete is blocked by some transaction. The operations said that it is intermittent. Last night they were able to delete the 1M transactions without the locking.But the past days lock often occurred, and they have to bounced the database to release the locks.
I there a way I can compare what happened last night why the batch was able to delete smoothly , and compare it against the other night where the delete was blocked?By using ASH, AWR, ADDM? I also run now this procedure, to identify the blocking sql statement:
I am a developer and not a DBA and I need to find th correct query to find the exact rowid of the record locked on a table. This is for a RAC database and locked record can be from the web form in oracle application server. When I try to get the correct row id, I get the following error:
ORA-01410 - Invalid row id For the criteria, the output is Dbms_Rowid.rowid_create(1, -1, 36, 7845, 0), why I get a -1 for the ROW_WAIT_OBJ#?
Additional Information: The lock type is DML and the lock mode is: Row Exclusive, the table is locked and the program is web oracle forms executing.
I am executing the query in Oracle Database 11g Enterprise Edition Release 11.1.0.7.0
How to accomplish getting the correct rowid? Below is the selection criteria I have:
Among Hibernate optimistic locking & Database Isolation levels, which one to use? Which gives the better consistency, concurrency and scalability. I read in couple of links that Isolation level will suffer if there is a huge load on the application with multiple users access the appliation at the same time, moreover in islation levels normally we need to look for READ_COMITTED and NON_REPEATABLE_READ to get a better performance? Whether these are true? Whether we can use both Hibernate optimistic locking(version & timestamp) & Database Isolation levels in the same application? What are the implications using these? Which one will be preferred over the other and when?
At the moment, we were loading the file in our system serially. This is a very old and established system.We would like to incorporate parallel loading for our loaders to load data into the database.
Most of the issues would be due to multiple inserts happening due to the files being loaded in parallel. For some reasons, we cannot give regular commits untill the entire batch of items is processed in case the process needs to rollback. A file can contain different set of batch of items clubbed together for loading.
The issue here is untill the first file finishes loading and commits, the second file would just hang. In fact, mulitiple files might hang for the first file to finish. what can I do to overcome this?I tried to used "lock table t1 in SHARE ROW EXCLUSIVE mode nowait". When the leading process is doing inserts, the failing process will fail with a resource busy and acquire with NOWAIT specified. We would catch this exception and redirect that batch to an error file to be reloaded at a later date.
i tried for 3 days to setup a connection between my oracle database 11.2 (resides on 2003,64 bit Microsoft windows) and a mysql database (resides on 2003,32 bit Microsoft widows).
i used dg4odbc 64 bit which was installed on oracle server, my steps was as follows :
1- configure ODBC driver (MYSQL 3.51 odbc) on oracle server that connect to mysql database and the connection was tested successfully (the name of odbc dsn is DG4ODBC).
2- configure the listener.ora file (which resides on dg4odbc installation path) that contains the following :
4- configure that initdg4odbc.ora file that resides on the dg4odbc installation.
HS_FDS_CONNECT_INFO = DG4ODBC HS_FDS_TRACE_LEVEL = off
5- restart the gateway listener.
6- test DG4ODBC service by tnsping which was successful .when i try to get some data from mysql database by SELECT * FROM MDL_COURSE@DG4ODBC query,the query take some time (15 second !!) and return
ORA-12154: TNS:could not resolve the connect identifier specified
Acer laptop, Intel Processor w/ Windows 7 Professional (64-bit) Delphi 2010 Professional Oracle XE (+ the Oracle XE client that comes with it)
I cannot can't to the Oracle database from Delphi. The error I keep getting is:
Alias is not currently opened. [Oracle][ODBC][Ora]ORA-12154:TNS: could not resolve the connet identifier specified.
Here's what I've done:
1. Create an ODBC connection to my Oracle database
- run C:WindowsSysWOW64odbcad32.exe to open the ODBC administrator. - Data source name: bt_user - TNS Server Name: localhost/xe - user bt_user - Clicked "test connection" -- Success.
2. Open Delphi and drop a TDatabase component on my main form.
- Set the Alias Name property to "bt_user" (the alias I set up in ODBC) - Set database name to "bt_user". - Checked "connected".
Alternatively, I tried using the Delphi ADO components (the dbGo components).
- Drop TADOConnection component on my form. - Select "connection string" and open the dialog. - Click "build string". - Select "Microsoft OLE DB Provider for ODBC Drivers" from the selection. - In "use data source", select "bt_user" from the drop-down list (my ODBC connection from #1) - Click "test connection".
Again the same error.
My questions are:
1. Can Delphi work with Oracle XE (Express Edition)?
2. If so, then do I need to install the "Instant Client"?
3. Will the instant client for Oracle 10g work with Oracle 10g XE?
4. Do I need to install any additional ODBC driver(s)?
5. Why was I successful in creating the ODBC connection in Windows, but it failed in Delphi?
6. Will Visual Studio.NET (C#) work with Oracle XE, and what are the steps for setting that up?
I am facing the row lock issue in production. I have been trying to resolve the issue but i coud'nt. I traced out by using different queries which sql query is locking which but everything looks good.
And i also checked for connections open and close everything is in good place but unable to resolve the issue. we are running a batch file which runs in every night some of the records are processing and if any one record is failed it is blocking another records.My oracle version is oracle 10.2.0
Say we have an employee(id_emp) table with a primary key on id_emp. We have also some history tables emp_stuff with columns say (id_emp, dat_event, some_stuff) with primary key id_emp, dat_event.
This means that we have a unique index on (id_emp,dat_event). We also have a foreign key id_emp that references employee(id_emp). When we update id_emp on employee, we still have a lock on emp_stuff. According to this (end of the page) :
Quote:So, in short, with releases prior to Oracle Database 11g Release 1, you will want an index on the foreign key of the child table if you do any of the following:
Update the parent table primary key Delete from the parent table Merge into the parent table
So is id_emp in emp_stuff considered as indexed (through the unique index of the primary key) or do we have to add an explicit index like this CREATE INDEX emp_stuff ON emp_stuff(id_emp) to avoide child table locks?
I have developed a form, containing 5 tab pages and also referencing to 5 tables.tab page a of table a some fields are required and some or not.when i open form and start entering record, and then i change mine and dont enter and want to navigate to some other page, it simply allows me to leave it blank and move to some other tab page.
tab page b of table bsome fields are required and some or not.when i open this tab page and one i click in the first field and then do not enter anything in it and want to leave it , it does not allow me to leave blank.what could be the reason. why one tab page allow me to leave blank and navigate and why the other does not?first field of both tab pages are required.
Using Oracle 11gr2. If I call the following update statement from session A, session A will lock the row until a commit/rollback statement is issued from session A. If session B calls the same update statement and same row, session B will have to wait until the lock is released in session A. However, the application developers are speaking in terms of threads. Could it be possible that the update statement is called within the same session by multiple requests? If yes, could the case statement be evaluated without the row being locked which could lead to false results? Trying to keep this post brief. tableA has columnA (primary key, number) and columnB (number)
{update tableAset columnB = case when columnB = 3 then 4 when columnB = 4 then 5 else columnB endwhere columnA = 6;}
Could 2 requests (almost at the exact same time) in the same session evaluate columnB as 3. The desired result would be the first request sets the column to 4 and the second request sets the column to 5.
I am having a data guard setup done in oracle 10g(10.2.0.4.0) WINDOWS Platform. some of the archive process are locked in primary db side.
PROCESS STATUS LOG_SEQUENCE STAT -------- ---------- ------------ ---- 0 ACTIVE 0 IDLE 1 ACTIVE 804462 IDLE 2 ACTIVE 0 IDLE 3 ACTIVE 0 IDLE 4 ACTIVE 0 IDLE 5 ACTIVE 800011 BUSY 6 ACTIVE 0 IDLE 7 ACTIVE 800009 BUSY 8 ACTIVE 0 IDLE 9 ACTIVE 802335 BUSY 10 ACTIVE 0 IDLE
Shall we kill the locking archive processes? killing archive processes will cause any problem?
how to avoid oracle deadlock with two sessions. Here is my example, We use Select query with For Update in order to get the unique number from a table. When one user has accessed this query, while the other user tries, System gives a Performace slow and when checked it is due to locking of this select query with For update.
We don't want to use For update WAIT or FOR UPDATE NOWAIT since these will result in missing of number.
I've a table TXN1 transaction and has FKs to 3 different tables Account, customer, country and currency. ALL FKs are indexed (bitmap). I am updating TXN1 of amount column about 10,000 rows. (SID 1) As expected, it has taken lock type 3 SX on TXN1. But it has taken on lock type 4 (share) on Account, customer and country. Committing every 10k rows.
At the same time sid 2 is inserting into another TXN2 table which has FK to the same dimensions account, customer and currency. Only FK on ac_id is bitmap indexed. The inserts have taken SX lock(type 3) on tXN2 table (expected). But it is trying to take SX type 3 lock on account, customer, currency tables. typ3 lock taken on CCY but waiting on CST. But It is blocked by sid 1. It has resulted into Enque-TM contention and resulted into anywhere 60-300 secs wait time..
I understand update/delete in parent table results into locking of SX of child tables and need the FKs to be indexed to avoid etc.
1. Why is SID1 taking shared lock on the parent tables Account,customer,country and currency tables? The update statement is not updating any of those FK columns nor referring them in where clause(if it matters!). Is it to ensure that the parent rows are not deleted?
2. Why is SID2 taking SX lock on the dimension tables? Why is it not taking RS lock type 2 on parent rows? Why is SID1 taking shared lock type 4, but not 2?
I have a set of rows based on a complex view from multiple table.
I will be updating some of its columns from front-end . Is there any possible ways to lock those rows of data while updating and no other users can update it;
We had an issue last week were we had a session with a very basic SQL query lock up the database, spiking the CPU at 100%. When you would kill the session, the lock would just jump to another session and so on. We finally had to restart the database since our clients were being kicked out. After the restart of the database, the LGWR ended up locking and held the CPU between 85-95%. The archive logs were switching every 5 minutes, when normally it would be every 45min. We spoke with Oracle Support, but they just ended up brushing the issue off and saying it was a hardware issue and were not able to provide any kind of backing to that.
I have been plagued by people logging into my database and making changes when a clone is in process.. Having said that ,I am looking to lock accounts and unlock them when I am done.
I envision my code looking something like this:
sqlplus -s / <<END SET PAGESIZE 0 SET FEEDBACK OFF SET VERIFY OFF; set heading off; spool /tmp/lockusers.sql select 'alter user ' || username || ' account lock;' from dba_users where username not in (....) and not locked?; spool off; END;
sqlplus -s / <<END @/tmp/lockusers.sql END;
When it comes time to unlock the accounts I want to be able to unlock those accounts I previously locked and not all of them. Is there a query, I can use that can tell me when the accounts were locked or some other way about going about this so I dont unlock accounts that were locked prior to my lock script running?
I have a "select ... into" in my PL/SQL and it doesn't retreive any data(I suppose just certain columns because if it doesn't retreive a row then the PL/SQL should throw an error) when there are many users accessing this table. It shouldn't be some table locking right? Because if it is, it should wait until the table is available then it will retreive data. Currently it just proceeds with the PL/SQL and selecting nothing in that query. what details should I look at to trace the cause of this problem.
This is my tnsnames.ora but when i try to tnsping college it gives me following error CODE[oracle@localhost 10.2.0]$ vi tnsnames.ora [oracle@localhost 10.2.0]$ tnsping college
TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production on 14-OCT-2011 14:37:22
Copyright (c) 1997, 2005, Oracle. All rights reserved.
I have installed Oracle 10g client and am trying to connect to an Oracle 9i database with it. I have already created the required Listner and service names. But when I try to login to SQL * Plus , it gives me the following error: Ora-12154: TNS: Could not resolve the connect identifier specified
Could Oracle 10g client connect to a 9i database? If so how do I fix this problem?
I am trying to create a DR on the same server as that of primary server.
Specifictaions: Primary server:test DR: testdr
I have made thetns entries and i am also able to tnsping both test and testdr. But below is the error that is being constantly getting logged in the alert of primary server.
Error 12154 received logging on to the standby Fri Dec 14 20:09:36 2012 Errors in file /11g/oradata/admin/ettest/bdump/ettest_arc0_7336.trc: ORA-12154: TNS:could not resolve the connect identifier specified PING[ARC0]: Heartbeat failed to connect to standby 'ettestdr'. Error is 12154.
I have a really strange problem connecting from a new client to an Oracle server, here are the points :
- There is no problem with DB server and its listener and all that as I am able to connect from other clients - I have installed the oraclient on this machine ( it is a XP machine ) and copy/pasted the TNSNAMES.ORA from one of those correct PCs here and when I do a TNSPING is returns OK - even when I open oracle net manager I see the TNS entries in there and when I test a connection thru it is says successfull - BUT WHEN I USE SQL+ or TOAD or ODBC ( any of these) trying to make a connection using the exact same TNS entries it returns :
"ORA-12154: TNS:could not resolve the connect identifier specified"
- I have tried with both IP and Host name but no luck - TNSNames.Ora and sqlnet.ora both are located here : oracleproduct10.2.0client_1NETWORKADMIN - there is just one oracle home - I have already uninstalled/installed oracle client - These lines are included in Sqlnet.ora : SQLNET.AUTHENTICATION_SERVICES= (NTS) NAMES.DIRECTORY_PATH= (TNSNAMES)
I marked those entries in Sqlnet.ora and that made no diff in result, another thing : if I use easy connect method : sqlplus scott/tiger@<Servername>:1521/ORCL it does connect but using TNSNames still I can not get connected. so strange!!, seems somehow the TNS file even is not being picked or looked at !
I installed Oracle 9i under W2K with preconfigured DB (SID=ORCL), after that I intalled Oracle developer suite and everything is OK but, When I created second DB (SID=SUMM), I get "ORA-12154: TNS:could not resolve service name" when I tried to connect with :
SQL> connect sys/oracle@summ as sysdba
NB: I have no problem when I use
SQL> connect sys/oracle@orcl as sysdba
Below, are my SQLNET.ORA, TNSNAMES.ORA, LISTENER.ORA files
in both server & client i had set "TNS_ADMIN = $HOME" (see the above environment files) so,
my listener file is in server home directory
my tnsname file is in client home directory
i was started listener in server (ofdb):
$ lsnrctl start ofdb
listner started successfully then came to client side (DB11G) :
$ tnsping TO_OFDB
"TNS Ping Utility for Linux: Version 11.1.0.6.0 - Production on 21-MAY-2012 10:11:27
Copyright (c) 1997, 2007, Oracle. All rights reserved. Used parameter files: /u01/app/oracle/product/11.1.0/db_1/network/admin/sqlnet.ora TNS-03505: Failed to resolve name"
What I'm trying to do Establish a remote connection to an Oracle 9i R2 9.2.0.8.0 database using "Oracle Provider for OLEDB 9.2.0.7.0" (I was unable to find an 9.2.0.8.0 equivalent) on a Windows Server 2008 R2 64-bit machine.
I have both 10g and 11g installed in my machine.There are so many CI builds that runs without problems.For few builds which uses 10g, it throws errors as ,
SQL*Plus: Release 11.2.0.1.0 Production on Thu Dec 27 01:18:52 2012 Copyright (c) 1982, 2010, Oracle. All rights reserved. ERROR: ORA-12154: TNS:could not resolve the connect identifier specified Enter user-name:
Only at a particular step, this is happening. After this,if some-other target is connecting to Oracle,it is able to connect.