数据库从fs迁移到asm

  • A+
所属分类:技术

chatGPT账号
数据库从fs迁移到asm
启动GI服务,目的是为后续配置ASM实例
使用 /u01/app/oracle/product/11.2.0/grid/bin/asmca配置ASM实例之前必须先启动has服务,否则无法成功创建磁盘组和+ASM实例
要创建+ASM实例必须,先开启HAS服务,才能制定磁盘创建对应的磁盘组,然后在创建的磁盘组+DATA目录上创建实例+ASM
实例+ASM时启动到started状态即对应的nomount状态,只加载了spfile ,+ASM实例启动时加载的spfile文件存储在先前创建的磁盘组
+DATA上。所以+DATA磁盘组不能随便删除,否则+ASM实例再次启动时报错找不到对应的spfile无法启动实例
 
./crsctl start has   --启动高可用服务
./crsctl stop  has   --停止高可用服务
./crsctl status has  --查看has服务的状态
./crsctl enable has --重启操作系统会自动启动HAS服务。
./srvctl add  database -d prod4  -o /u01/app/oracle/product/11.2.0/db_1   --注册数据库到GI
./srvctl start database -d prod4 --启动数据库
./srvctl stop database -d prod4  --闭关数据库
./srvctl config database --查看哪些数据库已经注册
./srvctl status database
lsnrctl stop listener
./srvctl add  listener -l listener -p 1521 -o /u01/app/oracle/product/11.2.0/db_1
./srvctl config listener --查看监听是否注册成功
srvctl remove listener -l listener
crs_stat -p ora.cssd --查看cssd资源状态
crs_stat -p ora.diskmon --查看
crsctl start resource ora.cssd --手工重启cssd
#############################################################################################################
实验:二
1、会创建ASM实例
cd /u01/app/oracle/product/11.2.0/grid/bin
单机环境:要先启动has服务
./crsctl start has
2、会使用./asmca 创建磁盘组
3、会使用sqlplus 命令创建管管理磁盘组
create diskgroup DATA2 external redundancy disk 'ORCL:ASMDISK10';--创建磁盘组
alter diskgroup data2 add disk 'ORCL:ASMDISK06';--添加磁盘
alter diskgroup data2 add disk 'ORCL:ASMDISK07';
alter diskgroup data2 add disk 'ORCL:ASMDISK11';
alter diskgroup data2 drop disk 'ASMDISK10';--删除磁盘
SQL> alter diskgroup data2 dismount force;--卸载磁盘组
 
SQL> drop diskgroup data2 force including contents;--删除磁盘组
4、会使用ASMCMD命令管理asm文件
5、会删除第一个磁盘组
SQL>sqlplus / as sysasm
SQL> alter diskgroup data dismount force;
SQL> drop diskgroup data force including contents;
#################################################################################################################
实验三:文件系统迁移到ASM
1、首先打开归档
2、查询下数据库文件结构
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/PROD4/PROD4/system01.dbf
/u01/app/oracle/oradata/PROD4/PROD4/sysaux01.dbf
/u01/app/oracle/oradata/PROD4/PROD4/undotbs01.dbf
/u01/app/oracle/oradata/PROD4/PROD4/users01.dbf
/u01/app/oracle/oradata/PROD4/PROD4/example01.dbf
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/PROD4/PROD4/control01.ctl
/u01/app/oracle/oradata/PROD4/PROD4/control02.ctl
/u01/app/oracle/oradata/PROD4/PROD4/control03.ctl
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/PROD4/PROD4/redo03.log
/u01/app/oracle/oradata/PROD4/PROD4/redo02.log
/u01/app/oracle/oradata/PROD4/PROD4/redo01.log
SQL> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/PROD4/PROD4/temp01.dbf
3、全库做备份:open状态就可以
[oracle@edsir1p8-PROD4 ~]$ rman target /
RMAN> BACKUP as copy database format '+DATA';
RMAN> EXIT
4、恢复控制文件到asm磁盘组中
[oracle@edsir1p8-PROD4 ~]$ sqlplus / as sysdba
SQL> startup force nomount;
[oracle@edsir1p8-PROD4 ~]$ rman target /
RMAN> restore controlfile to '+DATA2' from '/u01/app/oracle/oradata/PROD4/PROD4/control01.ctl';--可以restore两次
5、修改spfile文件中控制文件的路径信息
[oracle@edsir1p8-PROD4 ~]$ sqlplus / as sysdba
SQL> alter system set control_files='+data/prod4/controlfile/current.263.896165079','+data/prod4/controlfile/current.264.896165111' scope=spfile;
SQL>shutdown immediate
SQL> startup mount;
rman target /
RMAN> switch database to copy;
RMAN> recover database;
RMAN> alter database open; --如果丢失当前redo或损坏必须使用alter database open resetlogs 打开。
 
指定resetlogs,会执行下列操作:
    1)将当前的在线重做日志文件归档,然后清空其内容并将日志文件序列号重置为1
      2)重置控制文件中关于在线重做日志文件的元数据
    3)更新数据文件和在线重做日志文件的resetlogs scn等信息
6、创建新的临时表空间文件,并删除旧的
SQL> alter tablespace temp add tempfile '+DATA2' size 200M;
SQL> alter database tempfile '/u01/app/oracle/oradata/PROD4/PROD4/temp01.dbf' drop;
7、把redo添加新的成员,删除老的成员,查看原来有多少组,就添加多少成员
 select member from v$logfile;
 alter database add logfile member '+data' to group 1;
 alter database add logfile member '+data' to group 2;
 alter database add logfile member '+data' to group 3;
select group#,status,member from v$logfile;
初始化新加的logfile
SQL> alter system switch logfile;--最少执行三遍
select group#,status,member from v$logfile;--查询下日志成员状态
删除旧的logfile(如果无法删除,说明该文件还在使用,我们可以进行手工切换之后,再删除)
SQL> select group#,members,status from v$log;
    GROUP#    MEMBERS STATUS
---------- ---------- ----------------
         1          2 CURRENT
         2          2 INACTIVE
         3          2 INACTIVE
SQL> alter system switch logfile;
alter database drop logfile member '/u01/app/oracle/oradata/PROD4/PROD4/redo03.log';
alter database drop logfile member '/u01/app/oracle/oradata/PROD4/PROD4/redo02.log';
alter database drop logfile member '/u01/app/oracle/oradata/PROD4/PROD4/redo01.log';
8、可以根据实际情况重新设置归档路径----此步可不做。
alter system set log_archive_dest_1='location=+data2'
 
本文由 知点 首发于【知点网http://www.zhidnet.com)】未经允许不得以任何方式转载,违者必将追究法律责任
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的电报
  • 这是我的电报扫一扫
  • weinxin
chatGPT账号
知点

发表评论

您必须登录才能发表评论!