ORA-65169: ошибка при попытке скопировать файл

Привет, я пытаюсь создать clone_link между двумя базами данных ora19 из-за клонирования баз данных PDB

обе БД создали пользователя вроде:

CREATE USER c##remote_clone_user IDENTIFIED BY remote_clone_user CONTAINER=ALL;
GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE TO c##remote_clone_user CONTAINER=ALL;

Я хочу скопировать PDB из DB2 в DB1, поэтому я закрыл требуемый PDB в DB2 и открыл для чтения:

alter pluggable database testpdb close;
alter pluggable database testpdb open read only;

из DB1 создали clone_link и попытались скопировать PDB (соединение tns testpdb установлено на DB2)

--db link to database we want to copy
create database link clone_link
    connect to C##remote_clone_user identified by remote_clone_user using 'testpdb';

-- clone from DB2 to DB1  
create pluggable database testpdb from testpdb@clone_link
    file_name_convert = ('/u01/app/oracle/oradata/', '/testpdb/');

но я получаю ошибку:

Error starting at line : 14 in command -
create pluggable database testpdb from testpdb@clone_link
    file_name_convert = ('/u01/app/oracle/oradata/', '/testpdb/')
Error report -
ORA-65169: error encountered while attempting to copy file /u01/app/oracle/oradata/testpdb/testpdb_index.dbf 
ORA-19504: failed to create file "/testpdb/testpdb/testpdb_index.dbf"
ORA-27040: file create error, unable to create file
Linux-x86_64 Error: 13: Permission denied
Additional information: 3
65169. 00000 -  "error encountered while attempting to copy file %s "
*Cause:    An error was encountered while attempting to copy the file
           while creating a pluggable database.
*Action:   Check additional error messages for the cause of the failure to
           copy the file, and resolve the issue accordingly.

в журнале предупреждений я вижу только:

Undo Create of Pluggable Database TESTPDB with pdb id - 7.
**************************************************************
ORA-65169 signalled during: create pluggable database testpdb from testpdb@clone_link
    file_name_convert = ('/u01/app/oracle/oradata/', '/testpdb/')...

я не уверен, какие разрешения нужно установить

2 ответа

Действия, необходимые для решения этой проблемы: Это проблема с разрешениями, и вам нужен каталог /oradata/, чтобы иметь разрешения. Выполните следующие действия или, что еще лучше, создайте сценарий на основе приведенной ниже процедуры, чтобы решить проблему:

      [oracle@oracle ~]$ ls -l  /u01/app/oracle/product/19.0.0/db_1/mydbfiles/ORCLDB/pdbseed

-rw-r-----. 1 oracle oinstall 104865792 Nov  3 07:29 undotbs01.dbf

Поэтому я обновил разрешения для файла. Он должен иметь права на групповую запись:

      [oracle@oracle ~]$ chmod -R 777 /u01/app/oracle/product/19.0.0/db_1/mydbfiles/ORCLDB/pdbseed

[oracle@oracle ~]$ ls -l
/u01/app/oracle/product/19.0.0/db_1/mydbfiles/ORCLDB/pdbseed

-rwxrwxrwx. 1 oracle oinstall 104865792 Nov  3 07:29 undotbs01.dbf

Тогда это будет работать:

      SQL> CREATE PLUGGABLE DATABASE pdb2 ADMIN USER admin2 IDENTIFIED BY Shane123 ROLES = (dba)
  2  FILE_NAME_CONVERT = ('/u01/app/oracle/product/19.0.0/db_1/mydbfiles/ORCLDB/pdbseed' , '/u01/app/oracle/product/19.0.0/db_1/mydbfiles/ORCLDB/pdb2');

Pluggable database created.

После создания вы можете вернуть прежние разрешения. Хотя это обходной путь, если вы добавите его в скрипт, он сработает как по волшебству!

У меня работает в CDB

      alter system set "_exadata_feature_on" =true scope=spfile;
shutdown immediate;
startup;
Другие вопросы по тегам