Sql error 16000

List of SQL Server error messages between 16000 and 16999.

List of error messages between 16000 and 16999 in SQL Server 2017.

These error messages are all available by querying the sys.messages catalog view on the master database.

Filter by:

message_id severity is_event_logged text
16001 16 0 Data masking is not supported for the data type of column ‘%.*ls’.
16002 16 0 Invalid data masking function in column ‘%.*ls’.
16003 16 0 The data type of column ‘%.*ls’ does not support data masking function ‘%.*ls’.
16004 16 0 Incorrect number of parameters for data masking function ‘%.*ls’ for column ‘%.*ls’.
16005 16 0 Invalid argument for data masking function ‘%.*ls’ for column ‘%.*ls’.
16006 16 0 Invalid data masking format for function ‘%.*ls’ in column ‘%.*ls’.
16007 16 0 The column ‘%.*ls’ does not have a data masking function.
16008 16 0 Cannot add a masking function to a column that is encrypted.
16009 16 0 Cannot add a masking function to a column used as a sparse column set.
16010 16 0 External script cannot be executed on masked data columns.
16011 16 0 The data masking function for column ‘%.*ls’ is too long.
16012 16 0 The query accessed too many different databases.
16013 16 0 Cannot add a masking function to a column used in a key to a fulltext index.
16014 16 0 Failed to create fulltext index because key column ‘%.*ls’ has a masking function defined on it.
16015 16 0 The index on view ‘%.*ls’ cannot be created because the view is referencing table ‘%.*ls’ with masked columns.
16016 16 0 Cannot add a masking function to a column used in a sparse column set.
16202 16 0 Keyword or statement option ‘%.*ls’ is not supported on the ‘%.*ls’ platform.
16601 16 0 Credential of database ‘%ls’ are invalid.
16602 16 0 Cannot delete sync agent ‘%ls’ because it is used by sync member ‘%ls’.
16603 16 0 Cannot add database ‘%ls’ into sync group because the database name is invalid.
16604 16 0 Hub database ‘%ls’ is invalid.
16605 16 0 Member database ‘%ls’ is invalid.
16606 16 0 Database ‘%ls’ cannot be deleted because it is used as a sync metadata database which still contains sync groups and/or sync agents.
16607 16 0 Sync metadata database ‘%ls’ is invalid.
16608 16 0 Cannot create or update sync group because the sync group name ‘%ls’ is invalid.
16609 16 0 Cannot create or update sync group ‘%ls’ because the conflict resolution policy is invalid.
16610 16 0 Cannot create sync group because the sync group name ‘%ls’ is used.
16611 16 0 Cannot create or update sync group ‘%ls’ because the sync schema contains circular reference.
16612 16 0 Cannot create or update sync group ‘%ls’ because the table ‘%ls’ in sync schema contains no clustered index.
16613 16 0 Cannot delete sync group ‘%ls’ because the sync group is syncing.
16614 16 0 Cannot create or update sync group ‘%ls’ because database ‘%ls’ is invalid.
16615 16 0 Cannot create or update sync group ‘%ls’ because the sync interval is invalid.
16616 16 0 Cannot update sync schema because the data type change is not supported.
16617 16 0 Sync group ‘%ls’ is not ready to update sync schema because there are some ongoing operations on the sync group.
16618 16 0 Cannot update sync schema because some columns are missing in database ‘%ls’.
16619 16 0 Cannot update sync schema because some tables are missing in database ‘%ls’.
16620 16 0 Cannot update sync schema because the format of sync schema is invalid.
16621 16 0 Sync group ‘%ls’ is not in active state. Make sure the sync schema of it is set.
16622 16 0 Hub database ‘%ls’ is suspended because the credential of it is invalid.
16623 16 0 Sync group ‘%ls’ is invalid.
16624 16 0 Cannot create or update sync member because the sync member name ‘%ls’ is invalid.
16625 16 0 Cannot create or update the sync member ‘%ls’ because the database type ‘%ls’ provided is invalid.
16626 16 0 Cannot create or update the sync member ‘%ls’ because the sync direction ‘%ls’ provided is invalid.
16627 16 0 Cannot create or update the sync member ‘%ls’ because the sync agent ‘%ls’ provided is invalid.
16628 16 0 Cannot create or update the sync member ‘%ls’ because the SQL Server database ID ‘%ls’ provided is invalid.
16629 16 0 Cannot create sync member because the sync member name ‘%ls’ provided is used.
16630 16 0 Cannot create sync member ‘%ls’ because the database ‘%ls’ provided is already added as a sync member.
16631 16 0 Cannot delete sync member ‘%ls’ when it is syncing.
16632 16 0 Sync member ‘%ls’ is invalid.
16633 16 0 Cannot create sync agent because the sync agent name ‘%ls’ provided is used.
16634 16 0 Sync agent ‘%ls’ is invalid.
16635 16 0 Cannot create sync group ‘%ls’ because the maximum number of sync groups can be created is %d.
16636 16 0 Cannot create sync member ‘%ls’ because the maximum number of sync members can be created in a sync group is %d.
16637 16 0 Cannot create or update sync group ‘%ls’ because the maximum count of tables in sync schema is %d.
16638 16 0 Cannot create or update sync group ‘%ls’ because the table ‘%ls’ in sync schema contains no primary key.
16639 16 0 Cannot create or update sync group ‘%ls’ because the sync schema provided contains unsupported column data type.
16640 16 0 Cannot refresh schema of the database ‘%ls’.
16641 16 0 Cannot create sync agent ‘%ls’ under a different SQL Server than the one of sync metadata database.
16901 16 0 %hs: This feature has not been implemented yet.
16902 16 0 %ls: The value of the parameter %ls is invalid.
16903 16 0 The «%ls» procedure was called with an incorrect number of parameters.
16904 16 0 sp_cursor: optype: You can only specify ABSOLUTE in conjunction with DELETE or UPDATE.
16905 16 0 The cursor is already open.
16906 17 0 Temporary storage used by the cursor to store large object variable values referred by the cursor query is not usable any more.
16907 16 0 %hs is not allowed in cursor statements.
16909 16 0 %ls: The cursor identifier value provided (%x) is not valid.
16910 16 0 The cursor %.*ls is currently used by another statement.
16911 16 0 %hs: The fetch type %hs cannot be used with forward only cursors.
16914 16 0 The «%ls» procedure was called with too many parameters.
16915 16 0 A cursor with the name ‘%.*ls’ already exists.
16916 16 0 A cursor with the name ‘%.*ls’ does not exist.
16917 16 0 Cursor is not open.
16922 16 0 Cursor Fetch: Implicit conversion from data type %s to %s is not allowed.
16924 16 0 Cursorfetch: The number of variables declared in the INTO list must match that of selected columns.
16925 16 0 The fetch type %hs cannot be used with dynamic cursors.
16926 16 0 sp_cursoroption: The column ID (%d) does not correspond to a text, ntext, or image column.
16927 16 0 Cannot fetch into text, ntext, and image variables.
16928 16 0 sp_cursor: Exec statement is not allowed as source for cursor insert.
16929 16 0 The cursor is READ ONLY.
16930 16 0 The requested row is not in the fetch buffer.
16931 16 0 There are no rows in the current fetch buffer.
16932 16 0 The cursor has a FOR UPDATE list and the requested column to be updated is not in this list.
16933 16 0 The cursor does not include the table being modified or the table is not updatable through the cursor.
16934 10 0 Optimistic concurrency check failed. The row was modified outside of this cursor.
16935 16 0 No parameter values were specified for the sp_cursor-%hs statement.
16936 16 0 sp_cursor: One or more values parameters were invalid.
16937 16 0 A server cursor cannot be opened on the given statement or statements. Use a default result set or client cursor.
16938 16 0 sp_cursoropen/sp_cursorprepare: The statement parameter can only be a batch or a stored procedure with a single select, without FOR BROWSE, COMPUTE BY, or variable assignments.
16941 16 0 Cursor updates are not allowed on tables opened with the NOLOCK option.
16942 16 0 Could not generate asynchronous keyset. The cursor has been deallocated.
16943 16 0 Could not complete cursor operation because the table schema changed after the cursor was declared.
16945 16 0 The cursor was not declared.
16946 16 0 Could not open the cursor because one or more of its tables have gone out of scope.
16947 16 0 No rows were updated or deleted.
16948 16 0 The variable ‘%.*ls’ is not a cursor variable, but it is used in a place where a cursor variable is expected.
16949 16 0 The variable ‘%.*ls’ is a cursor variable, but it is used in a place where a cursor variable is not valid.
16950 10 0 The variable ‘%.*ls’ does not currently have a cursor allocated to it.
16951 16 0 The variable ‘%.*ls’ cannot be used as a parameter because a CURSOR OUTPUT parameter must not have a cursor allocated to it before execution of the procedure.
16952 16 0 A cursor variable cannot be used as a parameter to a remote procedure call.
16953 10 0 Remote tables are not updatable. Updatable keyset-driven cursors on remote tables require a transaction with the REPEATABLE_READ or SERIALIZABLE isolation level spanning the cursor.
16954 16 0 Executing SQL directly; no cursor.
16955 16 0 Could not create an acceptable cursor.
16956 10 0 The created cursor is not of the requested type.
16957 16 0 FOR UPDATE cannot be specified on a READ ONLY cursor.
16958 16 0 Could not complete cursor operation because the set options have changed since the cursor was declared.
16959 16 0 Unique table computation failed.
16960 16 0 You have reached the maximum number of cursors allowed.
16961 10 0 One or more FOR UPDATE columns have been adjusted to the first instance of their table in the query.
16962 16 0 The target object type is not updatable through a cursor.
16963 16 0 You cannot specify scroll locking on a cursor that contains a remote table.
16964 16 0 For the optimistic cursor, timestamp columns are required if the update or delete targets are remote.
16965 16 0 Cursor scroll locks were invalidated due to a transaction defect. Reissue the UPDATE or DELETE statement after a cursor fetch.
16966 16 0 %ls: Specified concurrency control option %d (%ls) is incompatible with static or fast forward only cursors. Only read-only is compatible with static or fast forward only cursors.
16992 16 0 The cursor operation is required to wait for cursor asynchronous population to complete. However, at this point the transaction cannot be yielded to let the asynchronous population to continue.
16996 16 0 %ls cannot take output parameters.
16998 16 0 The asynchronous cursor worktable population thread spawn failed.
16999 20 1 Internal Cursor Error: The cursor is in an invalid state.

