Я пытаюсь отменить транзакцию с Oracle 12c с помощью этого сценария:
DECLARE
v_xid SYS.xid_array;
BEGIN
v_xid := sys.xid_array ('0700200003030000');
DBMS_FLASHBACK.transaction_backout (numtxns => 1, xids => v_xid, options =>
DBMS_FLASHBACK.cascade);
END;
/
Я получаю такую ошибку:
ORA-06550: Ligne 2, colonne 9 :
PLS-00201: l'identificateur 'SYS.XID_ARRAY' doit être déclaré
Как я могу это исправить?





Вы подключаетесь с привилегиями DBA? Если нет, уверены ли вы, что у вас есть необходимые разрешения для взаимодействия с объектами SYS? Как обычный пользователь, вы не сможете взаимодействовать с некоторыми объектами SYS, если вам явно не предоставлен доступ. Это особенно верно, если вы работаете с базой данных организации, так как это обычное дело, когда все гранты отозваны для роли PUBLIC.
Если речь идет о разрешениях, вы мало что можете сделать, чтобы исправить это самостоятельно. Если у вас есть доступ, вы можете попробовать подключиться с ролью SYSDBA. Если у вас нет такого доступа, вам нужно будет запросить его у DBA, который управляет базой данных.
Если это ваша база данных, которую вы используете для тестирования / обучения и вы не уверены, я бы рекомендовал проверить документацию Oracle по ролям по следующей ссылке: https://docs.oracle.com/database/121/DBSEG/authorization.htm#DBSEG004
Вот также отличная статья на вопрос, в которой немного рассказывается о схеме SYS и роли SYSDBA. https://asktom.oracle.com/pls/asktom/f?p=100:11:0%3A%3A%3A%3AP11_QUESTION_ID:2659418700346202574