文章目录
环境准备
在ASM磁盘组里面创建相应的目录
[oracle@db01 ~]$ . oraenv
ORACLE_SID = [ORCL1] ? +ASM1
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@db01 ~]$ asmcmd
ASMCMD> cd DATA
ASMCMD> mkdir ORCL
ASMCMD> cd ORCL
ASMCMD> mkdir CONTROLFILE
ASMCMD> mkdir DATAFILE
ASMCMD> mkdir ONLINELOG
ASMCMD> cd ..
ASMCMD> ls
DATA/
RECO/
ASMCMD> cd RECO
ASMCMD> mkdir ORCL
ASMCMD> cd ORCL
ASMCMD> mkdir CONTROLFILE
ASMCMD> mkdir ONLINELOG
ASMCMD> mkdir ARCHIVELOG
创建对应文件系统的目录
参数audit_file_dest 对应的目录要在每个节点上都创建
[root@db01 ~]# mkdir -p /u01/app/oracle/admin/ORCL/adump
[root@db02 ~]# mkdir -p /u01/app/oracle/admin/ORCL/adump
恢复spfile
RMAN> RESTORE SPFILE FROM '/backup_files/c-1039438773-20160405-01';
如果没有spfile,需要手工创建pfile,命名为initORCL1.ora (init{SID}.ora).
*.aq_tm_processes=2
*.audit_file_dest='/u01/app/oracle/admin/ORCL/adump'
*.audit_trail='db'
*.cluster_database=true
*.cluster_database_instances=2
*.compatible='11.2.0.4.0'
*.control_files='+DATA/ORCL/controlfile/current.1842.908572993','+RECO/ORCL/controlfile/current.21318.908572995'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_create_online_log_dest_1='+DATA'
*.db_files=300
*.db_name='ORCL'
*.db_recovery_file_dest='+RECO'
*.db_recovery_file_dest_size=3221225472000
*.db_unique_name='ORCL'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
ORCL2.instance_number=2
ORCL1.instance_number=1
*.job_queue_processes=1000
ORCL1.local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.225.16)(PORT=1521))))'
ORCL2.local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.225.14)(PORT=1521))))'
*.log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST'
*.memory_max_target=20G
*.memory_target=20G
*.open_cursors=300
*.processes=5000
*.remote_listener='orcl-scan:1521'
*.remote_login_passwordfile='exclusive'
*.sessions=5505
*.shared_servers=0
ORCL2.thread=2
ORCL1.thread=1
*.undo_retention=1440
ORCL2.undo_tablespace='UNDOTBS2'
ORCL1.undo_tablespace='UNDOTBS1'
名字转换
*.log_file_name_convert='+OLD_DATA','+NEW_DATA','+OLD_RECO','+NEW_RECO'
*.db_file_name_convert='+OLD_DATA','+NEW_DATA'
配置文件/etc/oratab :
配置文件/etc/oratab的内容:
ORCL1:/u01/app/oracle/product/11.2.0.4/dbhome_1:N
恢复第一节点
启动到nomount状态
[oracle@db01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Fri Sep 30 15:20:57 2020
SQL> startup nomount pfile=’/backup_files/pfile_ORCL.ora’;
1
SQL> startup nomount pfile=’/backup_files/pfile_ORCL.ora’;
恢复controlfile
RMAN> RESTORE CONTROLFILE from '/backup_files/c-1039438773-20200405-01';
启动到mount状态并恢复
启动到mount状态
SQL> startup mount pfile='/backup_files/pfile_ORCL.ora';
开始恢复
rman << EOF
connect target /
run
{
set DBID=1039438773;
sql 'alter database mount';
set newname for datafile 1 to '+YENI_DATA';
set newname for datafile 2 to '+YENI_DATA';
set newname for datafile 3 to '+YENI_DATA';
set newname for datafile 4 to '+YENI_DATA';
set newname for datafile 5 to '+YENI_DATA';
set newname for datafile 6 to '+YENI_DATA';
set newname for datafile 7 to '+YENI_DATA';
set newname for datafile 8 to '+YENI_DATA';
set newname for datafile 9 to '+YENI_DATA';
set newname for datafile 10 to '+YENI_DATA';
set newname for datafile 11 to '+YENI_DATA';
set newname for datafile 12 to '+YENI_DATA';
restore database;
restore archivelog all;
switch database to copy;
set until time "to_date('2016-04-06:00:00:00','yyyy-mm-dd:hh24:mi:ss')";
recover database;
}
EOF
recover数据库
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 562385338311 generated at 04/05/2016 17:44:09 needed for
thread 1
ORA-00289: suggestion : +RECO
ORA-00280: change 562385338311 for thread 1 is in sequence #1607
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/backup_files/ONLINELOG/group_12.11832.858521665
ORA-00279: change 562385338311 generated at needed for thread 2
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/backup_files/ONLINELOG/group_22.2629.858521677
Log applied.
Media recovery complete.
打开数据库
RMAN> alter database open;
或
RMAN> alter database open resetlogs;
database opened
配置第一个数据库实例
修改sys的密码
SQL> alter user sys identified by your_sys_password;
创建口令文件
[oracle@db01 ~]$ cd $ORACLE_HOME/dbs
[oracle@db01 ~]$ orapwd file=orapwORCL1 password=Welcome1 entries=5
如果必要,增加redo
SQL> ALTER DATABASE ADD LOGFILE MEMBER '+RECO' TO GROUP 1;
SQL> ALTER DATABASE ADD LOGFILE MEMBER '+RECO' TO GROUP 2;
SQL> ALTER DATABASE ADD LOGFILE MEMBER '+RECO' TO GROUP 3;
配置监听
SQL> show parameter listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
listener_networks string
local_listener string (DESCRIPTION=(ADDRESS_LIST=(AD
DRESS=(PROTOCOL=TCP)(HOST=172.
16.225.16)(PORT=1521))))
remote_listener string orcl-scan:1521
在crs中增加数据库
[oracle@db01 ]$ srvctl add database -d ORCL -o /u01/app/oracle/product/11.2.0.4/dbhome_1 -p '+DATA/ORCL/spfileORCL.ora' -n ORCL
[oracle@db01 ]$ srvctl add instance -d ORCL -i ORCL1 -n db01
[oracle@db01 ]$ srvctl add instance -d ORCL -i ORCL2 -n db02
配置第二个节点
拷贝文件:
db01:$ORACLE_HOME/dbs/initORCL1.ora --> db02:$ORACLE_HOME/dbs/initORCL2.ora
db01:$ORACLE_HOME/dbs/orapwORCL1 --> db02:$ORACLE_HOME/dbs/orapwORCL2
配置undo
CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE
'+DATA' SIZE 10G AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
ONLINE
RETENTION NOGUARANTEE
BLOCKSIZE 8K
FLASHBACK ON;
创建redo
SQL> ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 4 '+DATA' SIZE 500m;
Database altered.
SQL> ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 5 '+DATA' SIZE 500m;
Database altered.
SQL> ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 6 '+DATA' SIZE 500m;
Database altered.
SQL> ALTER DATABASE ADD LOGFILE MEMBER '+RECO' TO GROUP 4;
Database altered.
SQL> ALTER DATABASE ADD LOGFILE MEMBER '+RECO' TO GROUP 5;
Database altered.
SQL> ALTER DATABASE ADD LOGFILE MEMBER '+RECO' TO GROUP 6;
Database altered.
Oracle ACE,华为云 MVP,Oracle10g,12c OCM; MySQL 5.6,5.7,8.0 OCP;CCNA; EMC Certified; IBM P Certified; RHCE; SQLServer 764; DB2 Certified; TOEIC 890;获得过两次国家部级科技进步奖;发明过两项计算机专利。微信:yaoyuanace 邮箱:yaoyuanace(at)qq.com