【发布时间】:2020-03-27 16:36:57
【问题描述】:
我有以下pl/sql:
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> select log_mode, open_mode, database_role from v$database;
LOG_MODE OPEN_MODE DATABASE_ROLE
------------ -------------------- ----------------
ARCHIVELOG READ ONLY WITH APPLY PHYSICAL STANDBY
SQL> DECLARE
tst_row dual%ROWTYPE;
BEGIN
SET TRANSACTION READ ONLY;
END;
/
DECLARE
*
ERROR at line 1:
ORA-16000: database or pluggable database open for read-only access
有人可以解释为什么我在这里得到 ORA-16000 吗?
【问题讨论】:
-
我没有只读实例来测试这一点,但我相信问题是
dbms_output在内部尝试写入一个不允许读取的缓冲区-只有数据库。 -
没有。根本原因在于 %ROWTYPE。当我使用
tst_col dual.DUMMY%TYPE;声明时一切正常。 -
你可以通过显式运行
set transaction read only;来摆脱错误 -
没用。