ASM基础知识
ASM是Oracle 10g R2中为了简化Oracle数据库的管理而推出来的一项新功能,这是Oracle自己提供的卷管理器,主要用于替代操作系统所提供的LVM,它不仅支持单实例,同时对RAC的支持也是非常好。ASM可以自动管理磁盘组并提供有效的数据冗余功能。使用ASM(自动存储管理)后,数据库管理员不再需要对ORACLE中成千上万的数据文件进行管理和分类,从而简化了DBA的工作量,可以使得工作效率大大提高。
ASM它提供了以平台无关的文件系统、逻辑卷管理以及软RAID服务。ASM可以支持条带化和磁盘镜像,从而实现了在数据库被加载的情况下添加或移除磁盘以及自动平衡I/O以删除“热点”。它还支持直接和异步的I/O并使用Oracle9i中引入的Oracle数据管理器API(简化的I/O系统调用接口)。
ASM是做为单独的Oracle实例实施和部署,并且它只需要有参数文件,不需要其它的任何物理文件,就可以启动ASM实例,只有它在运行的时候,才能被其它数据访问。在Linux平台上,只有运行了OCSSD服务(Oracle安装程序默认安装)了才能和访问ASM。
1、 将I/O平均分部到所有可用磁盘驱动器上以防止产生热点,并且最大化性能。
2、 配置更简单,并且最大化推动数据库合并的存储资源利用。
3、 内在的支持大文件
4、 在增量增加或删除存储容量后执行自动联系重分配
5、 维护数据的冗余副本以提高可用性。
6、 支持10g,11g的数据存储及RAC的共享存储管理
7、 支持第三方的多路径软件
8、 使用OMF方式来管理文件
ASM使用独特的镜像算法:不镜像磁盘,而是镜像盘区。作为结果,为了在产生故障时提供连续的保护,只需要磁盘组中的空间容量,而不需要预备一个热备(hot spare)磁盘。不建议用户创建不同尺寸的故障组,因为这将会导致在分配辅助盘区时产生问题。ASM将文件的主盘区分配给磁盘组中的一个磁盘时,它会将该盘区的镜像副本分配给磁盘组中的另一个磁盘。给定磁盘上的主盘区将在磁盘组中的某个伙伴磁盘上具有各自的镜像盘区。ASM确保主盘区和其镜像副本不会驻留在相同的故障组中。磁盘组的冗余可以有如下的形式:双向镜像文件(至少需要两个故障组)的普通冗余(默认冗余)和使用三向镜像(至少需要3个故障组)提供较高保护程度的高冗余。一旦创建磁盘组,就不可以改变它的冗余级别。为了改变磁盘组的冗余,必须创建具有适当冗余的另一个磁盘组,然后必须使用RMAN还原或DBMS_FILE_TRANSFER将数据文件移动到这个新创建的磁盘组。
1、 外部冗余(external redundancy):表示Oracle不帮你管理镜像,功能由外部存储系统实现,比如通过RAID技术;有效磁盘空间是所有磁盘设备空间的大小之和。
2、 默认冗余(normal redundancy):表示Oracle提供2份镜像来保护数据,有效磁盘空间是所有磁盘设备大小之和的1/2 (使用最多)
3、 高度冗余(high redundancy):表示Oracle提供3份镜像来保护数据,以提高性能和数据的安全,最少需要三块磁盘(三个failure group);有效磁盘空间是所有磁盘设备大小之和的1/3,虽然冗余级别高了,但是硬件的代价也最高。
ASM实例除了传统的DBWR,LGWR,CKPT,SMON,PMON等进程还包含如下四个新后台进程:
RBAL:负责协调磁盘组的重新平衡活动(负责磁盘组均衡)
ARB0-ARBn:在同一时刻可以存在许多此类进程,它们分别名为ARB0、ARB1,以此类推,执行实际的重新平衡分配单元移动进程。
GMON:用于ASM磁盘组监控
O0nn 01-10:这组进程建立到ASM实例的连接,某些长时间操作比如创建数据文件,RDBMS会通过这些进程向ASM发送信息
ASMB与ASM 实例的前台进程连接,周期性的检查两个instance的健康状况。每个数据库实例同时只能与一个ASM实例连接,因此数据库只会有一个ASMB后台进程。如一个节点上有多个数据库实例,它们只能共享一个ASM实例。
RBAL用来进行全局调用,以打开某个磁盘组内的磁盘。ASMB进程与该节点的CSS守护进程进行通信,并接收来自ASM实例的文件区间映射信息。ASMB还负责为ASM实例提供I/O统计数据
CSS集群同步服务。要使用ASM,必须确保已经运行了CSS集群同步服务,CSS负责ASM实例和数据库实例之间的同步。
注意:ASM实例必须要先于数据库实例启动,和数据库实例同步运行,迟于数据库实例关闭。ASM 实例和数据库实例的关系可以是1:1,也可以是1:n。如果是1:n,最好为ASM 安装单独的ASM_HOME。
配置ASM监听实现远程管理
查看ASM实例的监听内容
[grid@db53:/home/grid]$cat /oracle/app/11.2.0/grid/network/admin/listener.ora
# listener.ora Network Configuration File: /oracle/app/11.2.0/grid/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = db53)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /oracle/app/grid
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent
编辑oracle客户端的tnsname配置
[oracle@db53:/home/oracle]$cd /oracle/app/oracle/product/11.2.0/network/admin/ [oracle@db53:/oracle/app/oracle/product/11.2.0/network/admin]$vi tnsnames.ora
增加如下内容
asm53 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db53)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = +ASM)
(INSTANCE_NAME = +ASM)
(UR=A)
)
)
测试一下
[oracle@db53:/oracle/app/oracle/product/11.2.0/network/admin]$tnsping asm53
TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 17-JUN-2019 05:32:07
Copyright (c) 1997, 2013, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = db53)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = +ASM) (INSTANCE_NAME = +ASM) (UR=A)))
OK (20 msec)
连接ASM实例
[oracle@db53:/oracle/app/oracle/product/11.2.0/network/admin]$sqlplus sys/oracle@asm53 as sysasm
SQL*Plus: Release 11.2.0.4.0 Production on Mon Jun 17 05:32:42 2019
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Automatic Storage Management option
SQL> set line 100
SQL> select INSTANCE_NUMBER,INSTANCE_NAME,HOST_NAME from v$instance;
INSTANCE_NUMBER INSTANCE_NAME HOST_NAME
--------------- ---------------- ----------------------------------------------------------------
1 +ASM db53
编辑grid监听内容
[grid@db53:/home/grid]$vi /oracle/app/11.2.0/grid/network/admin/listener.ora
新增如下内容
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = db01)
(ORACLE_HOME = /oracle/app/oracle/product/11.2.0)
(SID_NAME = db53)
)
(SID_DESC =
(GLOBAL_DBNAME = +ASM)
(ORACLE_HOME = /oracle/app/11.2.0/grid)
(SID_NAME = +ASM)
)
)
编辑oracle客户端的tnsname配置
[oracle@db53:/home/oracle]$cd /oracle/app/oracle/product/11.2.0/network/admin/ [oracle@db53:/oracle/app/oracle/product/11.2.0/network/admin]$vi tnsnames.ora
增加如下内容
asm53s =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db53)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = +ASM)
(INSTANCE_NAME = +ASM)
)
)
测试一下
[oracle@db53:/home/oracle]$tnsping asm53s
TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 17-JUN-2019 05:51:27
Copyright (c) 1997, 2013, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = db53)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = +ASM) (INSTANCE_NAME = +ASM)))
OK (0 msec)
连接实例
[oracle@db53:/home/oracle]$sqlplus /nolog
SQL*Plus: Release 11.2.0.4.0 Production on Mon Jun 17 05:52:12 2019
Copyright (c) 1982, 2013, Oracle. All rights reserved.
SQL> conn sys/oracle@asm53s as sysasm
Connected.
SQL> select INSTANCE_NUMBER,INSTANCE_NAME,HOST_NAME,STATUS from v$instance;
INSTANCE_NUMBER INSTANCE_NAME HOST_NAME STATUS
--------------- ---------------- ---------------------------------------------------------------- ------------
1 +ASM db53 STARTED
1.在动态监听中,只有设置了(UR=A)才能够远程访问ASM实例;
2.在静态监听中,无论是否设置(UR=A)均可远程访问ASM实例,甚至可以使用easy connect方法方法ASM实例
同机迁移数据库从ASM到文件系统
/backup/oradata/orcl用于存放数据文件
/backup/archivelog用于存放归档日志
数据文件路径:
[oracle@db53:/home/oracle]$sqlplus / as sysdba
SQL> select file_name from dba_data_files;
或者
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DGSYSTEM/orcl/datafile/system.262.1006205329
+DGSYSTEM/orcl/datafile/sysaux.263.1006205335
+DGSYSTEM/orcl/datafile/undotbs1.264.1006205339
+DGSYSTEM/orcl/datafile/users.266.1006205381
+DGDATA01/orcl/datafile/tjdata01.262.1006208847
+DGDATA01/orcl/datafile/tjdata01.263.1006208877
+DGDATA01/orcl/datafile/tbs01.264.1006225059
7 rows selected.
日志文件路径:
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
+DGSYSTEM/orcl/onlinelog/group_1.257.1006205325
+DGDATA01/orcl/onlinelog/group_1.257.1006205325
+DGSYSTEM/orcl/onlinelog/group_2.258.1006205325
+DGDATA01/orcl/onlinelog/group_2.258.1006205325
+DGSYSTEM/orcl/onlinelog/group_3.259.1006205325
+DGDATA01/orcl/onlinelog/group_3.259.1006205325
+DGSYSTEM/orcl/onlinelog/group_4.260.1006205325
+DGDATA01/orcl/onlinelog/group_4.260.1006205327
+DGSYSTEM/orcl/onlinelog/group_5.261.1006205327
+DGDATA01/orcl/onlinelog/group_5.261.1006205327
10 rows selected.
临时文件路径:
SQL> select file_name from dba_temp_files;
FILE_NAME
--------------------------------------------------------------------------------
+DGSYSTEM/orcl/tempfile/temp.265.1006205351
控制文件路径:
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
+DGSYSTEM/orcl/controlfile/current.256.1006205323
+DGDATA01/orcl/controlfile/current.256.1006205323
当前是归档模式,所以用在线备份的方式即可
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 16
Next log sequence to archive 20
Current log sequence 20
SQL> alter system switch logfile;
System altered.
SQL> alter system checkpoint;
System altered.
开始备份
[oracle@db53:/backup]$rman target /
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> backup database format '/backup/rman/orcl_%s_%p_%t';
Starting backup at 18-JUN-19
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1537 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00003 name=+DGSYSTEM/orcl/datafile/undotbs1.264.1006205339
input datafile file number=00001 name=+DGSYSTEM/orcl/datafile/system.262.1006205329
input datafile file number=00002 name=+DGSYSTEM/orcl/datafile/sysaux.263.1006205335
input datafile file number=00007 name=+DGDATA01/orcl/datafile/tbs01.264.1006225059
input datafile file number=00004 name=+DGSYSTEM/orcl/datafile/users.266.1006205381
input datafile file number=00005 name=+DGDATA01/orcl/datafile/tjdata01.262.1006208847
input datafile file number=00006 name=+DGDATA01/orcl/datafile/tjdata01.263.1006208877
channel ORA_DISK_1: starting piece 1 at 18-JUN-19
channel ORA_DISK_1: finished piece 1 at 18-JUN-19
piece handle=/backup/rman/orcl_1_1_1011286614 tag=TAG20190618T165654 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:56
Finished backup at 18-JUN-19
Starting Control File and SPFILE Autobackup at 18-JUN-19
piece handle=+DGRECOVERY/orcl/autobackup/2019_06_18/s_1011286670.263.1011286673 comment=NONE
Finished Control File and SPFILE Autobackup at 18-JUN-19
RMAN备份完成后,最好把控制文件单独备份一下
SQL> alter database backup controlfile to '/backup/rman/control.ctl';
SQL> alter database backup controlfile to trace as '/backup/rman/control.trc';
最终备份的文件都在这里:
[oracle@db53:/backup/rman]$ls -al
total 1100212
drwxr-xr-x 2 oracle oinstall 4096 Jun 17 06:20 .
drwxr-xr-x 3 oracle oinstall 4096 Jun 17 06:11 ..
-rw-r----- 1 oracle asmadmin 41828352 Jun 17 06:19 control.ctl
-rw-r--r-- 1 oracle asmadmin 7373 Jun 17 06:20 control.trc
-rw-r----- 1 oracle asmadmin 1084768256 Jun 17 06:15 orcl_1_1_1011161593
更改控制文件路径
SQL> alter system set control_files='/backup/oradata/orcl/control01.ctl', '/backup/oradata/orcl/control02.ctl' scope=spfile;
System altered.
更改数据文件路径
SQL> alter system set db_create_file_dest='/backup/oradata/orcl' scope=spfile;
System altered.
SQL> alter system set db_create_online_log_dest_1='/oracle/oradata/orcl' scope=spfile;
System altered.
SQL> alter system set db_create_online_log_dest_2='/oracle/oradata/orcl' scope=spfile;
System altered.
更改归档日志路径
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 17
Next log sequence to archive 21
Current log sequence 21
SQL> show parameter DB_RECOVERY_FILE_DEST
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string +dgrecovery
db_recovery_file_dest_size big integer 1024G
SQL> alter system set db_recovery_file_dest='/backup/archivelog' scope=spfile;
System altered.
SQL> alter system set db_recovery_file_dest_size=10G scope=spfile;
System altered.
创建参数文件
SQL> show parameter pfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DGSYSTEM/orcl/spfileorcl.ora
SQL> create pfile='/backup/pfileorcl.ora' from spfile;
File created.
重启数据库,从spfile启动
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup pfile='/backup/pfileorcl.ora' nomount;
ORACLE instance started.
Total System Global Area 3340451840 bytes
Fixed Size 2257840 bytes
Variable Size 788532304 bytes
Database Buffers 2533359616 bytes
Redo Buffers 16302080 bytes
创建一个spfile
SQL> create spfile from pfile='/back/pfileorcl.ora';
到目录下查看,已经创建成功spfile文件
[oracle@db53:/oracle/app/oracle/product/11.2.0/dbs]$pwd
/oracle/app/oracle/product/11.2.0/dbs
[oracle@db53:/oracle/app/oracle/product/11.2.0/dbs]$ls
hc_orcl.dat hc_neworcl.dat initorcl.ora init.ora lkORCL orapworcl snapcf_orcl.f spfileorcl.ora
重新启动数据库到nomount状态,查看pfile,已经从文件系统的spfile启动了
SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 3340451840 bytes
Fixed Size 2257840 bytes
Variable Size 788532304 bytes
Database Buffers 2533359616 bytes
Redo Buffers 16302080 bytes
SQL> show parameter pfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /oracle/app/oracle/product/11.2.0/dbs/spfileorcl.ora
恢复控制文件
[oracle@db53:/oracle/app/oracle/product/11.2.0/dbs]$rman target /
RMAN> restore controlfile from '+DGSYSTEM/orcl/controlfile/current.256.1006205323';
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 06/17/2019 06:51:56
RMAN-06172: no AUTOBACKUP found or specified handle is not a valid copy or piece
RMAN> show all
RMAN configuration parameters for database with db_unique_name ORCL are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
RMAN> restore controlfile from '/backup/rman/orcl_1_1_1011161593';
Starting restore at 17-JUN-19
using channel ORA_DISK_1
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/oracle/oradata/orcl/control01.ctl
Finished restore at 17-JUN-19
第二次操作的时候,直接从原有的控制文件进行恢复,因为RMAN配置过CONFIGURE CONTROLFILE AUTOBACKUP ON;
[oracle@db53:/home/oracle]$rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Tue Jun 18 17:21:45 2019
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (not mounted)
RMAN> restore controlfile from '+DGSYSTEM/orcl/controlfile/current.256.1006205323';
Starting restore at 18-JUN-19
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1521 device type=DISK
channel ORA_DISK_1: copied control file copy
output file name=/backup/oradata/orcl/control01.ctl
output file name=/backup/oradata/orcl/control02.ctl
Finished restore at 18-JUN-19
转换数据文件到文件系统
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
RMAN> backup as copy database format 'backup/oradata/orcl/%U';
Starting backup at 18-JUN-19
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00003 name=+DGSYSTEM/orcl/datafile/undotbs1.264.1006205339
output file name=/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-UNDOTBS1_FNO-3_04u4e29l tag=TAG20190618T172612 RECID=2 STAMP=1011288434
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:01:05
channel ORA_DISK_1: starting datafile copy
input datafile file number=00001 name=+DGSYSTEM/orcl/datafile/system.262.1006205329
output file name=/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-SYSTEM_FNO-1_05u4e2bm tag=TAG20190618T172612 RECID=3 STAMP=1011288484
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:55
channel ORA_DISK_1: starting datafile copy
input datafile file number=00002 name=+DGSYSTEM/orcl/datafile/sysaux.263.1006205335
output file name=/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-SYSAUX_FNO-2_06u4e2dd tag=TAG20190618T172612 RECID=4 STAMP=1011288500
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
input datafile file number=00007 name=+DGDATA01/orcl/datafile/tbs01.264.1006225059
output file name=/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-TBS01_FNO-7_07u4e2ds tag=TAG20190618T172612 RECID=5 STAMP=1011288512
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting datafile copy
input datafile file number=00004 name=+DGSYSTEM/orcl/datafile/users.266.1006205381
output file name=/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-USERS_FNO-4_08u4e2e3 tag=TAG20190618T172612 RECID=6 STAMP=1011288518
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting datafile copy
input datafile file number=00005 name=+DGDATA01/orcl/datafile/tjdata01.262.1006208847
output file name=/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-TJDATA01_FNO-5_09u4e2e6 tag=TAG20190618T172612 RECID=7 STAMP=1011288519
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting datafile copy
input datafile file number=00006 name=+DGDATA01/orcl/datafile/tjdata01.263.1006208877
output file name=/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-TJDATA01_FNO-6_0au4e2e9 tag=TAG20190618T172612 RECID=8 STAMP=1011288522
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
Finished backup at 18-JUN-19
Starting Control File and SPFILE Autobackup at 18-JUN-19
piece handle=/backup/archivelog/ORCL/autobackup/2019_06_18/o1_mf_s_1011287395_gjkcpfs7_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 18-JUN-19
转换之后,将数据库的数据文件切换到新的文件
RMAN> switch database to copy;
datafile 1 switched to datafile copy "/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-SYSTEM_FNO-1_05u4e2bm"
datafile 2 switched to datafile copy "/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-SYSAUX_FNO-2_06u4e2dd"
datafile 3 switched to datafile copy "/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-UNDOTBS1_FNO-3_04u4e29l"
datafile 4 switched to datafile copy "/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-USERS_FNO-4_08u4e2e3"
datafile 5 switched to datafile copy "/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-TJDATA01_FNO-5_09u4e2e6"
datafile 6 switched to datafile copy "/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-TJDATA01_FNO-6_0au4e2e9"
datafile 7 switched to datafile copy "/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-TBS01_FNO-7_07u4e2ds"
恢复、打开数据库
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 853375 generated at 06/18/2019 17:09:55 needed for thread 1
ORA-00289: suggestion :
/backup/archivelog/ORCL/archivelog/2019_06_18/o1_mf_1_17_%u_.arc
ORA-00280: change 853375 for thread 1 is in sequence #17
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
CANCEL
Media recovery cancelled.
SQL>alter database open resetlogs;
转换其他文件
数据库打开后,只有数据文件用的是新的文件系统,其他文件还需要继续转换成文件系统
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-SYSTEM_FNO-1_05u4e2bm
/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-SYSAUX_FNO-2_06u4e2dd
/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-UNDOTBS1_FNO-3_04u4e29l
/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-USERS_FNO-4_08u4e2e3
/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-TJDATA01_FNO-5_09u4e2e6
/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-TJDATA01_FNO-6_0au4e2e9
/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-TBS01_FNO-7_07u4e2ds
7 rows selected.
- 转换临时文件
SQL> select file_name from dba_temp_files;
FILE_NAME
--------------------------------------------------------------------------------
+DGSYSTEM/orcl/tempfile/temp.265.1006205351
当前的临时文件还用的是ASM,只需将这个文件删除,再在temp表空间新增一个临时文件即可:
SQL> alter database tempfile '+DGSYSTEM/orcl/tempfile/temp.265.1006205351' drop including datafiles;
Database altered.
SQL> alter tablespace temp add tempfile '/backup/oradata/orcl/temp01.dbf' size 100M;
Tablespace altered.
SQL> select file_name from dba_temp_files;
FILE_NAME
--------------------------------------------------------------------------------
/backup/oradata/orcl/temp01.dbf
- 转换在线日志文件
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
+DGSYSTEM/orcl/onlinelog/group_1.257.1006205325
+DGDATA01/orcl/onlinelog/group_1.257.1006205325
+DGSYSTEM/orcl/onlinelog/group_2.258.1006205325
+DGDATA01/orcl/onlinelog/group_2.258.1006205325
+DGSYSTEM/orcl/onlinelog/group_3.259.1006205325
+DGDATA01/orcl/onlinelog/group_3.259.1006205325
+DGSYSTEM/orcl/onlinelog/group_4.260.1006205325
+DGDATA01/orcl/onlinelog/group_4.260.1006205327
+DGSYSTEM/orcl/onlinelog/group_5.261.1006205327
+DGDATA01/orcl/onlinelog/group_5.261.1006205327
将状态不是“current”的日志组删除,再添加新的日志组
SQL> select GROUP#,THREAD#,STATUS from v$log;
GROUP# THREAD# STATUS
---------- ---------- ----------------
1 1 CURRENT
2 1 UNUSED
3 1 UNUSED
4 1 UNUSED
5 1 UNUSED
SQL> alter database drop logfile group 2;
Database altered.
SQL> alter database drop logfile group 3;
Database altered.
SQL> alter database drop logfile group 4;
Database altered.
因为数据库最少得保留2组日志文件,现在删除2、3、4组之后,还剩1和5组,需要继续增加新的日志组,然后再切换当前日志组到新的日志组,状态为current,保证组1和组5为inactive之后再删除
SQL> alter database add logfile group 2 ('/backup/oradata/orcl/redo02.dbf') size 50M;
Database altered.
SQL> alter database add logfile group 3 ('/backup/oradata/orcl/redo03.dbf') size 50M;
Database altered.
SQL> alter database drop logfile group 5;
Database altered.
SQL> select GROUP#,THREAD#,STATUS from v$log;
GROUP# THREAD# STATUS
---------- ---------- ----------------
1 1 CURRENT
2 1 UNUSED
3 1 UNUSED
5 1 UNUSED
SQL> alter system switch logfile;
System altered.
SQL> /
/
System altered.
SQL>
System altered.
SQL> select GROUP#,THREAD#,STATUS from v$log;
GROUP# THREAD# STATUS
---------- ---------- ----------------
1 1 INACTIVE
2 1 INACTIVE
3 1 CURRENT
SQL> alter database drop logfile group 1;
Database altered.
SQL> alter database add logfile group 1 ('/backup/oradata/orcl/redo01.dbf') size 50M;
Database altered.
SQL> alter system switch logfile;
System altered.
SQL> select GROUP#,THREAD#,STATUS from v$log;
GROUP# THREAD# STATUS
---------- ---------- ----------------
1 1 INACTIVE
2 1 ACTIVE
3 1 CURRENT
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/backup/oradata/orcl/redo01.dbf
/backup/oradata/orcl/redo02.dbf
/backup/oradata/orcl/redo03.dbf
最终验证
重启数据库
SQL> shutdown immediate
SQL> startup
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/backup/oradata/orcl/redo01.dbf
/backup/oradata/orcl/redo02.dbf
/backup/oradata/orcl/redo03.dbf
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-SYSTEM_FNO-1_05u4e2bm
/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-SYSAUX_FNO-2_06u4e2dd
/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-UNDOTBS1_FNO-3_04u4e29l
/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-USERS_FNO-4_08u4e2e3
/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-TJDATA01_FNO-5_09u4e2e6
/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-TJDATA01_FNO-6_0au4e2e9
/backup/oradata/orcl/data_D-ORCL_I-4164386567_TS-TBS01_FNO-7_07u4e2ds
SQL> select file_name from dba_temp_files;
FILE_NAME
--------------------------------------------------------------------------------
/backup/oradata/orcl/temp01.dbf
SQL> show parameter control;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string /backup/oradata/orcl/control
01.ctl, /backup/oradata/orcl
/control02.ctl
control_management_pack_access string DIAGNOSTIC+TUNING
异机迁移数据库从文件系统到ASM
角色 | 主机名 | IP | 数据文件 | 版本 | 实例名 |
源库 | db52 | 192.168.2.52 | 文件系统 | 11.2.0.4 | orcl |
目的库 | db53 | 192.168.2.53 | ASM | 11.2.0.4 |
注:
- 实验之前,目的库先建库测试ASM是否正常使用,然后dbca删掉实例(数据库得是开启状态)
- 源库和目的库的版本要一样,实例名和数据库名要一样
[oracle@db53:/home/oracle]$env |grep ORACLE
ORACLE_UNQNAME=orcl
ORACLE_SID=orcl
ORACLE_BASE=/oracle/app/oracle
ORACLE_TERM=xterm
ORACLE_HOME=/oracle/app/oracle/product/11.2.0
- 目的库准备好目录
- 源库备份出来的目录,跟目的库存放备份文件的目录保持一致
- 准备数据
SQL> create user testuser01 identified by testuser01;
SQL> grant dba to testuser01;
SQL> create table testuser01.test as select * from v$instance;
SQL> alter system checkpoint;
- 数据库为非归档状态的备份:
- 关闭数据库启动到mount状态
SQL> shutdown immediate
SQL> startup mount
- 备份参数文件
SQL> create pfile='/backup/pfileorcl.ora' from spfile;
- 备份数据库和控制文件
备份脚本内容如下:
[oracle@db52:/backup]$vi fullbackup.sh
rman target / msglog '/backup/orcl_rman_full_backup.log' << EOF
run {
allocate channel d1 type disk;
allocate channel d2 type disk;
setlimit channel d1 kbytes 204800000 maxopenfiles 32 readrate 200;
setlimit channel d2 kbytes 204800000 maxopenfiles 32 readrate 200;
backup
incremental level 0
skip inaccessible
tag orcl_level0
filesperset 8
format '/backup/orcl_full_%s_%p_%t'
(database);
release channel d1;
release channel d2;
allocate channel d3 type disk;
backup format '/backup/ctl_%s_%p_%t' current controlfile;
release channel d3;
allocate channel d4 type disk;
copy current controlfile to '/backup/control_orcl.ctl';
release channel d4;
}
exit
EOF
开始备份
[oracle@db52:/backup]$nohup ./fullbackup.sh &
备份完成后生成如下文件
[oracle@db52:/backup]$pwd
/backup
[oracle@db52:/backup]$du -sh *
40M control_orcl.ctl
40M ctl_9_1_1019675728
670M orcl_full_5_1_1019675688
436M orcl_full_6_1_1019675688
40M orcl_full_7_1_1019675723
96K orcl_full_8_1_1019675724
4.0K orcl_rman_full_backup.log
- 数据库为归档状态的备份:
将控制文件、4个备份文件都传输到目的库
[oracle@db52:/backup]$scp orcl_full_* control_orcl.ctl ctl_9_1_1019675728 192.168.2.53:/backup
- 修改数据库监听和grid监听
[oracle@db53:/oracle/app/oracle/product/11.2.0/network/admin]$vi tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db53)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
[grid@db53:/oracle/app/11.2.0/grid/network/admin]$vi listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /oracle/app/oracle/product/11.2.0)
(SID_NAME = orcl)
)
)
- 新建diag目录
[grid@db53:/oracle/app/oracle/diag/rdbms]$pwd
/oracle/app/oracle/diag/rdbms
[grid@db53:/oracle/app/oracle/diag/rdbms]$mkdir orcl
[root@db53 oracle]# chown -R oracle:oinstall /oracle/app/oracle/diag/
[root@db53 oracle]# su - oracle
[oracle@db53:/home/oracle]$mkdir -p /oracle/app/oracle/diag/rdbms/orcl/orcl
- 修改参数文件
根据pfile文件里的路径,创建相关目录
[oracle@db53:/home/oracle]$mkdir -p /oracle/app/oracle/admin/orcl/adump
修改控制文件路径
*.control_files='+DGDATA01/orcl/control01.ctl','+DGDATA01/orcl/control02.ctl'
修改归档日志路径
*.db_recovery_file_dest='+DGRECOVERY'
从pfile文件启动到nomount状态
SQL> startup pfile='/backup/pfileorcl.ora' nomount;
启动之后,创建spfile文件
SQL> create spfile='+DGDATA01/orcl/spfileorcl.ora' from pfile='/backup/pfileorcl.ora';
[oracle@db53:/home/oracle]$cd $ORACLE_HOME/dbs
[oracle@db53:/oracle/app/oracle/product/11.2.0/dbs]$vi initorcl.ora
新增如下内容:
spfile='+DGDATA01/orcl/spfileorcl.ora'
重启数据库,进入到nomount状态,查看spfile已经使用ASM里面的参数文件
SQL> shutdown immediate
SQL> startup nomount
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DGDATA01/orcl/spfileorcl.ora
- 恢复控制文件
[oracle@db53:/backup]$rman target /
RMAN> restore controlfile from '/backup/ctl_9_1_1019675728';
Starting restore at 18-JUN-19
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1522 device type=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=+DGDATA01/orcl/control01.ctl
output file name=+DGDATA01/orcl/control02.ctl
Finished restore at 18-JUN-19
RMAN> alter database mount;
- 数据文件
查看之前的备份信息
RMAN> list backup;
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
6 Incr 0 669.72M DISK 00:00:31 22-SEP-19
BP Key: 6 Status: AVAILABLE Compressed: NO Tag: ORCL_LEVEL0
Piece Name: /backup/orcl_full_5_1_1019675688
List of Datafiles in backup set 6
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- --------- ----
1 0 Incr 1037360 22-SEP-19 /oradata/orcl/system01.dbf
3 0 Incr 1037360 22-SEP-19 /oradata/orcl/undotbs01.dbf
5 0 Incr 1037360 22-SEP-19 /oradata/orcl/tbs01.dbf
7 0 Incr 1037360 22-SEP-19 /oradata/orcl/user01.dbf
9 0 Incr 1037360 22-SEP-19 /oradata/orcl/test01.dbf
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
7 Incr 0 80.00K DISK 00:00:00 22-SEP-19
BP Key: 7 Status: AVAILABLE Compressed: NO Tag: ORCL_LEVEL0
Piece Name: /backup/orcl_full_8_1_1019675724
SPFILE Included: Modification time: 22-SEP-19
SPFILE db_unique_name: ORCL
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
8 Incr 0 39.92M DISK 00:00:04 22-SEP-19
BP Key: 8 Status: AVAILABLE Compressed: NO Tag: ORCL_LEVEL0
Piece Name: /backup/orcl_full_7_1_1019675723
Control File Included: Ckp SCN: 1037360 Ckp time: 22-SEP-19
或者用以下命令:
RMAN> report schema;
Starting implicit crosscheck backup at 18-JUN-19
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=12 device type=DISK
Crosschecked 8 objects
Finished implicit crosscheck backup at 18-JUN-19
Starting implicit crosscheck copy at 18-JUN-19
using channel ORA_DISK_1
Finished implicit crosscheck copy at 18-JUN-19
searching for all files in the recovery area
cataloging files...
no files cataloged
RMAN-06139: WARNING: control file is not current for REPORT SCHEMA
Report of database schema for database with db_unique_name ORCL
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 0 SYSTEM *** /oradata/orcl/system01.dbf
2 0 SYSAUX *** /oradata/orcl/sysaux01.dbf
3 0 UNDOTBS1 *** /oradata/orcl/undotbs01.dbf
4 0 USERS *** /oradata/orcl/users01.dbf
5 0 TBS1 *** /oradata/orcl/tbs01.dbf
6 0 USERS01 *** /oradata/orcl/users01.dbf
7 0 USER01 *** /oradata/orcl/user01.dbf
8 0 USER02 *** /oradata/orcl/user02.dbf
9 0 TEST01 *** /oradata/orcl/test01.dbf
10 0 TEST02 *** /oradata/orcl/test02.dbf
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 2048 TEMP 2048 /oradata/orcl/temp01.dbf
恢复数据文件
run
{
set newname for datafile 1 to '+DGDATA01';
set newname for datafile 2 to '+DGDATA01';
set newname for datafile 3 to '+DGDATA01';
set newname for datafile 4 to '+DGDATA01';
set newname for datafile 5 to '+DGDATA01';
set newname for datafile 6 to '+DGDATA01';
set newname for datafile 7 to '+DGDATA01';
set newname for datafile 8 to '+DGDATA01';
set newname for datafile 9 to '+DGDATA01';
set newname for datafile 10 to '+DGDATA01';
set newname for tempfile 1 to '+DGDATA01';
restore database;
switch datafile all;
recover database;
}
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting restore at 23-SEP-19
Starting implicit crosscheck backup at 23-SEP-19
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1522 device type=DISK
Crosschecked 18 objects
Finished implicit crosscheck backup at 23-SEP-19
Starting implicit crosscheck copy at 23-SEP-19
using channel ORA_DISK_1
Crosschecked 2 objects
Finished implicit crosscheck copy at 23-SEP-19
searching for all files in the recovery area
cataloging files...
no files cataloged
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to +DGDATA01
channel ORA_DISK_1: restoring datafile 00003 to +DGDATA01
channel ORA_DISK_1: restoring datafile 00005 to +DGDATA01
channel ORA_DISK_1: restoring datafile 00007 to +DGDATA01
channel ORA_DISK_1: restoring datafile 00009 to +DGDATA01
channel ORA_DISK_1: reading from backup piece /backup/orcl_full_17_1_1019791745
channel ORA_DISK_1: piece handle=/backup/orcl_full_17_1_1019791745 tag=ORCL_LEVEL0
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:25
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00002 to +DGDATA01
channel ORA_DISK_1: restoring datafile 00004 to +DGDATA01
channel ORA_DISK_1: restoring datafile 00006 to +DGDATA01
channel ORA_DISK_1: restoring datafile 00008 to +DGDATA01
channel ORA_DISK_1: restoring datafile 00010 to +DGDATA01
channel ORA_DISK_1: reading from backup piece /backup/orcl_full_18_1_1019791745
channel ORA_DISK_1: piece handle=/backup/orcl_full_18_1_1019791745 tag=ORCL_LEVEL0
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:45
Finished restore at 23-SEP-19
datafile 1 switched to datafile copy
input datafile copy RECID=13 STAMP=1019763435 file name=+DGDATA01/orcl/datafile/system.273.1019763365
datafile 2 switched to datafile copy
input datafile copy RECID=14 STAMP=1019763435 file name=+DGDATA01/orcl/datafile/sysaux.266.1019763391
datafile 3 switched to datafile copy
input datafile copy RECID=15 STAMP=1019763435 file name=+DGDATA01/orcl/datafile/undotbs1.272.1019763365
datafile 4 switched to datafile copy
input datafile copy RECID=16 STAMP=1019763435 file name=+DGDATA01/orcl/datafile/users.265.1019763391
datafile 5 switched to datafile copy
input datafile copy RECID=17 STAMP=1019763435 file name=+DGDATA01/orcl/datafile/tbs1.267.1019763365
datafile 6 switched to datafile copy
input datafile copy RECID=18 STAMP=1019763435 file name=+DGDATA01/orcl/datafile/users01.278.1019763391
datafile 7 switched to datafile copy
input datafile copy RECID=19 STAMP=1019763435 file name=+DGDATA01/orcl/datafile/user01.271.1019763365
datafile 8 switched to datafile copy
input datafile copy RECID=20 STAMP=1019763435 file name=+DGDATA01/orcl/datafile/user02.276.1019763391
datafile 9 switched to datafile copy
input datafile copy RECID=21 STAMP=1019763435 file name=+DGDATA01/orcl/datafile/test01.268.1019763365
datafile 10 switched to datafile copy
input datafile copy RECID=22 STAMP=1019763435 file name=+DGDATA01/orcl/datafile/test02.277.1019763391
Starting recover at 23-SEP-19
using channel ORA_DISK_1
starting media recovery
RMAN-08187: WARNING: media recovery until SCN 1038481 complete
Finished recover at 23-SEP-19
RMAN恢复完成
刚恢复完,数据库还是mount状态,查看在线日志路径还是以前的文件系统
SQL> select status from v$instance;
STATUS
------------
MOUNTED
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/oradata/orcl/redo01.log
/oradata/orcl/redo02.log
/oradata/orcl/redo03.log
/oradata/orcl/redo04.log
/oradata/orcl/redo05.log
将在线日志重命名到ASM路径
SQL> alter database rename file '/oradata/orcl/redo01.log' to '+DGDATA01';
SQL> alter database rename file '/oradata/orcl/redo02.log' to '+DGDATA01';
SQL> alter database rename file '/oradata/orcl/redo03.log' to '+DGDATA01';
SQL> alter database rename file '/oradata/orcl/redo04.log' to '+DGDATA01';
SQL> alter database rename file '/oradata/orcl/redo05.log' to '+DGDATA01';
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
+DGDATA01
+DGDATA01
+DGDATA01
+DGDATA01
+DGDATA01
打开数据库的时候resetlogs
SQL> alter database open resetlogs;
查看后台日志,在clearing onlinelog
SQL> select file_name from dba_temp_files;
select file_name from dba_temp_files
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 8193 - see DBWR trace file
ORA-01110: data file 8193: '/oradata/orcl/temp01.dbf'
SQL> alter tablespace temp add tempfile '+dgdata01' size 100M autoextend off;
SQL> alter tablespace temp drop tempfile '/oradata/orcl/temp01.dbf';
SQL> select file_name from dba_temp_files;
FILE_NAME
--------------------------------------------------------------------------------
+DGDATA01/orcl/tempfile/temp.279.1019765225
[grid@db53:/home/grid]$lsnrctl stop
SQL> shutdown immediate
SQL> startup
检查监听
[oracle@db53:/backup]$cat /oracle/app/oracle/product/11.2.0/network/admin/tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db53)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
[oracle@db53:/backup]$tnsping orcl
TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 23-SEP-2019 20:15:02
Copyright (c) 1997, 2013, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = db53)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))
OK (50 msec)
用远程的方式去连接数据库
[oracle@db53:/home/oracle]$sqlplus sys/oracle@orcl as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Mon Sep 23 20:17:54 2019
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
上面这个报错提示用户名密码不正确,需要重建oracle密码文件
[oracle@db53:/home/oracle]$cd $ORACLE_HOME/dbs
[oracle@db53:/oracle/app/oracle/product/11.2.0/dbs]$orapwd file=orapworcl password=oracle
再次连接即可成功连上数据库
[oracle@db53:/oracle/app/oracle/product/11.2.0/dbs]$sqlplus sys/oracle@orcl as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Mon Sep 23 20:21:30 2019
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
SQL> show user
USER is "SYS"
SQL> desc testuser01.test;
Name Null? Type
----------------------------------------- -------- ----------------------------
INSTANCE_NUMBER NUMBER
INSTANCE_NAME VARCHAR2(16)
HOST_NAME VARCHAR2(64)
VERSION VARCHAR2(17)
STARTUP_TIME DATE
STATUS VARCHAR2(12)
PARALLEL VARCHAR2(3)
THREAD# NUMBER
ARCHIVER VARCHAR2(7)
LOG_SWITCH_WAIT VARCHAR2(15)
LOGINS VARCHAR2(10)
SHUTDOWN_PENDING VARCHAR2(3)
DATABASE_STATUS VARCHAR2(17)
INSTANCE_ROLE VARCHAR2(18)
ACTIVE_STATE VARCHAR2(9)
BLOCKED VARCHAR2(3)
重启数据库打开的时候,alert日志有如下报错:
ERROR: failed to establish dependency between database orcl and diskgroup resource ora.DGDATA01.dg
ERROR: failed to establish dependency between database orcl and diskgroup resource ora.DGRECOVERY.dg
Metalink的描述:
Alert logfile of the database shows the error as follows:-
ERROR: failed to establish dependency between database and diskgroup resource ora..dg
FIX:
This error is harmless.
Documented in Bug 8304720
Abstract: ERROR: FAILED TO ESTABLISH DEPENDENCY BETWEEN DB & DISKGROUP
This is an internal BUG.
The db-dg dependency will be created later on if the diskgroup is used by the db again; the dependency can also be created manually through cmdline tool.
Automatically it will resolve itself later on when the db tries to use the diskgroup. Or we can manually establish the dependancy through any command line utility.
For establishing dependencies between database and diskgroups, please use DB home owner running srvctl from DB home with
解决方法:
$ srvctl modify database -d <db_unique_name> -a "<diskgroup_list>"
例如本次环境:
[grid@db53:/home/grid]$srvctl modify database -d orcl -a "DGDATA01"
[grid@db53:/home/grid]$srvctl modify database -d orcl -a "DGRECOVERY”