暂无图片
暂无图片
5
暂无图片
暂无图片
暂无图片

ASM基础知识

原创 yBmZlQzJ 2022-09-07
4970

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. 使用ASM的好处

1、 将I/O平均分部到所有可用磁盘驱动器上以防止产生热点,并且最大化性能。

2、 配置更简单,并且最大化推动数据库合并的存储资源利用。

3、 内在的支持大文件

4、 在增量增加或删除存储容量后执行自动联系重分配

5、 维护数据的冗余副本以提高可用性。

6、 支持10g,11g的数据存储及RAC的共享存储管理

7、 支持第三方的多路径软件

8、 使用OMF方式来管理文件

  1. ASM冗余

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,虽然冗余级别高了,但是硬件的代价也最高。

  1. ASM进程

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监听实现远程管理

  1. 动态监听

查看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

  1. 静态监听

编辑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. 远程访问ASM配置总结

1.在动态监听中,只有设置了(UR=A)才能够远程访问ASM实例;

2.在静态监听中,无论是否设置(UR=A)均可远程访问ASM实例,甚至可以使用easy connect方法方法ASM实例

同机迁移数据库从ASM到文件系统

/backup/oradata/orcl用于存放数据文件

/backup/archivelog用于存放归档日志

  1. 检查文件路径

数据文件路径:

[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

  1. 数据库进行备份

当前是归档模式,所以用在线备份的方式即可

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

  1. 数据库迁移

更改控制文件路径

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

  1. 环境

角色

主机名

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

  • 目的库准备好目录
  • 源库备份出来的目录,跟目的库存放备份文件的目录保持一致
  1. 备份源库
  • 准备数据

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

  • 数据库为归档状态的备份:
  1. 备份文件传输到目的库

将控制文件、4个备份文件都传输到目的库

[oracle@db52:/backup]$scp orcl_full_* control_orcl.ctl ctl_9_1_1019675728 192.168.2.53:/backup

  1. 目的库恢复、修改相关文件
  • 修改数据库监听和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恢复完成

  1. 修改在线日志和临时文件

刚恢复完,数据库还是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

  1. 重启数据库和监听进行检查

[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)

  1. alert日志报错

重启数据库打开的时候,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”

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

目录
  • ASM基础知识
  • 配置ASM监听实现远程管理
  • 同机迁移数据库从ASM到文件系统
    • 更改控制文件路径
    • 更改数据文件路径
    • 更改归档日志路径
    • 创建参数文件
    • 重启数据库,从spfile启动
    • 恢复控制文件
    • 转换数据文件到文件系统
    • 恢复、打开数据库
    • 转换其他文件
    • 最终验证
  • 异机迁移数据库从文件系统到ASM