---
title: OceanBase 数据库 Oracle 租户中普通用户设置表为只读然后再改为读写时报错 5235-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 OceanBase 数据库 Oracle 租户中普通用户设置表为只读然后再改为读写时报错 5235相关的常见问题和使用技巧，帮助您快速解决 OceanBase 数据库 Oracle 租户中普通用户设置表为只读然后再改为读写时报错 5235的难题。
---
切换语言

- 简体中文
- English

划线反馈

# OceanBase 数据库 Oracle 租户中普通用户设置表为只读然后再改为读写时报错 5235

更新时间：2024-01-11 08:52

适用版本： V2.1.x、V2.2.x、V3.1.x、V3.2.x 内容类型：TechNote  

本文介绍 OceanBase 数据库 Oracle 租户中普通用户先设置表为只读然后再改为读写时报 `ORA-00600: internal error code, arguments: -5235` 的原因和解决方法。

## 问题现象

OceanBase 数据库 Oracle 模式下，普通用户将表转换为只读之后，再转换为读写时报错。错误信息如下。

`ORA-00600: internal error code, arguments: -5235, The table 'TESTREAD.TEST_READONLY' is read only so it cannot execute this statement`

问题示例如下。

1. 使用 SYS 用户登录 Oracle 租户。

   ```shell
   $obclient -hxx.xx.xx.xx -Pxx -usys@oracle_xxx -p***  -A
   Welcome to the OceanBase.  Commands end with ; or \g.
   Your OceanBase connection id is 3221518721
   Server version: OceanBase 3.2.3.3 (r108000062023041511-33aee97541a93ccde986373e55fd0ba188615f29) (Built Apr 15 2023 11:55:17)
   Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved.
   Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
   obclient [SYS]>

   ```
 2. 创建普通用户。

   ```shell
   obclient [SYS]> create user testreadonly identified by test01;
   Query OK, 0 rows affected (0.075 sec)

   ```
 3. 授予普通用户权限。

   ```shell
   obclient [SYS]> grant connect,resource to testreadonly;
   Query OK, 0 rows affected (0.074 sec)

   ```
 4. 登录普通用户 testreadonly。

   ```shell
   $obclient -hxx.xx.xx.xx -Pxx -utestreadonly@oracle_xxx -p***  -A
   Welcome to the OceanBase.  Commands end with ; or \g.
   Your OceanBase connection id is 3221519008
   Server version: OceanBase 3.2.3.3 (r108000062023041511-33aee97541a93ccde986373e55fd0ba188615f29) (Built Apr 15 2023 11:55:17)
   Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved.
   Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
   obclient [TESTREADONLY]>

   ```
 5. 创建只读表。

   ```shell
   obclient [TESTREADONLY]> create table test_readonly(id number);
   Query OK, 0 rows affected (0.065 sec)

   ```
 6. 进行只读切换读写操作。

   ```shell
   obclient [TESTREADONLY]> alter table test_readonly read only;
   Query OK, 0 rows affected (0.054 sec)

   ```

   ```shell
   obclient [TESTREADONLY]> alter table test_readonly read write;
   ORA-00600: internal error code, arguments: -5235, The table 'TESTREADONLY.TEST_READONLY' is read only so it cannot execute this statement

   ```
 7. 查看错误日志信息。

   ```shell
   [admin@xxxx /home/admin/xxxxxxx/oceanbase/log]
   $grep -E 'TESTREADONLY|ret=-5235|ORA-00600' observer.log

   ```

   输出结果如下:

   ```shell
   [2023-11-24 10:03:28.147465] WARN  verify_table_read_only (ob_schema_getter_guard.cpp:2841) [134302][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=3] [dc=0] ORA-00600: internal error code, arguments: -5235, The table 'TESTREADONLY.TEST_READONLY' is read only so it cannot execute this statement
   [2023-11-24 10:03:28.147484] WARN  [SHARE.SCHEMA] verify_table_read_only (ob_schema_getter_guard.cpp:2843) [134302][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=13] [dc=0] table is read only, can't not execute this statment(need_priv={db:
   TESTREADONLY", table:"TEST_READONLY", priv_set:2, priv_level:3, is_sys_table:false}, tenant_id=1002, ret=-5235)
   [2023-11-24 10:03:28.147490] WARN  [SHARE.SCHEMA] verify_read_only (ob_schema_getter_guard.cpp:2786) [134302][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=5] [dc=0] table is read only, can't not execute this statement(ret=-5235)
   [2023-11-24 10:03:28.147493] WARN  [SQL.SESSION] check_privilege_new (ob_privilege_check.cpp:2259) [134302][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=3] [dc=0] database or table is read only, cannot execute this stmt(ret=-5235)
   [2023-11-24 10:03:28.147550] WARN  [SQL] generate_physical_plan (ob_sql.cpp:2076) [134302][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=4] [dc=0] Failed to check ora privilege info(ret=-5235, *basic_stmt={ObTableStmt:{part_type:11}, stmt_type:22, alter_table_arg:{is_alter_columns:false, is_alter_indexs:false, is_alter_options:true, session_id:18446744073709551615, index_arg_list:[], alter_table_schema:{alter_type:"OB_INVALID_DDL_OP", origin_table_name:"TEST_READONLY", new_database_name:"TESTREADONLY", origin_database_name:"TESTREADONLY", split_partition_name:"", split_high_bound_val:, split_list_row_values:, alter_table_schema:{simple_table_schema:{tenant_id:1002, database_id:18446744073709551615, tablegroup_id:18446744073709551615, table_id:1101710651081591, table_name:"TEST_READONLY", replica_num:0, previous_locality_str:"", min_partition_id:0, session_id:0, index_type:0, table_type:3, table_mode:{table_mode_flag:0, pk_mode:0}, tablespace_id:18446744073709551615, data_table_id:0, name_casemode:-1, schema_version:0, part_level:0, part_option:{part_func_type:0, part_func_expr:"", part_num:1, partition_cnt_within_partition_table:-1, max_used_part_id:-1, auto_part:false, auto_part_size:-1}, sub_part_option:{part_func_type:0, part_func_expr:"", part_num:1, partition_cnt_within_partition_table:-1, max_used_part_id:-1, auto_part:false, auto_part_size:-1}, locality_str:"", zone_list:[], primary_zone:"", part_num:0, def_subpart_num:0, partition_num:0, def_subpartition_num:0, partition_array:null, def_subpartition_array:null, dropped_partition_array:null, zone_replica_attr_array:[], primary_zone_array:[], index_status:1, binding:false, duplicate_scope:0, encryption:"", encrypt_key:"", master_key_id:18446744073709551615, drop_schema_version:-1, is_sub_part_template:true}, max_used_column_id:0, max_used_constraint_id:0, sess_active_time:0, rowkey_column_num:0, index_column_num:0, rowkey_split_pos:0, block_size:16384, is_use_bloomfilter:false, progressive_merge_num:0, tablet_size:-1, pctfree:10, load_type:0, index_using_type:0, def_type:1, charset_type:0, collation_type:0, create_mem_version:0, index_status:1, partition_status:0, code_version:1, last_modified_frozen_version:0, comment:"", pk_comment:"", create_host:"", tablegroup_name:"", compress_func_name:"", row_store_type:4, store_format:0, expire_info:"", view_schema:{view_definition:"", check_option:"none", is_updatable:"false", is_materialized:"false", character_set_client:0, collation_connection:"invalid_type"}, autoinc_column_id:0, auto_increment:1, read_only:false, simple_index_infos:[], mv_tid_array:[], aux_vp_tid_array:[], base_table_ids:[], rowkey_info:{columns:null, capacity:0}, partition_key_info:{columns:null, capacity:0}, column_cnt:0, table_dop:1, constraints:null, column_array:null, aux_vp_tid_array:[]}}, is_inner:false, alter_constraint_type:1000, nls_formats:["DD-MON-RR", "DD-MON-RR HH.MI.SSXFF AM", "DD-MON-RR HH.MI.SSXFF AM TZR"]}, index_arg_list:[]})
   [2023-11-24 10:03:28.147566] WARN  [SQL] handle_physical_plan (ob_sql.cpp:4149) [134302][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=14] [dc=0] Failed to generate plan(ret=-5235, result.get_exec_context().need_disconnect()=false)
   [2023-11-24 10:03:28.147570] WARN  [SQL] handle_text_query (ob_sql.cpp:1693) [134302][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=3] [dc=0] fail to handle physical plan(ret=-5235)
   [2023-11-24 10:03:28.147575] WARN  [SQL] stmt_query (ob_sql.cpp:209) [134302][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=3] [dc=0] fail to handle text query(stmt=alter table test_readonly read write, ret=-5235)
   [2023-11-24 10:03:28.147581] WARN  [SERVER] test_and_save_retry_state (ob_query_retry_ctrl.cpp:165) [134302][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=3] [dc=0] ddl, and errno is not OB_EAGAIN or OB_SNAPSHOT_DISCARDED or OB_ERR_PARALLEL_DDL_CONFLICT, do not need retry(client_ret=-5235, err=-5235, retry_type_=0)
   [2023-11-24 10:03:28.147589] INFO  [SERVER] ob_query_retry_ctrl.cpp:579 [134302][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=4] [dc=0] check if need retry(client_ret=-5235, err=-5235, retry_type_=0, retry_times=1, multi_stmt_item={is_part_of_multi_stmt:true, seq_num:0, sql:"alter table test_readonly read write"})
   [2023-11-24 10:03:28.147595] WARN  [SERVER] do_process (obmp_query.cpp:687) [134302][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=3] [dc=0] run stmt_query failed, check if need retry(ret=-5235, cli_ret=-5235, retry_ctrl_.need_retry()=0, sql=alter table test_readonly read write)
   [2023-11-24 10:03:28.147641] WARN  [SERVER] do_process (obmp_query.cpp:803) [134302][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=40] [dc=0] query failed(ret=-5235, retry_ctrl_.need_retry()=0)

   ```

## 问题原因

OceanBase 数据库暂不支持普通租户将 Table 属性由 read only 改为 read write。

## 解决方法

通过 SYS 用户来执行将只读表改为读写表的操作。

## 适用版本

OceanBase 数据库 V2.x 和 V3.x 版本。

Previous

[如何指定租户的字符集](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000481972)

Next

[gv$sysstat 中展示的租户指标值与租户 Unit 分布的机器不匹配](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000659644) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