ORA-16000 on ADG standby via dblink to primary

Some day ago my collegues asked me about ORA-16000 error in application log.

[22/04/2013:13:42:40] xxxxxxxxxxxxxxxxx:sql execute error: ORA-16000: database open for read-only access

Small deviation.
We have some service who has support perform I/O read operation (like select) on standby side. Client connections always occur on standby side and PL/SQL Packages to decide, what user want to reading or to changing data (insert,update).

So, from application log provided by our application administrators, i can see which exactly procedure performed.
Let’s try perform that procedure.

SQL> begin user.Package1.Procedure1(1130000010449084,null,null,null); end;
 2 /
begin user.Package1.Procedure1(1130000010449084,null,null,null); end;
*
ERROR at line 1:
ORA-04053: error occurred when validating remote object
user.user@PRIMARY.SERVER
ORA-00604: error occurred at recursive SQL level 1
ORA-16000: database open for read-only access

Inside that procedure call another procedure wich will decide need to go to primary via dblink or not. Try perform it.

SQL> begin user.Package2.Procedure1(1130000010449084,null,null,null); end;
 2 /
begin user.Package2.Procedure1(1130000010449084,null,null,null); end;
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-16000: database open for read-only access

But i see the same error. I’m don’t understand what happen. We should go to primary via dblink from standby and shouldn’t to see any error about read-only access.
Ok, let’s try to see error stack on standby.

