概述
- Oracle数据库软件已经安装(oracle用户),具体参见使用RPM方式安装Oracle 19c
- Oracle 19c GI已经安装(grid用户),并创建了12G的ASM disk group。具体参考Oracle 19c Grid Infrastructure安装
- 安装数据库使用dbca
基本情况
用户情况如下:
$ id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)
$ id grid
uid=54322(grid) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54327(asmdba),54328(asmoper),54329(asmadmin)
磁盘情况(grid用户执行):
$ asmcmd lsdg
State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED NORMAL N 512 512 4096 4194304 24568 24344 0 12172 0 N DATA/
$ asmcmd lsdsk
Connected to an idle instance.
$ echo $ORACLE_SID
$ export ORACLE_SID=+ASM
$ asmcmd lsdsk
Path
/dev/sdc1
/dev/sdd1
赋予oracle用户组权限访问ASM磁盘组的权限
oracle用户需要asmdba组的权限:
$ sudo usermod -a -G asmdba oracle
$ id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba),54327(asmdba)
准备用于FRA的磁盘组
之前创建了12G的+DATA磁盘组用于数据库,此处再创建+12G的+FRA磁盘组用于FRA(Fast Recovery Area)。
停止主机,首先为主机添加两块12G的磁盘(asm3和asm4,就是每组命令中的后两条,前两条是DATA磁盘组的),然后启动主机。
## VBoxManage位于C:\Program Files\Oracle\VirtualBox目录下
REM VBoxManage createhd --filename asm1.vdi --size 10240 --format VDI --variant Fixed
REM VBoxManage createhd --filename asm2.vdi --size 10240 --format VDI --variant Fixed
VBoxManage createhd --filename asm3.vdi --size 10240 --format VDI --variant Fixed
VBoxManage createhd --filename asm4.vdi --size 10240 --format VDI --variant Fixed
REM VBoxManage storageattach ol7-vagrant --storagectl "SATA" --port 1 --device 0 --type hdd --medium asm1.vdi
REM VBoxManage storageattach ol7-vagrant --storagectl "SATA" --port 2 --device 0 --type hdd --medium asm2.vdi
VBoxManage storageattach ol7-vagrant --storagectl "SATA" --port 3 --device 0 --type hdd --medium asm3.vdi
VBoxManage storageattach ol7-vagrant --storagectl "SATA" --port 4 --device 0 --type hdd --medium asm4.vdi
主机认到这两块磁盘sde和sdf:
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdf 8:80 0 12G 0 disk
sdd 8:48 0 12G 0 disk
└─sdd1 8:49 0 12G 0 part
sdb 8:16 0 15.6G 0 disk
sde 8:64 0 12G 0 disk
sdc 8:32 0 12G 0 disk
└─sdc1 8:33 0 12G 0 part
sda 8:0 0 36.5G 0 disk
├─sda2 8:2 0 36G 0 part
│ ├─vg_main-lv_swap 252:1 0 4G 0 lvm [SWAP]
│ └─vg_main-lv_root 252:0 0 32G 0 lvm /
└─sda1 8:1 0 500M 0 part /boot
为两块磁盘建立primary分区:
# fdisk /dev/sde
# fdisk /dev/sdf
确认:
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdf 8:80 0 12G 0 disk
└─sdf1 8:81 0 12G 0 part
sdd 8:48 0 12G 0 disk
└─sdd1 8:49 0 12G 0 part
sdb 8:16 0 15.6G 0 disk
sde 8:64 0 12G 0 disk
└─sde1 8:65 0 12G 0 part
sdc 8:32 0 12G 0 disk
└─sdc1 8:33 0 12G 0 part
sda 8:0 0 36.5G 0 disk
├─sda2 8:2 0 36G 0 part
│ ├─vg_main-lv_swap 252:1 0 4G 0 lvm [SWAP]
│ └─vg_main-lv_root 252:0 0 32G 0 lvm /
└─sda1 8:1 0 500M 0 part /boot
查看两块磁盘的SCSI ID:
# /usr/lib/udev/scsi_id -g -u -d /dev/sde
1ATA_VBOX_HARDDISK_VB069e4ea7-5587c453
# /usr/lib/udev/scsi_id -g -u -d /dev/sdf
1ATA_VBOX_HARDDISK_VBe653ccf2-2af8cb71
添加ASM磁盘规则:
# cat /etc/udev/rules.d/99-oracle-asmdevices.rules
# for +DATA disk group
KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VBb483d0cb-d9040f2a", SYMLINK+="asm-disk1", OWNER="grid", GROUP="dba", MODE="0660"
KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VBbc3d0f6f-2c4d4511", SYMLINK+="asm-disk2", OWNER="grid", GROUP="dba", MODE="0660"
# for +FRA disk group
KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VB069e4ea7-5587c453", SYMLINK+="asm-disk3", OWNER="grid", GROUP="dba", MODE="0660"
KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VBe653ccf2-2af8cb71", SYMLINK+="asm-disk4", OWNER="grid", GROUP="dba", MODE="0660"
通知系统设备变更:
# /sbin/partprobe /dev/sde1
# /sbin/partprobe /dev/sdf1
确认:
# ls -l /dev/sd?1
brw-rw----. 1 root disk 8, 1 Sep 8 14:11 /dev/sda1
brw-rw----. 1 grid dba 8, 33 Sep 8 14:31 /dev/sdc1
brw-rw----. 1 grid dba 8, 49 Sep 8 14:31 /dev/sdd1
brw-rw----. 1 grid dba 8, 65 Sep 8 14:31 /dev/sde1
brw-rw----. 1 grid dba 8, 81 Sep 8 14:31 /dev/sdf1
# ls -l /dev/asm*
lrwxrwxrwx. 1 root root 4 Sep 8 14:31 /dev/asm-disk1 -> sdc1
lrwxrwxrwx. 1 root root 4 Sep 8 14:31 /dev/asm-disk2 -> sdd1
lrwxrwxrwx. 1 root root 4 Sep 8 14:31 /dev/asm-disk3 -> sde1
lrwxrwxrwx. 1 root root 4 Sep 8 14:31 /dev/asm-disk4 -> sdf1
测试udev设置:
# udevadm test /block/sdc/sde1
# udevadm test /block/sdd/sdf1
然后asmca建立磁盘组:
asmcmd再次确认:
$ asmcmd lsdsk
Path
/dev/sdc1
/dev/sdd1
/dev/sde1
/dev/sdf1
[grid@ol7-vagrant ~]$ asmcmd lsdg
State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED NORMAL N 512 512 4096 4194304 24568 24344 0 12172 0 N DATA/
MOUNTED NORMAL N 512 512 4096 4194304 24568 24368 0 12184 0 N FRA/
DBCA创建数据库
oracle用户启动dbca。
选择典型安装,数据库文件和FRA分布选择+DATA和+FRA:
这里说明一点,如果之前oracle用户没有加到asmdba组,是看不到+DATA这个磁盘组的。
安装前回顾,保留响应文件:
开始安装,创建和启动实例这步耗时最长。:
安装过程中报错:
PRCR-1079 : Failed to start resource ora.orcl.db
CRS-5017: The resource action "ora.orcl.db start" encountered the following error:
ORA-01017: invalid username/password; logon denied
. For details refer to "(:CLSN00107:)" in "/u01/app/grid/diag/crs/ol7-vagrant/crs/trace/ohasd_oraagent_grid.trc".
CRS-2674: Start of 'ora.orcl.db' on 'ol7-vagrant' failed
ORA-01017: invalid username/password; logon denied
可以模拟这个错误:
$ srvctl start database -d orcl
PRCR-1079 : Failed to start resource ora.orcl.db
CRS-5017: The resource action "ora.orcl.db start" encountered the following error:
ORA-01017: invalid username/password; logon denied
. For details refer to "(:CLSN00107:)" in "/u01/app/grid/diag/crs/ol7-vagrant/crs/trace/ohasd_oraagent_grid.trc".
CRS-2674: Start of 'ora.orcl.db' on 'ol7-vagrant' failed
ORA-01017: invalid username/password; logon denied
原来是GI用户需要racdba组:
$ sudo usermod -a -G racdba grid
$ srvctl status database -database orcl
Database is running.
$ srvctl status database -db orcl -verbose
Database orcl is running. Instance status: Open.
然后启动数据库就可以了:
$ srvctl start database -d orcl
dbca删除这个数据库然后重建,最终看到了成功界面:
查看一下空间使用:
$ asmcmd lsdg
State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED NORMAL N 512 512 4096 4194304 20472 12376 0 6188 0 N DATA/
MOUNTED NORMAL N 512 512 4096 4194304 20472 18952 0 9476 0 N FRA/
DATA磁盘组用了约4G,FRA磁盘组用了约0.7G。
参考
- https://www.anbob.com/archives/1477.html
- ASM Diskgroup Can Not Be Shown When Creating Database With DBCA (文档 ID 1269734.1)
- 12.2 Oracle Restart: SRVCTL start database fails with error ORA-01017 (文档 ID 2313555.1)