上线了很久的一个项目,刚刚接到通知:
因为之前没留意,创建表空间的时候未采用ASM存储,我们可以使用如下语句查询是否采用了ASM存储:
select file_name from dba_data_files;
如果查询结果数据文件路径是以+开头的即为ASM存储,以操作系统目录开头的,如linux下的/,则不是ASM存储:
所以,现在必须迁移数据了(Oracle从文件系统迁移到ASM存储),迁移步骤如下:
1、迁移前原数据库各文件存储信息查询
--控制文件
select name from v$controlfile;
/home/db/oracle/oradata/somsvpd01/control01.ctl
/home/db/oracle/oradata/somsvpd01/control02.ctl
--数据文件
select name from v$datafile;
/home/db/oracle/oradata/somsvpd01/system01.dbf
/home/db/oracle/oradata/somsvpd01/sysaux01.dbf
/home/db/oracle/oradata/somsvpd01/undotbs01.dbf
/home/db/oracle/oradata/somsvpd01/users01.dbf
--临时文件
select name from v$tempfile;
/home/db/oracle/oradata/somsvpd01/temp01.dbf
--日志文件
select member from v$logfile;
/home/db/oracle/oradata/somsvpd01/redo03.log
/home/db/oracle/oradata/somsvpd01/redo02.log
/home/db/oracle/oradata/somsvpd01/redo01.log
--参数文件
show parameter pfile;
[SQL]show parameter pfile
[Err] ORA-00900: invalid SQL statement
show parameter pfile竟然报无效语句错误,那么我们改用方式二查看Spfile与pfile的目录位置:
SELECT NAME, VALUE, DISPLAY_VALUE FROM V$PARAMETER WHERE NAME ='spfile';
判断Oracle启动时使用spfile还是pfile启动,通过v$spparameter视图:
select decode(count(*),1,'spfile','pfile') from v$spparameter where rownum=1 and isspecified ='TRUE';
使用spfile启动数据库,我们可以看到查询出来的结果是spfile,补充:pfile和spfile
pfile: 初始化参数文件(Initialization Parameters Files),Oracle 9i之前,ORACLE一直采用pfile方式存储初始化参数,pfile 默认的名称为“init+例程名.ora”文件路径:/data/app/oracle/product/12.1.0/dbhome_1/dbs,这是一个文本文件,可以用任何文本编辑工具打开。
spfile:服务器参数文件(Server Parameter Files),从Oracle 9i开始,Oracle引入了Spfile文件,spfile 默认的名称为“spfile+例程名.ora”文件路径:/data/app/oracle/product/12.1.0/dbhome_1/dbs 以二进制文本形式存在,不能用vi编辑器对其中参数进行修改,只能通过SQL命令在线修改。
初始化参数文件为ASCII文本文件,Spfile为数据文件。
show parameter pfile用客户端工具查询失败,尝试登陆服务器查询,竟然成功:
2、编辑参数文件指定新的控制文件路径(该步由于权限不足未往下走)
参照:https://blog.csdn.net/weixin_34177064/article/details/85779268