千家信息网

Oracle 12c ORA-01516: nonexistent log file, data file, or temporary file "10"

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,执行alter database move操作报错ORA-01516:SQL> alter database move datafile '/u01/app/oracle/oradata/cdb/pd
千家信息网最后更新 2024年09月22日Oracle 12c ORA-01516: nonexistent log file, data file, or temporary file "10"


执行alter database move操作报错ORA-01516:

SQL> alter database move datafile '/u01/app/oracle/oradata/cdb/pdb/pdb_users01.dbf' to '/u01/app/pdb_user01.dbf';

alter database move datafile '/u01/app/oracle/oradata/cdb/pdb/pdb_users01.dbf' to '/u01/app/pdb_user01.dbf'

*

ERROR at line 1:

ORA-01516: nonexistent log file, data file, or temporary file "10"



[oracle@ora12c ~]$ oerr ora 1516

01516, 00000, "nonexistent log file, data file, or temporary file \"%s\""

// *Cause: An attempt was made to use ALTER DATABASE to rename

// a log file, data file, or temporary file; or to change attributes

// of a data file or temporary file (for example, resize, autoextend,

// online or offline); or to re-create or move a data file.

// The attempt failed because the specified file

// is not known to the database's control file

// or is not of a type supported by the request.

// *Action: Specify the name or number of an existing file

// of the correct type, as appropriate.

// Check the relevant V$ table for a list of possible files.


查看file 10是否存在:


[oracle@ora12c backup]$ du -sh /u01/app/oracle/oradata/cdb/pdb/pdb_users01.dbf

5.1M/u01/app/oracle/oradata/cdb/pdb/pdb_users01.dbf


文件10存在。

这个时候想到log file、temporary file难道只能在con_name为自己数据库可用?带着疑问做测试。


SQL> show con_name


CON_NAME

------------------------------

CDB$ROOT


首先用alter pluggable database move命令来看看是否在CDB数据库中能否一定PDB文件。

SQL> alter pluggable database move datafile '/u01/app/oracle/oradata/cdb/pdb/pdb_users01.dbf' to '/u01/app/pdb_user01.dbf' ;


alter pluggable database move datafile '/u01/app/oracle/oradata/cdb/pdb/pdb_users01.dbf' to '/u01/app/pdb_user01.dbf' ;


*

ERROR at line 1:

ORA-01916: keyword ONLINE, OFFLINE, RESIZE, AUTOEXTEND or END/DROP expected



显然,在CDB中不支持alter pluggable database move命令




接下来在pdb中执行alter pluggable database move操作

SQL> show pdbs


CON_ID CON_NAME OPEN MODE RESTRICTED

---------- ------------------------------ ---------- ----------

2 PDB$SEED READ ONLY NO

3 PDB READ WRITE NO

SQL> alter session set container=pdb;


Session altered.


SQL> alter database move datafile '/u01/app/oracle/oradata/cdb/pdb/pdb_users01.dbf' to '/u01/app/pdb_user01.dbf';


Database altered.



SQL> select name,status from v$datafile where file#=10;


NAME STATUS

-------------------------------------------------------------------------------- -------

/u01/app/pdb_user01.dbf ONLINE


成功!

总结:尽管oracle 12c日志文件共享,但是cdb和各个pdb只能在各自数据库使用自己的日志。


0