SQL> alter system set events '16000 trace name errorstack level 3';

System altered.

SQL> begin user.Package1.Procedure1(1130000010449084,null,null,null); end;
 2 /
begin user.Package1.Procedure1(1130000010449084,null,null,null); end;
*
ERROR at line 1:
ORA-04053: error occurred when validating remote object
user.user@PRIMARY.SERVER
ORA-00604: error occurred at recursive SQL level 1
ORA-16000: database open for read-only access

In trace.

*** 2013-04-22 16:33:52.444
*** SESSION ID:(2274.5) 2013-04-22 16:33:52.444
*** CLIENT ID:() 2013-04-22 16:33:52.444
*** SERVICE NAME:() 2013-04-22 16:33:52.444
*** MODULE NAME:(sqlplus@some.SERVER (TNS V1-V3)) 2013-04-22 16:33:52.444
*** ACTION NAME:() 2013-04-22 16:33:52.444

Managed Recovery: Real Time Apply enabled.
Managed Recovery: THROUGH ALL SWITCHOVER posted.
Managed Recovery: DISCONNECT posted.
Managed Recovery: Startup posted.

*** 2013-04-22 16:42:09.455
Managed Recovery: Cancel posted.

*** 2013-04-22 16:42:46.890
Managed Recovery: Real Time Apply enabled.
Managed Recovery: THROUGH ALL SWITCHOVER posted.
Managed Recovery: DISCONNECT posted.
Managed Recovery: Startup posted.

