Не удается перенести базу данных Oracle (изначально создавать таблицы) из-за недостаточных прав доступа? - PullRequest
1 голос
/ 27 мая 2019

Я новичок в БД Oracle и действительно не уверен, какие привилегии мне следует установить для пользователя, чтобы он мог выполнять основные команды, такие как создание, удаление, удаление, вставка, обновление, выбор таблиц.

И на самом деле я настроил все эти привилегии для своей учетной записи пользователя.Но во время выполнения переноса произошла ошибка со следующей ошибкой, напечатанной в окне консоли:

2019-05-27 08: 29: 07.837809 ThreadID: 1 (ОШИБКА) OracleRelationalCommand.Execute (): Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ОР-01031: недостаточные привилегии ОР-06512: в строке 2 в OracleInternal.ServiceObjects.OracleConnectionImpl.VerifyExecution (Int32 & CursorID, булевы bThrowArrayBindRelatedErrors, SqlStatementType sqlStatementType, Int32 arrayBindCount, OracleException & exceptionForArrayBindDML, Boolean & hasMoreRowsInDB, Boolean bFirstIterationDone) при OracleInternal.ServiceObjects.OracleCommandImpl.ExecuteNonQuery (String CommandText, OracleParameterCollection paramColl, CommandType CommandType, OracleConnectionImpl connectionImpl, Int32, Int64 longFetchSize clientInitialLOBFS, OracleDependencyImpl orclDependencyImpl, Int64 [] & scnFromExecution, OracleParameterCollection & bindByPositionParamColl, Boolean & bBindParamPresent, OracleException & exceptionForArrayBindDML, подключение OracleConnection, OracleLogicalTransaction & oracleLogicalTransaction, булева isFromEF) при Oracle.ManagedDataAccess.Client.OracleCommand.ExecuteNonQuery () в Oracle.EntityFrameworkCore.Storage.Internal.OracleRelationalCommandBuilderFactory.OracleRelationalCommandBuilder.OracleRelationalCommand.Execute (IRelationalConnection соединение, DbCommandMethod ExecuteMethod, IReadOnlyDictionary 2 parameterValues) Failed executing DbCommand (292ms) [Parameters=[], CommandType='Text', CommandTimeout='0'] BEGIN EXECUTE IMMEDIATE 'CREATE TABLE "CUSTOMER" ( "Id" NUMBER(10) GENERATED BY DEFAULT ON NULL AS IDENTITY NOT NULL, ... )'; END; 2019-05-27 08:29:07.842817 ThreadID:1 (ERROR) OracleRelationalCommand.Execute() : Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-01031: insufficient privileges ORA-06512: at line 2 at OracleInternal.ServiceObjects.OracleConnectionImpl.VerifyExecution(Int32& cursorId, Boolean bThrowArrayBindRelatedErrors, SqlStatementType sqlStatementType, Int32 arrayBindCount, OracleException& exceptionForArrayBindDML, Boolean& hasMoreRowsInDB, Boolean bFirstIterationDone) at OracleInternal.ServiceObjects.OracleCommandImpl.ExecuteNonQuery(String commandText, OracleParameterCollection paramColl, CommandType commandType, OracleConnectionImpl connectionImpl, Int32 longFetchSize, Int64 clientInitialLOBFS, OracleDependencyImpl orclDependencyImpl, Int64[]& scnFromExecution, OracleParameterCollection& bindByPositionParamColl, Boolean& bBindParamPresent, OracleException& exceptionForArrayBindDML, OracleConnection connection, OracleLogicalTransaction& oracleLogicalTransaction, Boolean isFromEF) at Oracle.ManagedDataAccess.Client.OracleCommand.ExecuteNonQuery() at Oracle.EntityFrameworkCore.Storage.Internal.OracleRelationalCommandBuilderFactory.OracleRelationalCommandBuilder.OracleRelationalCommand.Execute(IRelationalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary2 parameterValues) Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ОР-01031: недостаточные привилегии ОР-06512: в строке 2 в OracleInternal.ServiceObjects.OracleConnectionImpl.VerifyExecution (Int32 & CursorID, булевы bThrowArrayBindRelatedErrors, sqlStatementType sqlStatementType, Int32 arrayBindCount, OracleException & exceptionForArrayBindDML, Boolean & hasMoreRowsInDB, Boolean bFirstIteredDone) в OracleInternal.ServiceObjects.OracleCommandImpl.ExecuteNonQuery (String commandText, OracleParameterCollection paramColl, CommandType commandType, OracleConnectionImp, OracleConnectionImpл connectionImpl, Int32 longFetchSize, Int64 clientInitialLOBFS, OracleDependencyImpl orclDependencyImpl, Int64 [] & scnFromExecution, OracleParameterCollection & bindByPositionParamColl, булевы & bBindParamPresent, OracleException & exceptionForArrayBindDML, соединение OracleConnection, OracleLogicalTransaction & oracleLogicalTransaction, булева isFromEF) при Oracle.ManagedDataAccess.Client.OracleCommand.ExecuteNonQuery () в Oracle.EntityFrameworkCore.Storage.Internal.OracleRelationalCommandBuilderFactory.OracleRelationalCommandBuilder.OracleRelationalCommand.Execute (IRelationalConnection соединение, DbCommandMethod ExecuteMethod, IReadOnlyDictionary 2 parameterValues) at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary 2 parameterValues) при Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.ExecuteNonQuery (IEnumerable`1 migrationCommands, IRelationalConnection соединение)Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate (String targetMigration) в Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase (String targetMigration, String contextType) в Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute (действие Action) ORA-01031: недостаточные привилегии ORA-06512: в строке 2

Так выглядиткак задействованная команда sql здесь BEGIN EXECUTE IMMEDIATE ….Я не совсем уверен, какие привилегии мне нужно настроить, чтобы это было успешно выполнено.Не могли бы вы взглянуть на информацию об ошибке выше, чтобы дать мне несколько советов по правильной настройке привилегий для моей учетной записи пользователя?Спасибо!

PS: снимки экрана со всеми настройками, которые я установил:

enter image description here
enter image description here

1 Ответ

0 голосов
/ 27 мая 2019

Что ж, похоже, что привилегия CREATE TABLE подходит только в том случае, если создаваемая таблица не содержит никакого автоинкрементного первичного ключа?

В моем случае этого действительно недостаточно, и я попытался добавить еще 2 привилегии (наверняка, но не знаю точно, какая из них работает или оба): CREATE CLUSTER и CREATE SEQUENCE.Похоже, что при создании моих таблиц, сначала нужно создать некоторую последовательность (для столбцов идентификаторов) или создать кластер для первичного ключа ...

На самом деле я просто пытался искать в роли RESOURCE любые возможные привилегии, которыеотсутствуют для моего конкретного пользователя, и я нашел 2 наиболее возможные привилегии, как упомянуто выше.

Теперь это работает нормально, все таблицы могут быть созданы отлично :) блокируя меня на 1 день (конечно, не всегда на этом фокусируясь), но очень жду и думаю о причине).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...