Lock the table by user with grant only for select

Hallo.
It is possible that the user has rights only for SELECT, do not lock the table? Now, where do "SELECT * FROM table FOR UPDATE", does not make the change, but it locks the entire table, and another user to get into it.
Thanks

And here is the "evidence" ;)
SQL> select * from v$version ;
BANNER
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE    10.2.0.4.0      Production
TNS for Solaris: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
SQL> create user u1 identified by u1 ;
User created.
SQL> grant connect to u1 ;
Grant succeeded.
SQL> connect hr/hr
Connected.
SQL> create or replace view v_t1 as select username, user_id, created from t1 group by username, use
r_id, created with read only ;
View created.
SQL> grant select on v_t1 to u1 ;
Grant succeeded.
SQL> connect u1/u1
Connected.
SQL> select * from hr.v_t1 where rownum = 1 for update ;
select * from hr.v_t1 where rownum = 1 for update
ERROR at line 1:
ORA-02014: cannot select FOR UPDATE from view with DISTINCT, GROUP BY, etc.
SQL> select * from hr.v_t1 where rownum = 1
  2  ;
USERNAME                          USER_ID CREATED
AK                                     36 08-MAY-00

Similar Messages

  • Help on locking MySQL tables (many can read, but only one can write) Java

    Hi there,
    I have a question regarding locking of tables so that only one person can write to the file, but many are able to read the files (or tables entities).
    I am not sure if I need to lock the tables in my Java code or do I lock the tables within the MySQL syntax. I'm just a little confused on the matter.
    This java code is a working prototype of inserting a customer data into the database and that works fine. I just don't know how to implement it so that only one person can update the table at a time.
    Here is the Customer.java code that I have written.
    Help would be greatly appreciated, thanks so much.
    package business;
    //~--- non-JDK imports --------------------------------------------------------
    import shared.info.CustomerInfo;
    //~--- JDK imports ------------------------------------------------------------
    import java.sql.*;
    * @author
    public class Customer {
        static Connection    con  = DBConnection.getConnection();
        private CustomerInfo info = new CustomerInfo();
        private String               customerID;
        private String               firstName;
        private String               lastName;
        private String               email;
        private String               addressID;
        private String               homePhone;
        private String               workPhone;
        private String               unitNum;
        private String               streetNum;
        private String               streetName;
        private String               city;
        private String               provinceState;
        private String               country;
        private String               zipPostalCode;
        public Customer(String id) {
            try {
                PreparedStatement pstmt = con.prepareStatement("SELECT * FROM " +
                        "Customer NATURAL JOIN Address WHERE CustomerID = ?");
                pstmt.setString(1, id);
                ResultSet rs = pstmt.executeQuery();
                while (rs.next()) {
                    customerID    = rs.getString("CustomerID");
                    firstName     = rs.getString("FirstName");
                    lastName      = rs.getString("LastName");
                    homePhone     = rs.getString("HomePhone");
                    workPhone     = rs.getString("WorkPhone");
                    email         = rs.getString("Email");
                    city          = rs.getString("City");
                    provinceState = rs.getString("ProvinceState");
                    country       = rs.getString("Country");
                    zipPostalCode = rs.getString("ZipPostalCode");
                    unitNum       = rs.getString("UnitNum");
                    streetNum     = rs.getString("StreetNum");
                    streetName    = rs.getString("StreetName");
                    addressID     = rs.getString("AddressId");
            } catch (SQLException e) {
                e.printStackTrace();
            info.setCustomerID(customerID);
            info.setFirstName(firstName);
            info.setLastName(lastName);
            info.setHomePhone(homePhone);
            info.setWorkPhone(workPhone);
            info.setEmail(email);
            info.setCity(city);
            info.setProvinceState(provinceState);
            info.setCountry(country);
            info.setZipPostalCode(zipPostalCode);
            info.setUnitNum(unitNum);
            info.setStreetNum(streetNum);
            info.setStreetName(streetName);
            info.setAddressID(addressID);
        public static void addCustomer(CustomerInfo cust) {
            try {
                int id = -1;
                PreparedStatement pstmt = con.prepareStatement("INSERT INTO Address" +
                        "(UnitNum, StreetNum, StreetName, City, ProvinceState, Country," +
                        " ZipPostalCode) VALUES(?, ?, ?, ?, ?, ?, ?)");
                pstmt.setString(1, cust.getUnitNum());
                pstmt.setString(2, cust.getStreetNum());
                pstmt.setString(3, cust.getStreetName());
                pstmt.setString(4, cust.getCity());
                pstmt.setString(5, cust.getProvinceState());
                pstmt.setString(6, cust.getCountry());
                pstmt.setString(7, cust.getZipPostalCode());
                pstmt.executeUpdate();
                ResultSet rs = pstmt.getGeneratedKeys();
                rs.next();
                id = rs.getInt(1);
                pstmt = con.prepareStatement("INSERT INTO Customer" +
                        "(FirstName, LastName, HomePhone, WorkPhone, Email, AddressID)"
                        + "VALUES(?, ?, ?, ?, ?, ?)");
                pstmt.setString(1, cust.getFirstName());
                pstmt.setString(2, cust.getLastName());
                pstmt.setString(3, cust.getHomePhone());
                pstmt.setString(4, cust.getWorkPhone());
                pstmt.setString(5, cust.getEmail());
                pstmt.setInt(6, id);
                pstmt.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
        public void setFirstName(String newName) {
            try {
                PreparedStatement pstmt = con.prepareStatement("UPDATE Customer"
                                              + " SET FirstName = ? WHERE CustomerID = ?");
                pstmt.setString(1, newName);
                pstmt.setString(2, customerID);
                pstmt.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            firstName = newName;
        public void setLastName(String newName) {
            try {
                PreparedStatement pstmt = con.prepareStatement("UPDATE Customer"
                                              + " SET LastName = ? WHERE CustomerID = ?");
                pstmt.setString(1, newName);
                pstmt.setString(2, customerID);
                pstmt.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            lastName = newName;
        public String getFirstName() {
            return firstName;
        public String getLastName() {
            return lastName;
        public void setHomePhone(String number) {
            try {
                PreparedStatement pstmt = con.prepareStatement("UPDATE Customer"
                                              + " SET HomePhone = ? WHERE CustomerID = ?");
                pstmt.setString(1, number);
                pstmt.setString(2, customerID);
                pstmt.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            homePhone = number;
        public String getHomePhone() {
            return homePhone;
        public void setWorkPhone(String number) {
            try {
                PreparedStatement pstmt = con.prepareStatement("UPDATE Customer"
                                              + " SET WorkPhone = ? WHERE CustomerID = ?");
                pstmt.setString(1, number);
                pstmt.setString(2, customerID);
                pstmt.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            workPhone = number;
        public String getWorkPhone() {
            return workPhone;
        public void setEmail(String email) {
            try {
                PreparedStatement pstmt = con.prepareStatement("UPDATE Customer" + " SET Email = ? WHERE CustomerID = ?");
                pstmt.setString(1, email);
                pstmt.setString(2, customerID);
                pstmt.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            this.email = email;
        public String getEmail() {
            return email;
        public void setUnitNum(String num) {
            try {
                PreparedStatement pstmt = con.prepareStatement("UPDATE Address" + " SET UnitNum = ? WHERE AddressId = ?");
                pstmt.setString(1, num);
                pstmt.setString(2, addressID);
                pstmt.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            unitNum = num;
        public String getUnitNum() {
            return unitNum;
        public void setCity(String city) {
            try {
                PreparedStatement pstmt = con.prepareStatement("UPDATE Address" + " SET City = ? WHERE AddressId = ?");
                pstmt.setString(1, city);
                pstmt.setString(2, addressID);
                pstmt.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            this.city = city;
        public String getCity() {
            return city;
        public void setStreetNum(String num) {
            try {
                PreparedStatement pstmt = con.prepareStatement("UPDATE Address" + " SET StreetNum = ? WHERE AddressId = ?");
                pstmt.setString(1, num);
                pstmt.setString(2, addressID);
                pstmt.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            streetNum = num;
        public String getStreetNum() {
            return streetNum;
        public void setStreetName(String name) {
            try {
                PreparedStatement pstmt = con.prepareStatement("UPDATE Address"
                                              + " SET StreetName = ? WHERE AddressId = ?");
                pstmt.setString(1, name);
                pstmt.setString(2, addressID);
                pstmt.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            streetName = name;
        public String getStreetName() {
            return streetName;
        public void setZipPostalCode(String code) {
            try {
                PreparedStatement pstmt = con.prepareStatement("UPDATE Address"
                                              + " SET ZipPostalCode = ? WHERE AddressId = ?");
                pstmt.setString(1, code);
                pstmt.setString(2, addressID);
                pstmt.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            zipPostalCode = code;
        public String getZipPostalCode() {
            return zipPostalCode;
        public CustomerInfo getInfo(){
            return info;
        static void deleteCustomer(String customerId) {
            try{
                PreparedStatement pstmt = con.prepareStatement("DELETE FROM Customer" +
                        " WHERE CustomerId = ?");
                pstmt.setString(1, customerId);
                pstmt.executeUpdate();
            }catch(SQLException e){
                e.printStackTrace();
        static void updateCustomer(CustomerInfo custInf) {
            try{
                PreparedStatement pstmt = con.prepareStatement("UPDATE customer" +
                        " SET firstName = ?, SET lastName = ?," +
                        " SET homePhone = ?, SET workPhone = ?, SET email = ?" +
                        " WHERE CustomerId = ?");
                pstmt.setString(1, custInf.getFirstName());
                pstmt.setString(2, custInf.getLastName());
                pstmt.setString(3, custInf.getHomePhone());
                pstmt.setString(4, custInf.getWorkPhone());
                pstmt.setString(5, custInf.getEmail());
                pstmt.setString(6, custInf.getCustomerID());
                pstmt.executeUpdate();
                pstmt = con.prepareStatement("UPDATE address" +
                        " SET unitNum = ?, SET StreetNum = ?, SET StreetName = ?," +
                        " SET city = ?,SET Province = ?,SET country = ?,SET ZipPostalCode = ?" +
                        " WHERE AddressId = ?");
                pstmt.setString(1, custInf.getUnitNum());
                pstmt.setString(2, custInf.getStreetNum());
                pstmt.setString(3, custInf.getStreetName());
                pstmt.setString(4, custInf.getCity());
                pstmt.setString(5, custInf.getProvinceState());
                pstmt.setString(6, custInf.getCountry());
                pstmt.setString(7, custInf.getZipPostalCode());
                pstmt.setString(8, custInf.getAddressID());
                pstmt.executeUpdate();
            }catch(SQLException e){
                e.printStackTrace();
    }In addition, here is my customer sql table.
    -- Table structure for table `customer`
    DROP TABLE IF EXISTS `customer`;
    CREATE TABLE `customer` (
    `CustomerID` mediumint(9) NOT NULL auto_increment,
    `FirstName` varchar(20) NOT NULL,
    `LastName` varchar(20) NOT NULL,
    `HomePhone` varchar(11) NOT NULL,
    `WorkPhone` varchar(11) default NULL,
    `Email` varchar(20) NOT NULL,
    `AddressID` mediumint(9) default NULL,
    PRIMARY KEY (`CustomerID`),
    KEY `AddressID` (`AddressID`),
    CONSTRAINT `customer_ibfk_1` FOREIGN KEY (`AddressID`) REFERENCES `address` (`AddressID`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    -- Dumping data for table `customer`
    LOCK TABLES `customer` WRITE;
    /*!40000 ALTER TABLE `customer` DISABLE KEYS */;
    /*!40000 ALTER TABLE `customer` ENABLE KEYS */;
    UNLOCK TABLES;

    to the best of my knowledge, this is something related to the database and not the programming. If you'd want to be the only user to read and edit the table, speicify only one user with that privilege and make it password protected. User must enter the password to write to the tables.

  • Newby: locking the table on a SELECT?

    I have just downloaded SQL developer and have been using it to look at the back end of my work database, but it seems just as I started browsing through tables (by clicking on them in the tree explorer) people started getting kicked out of their front end applications. When I stopped, they stopped getting kicked out. Does my viewing a table lock that table? I have tried also through select tables, and I am not sure about whether it leaves the transaction open and locks the table, or not? Also, because of this I am unsure about the commit button (since it removes all the data when pressed). Can someone please enlighten me. thanks

    Along the same line as the database connection limit:
    If you are logged in as the same username as the other users, you could be hitting a limit on the username that you are logged in with.
    To find the limits specified for a user:
    SELECT * FROM sys.dba_profiles where resource_type != 'PASSWORD' AND profile in (select profile from all_users where username = :username) ORDER BY profile;
    The most likely value above to check is 'SESSIONS_PER_USER'
    There are other possibilities aside from specific user limits, so you may want to check with your dba to find out what you are running up against. The only other thing that I can think of is open cursor limits since I believe that viewing a table opens a cursor.
    Eric

  • User with read only access on a schema - How?

    Hi all,
    I want to create a user with ready only access to a particular schema. The user should have only 'SELECT' option on all objects of the schema.
    Thanks !

    Ven wrote:
    Hi all,
    I want to create a user with ready only access to a particular schema. The user should have only 'SELECT' option on all objects of the schema.
    Thanks !There is no single command. You have to grant object privelges by object.
    Use sql to write sql
    connect <schema_owner>
    spool doit.sql
    select 'grant select on ' || table_name || 'to <selected_user>;'
    spool off;Probably best if <selected_use> is a role instead of a specific user, then grant the role to whoever.

  • Is it Necessary to lock the table while accessing the entries from table

    Hi Gurus,
    While optimization of the Program i came through one type of coding is in  inside the Loop of The internal table  which is processing BDC call transcation through updating the Custom table.
    Before processing the BDC, the Custom table has been locked and read the entries from same custom  table ,if the process fails then it waits for another 20 seconds and retrying the same for another time .I could not able to understand the Logic behind this.if it is not the Correct way then i can straight away remove this Part which is very well improve the perfromance of the Object.
    For Your Better Understanding i have attached the Snippet of the Code .Please find the Code and advice me the same .
    +LOOP AT i_stk_req INTO wa_stk_req.+
    +**  Lock is set to '0',meaning that no lock exist.+
        ++v_lock = 0.    "FALSE.++
    ++*   Preparing variable key for locking.++
        ++CLEAR v_key.++
        ++v_key = sy-mandt.++
        ++v_key+3(3) = wa_stk_req-lgnum.++
        ++v_key+6(4) = wa_stk_req-werks.++
        ++v_key+10(18) = wa_stk_req-matnr.++
        ++v_key+28(10) = wa_stk_req-charg.++
    ++*   Try to lock the row for max of 100 times.++
        ++DO 10 TIMES.++
    ++*     this perform sends sy-subrc EQ 1. in case of foreign lock.++
          +PERFORM enqueue_tab IN PROGRAM saplsvix USING 'ZSDT_STK_REQ'  v_key c_e c_e.+
          +IF sy-subrc EQ 0.          "If Enqueue is successful.+
    +**      set lock as TRUE+
            ++v_lock = 1.  "TRUE++
    ++*       selecting the latest entry for the table(Entry might have changed-refer to++
            +SELECT SINGLE *+
                    ++FROM zsdt_stk_req++
                    ++INTO wa_stk_req++
                   ++WHERE lgnum = wa_stk_req-lgnum++
                     ++AND werks = wa_stk_req-werks++
                     ++AND matnr = wa_stk_req-matnr++
                     ++AND charg = wa_stk_req-charg.++
            ++IF sy-subrc NE 0.        "Checking if select statement was successful++
    ++*         Unlock the table row.++
              ++PERFORM enqueue_tab IN PROGRAM saplsvix USING c_table v_key c_e c_d.++
              ++v_lock = 0.            "If unsuccessful.Then we set lock as FALSE.++
              ++EXIT.++
            ++ENDIF.++
            ++EXIT.++
    ++*     If unsuccessful in locking then wait for 1 sec.++
          +ELSE.+
           +WAIT UP TO 20 SECONDS.+
          +ENDIF.+
    +** exit from DO. ENDDO.+
        ++ENDDO.++
    ++*   v_lock will be FALSE if all attempts for lock was unsuccessful or++
    ++*   if there is a problem in select single after lock.++
        ++IF v_lock = 0.++
          ++NEW-PAGE.++
          ++CLEAR v_display.++
          ++CONCATENATE text-004 text-012 wa_stk_req-matnr text-011 wa_stk_req-werks++
                      ++text-019 wa_stk_req-lgnum text-020 wa_stk_req-charg INTO v_display SEPARATED BY space.++
          ++WRITE :/ v_display.++
        ++ENDIF.++
    ++*   Only to process if lock is successful.++
        ++CHECK v_lock NE 0.++
    ++*   If UPDATE IS FALSE that means that no updates need to be done.++
    ++*   So we set v_update as FALSE in its initial state.++
        ++v_update = 0.++
    ++* Begin of Insert Optima App - 053++
      ++SELECT   lgnum++
               ++lqnum++
               ++matnr++
               ++werks++
               ++charg++
               ++lgtyp++
               ++meins++
               ++verme++
               ++lgort++
               ++qplos++
               ++bestq++
          ++FROM lqua++
          ++INTO TABLE i_lqua1++
         ++WHERE lgnum EQ wa_lqua-lgnum++
           ++AND matnr EQ wa_lqua-matnr++
           ++AND werks EQ wa_lqua-werks++
           ++AND charg EQ wa_lqua-charg++
           ++AND bestq EQ wa_lqua-bestq++
           ++AND lgort EQ wa_lqua-lgort++
           ++AND verme GE 0.++
    ++* End of Insert Optima App - 053++
    ++*   IF a requirement still exists.++
        ++IF wa_stk_req-verme > 0.++
          ++LOOP AT i_lqua INTO wa_lqua WHERE bestq  = 'Q'++
                                      ++AND   qplos  NE 0++
                                      ++AND   lgnum  =  wa_stk_req-lgnum++
                                      ++AND   werks  =  wa_stk_req-werks++
                                      ++AND   matnr  =  wa_stk_req-matnr++
                                      ++AND   charg  =  wa_stk_req-charg.++
            ++CLEAR v_target.++
            ++CHECK wa_stk_req-lgtyp = wa_lqua-lgtyp OR wa_stk_req-lgtyp IS INITIAL.++
    ++*       checking if still some stock needs to be transported.++
            ++IF wa_stk_req-verme < 0.++
              ++EXIT.++
            ++ENDIF.++
    ++*       we need to send the entire lot if the stock belongs to quality inspection++
            ++IF wa_stk_req-verme >= wa_lqua-verme.++
              ++IF wa_stk_req-lgort IS INITIAL.++
    ++*           fetch the Storage location value from the two custom tables.++
                ++PERFORM f_fetch_lgort.++
              ++ELSE.++
                ++v_lgort = wa_stk_req-lgort.++
              ++ENDIF.++
    ++*         checking if v_lgort is not initial.++
              ++CHECK NOT v_lgort IS INITIAL.++
    ++*         Calling QAC2++
              ++PERFORM f_qac2.++
    ++*         Checking if Post Good was successful.++
              +IF NOT wa_qamb-mblnr IS INITIAL.+
               +REFRESH i_lqua1.+
                +SELECT   lgnum+
                         +lqnum+
                         +matnr+
                         +werks+
                         +charg+
                         +lgtyp+
                         +meins+
                         +verme+
                         +lgort+
                         +qplos+
                         +bestq+
                    +FROM lqua+
                    +INTO TABLE i_lqua1+
                   +WHERE lgnum EQ wa_lqua-lgnum+
                     +AND matnr EQ wa_lqua-matnr+
                     +AND werks EQ wa_lqua-werks+
                     +AND charg EQ wa_lqua-charg+
                     +AND bestq EQ wa_lqua-bestq+
                     +AND lgort EQ wa_lqua-lgort+
                     +AND verme GE 0.+
                +SORT i_lqua1 BY lgtyp.+
                +CLEAR: wa_lqua1,+
                       +v_position.+
                +READ TABLE i_lqua1 INTO wa_lqua1 WITH KEY lgtyp = wa_lqua-lgtyp.+
                +IF sy-subrc EQ 0.+
                  +v_position = sy-tabix.+
                +ENDIF.+
                +SELECT SINGLE lgnum+
                               +ubnum+
                          +FROM lubu+
                          +INTO wa_lubu+
                          +WHERE lgnum = wa_lqua-lgnum+
                            +AND mblnr = wa_qamb-mblnr.+
                +CLEAR i_bdcdata.+
                +REFRESH i_bdcdata.+
                +REFRESH i_messtab.+
                +CLEAR wa_bdcdata.+
                +wa_bdcdata-program  = 'SAPML03T' .+
                +wa_bdcdata-dynpro   = '0141' .+
                +wa_bdcdata-dynbegin = 'X' .+
                +APPEND wa_bdcdata TO i_bdcdata .+
                +CLEAR wa_bdcdata .+
                +wa_bdcdata-fnam = 'BDC_OKCODE' .+
                +wa_bdcdata-fval = '/00' .+
                +APPEND wa_bdcdata TO i_bdcdata .+
                +CLEAR wa_bdcdata .+
                +wa_bdcdata-fnam = 'LUBU-UBNUM'.+
                +wa_bdcdata-fval = wa_lubu-ubnum.+
                +APPEND wa_bdcdata TO i_bdcdata .+
                +CLEAR wa_bdcdata .+
                +wa_bdcdata-fnam = 'LUBU-LGNUM'.+
                +wa_bdcdata-fval = wa_lqua-lgnum.+
                +APPEND wa_bdcdata TO i_bdcdata .+
                +CLEAR wa_bdcdata .+
                +wa_bdcdata-fnam = 'RL03T-DUNKL'.+
                +wa_bdcdata-fval = 'H'.+
                +APPEND wa_bdcdata TO i_bdcdata .+
                +CLEAR wa_bdcdata.+
                +wa_bdcdata-program  = 'SAPML03T' .+
                +wa_bdcdata-dynpro   = '0143' .+
                +wa_bdcdata-dynbegin = 'X' .+
                +APPEND wa_bdcdata TO i_bdcdata .+
                +CONCATENATE 'RL03T-SELKZ('+
                            +v_position+
                            +')'+
                      +INTO  v_str.+
                +CLEAR wa_bdcdata .+
                +wa_bdcdata-fnam = v_str.+
                +wa_bdcdata-fval = 'X'.+
                +APPEND wa_bdcdata TO i_bdcdata .+
                +CLEAR wa_bdcdata .+
                +wa_bdcdata-fnam = 'BDC_OKCODE' .+
                +wa_bdcdata-fval = 'BU' .+
                +APPEND wa_bdcdata TO i_bdcdata .+
                +CLEAR wa_bdcdata.+
                +wa_bdcdata-program  = 'SAPML03T' .+
                +wa_bdcdata-dynpro   = '0142' .+
                +wa_bdcdata-dynbegin = 'X' .+
                +APPEND wa_bdcdata TO i_bdcdata .+
                +CLEAR wa_bdcdata .+
                +wa_bdcdata-fnam = 'BDC_OKCODE' .+
                +wa_bdcdata-fval = 'BU' .+
                +APPEND wa_bdcdata TO i_bdcdata .+
    +*......changes as per ticket 44206+
    ++*            CLEAR wa_bdcdata .++
    ++*            wa_bdcdata-fnam = 'LQUAU-KZUAP(01)'.++
    ++*            wa_bdcdata-fval = 'X'.++
    ++*            APPEND wa_bdcdata TO i_bdcdata .++
    +*......end of changes as per ticket 44206+
                +CALL TRANSACTION 'LT05' USING i_bdcdata+
                                        +OPTIONS FROM wa_ctu_params+
                                        +MESSAGES INTO i_messtab.+
    Regards,
    Raja

    hi , please check the link below
    [http://help.sap.com/saphelp_nw70/helpdata/en/41/7af4c5a79e11d1950f0000e82de14a/content.htm|http://help.sap.com/saphelp_nw70/helpdata/en/41/7af4c5a79e11d1950f0000e82de14a/content.htm]

  • Problem related to locking the table

    Hi all,
    i am facing a problem while applying locks on the oracle table.my intention is stop the accessing of table to other users, if the table is locked by one user.
    for this i wrote the code as follows
    Class.forName("oracle.jdbc.driver.OracleDriver");       con = DriverManager.getConnection("jdbc:oracle:thin:@192.168.2.123:1521:xe",         "root", "paridb");   con.setAutoCommit(false);             System.out.println("Successfully connected to " +           "Oracle server using TCP/IP..."); String lock="lock table report@xe in exclusive mode";-------------------------------------->1  query to lock the table Statement stmt1=con.createStatement(); stmt1.executeUpdate(lock); System.out.println("lock is applied"); Statement stmt=con.createStatement();                 for(int i=0;i<6;i++)         {         sql="insert into report values(1921682123,'device','host')";         stmt.executeUpdate(sql);         }
    after locking i inserted some data into table, after insertion i am not commiting it because if i commit,the lock will be release.next i am trying to insert data into that table from another system,acutually the data don't insert.but data is inserted. how it is happening like that ??
    in another scenario, if execute the locking query on the database directly then trying to insert into database through java application, at that time it is not giving permission to access table.
    plz guide me
    thanks&regards,
    nagaraju

    Hi! Thank you so much for your reply. Yes, I´m using ADF. I attach you the iterator´definition from the page definition:
    <iterator id="MovimientosCtbView3Iterator" RangeSize="10"
    Binds="MovimientosCtbView3" DataControl="AppModuleDataControl"/>
    If I set the RangeSize to 11, the problem is solved, but my project manager want to find out why this situation happens with RangeSize=10.
    Thank you so much and sorry for bothering you

  • Locking the table

    Hi folks,
    I am new to using Numbers, or any spreadsheet for that matter, so I'm pretty baffled.
    I created a table to use in my lesson planning, as I found inserting a table into a Pages document didn't serve my purposes. The table looks great, but here's my problem:
    I created a large area in the middle of the page in which to type text by merging a whole whack of cells. I did this as it seemed like the best way to create a large area but still maintain the integrity of the format of the page. The problem, however, is that I have no clue how to lock the table - to set the table so that none of the cells change size when I insert text. I have been typing in the text, and the cell keeps expanding, and I have no idea why - I haven't reached the "end" of the cell so I'm not sure why it's not just staying the same size.
    I tried to read through the user guide, but I wasn't able to find what I'm looking for.
    Thanks folks,
    Shawn

    Shawn,
    Without knowing more about why you need a large text area in the middle of your table, it's a little difficult to suggest solutions. In general though, it's not a good idea to Merge Cells just for visual effect. Having affected all those rows and columns will cripple any future efforts to sort the table, or to add or delete rows and columns. You could Insert a Text Box and put your prose there. Position the text box anywhere you like - even over the middle of the table - without causing any future problems with the table.
    Generally we want table cells to expand when we run out of room while making input. I assume that you already have turned on the Wrap feature in the Cells Inspector so that you get more than one line in the cell. You can begin with an oversize cell by dragging the borders of the labels. Beyond that, with Wrap turned on, Numbers will (as you have noticed) accommodate all your input by expanding the height of the cell.
    Jerry

  • How to create a user with read only access for ESB / BPEL Console

    I need to create a user with read only access to ESB Console & BPEL Console. I have created a user
    (esbreadonly) and assigned ascontrol_monitor role but user is still able to
    delete services from ESB systems (such as DefaultSystem). Is there any way to
    create a user that has strickly read only access to ESB Console & BPEL
    Console
    Thanks
    Dinesh Patel

    Check out this post.. I'm in the process of testing.
    http://chintanblog.blogspot.com/2007/12/i-saw-numerous-people-asking-about-bpel_290.html

  • Lock Object (Not locking the table)

    Hi Guys
    I have a custom table ZDRAD same like standard table DRAD with an additional 'DATE' field . ZDRAD's Key fields are same like DRAD . I have created a lock object 'EZDRAD' where I put name = 'ZDRAD' (Custom table) and mode = 'EXCLUSIVE CUMULATIVE' . Now I want to lock the table(Whole table) before modifying/Inserting/deleting the records in se38. Please check the code below and suggest me if I am passing wrong values to the lock object Function module.
    Code
    TABLES : ZDRAD.
    CALL FUNCTION 'ENQUEUE_EZDRAD'
    EXPORTING
       MODE_ZDRAD           = 'E'
       MANDT                = SY-MANDT
       DOKAR                = ' '
       DOKNR                = ' '
       DOKVR                = ' '
       DOKTL                = ' '
       DOKOB                = ' '
       OBZAE                = 0
       OBJKY                = ' '
       X_DOKAR              = ' '
       X_DOKNR              = ' '
       X_DOKVR              = ' '
       X_DOKTL              = ' '
       X_DOKOB              = ' '
       X_OBZAE              = ' '
       X_OBJKY              = ' '
       _SCOPE               = '2'
       _WAIT                = 'X'
       _COLLECT             = ' '
    EXCEPTIONS
       FOREIGN_LOCK         = 1
       SYSTEM_FAILURE       = 2
       OTHERS               = 3
    *IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    *ENDIF.
    IF SY-SUBRC = 0.
    ZDRAD table is locked.
        P_L_LOCK_STAT = 'X'.
        EXIT.
      ELSE.
    ZDRAD table is not locked
        CLEAR P_L_LOCK_STAT .
      ENDIF.

    Hi Kanthimathi
    That is numeric field . Please suggest me how can i check the lock.

  • SDO gives JBO-26030: Failed to lock the record, another user holds the lock

    Hi,
    I have a question thats on the boundary between ADF and BPEL but I posted in this forum because its highly related to ADF Model with Service Interface.
    We have a BPEL batch process that spawns multiple child BPEL processes that handle threads inside the batch in parallel. These child processes all update the same batch record in a database with for example the lastActionDateTime. We do this by invoking an update service on a SDO application that we built following this tutorial: http://jianmingli.com/wp/?p=2838
    It all works good but sometimes when updating the same row from multiple BPEL process instances at the same time, we sometimes get a SDO JBO-26030: Failed to lock the record, another user holds the lock.
    I'm a bit stunned by this, because all we really do is updating a record. From BPEL we just invoke the updateBatch webservice method of the Service Interface.
    I can imagine that there will be wait time when these updates come in at the same time, but I didn't expect an exception would occur. Also the arbitrariness confuses me. If a child process would lock the record, I would expect this error to happen always and not at random.
    From BPEL the error displays as follows:
         <fault>
              <bpelFault>
                   <faultType>1</faultType>
                   <ServiceException>
                        <part  name="ServiceErrorMessage">
                             <tns:ServiceErrorMessage>
                                  <tns:code>26030</tns:code>
                                  <tns:message>JBO-26030: Failed to lock the record, another user holds the lock.</tns:message>
                                  <tns:severity>SEVERITY_ERROR</tns:severity>
                                  <tns:exceptionClassName>oracle.jbo.AlreadyLockedException</tns:exceptionClassName>
                             </tns:ServiceErrorMessage>
                        </part>
                   </ServiceException>
              </bpelFault>
         </fault>However when I dive into soa_server1-diagnostic.log I see the following exception:
    [2011-10-28T17:37:37.770+02:00] [soa_server1] [ERROR] [] [oracle.jbo.server.svc.ServiceJTATxnHandlerImpl] [tid: [ACTIVE].ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: a1484c49db38e963:-581f01fc:13345d7173d:-8000-00000000000322f4,0:1:0x5f5e2bf:33] [WEBSERVICE_PORT.name: ECMControllerSDOServiceSoapHttpPort] [APP: ECMControllerSDO] [composite_name: ECMProcessController] [component_name: ProcessControllerBPEL] [component_instance_id: 240335] [J2EE_MODULE.name: ECMControllerSDO] [WEBSERVICE.name: ECMControllerSDOService] [J2EE_APP.name: ECMControllerSDO] [[
    oracle.jbo.RowInconsistentException: JBO-25014: Another user has changed the row with primary key oracle.jbo.Key[CDS_20111028_8 ].
         at oracle.jbo.server.OracleSQLBuilderImpl.doEntitySelectForAltKey(OracleSQLBuilderImpl.java:1077)
         at oracle.jbo.server.BaseSQLBuilderImpl.doEntitySelect(BaseSQLBuilderImpl.java:553)
         at oracle.jbo.server.EntityImpl.doSelect(EntityImpl.java:8134)
         at oracle.jbo.server.EntityImpl.lock(EntityImpl.java:5863)
         at oracle.jbo.server.EntityImpl.beforePost(EntityImpl.java:6369)
         at oracle.jbo.server.EntityImpl.postChanges(EntityImpl.java:6551)
         at oracle.jbo.server.DBTransactionImpl.doPostTransactionListeners(DBTransactionImpl.java:3275)
         at oracle.jbo.server.DBTransactionImpl.postChanges(DBTransactionImpl.java:3078)
         at oracle.jbo.server.DBTransactionImpl.commitInternal(DBTransactionImpl.java:2088)
         at oracle.jbo.server.DBTransactionImpl.commit(DBTransactionImpl.java:2369)
         at oracle.jbo.server.DefaultJTATxnHandlerImpl.commit(DefaultJTATxnHandlerImpl.java:156)
         at oracle.jbo.server.svc.ServiceJTATxnHandlerImpl.commit(ServiceJTATxnHandlerImpl.java:216)
         at oracle.jbo.server.svc.ServiceJTATxnHandlerImpl.beforeCompletion(ServiceJTATxnHandlerImpl.java:124)
         at sun.reflect.GeneratedMethodAccessor2677.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at oracle.jbo.server.svc.WLSContextCrossAppProxy$WLSCrossAppProxy.invoke(WLSContextCrossAppProxy.java:66)
         at $Proxy377.beforeCompletion(Unknown Source)
         at weblogic.transaction.internal.ServerSCInfo.doBeforeCompletion(ServerSCInfo.java:1239)
         at weblogic.transaction.internal.ServerSCInfo.callBeforeCompletions(ServerSCInfo.java:1214)
         at weblogic.transaction.internal.ServerSCInfo.startPrePrepareAndChain(ServerSCInfo.java:116)
         at weblogic.transaction.internal.ServerTransactionImpl.localPrePrepareAndChain(ServerTransactionImpl.java:1316)
         at weblogic.transaction.internal.ServerTransactionImpl.globalPrePrepare(ServerTransactionImpl.java:2132)
         at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:272)
         at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:239)
         at weblogic.ejb.container.internal.BaseRemoteObject.postInvoke1(BaseRemoteObject.java:625)
         at weblogic.ejb.container.internal.StatelessRemoteObject.postInvoke1(StatelessRemoteObject.java:49)
         at weblogic.ejb.container.internal.BaseRemoteObject.__WL_postInvokeTxRetry(BaseRemoteObject.java:444)
         at weblogic.ejb.container.internal.SessionRemoteMethodInvoker.invoke(SessionRemoteMethodInvoker.java:53)
         at nl.kpn.ecm4crm.am.server.serviceinterface.ECMControllerSDOServiceImpl_51vl7y_ECMControllerSDOServiceImpl.updateBatches(Unknown Source)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:85)
         at $Proxy373.updateBatches(Unknown Source)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at oracle.j2ee.ws.server.jaxws.ServiceEndpointRuntime.processMessage(ServiceEndpointRuntime.java:355)
         at oracle.j2ee.ws.server.jaxws.ServiceEndpointRuntime.processMessage(ServiceEndpointRuntime.java:196)
         at oracle.j2ee.ws.server.jaxws.JAXWSRuntimeDelegate.processMessage(JAXWSRuntimeDelegate.java:479)
         at oracle.j2ee.ws.server.provider.ProviderProcessor.doEndpointProcessing(ProviderProcessor.java:1187)
         at oracle.j2ee.ws.server.WebServiceProcessor.invokeEndpointImplementation(WebServiceProcessor.java:1081)
         at oracle.j2ee.ws.server.provider.ProviderProcessor.doRequestProcessing(ProviderProcessor.java:581)
         at oracle.j2ee.ws.server.WebServiceProcessor.processRequest(WebServiceProcessor.java:232)
         at oracle.j2ee.ws.server.WebServiceProcessor.doService(WebServiceProcessor.java:192)
         at oracle.j2ee.ws.server.WebServiceServlet.doPost(WebServiceServlet.java:459)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
         at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
         at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
         at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
         at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.jbo.server.svc.ServiceContextFilter.doFilter(ServiceContextFilter.java:78)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:111)
         at java.security.AccessController.doPrivileged(Native Method)
         at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
         at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413)
         at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:94)
         at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:161)
         at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:136)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
         at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
         at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
         at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)Thank you for reading, any directions suggestions on how to solve this will be highly appreciated.
    regards,
    Gerben

    Thanks Frank.
    Already tried that , please let me know if there is any other way to get this .
    This is being discussed here :
    Re: Update without No wait
    and i am following what John Stegeman has suggested.

  • How to find out the IBU of the logges in user with some relationship?

    Hi,
    How to find out the IBU of the logges in user with some relationship?
    Regards,
    Jaya

    Hi Jaya,
    I am not sure if i understood you correctly. Do you want to find the corresponding account of logged in User? If yes, then you can use the below FM:-
      CALL FUNCTION 'BP_CENTRALPERSON_GET'
        EXPORTING
          IV_USERNAME         = im_usr_name
        IMPORTING
          EV_BU_PARTNER_GUID  = lv_partner_guid
        EXCEPTIONS
          NO_CENTRAL_PERSON   = 1
          NO_BUSINESS_PARTNER = 2
          NO_ID               = 3
          OTHERS              = 4.
    Thanks and Regars,
    Rohit

  • HT1766 The screen shows problems with iCloud only choices are ignore or settings, however nothing I do will unlock it from this screen, cannot power off keeps that bubble on the screen. What do I do?

    The screen shows problems with iCloud only choices are ignore or settings, however nothing I do will unlock it from this screen, cannot power off keeps that bubble on the screen. What do I do?

    Try this now.
    Reboot the iPad by holding down on the sleep and home buttons at the same time for about 10-15 seconds until the Apple Logo appears - ignore the red slider - let go of the buttons.

  • Ever used the Table API (TAPI) with object type in the DB?

    Hi all,
    We are trying to generate the table API of a table that has a column defined by an object type. It works without problems if that column always has a value (is instantiated in object term). The problem is when we update a row where the column is null (all attributes of the object are null thus the object is not instantiated).
    The "before update row" trigger of the Table API fails with error "ora-30625-method dispath on NULL SELF argument is disallowed".
    Any of you guys made it work? If so, how?
    Thanks

    user8879206 wrote:
    Hi friends,
    I have a procedure with object type IN OUT parameters which is used for fetching status. We are calling this from Java. But I want to call it from oracle for testing purpose. I am trying from my end but not able to do it as of now. This is the first time I am dealing with object type.We need more information. What is wrong? Your code looked okay and you did not mention any Oracle errors. What is happening that should not be or not happening that should be?
    You can call the procedure with a simple call in PL/SQL but will not be able to use it in SQL because 1) it is a procedure and 2) it has an OUT argument. A sample call should look something like (untested)
    declare
       x rec2;
       y rec3;
    begin
      --use the arguments rru was defined with as the arguments in the same order: types rec2 (x), rec3 (y)
      rru(x,y);
    end;>
    Any help would be appreciated.
    Details are given below.
    CREATE OR REPLACE TYPE REC1 AS OBJECT
    (RELAY_USAGE VARCHAR2(30)
    ,STATE VARCHAR2(1)
    TYPE REC AS TABLE OF REC1;
    CREATE OR REPLACE TYPE REC2 AS OBJECT
    (GSRN VARCHAR2(18)
    ,METERING_POINT_NAME VARCHAR2(80)
    ,RELAYS REC)
    CREATE OR REPLACE TYPE REC3 AS OBJECT
    (INFO VARCHAR2(2000)
    ,STATUS NUMBER
    PROCEDURE RRU(
    rcRelayControl IN OUT REC2
    , rcResp IN OUT REC3)
    IS
    BEGIN
    APKG.GetDetails(rcRelayControl, rcResp);
    IF rcResp.Status = BPKG.iStatusFailure THEN
    rcResp.Info := BPKG.Get_Message('20889', rcResp.Info);
    END IF;
    END RRU;
    How to call this procedure in oracle?
    Thanks.

  • FM to lock the Table

    Could anybody check and tell me whether Function Module ENQUEUE_E_TABLE
    and DEQUEUE_E_TABLE are working fine and if it is so let me know the Parameters used for it.
    Full reward points for issue solver.
    Regards,
    Amol

    hi..
    check out the following documentation
    Lock objects are used to lock the database table while making the modifications on the database table.
    you can create your own lock objects using SE11.
    if you create lock objects on any table system will create two function modules.
    1.ENQUEUE....
    2.DEQUEUE.....
    first one is used to lock the table
    second one used to removing lock on the table.
    lock Table
    CALL FUNCTION 'ENQUEUE_E_TABLE'
    EXPORTING
    tabname = table_name
    EXCEPTIONS
    foreign_lock = 1
    system_failure = 2
    OTHERS = 3.
    Unlock Table
    CALL FUNCTION 'DEQUEUE_E_TABLE'
    EXPORTING
    tabname = table_name
    check this link :
    http://help.sap.com/saphelp_40b/helpdata/en/cf/21eea5446011d189700000e8322d00/content.htm
    _SCOPE = 1: The lock is not sent to the update program. The lock is removed when the transaction is ended.
    _SCOPE = 2: The lock is sent to the update program. The update program is responsible for removing the lock. The dialog program which requested the lock no longer has an influence on the lock behavior. This is the standard setting for the ENQUEUE function module.
    _SCOPE = 3: The lock
    Re: lock objects
    Managingin lock entries
    http://help.sap.com/saphelp_nw04/helpdata/en/37/a2e3ae344411d3acb00000e83539c3/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/7b/f9813712f7434be10000009b38f8cf/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/cb/168237d30d974be10000009b38f8cf/frameset.htm
    <b>Reward points if useful</b>
    Regards
    Ashu

  • About a week ago, I purchased a subscription to Adobe CC Photoshop and Lightroom. I can access Photoshop but this screen still comes up asking me for the license number or if I want to continue the trial. The same thing happens with Lightroom, only it mak

    About a week ago, I purchased a subscription to Adobe CC Photoshop and Lightroom. I can access Photoshop but this screen still comes up asking me for the license number or if I want to continue the trial. The same thing happens with Lightroom, only it makes me sign in and takes me to the tutorials. I cannot access the actual program. Help!!!

    Ask for serial number http://forums.adobe.com/thread/1234635 has a FAQ link

Maybe you are looking for

  • Weblogic.jar not found

    Hi, Going throu' a strange problem. I am calling an applet method from javascript. This applet method in turn access certain ejb methods which needs the class files of weblogic.jar. I have this weblogic.jar in the classpath, applet archive and both a

  • Horrible scopes utilization

    AGAIN ... rather than nifty new features, I'd like SOME pressure on Adobe to fix major things that need a "touch" to get them working in a basically USEFUL manner. Such as ... Speedgrade's scopes. Look at the enclosed pic, a screen grab of my "4 scop

  • OS X 10.4 Install Disc: model specific?

    Hi! My beloved PowerBook G4 was stolen last year, but i still have the "Mac OS X Install Disc" 1&2, installation discs that came together with the computer. Would these discs, should i ever need it, eventually work in my Intel-based MacBook Pro? Are

  • Macbook pro 2014 vs 2015? HELP!

    so i wanted to make a purchase for a Macbook Pro, my friend said that i should get the macbook pro 2014 retina display, instead of the newest one and avoid all the fees reasons being i want to play games (not huge graphic games) like second life and

  • Change one participating applications instance to other for PIP

    Hi, I am using Oracle "Order To Cash" PIP (Siebel CRM to EBiz). Had a requirement to change Siebel environment(move from one dev environment to other) What are the suggested way to change one participating applications instance to other in case of PI