*** 2013-04-22 16:47:45.544
KQRCMT: Write failed with error=604 po=0x196d592118 cid=8
diagnostics : cid=8 hash=808b698f flag=2a

*** 2013-04-22 16:56:39.421
dbkedDefDump(): Starting a non-incident diagnostic dump (flags=0x0, level=3, mask=0x0)
----- Error Stack Dump -----
ORA-16000: database open for read-only access
----- Current SQL Statement for this session (sql_id=4yyb4104skrwj) -----
update obj$ set obj#=:4, type#=:5,ctime=:6,mtime=:7,stime=:8,status=:9,dataobj#=:10,flags=:11,oid$=:12,spare1=:13, spare2=:14 where owner#=:1 and name=:2 and namespace=:3 and remoteowner is null and linkname is null and subname is null

Hmmm, i see attempt to update dictionary with objects. Now i’m understand why ORA-16000 error happened. Probably we have problem with shared_pool. Let’s try to flush it.

SQL> alter system flush shared_pool;

System altered.

No effect. Hmmm, ok, let’s try perform that procedure on primary.

SQL> begin user.Package2.Procedure1(1130000010449084,null,null,null); end;
 2 /
begin user.Package2.Procedure1(1130000010449084,null,null,null); end;
*
ERROR at line 1:
ORA-04062: timestamp of Package1 "user.Package1" has been changed
ORA-06512: at "user.Package2", line 72
ORA-06512: at line 1

Wow!!! Timestamp of package is changed! Try to perform one more.

SQL> begin user.Package2.Procedure1(1130000010449084,null,null,null); end;
 2 /

PL/SQL procedure successfully completed.

SQL> begin user.Package1.Procedure1(1130000010449084,null,null,null); end;
 2 /

PL/SQL procedure successfully completed.

Errors gone. Let’s try to perform on standby side.

SQL> begin user.Package2.Procedure1(1130000010449084,null,null,null); end;
 2 /
begin user.Package2.Procedure1(1130000010449084,null,null,null); end;
 *
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00201: identifier 'user.Package2' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
SQL> begin user.Package1.Procedure1(1130000010449084,null,null,null); end;
 2 /
begin user.Package1.Procedure1(1130000010449084,null,null,null); end;
 *
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00201: identifier 'user.Package1' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

I see other errors. Now standby like doesn’t know about our packages. I’m waited 10 min but nothing happened and i decided to restart instance 🙂

SQL> begin user.Package2.Procedure1(1130000010449084,null,null,null); end;
 2 /

PL/SQL procedure successfully completed.
SQL> begin user.Package1.Procedure1(1130000010449084,null,null,null); end;
 2 /

PL/SQL procedure successfully completed.

After that all packages work brilliant!

Obviously something happen in shared_pool. Our packages based on timestamp.
Unfortunately i can’t recompile packages on primary because we have lot of load system and i could catch latches on packages like (library cache pin).
But i think if i could recompile packages, this error can be resolved with recompile.

Errors 16000 — 16999

