Oracle 12c ORA-01516: nonexistent log file, data file, or temporary file "10"
2015-12-08 10:28
951 查看
执行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只能在各自数据库使用自己的日志。
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只能在各自数据库使用自己的日志。
相关文章推荐
- oracle数据库的一个表中,怎么设置字段的默认值
- oracle 行列转换
- oracle exists与in并不能互用
- oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT
- Linux下安装oracle
- 查看Oracle表空间
- 查询Oracle相关锁语句
- 查询Oracle所有表的数据量
- 用hibernate时怎么保留默认值
- Oracle Demo库默认用户/密码为什么叫Scott/Tigger?
- Oracle Data Security - Data Masking(数据屏蔽)
- Oracle查询表结构的常用语句
- Oracle OLAP 与 OLTP
- 通过图和文字说明来辨别mysql和Oracle数据库
- oracle sql 字符串去除重复字符函数
- ORACLE—002:Create创作型
- ORA-12705: 无法访问 NLS 数据文件, 或者指定的环境无效
- Oracle数据删除恢复和数字与字符串之间的转换
- oracle connect by用法
- oracle内存管理技术