Error Severity Description (Message Text)
16801 11 sp_dropwebtask requires at least one defined parameter @outputfile or @procname.
16802 11 sp_dropwebtask cannot find the specified task.
16803 11 sp_runwebtask requires at least one defined parameter @outputfile or @procname.
16804 11 SQL Web Assistant: Could not establish a local connection to SQL Server.
16805 11 SQL Web Assistant: Could not execute the SQL statement.
16806 11 SQL Web Assistant: Could not bind the parameter to the SQL statement.
16807 11 SQL Web Assistant: Could not obtain a bind token.
16808 11 SQL Web Assistant: Could not find the existing trigger. This could be due to encryption.
16809 11 SQL Web Assistant failed on the call to SQLGetData.
16810 11 SQL Web Assistant failed on the call to SQLFetch.
16811 11 SQL Web Assistant failed to bind a results column.
16812 11 SQL Web Assistant: The @query parameter must be specified.
16813 11 SQL Web Assistant: Parameters can be passed either by name or position.
16814 11 SQL Web Assistant: Invalid parameter.
16815 11 SQL Web Assistant: @procname is not valid.
16816 11 SQL Web Assistant: @outputfile is not valid.
16817 11 SQL Web Assistant: Could not read the given file.
16820 11 SQL Web Assistant failed because the state of the Web task in msdb..MSwebtasks is invalid.
16821 11 SQL Web Assistant: Could not open the output file.
16822 11 SQL Web Assistant: Could not open the template file.
16823 11 SQL Web Assistant: Could not allocate enough memory to satisfy this request.
16824 11 SQL Web Assistant: The template file specified in the Web task has a bad size.
16825 11 SQL Web Assistant: Could not read the template file.
16826 11 SQL Web Assistant: Could not find the specified marker for data insertion in the template file.
16827 11 SQL Web Assistant: Could not write to the output file.
16828 11 SQL Web Assistant: @tabborder must be tinyint.
16829 11 SQL Web Assistant: @singlerow must be 0 or 1. Cannot specify this parameter with @nrowsperpage.
16830 11 SQL Web Assistant: The @blobfmt parameter specification is invalid.
16831 11 SQL Web Assistant: The output file name is mandatory for every column specified in the @blobfmt parameter.
16832 11 SQL Web Assistant: Procedure called with too many parameters.
16833 11 SQL Web Assistant: @nrowsperpage must be a positive number and it cannot be used with @singlerow.
16834 11 SQL Web Assistant: Read/write operation on text, ntext, or image column failed.
16838 11 SQL Web Assistant: Could not find the table in the HTML file.
16839 11 SQL Web Assistant: Could not find the matching end table tag in the HTML file.
16841 11 SQL Web Assistant: The @datachg parameter cannot be specified with the given @whentype value.
16842 11 SQL Web Assistant: Could not find and drop the necessary trigger for updating the Web page.
16843 11 SQL Web Assistant: Could not add the necessary trigger for the @datachg parameter. There could be an existing trigger on the table with missing or encrypted text.
16844 11 SQL Web Assistant: Incorrect syntax for the @datachg parameter.
16845 11 SQL Web Assistant: @datachg must be specified for the given @whentype option.
16846 11 SQL Web Assistant: @unittype and/or @numunits must be specified for the given @whentype option.
16847 11 SQL Web Assistant: @fixedfont must be 0 or 1.
16848 11 SQL Web Assistant: @bold must be 0 or 1.
16849 11 SQL Web Assistant: @italic must be 0 or 1.
16850 11 SQL Web Assistant: @colheaders must be 0 or 1.
16851 11 SQL Web Assistant: @lastupdated must be 0 or 1.
16852 11 SQL Web Assistant: @HTMLheader must be in the range 1 to 6.
16853 11 SQL Web Assistant: @username is not valid.
16854 11 SQL Web Assistant: @dbname is not valid.
16855 11 SQL Web Assistant: @whentype must be in the range 1 to 9.
16856 11 SQL Web Assistant: @unittype must be in the range 1 to 4.
16857 11 SQL Web Assistant: @targetdate is invalid. It must be a valid date after 1900-01-01.
16858 11 SQL Web Assistant: The @targettime parameter must be between 0 and 240000.
16859 11 SQL Web Assistant: @dayflags must be 1, 2, 4, 8, 16, 32, or 64.
16860 11 SQL Web Assistant: @numunits must be greater than 0.
16861 11 SQL Web Assistant: @targetdate must be specified for the given @whentype option.
16862 11 SQL Web Assistant: @dayflags must be specified for the given @whentype option.
16863 11 SQL Web Assistant: URL specification is invalid.
16864 11 SQL Web Assistant: @blobfmt is invalid. The file must include the full path to the output_file location.
16865 11 SQL Web Assistant: URL hyperlink text column must not be of the image data type.
16866 11 SQL Web Assistant: Could not obtain the number of columns in @query.
16867 11 SQL Web Assistant: URL hyperlink text column is missing in @query.
16868 11 SQL Web Assistant failed on the call to SQLColAttribute.
16869 11 SQL Web Assistant: Columns of data type image cannot have a template.
16870 11 SQL Web Assistant: Internal error. Could not read @ parameters.
16871 11 SQL Web Assistant: Invalid @charset. Execute sp_enumcodepages for a list of character sets.
16873 11 SQL Web Assistant: Invalid @codepage. Execute sp_enumcodepages for a list of code pages.
16874 11 SQL Web Assistant: Internal error. Cannot translate to the specified code page.
16875 11 SQL Web Assistant: Translation to the desired code page is unavailable on this system.
16876 11 SQL Web Assistant: Internal error. Could not obtain COM interface ID.
16877 11 SQL Web Assistant: Internal error. Could not obtain COM language ID.
16878 11 SQL Web Assistant: Internal error. Could not initialize COM library.
16879 11 SQL Web Assistant: Internal error. Could not translate from Unicode to the specified code page.
16880 11 SQL Web Assistant: Internal error. Could not create translation object. Make sure that the file MLang.dll is in your system directory.
16881 16 SQL Web Assistant: This version is not supported on Win32s of Windows 3.1.
16882 16 SQL Web Assistant: Web task not found. Verify the name of the task for possible errors.
16883 16 SQL Web Assistant: Could not list Web task parameters. xp_readwebtask requires @procname.
16884 16 SQL Web Assistant: Procedure name is required to convert Web tasks.
16885 16 SQL Web Assistant: Could not upgrade the Web task to 8.0. The Web task will remain in 6.5 format and will need to be re-created.
16886 16 SQL Web Assistant: Could not update Web tasks system table. The Web task remains in 6.5 format.
16887 16 SQL Web Assistant: @procname parameter is missing. The parameter is required to upgrade a Web task to 8.0.
16888 16 SQL Web Assistant: Source code page is not supported on the system.  Ensure @charset and @codepage language files are installed on your system.
16889 16 SQL Web Assistant: Could not send Web task row to the client.
16890 16 SQL Web Assistant: ODS error occurred. Could not send Web task parameters.
16901 16 %hs: This feature has not been implemented yet.
16902 16 %hs: The value of parameter %hs is invalid.
16903 16 %hs procedure called with incorrect number of parameters.
16904 16 sp_cursor: optype: You can only specify ABSOLUTE in conjunction with DELETE or UPDATE.
16905 16 The cursor is already open.
16907 16 %hs is not allowed in cursor statements.
16909 16 %hs: The cursor identifier value provided (%x) is not valid.
16911 16 %hs: The fetch type %hs cannot be used with forward only cursors.
16914 16 %hs procedure called with too many parameters.
16915 16 A cursor with the name ‘%.*ls’ already exists.
16916 16 A cursor with the name ‘%.*ls’ does not exist.
16917 16 Cursor is not open.
16922 16 Cursor Fetch: Implicit conversion from data type %s to %s is not allowed.
16924 16 Cursorfetch: The number of variables declared in the INTO list must match that of selected columns.
16925 16 The fetch type %hs cannot be used with dynamic cursors.
16926 16 sp_cursoroption: The column ID (%d) does not correspond to a text, ntext, or image column.
16927 16 Cannot fetch into text, ntext, and image variables.
16929 16 The cursor is READ ONLY.
16930 16 The requested row is not in the fetch buffer.
16931 16 There are no rows in the current fetch buffer.
16932 16 The cursor has a FOR UPDATE list and the requested column to be updated is not in this list.
16933 16 The cursor does not include the table being modified or the table is not updatable through the cursor.
16934 16 Optimistic concurrency check failed. The row was modified outside of this cursor.
16935 16 No parameter values were specified for the sp_cursor-%hs statement.
16936 16 sp_cursor: One or more values parameters were invalid.
16937 16 A server cursor is not allowed on a remote stored procedure or stored procedure with more than one SELECT statement. Use a default result set or client cursor.
16938 16 sp_cursoropen/sp_cursorprepare: The statement parameter can only be a single select or a single stored procedure.
16940 16 Cannot specify UPDLOCK or TABLOCKX with READ ONLY or INSENSITIVE cursors.
16941 16 Cursor updates are not allowed on tables opened with the NOLOCK option.
16942 16 Could not generate asynchronous keyset. The cursor has been deallocated.
16943 16 Could not complete cursor operation because the table schema changed after the cursor was declared.
16944 16 Cannot specify UPDLOCK or TABLOCKX on a read-only table in a cursor.
16945 16 The cursor was not declared.
16946 16 Could not open the cursor because one or more of its tables have gone out of scope.
16947 10 No rows were updated or deleted.
16948 16 The variable ‘%.*ls’ is not a cursor variable, but it is used in a place where a cursor variable is expected.
16949 16 The variable ‘%.*ls’ is a cursor variable, but it is used in a place where a cursor variable is not valid.
16950 10 The variable ‘%.*ls’ does not currently have a cursor allocated to it.
16951 16 The variable ‘%.*ls’ cannot be used as a parameter because a CURSOR OUTPUT parameter must not have a cursor allocated to it before execution of the procedure.
16952 16 A cursor variable cannot be used as a parameter to a remote procedure call.
16953 10 Remote tables are not updatable. Updatable keyset-driven cursors on remote tables require a transaction with the REPEATABLE_READ or SERIALIZABLE isolation level spanning the cursor.
16954 16 Executing SQL directly; no cursor.
16955 16 Could not create an acceptable cursor.
16956 10 Cursor created was not of the requested type.
16957 16 FOR UPDATE cannot be specified on a READ ONLY cursor.
16958 16 Could not complete cursor operation because the set options have changed since the cursor was declared.
16959 16 Unique table computation failed.
16960 16 You have reached the maximum number of cursors allowed.
16961 10 One or more FOR UPDATE columns have been adjusted to the first instance of their table in the query.
16962 16 The target object type is not updatable through a cursor.
16963 16 You cannot specify scroll locking on a cursor that contains a remote table.
16995 16 %hs requires the NO_BROWSETABLE option to be set.
16996 16 %hs cannot take output parameters.
16998 20 Internal Cursor Error: A cursor work table operation failed.
16999 20 Internal Cursor Error: The cursor is in an invalid state.

Users encountered this error when connecting to a version 11.1.0.7.0 replicated active data guard database via ODBC:

“Error Text ”[IBM][ODBC Oracle Wire Protocol driver][Oracle]
ORA-00604: error occurred at recursive SQL level 1 ORA-16000: database open for read-only access”.
The error has the following diagnostic information: SQL State ”HY000”
SQL Native Error Code ‘604’ SQL Error Text ”[IBM][ODBC Oracle Wire Protocol driver][Oracle]
ORA-00604: error occurred at recursive SQL level 1 ORA-16000: database open for read-only access””

I verified the error when trying to log in to the same database with identical user information.

Earlier in the day, I had examined that particular user’s information and privileges using a cloning script executed from the primary database in the data guard pair. This script has been used numerous times before in other environments without modifying the database it was executed against as it only performs ‘select’ queries.

I checked the replication status on the primary and replicated environment with several queries. The queries and their output are as follows:

Executed against the primary database:

select name
from v$database;
select sequence#, applied
from v$archived_log
where trunc(first_time) = trunc(sysdate)
order by 1;

SQL*Plus: Release 11.1.0.7.0 - Production on Thu Mar 19 16:16:44 2015

Copyright (c) 1982, 2008, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options

 SEQUENCE# APPLIED
---------- ---------
     16863 NO
     16863 YES
     16864 NO
     16864 YES
     16865 NO
     16865 YES
     16866 NO
     16866 YES
     16867 NO
     16867 YES

45 rows selected.

NOTE – Each set of archived log has two application entries – one for the primary itself which is always a value of ‘NO’ for applied in this view and the other for the replicated environment. Since the value of the latest archived log is ‘YES’, this log has been applied to the replicated (secondary) database.

These next queries are executed against the replicated (secondary) database:

select sequence#, applied
from v$archived_log
where trunc(first_time) = trunc(sysdate)
order by 1;

select process, sequence#, status
from v$managed_standby;

 SEQUENCE# APPLIED
---------- ---------
     16863 YES
     16864 YES
     16865 YES
     16866 YES
     16867 YES

15 rows selected.

PROCESS    SEQUENCE# STATUS
--------- ---------- ------------
ARCH	       16867 CLOSING
ARCH		   0 CONNECTED
ARCH	       16865 CLOSING
ARCH	       16866 CLOSING
MRP0	       16868 WAIT_FOR_LOG
RFS		   0 IDLE
RFS		   0 IDLE
RFS	       16868 IDLE
RFS		   0 IDLE

9 rows selected.

SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 
SQL> 11.1.0.7.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

The first query is simply verifying that the archived logs have been applied. The second query let’s me know what the data guard processes are doing. Looks like its waiting for the next log from the primary.

My next thought was to restart the replication process on the replicated database, but since this database was already in sync, this action would likely have done no good. I thought next to refresh the password of the user using the output obtained from the earlier execution of the cloning script I mentioned. I simply executed an ‘alter user’ statement on the primary changing the user’s password to the same value it currently was. I then executed ‘alter system switch logfile’ a few times to ensure propagation of the change to the replicated environment. This fixed the problem. Post-problem research did not yield any similar situations, possible causes, or bugs. I guess I will have to be satisfied with being able to fix this the next time it happens.

The contents of the user cloning script are included here for reference. This script has proven very useful and has been proven in versions from 10.2.0.4.0 to 11.2.0.4.0.

-- userclone.sql
-- 10/17/00 J. Adams
-- Purpose: Generates a SQL script to create a new user 
--          based on the priviledges of another user
--
-- Based upon this script...
-- Date Created:   June 20, 2000
-- Author: Mark Huber
-- Modified -
-- 4/24/02 J. Adams - Corrected erroneous quota grant statement
-- 7/14/03 J. Adams - Modified erroneous role section (there is no
--                    1 or 0 in the admin_option column).
-- 6/3/05  J. Adams - Fixed problem with object privileges not being displayed.
-- 12/5/05 J. Adams - Altered script to obtain password of original user for cloned user.
-- 10/13/09 J. Adams - Altered create user query to include Oracle version 11g

clear screen;
clear breaks;
clear buffer;

set verify off;
set heading off;
set feedback off;
set linesize 150;

Accept user_in prompt "Enter the USER To create LIKE ..... "
Accept new_user_in prompt "Enter the NEW USER To create ..... "
--Accept new_user_pw_in prompt "Enter the NEW USER Password ..... "
Accept outfile prompt  "Enter the Output filename including path: "

col username noprint;
col lne newline;

spool &&outfile

col username noprint
col lne newline

-- ** create user
SELECT  username, 'CREATE USER '||UPPER('&&new_user_in')||' '||
        DECODE(nvl(a.password,spare4), 'EXTERNAL', 'IDENTIFIED EXTERNALLY',
              'IDENTIFIED BY VALUES '||''''||nvl(a.password,spare4)||''''||' ') lne, 
        'DEFAULT TABLESPACE '||b.default_tablespace lne,
        'TEMPORARY TABLESPACE '||b.temporary_tablespace||';' lne
FROM    sys.USER$ a, dba_users b
where a.name = b.username
AND USERNAME = UPPER('&&user_in') 
/  

-- **create users tablespace quotas
SELECT username, 'ALTER USER '||upper('&&new_user_in')||' QUOTA '||
       DECODE(MAX_BYTES, -1, 'UNLIMITED', TO_CHAR(ROUND(MAX_BYTES/1024))||'K')
       ||' ON '||tablespace_name||';' 
  FROM DBA_TS_QUOTAS
WHERE USERNAME = UPPER('&&user_in')
/

-- ** create user roles
select          grantee     username,
        'Grant '||GRANTED_ROLE||' to'||' '||
        upper('&&new_user_in')||' '||
        DECODE(admin_option,NULL,null||';',
                                 'NO',null||';',
                                 'YES',' WITH GRANT OPTION;',
                                 null||';')
from        dba_role_privs
where       grantee =   upper('&&user_in')
/

-- ** create user system privs
SELECT          'Grant '||C.Name||' to'||' '||
        upper('&&new_user_in')||' '||
                DECODE(B.Option$,NULL,null||';',
                                 0,null||';',
                                 1,' WITH GRANT OPTION;',
                                 null||';') 
FROM   SYS.SYSAUTH$ B , SYSTEM_PRIVILEGE_MAP C , SYS.USER$ D
WHERE  D.Name           =   upper('&&user_in')      AND
       D.User#          =       B.Grantee#      AND
       B.Privilege#     =       C.Privilege 
/

-- ** create object privs
SELECT          'Grant '||C.Name||' ON '||
        A.Owner||'.'||A.Object_name||
        ' TO '||upper('&&new_user_in')||
        DECODE(B.Option$,NULL,null||';',
                                 0,null||';',
                                 1,' WITH GRANT OPTION;',
                                 null||';') 
FROM   ALL_OBJECTS A , SYS.OBJAUTH$ B , TABLE_PRIVILEGE_MAP C , SYS.USER$ D
WHERE  
       D.Name           =   upper('&&user_in')     AND
       D.User#          =       B.Grantee#  AND
       A.Object_Id      =       B.Obj#      AND
       B.Privilege#     =       C.Privilege 
/


-- Create any synonyms owned by cloned user

select 'create synonym '||upper('&&new_user_in')||'.'||synonym_name||' for '||
table_owner||'.'||table_name||';'
from dba_synonyms
where owner = upper('&&user_in')
order by synonym_name
/

spool off;

set verify on;
set heading on;
set feedback on;

Понравилась статья? Поделить с друзьями:
  • Sql error 15151
  • Spt aki escape from tarkov ошибка
  • Sql error 15023
  • Sql error 1452
  • Spt aki error