欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ORACLEAUTOMATICSTORAGEMANAGEMENT翻译-第二章ASMInstance(4)

程序员文章站 2023-01-26 20:35:33
asm安全 这个小节主要描述与asm相关的各种安全配置话题,像配置asm需要的userids、groupids;asm权限如 sysoper,sysdba和新的sysasm权限,最...

asm安全 这个小节主要描述与asm相关的各种安全配置话题,像配置asm需要的userids、groupids;asm权限如 sysoper,sysdba和新的sysasm权限,最后还有asm 使用的oracle密码文件,orapwd。

一个asm实例多个unix userids 如果使用一个不同于rdbms实例的用户和独立的asm_home,那么每个rdbms实例的oracle 用户必须是asm实例dba组的成员;asm的oracle用户不必是rdbms实例dba组的成员。如果你想用不同的unix userid并使用多个其他unix userid创建的asm实例来管理他们自己的存储,你可以为每个创建自己的dba组(不同于asm dba组的),例如数据库可以使用名字为dba1,dba2等dba组。如果你想rdbms实例以共享使用相同的磁盘组,那么所有的rdbms实例需要以read/write权限访问磁盘组。asm实例需要以read/write权限访问所有的磁盘。对于 rdbms实例来说,你可以限制实例可以访问哪些磁盘。

asm权限 在oracle 10g,通过sqlplus访问asm实例与访问标准的数据库实例一样,可以以sysdba或sysoper权限访问。然而,注意那是因为没有数据字典在asm实例中,权限认证是通过操作级别或 oracle password文件来完成的。有代表性的是sysdba权限通过操作系统用户组进行赋权。在unix系统上,一般使用的是dba group。默认dba组拥有访问本节点上所有实例的sysdba权限,包括asm实例。使用sysdba权限连接asm,拥有管理本地系统磁盘组的完全的管理访问权限。 注意在windows系统中,oracle一般运行在local system或administrator 用户下,osoper和osdba组是硬编码组分别与ora_oper和ora_dba关联。 从oracle database 11g开始,一个叫sysasm的权限成为访问asm 实例的主要手段,大多数asm实例的管理命令不再使用与sysdba。sysdba 仍然可用向后兼容,如果使用了sysdba,在asm alert日志中就会有如下信息写入:warning: deprecated privilege sysdba for command 'startup'

sysasm权限的目的是把asm认证与rdbms认证分开。sysasm权限拥有 对asm实例的全部控制权。认证通过osasm用户组,类似于sysdba权限,只是sysdba认证是通过osdba实现的。对于oracle database 11g asm来说,使用sysasm取代sysdba认证是最佳实践。 下面展示了如何使用sysasm并且配置一个新的拥有sysasm角色的用户:[oracle11@racnode1~]$ sqlplus "/ as sysasm"
创建asmuser,使用如下命令:
sql> create user asmuser identified by asmuser1;
sql> grant sysasm, sysoper to asmuser;

使用asmuser连接asm实例:
[oracle@racnode1 ~]$ sqlplus "asmuser/asmuser as sysasm"
sql> select * from v$pwfile_users;
username sysdba sysoper sysasm
---------------------------- ----- ------- ------
sys true true false
asmuser false true true

在oracle asm 10g中,用户使用sysoper连接asm实例权限与使用sysdba连接 权限大致相同,除了查询v$视图权限外。使用sysoper连接asm实例使用如下命令:[oracle11@racnode1~]$ sqlplus " as sysoper"

从oracle database 11g起,asm sysoper权限的职责与数据库sysoper基本相同。 下面的命令是sysoper用户可用的命令:startup/shutdown
alter diskgroup mount/dismount
alter diskgroup online/offline disk
alter diskgroup rebalance
alter diskgroup check

所有其他命令像create diskgroup,add/drop/resize disk,等等-都需要sysasm 权限,这些命令都不能为sysoper权限用户所用。 所有的管理命令--包括startup,shutdown,和alter/create/drop diskgroup 都登陆到asm实例。例如,所有alter diskgroup 命令总是记录在alert log当实例发出命令以后。如果有需要,通过sys user从asm实例发出的操作都会记录到 .aud文件中。要做到这点需要配置如下初始化参数:audit_sys_operations = true
_disable_instance_params_check = true

注意,与rdbms实例不同,audit trail信息不能存放在asm实例的aud$中,因为 asm没有数据库来存放这些表。因此输出通常dump到.aud文件里,这些文件通常存放在默认位置--$oracle_home/rdbms/audit。 init.ora中的audit_file_dest控制audit文件默认位置,在windows上,这些日志打印到windows system log中。

asm与orapwd asm实例使用oracle password文件供远程asm访问,非常像rdbms实例供远端数据库访问。 注意

rdbms实例与asm实例完全分离,因此asm拥有自己的password文件,不与rdbms实例共享。 为了配置em远程访问asm,asm的password文件不需存在。如果asm实例是dbca配置的,orapwd文件会自动创建。如果asm实例是手动配置的必须使用owapwd命令手工创建密码文件:[oracle11@racnode1~]$ orapwd file=$oracle_home/asm/orapw+asm1 \
password=oracle

标准orapwd工具用于管理asm实例的密码文件,只是限制修改sys密码。 注意 在rac系统中集群中的每个asm实例必须都有owapwd文件。使用asm实例中v$pwfile_users视图来查看密码文件中的内容:sql> select * from v$pwfile_users;
username sysdb sysop sysas
------------------------------ ----- ----- -----
sys true true false

在oracle database 11g中,可以使用与rdbms中一样的命令来修改asm密码文件。 然而只能更新本地orapwd文件。

asm管理 随着asm的出现,卷管理和存储管理的责任似乎变得模糊了。asm管理定义角色可以有一些变种,依赖组织层(管理层)。如下是一些典型部署(案例): 由一个asm管理员管理特定的asm实例。asm管理员可以来自sysadmin(sa)asm的软件可以由rdbms用户来安装。这样可以加强asm管理角色。负责管理企业数据库dba或oracle软件负责人同时管理asm实例存储。 系统管理员(sa)管理os luns(logical unit numbers),修改设备文件属组同时把asm磁盘与其他主机逻辑卷管理器

不管如何分权和划分权责,下面的动作还是要为asm存储做的:确定asm存储需求 根据应用/数据库来确定存储类型,如sata(serial advanced technology attachment)还是fc( fibre channel)。如果你部署一个分层存储这是一个非常重要的问题。例如,data磁盘组可能需要高端fc盘,而flash磁盘组只需要sata 磁盘就可以了。确定数据库需要多少空间。确定数据库操作的iops数。结合iops需求来确定数据库对后端存储磁盘的需求。这个步骤必须要要存储管理员和系统管理员系统完成。

从磁盘阵列预分配磁盘 从存储阵列创建luns。这些luns可以从raid(raid 10 或 raid 5)组中来划分,映射给合适的主机。在主机层预分配磁盘。 root用户在os上确认这些luns可以被主机识别。为这些luns调整权限和属组。

属组和权限修改完成后,asm可以发现这些盘了。这些盘就可以被添加到已存在的磁盘组或用于创建新的磁盘组了。

创建必要的磁盘组 asm识别存储阵列提供的磁盘以后,确定如何把这些磁盘分配给磁盘组。 使用已有磁盘组或创建新磁盘组。

如下的asm v$视图描述了asm的数据结构和组建:v$asm_alias this view displays all system- and user-defined aliases.
there is one row for every alias present in every diskgroup mounted by the
asm instance. the rdbms instance displays no rows in this view.

v$asm_attribute this oracle database 11gview displays one row
for each asm attribute defined. these attributes are listed when they are
defined in create diskgroupor alter diskgroupstatements.
disk_repair_timeris an example of an attribute.

v$asm_client this view displays one row for each rdbms instance
that has an opened asm diskgroup.

v$asm_disk this view contains specifics about all disks discovered by
the asm instance, including mount status, disk state, and size. there is one
row for every disk discovered by the asm instance.

v$asm_disk_iostat this displays information about disk i/o statistics
for each asm client. if this view is queried from the database instance, only
the rows for that instance are shown.

v$asm_disk_stat this view contains similar content as the v$asm_
disk, except v$asm_disk_statreads disk information from cache and
thus performs no disk discovery. this view is primarily used for quick access
to the disk information without the overhead of disk discovery.

v$asm_diskgroupv$asm_diskgroupdisplays one row for every asm
diskgroup discovered by the asm instance on the node.

v$asm_diskgroup_stat this view contains all the similar view contents
as the v$asm_diskgroup, except that v$asm_disk_statreads disk
information from the cache and thus performs no disk discovery. this view
is primarily used for quick access to the diskgroup information without the
overhead of disk discovery.

v$asm_file the v$asm_fileview displays information about asm
files. there is one row for every asm file in every diskgroup mounted by the
asm instance. in a rdbms instance, v$asm_filedisplays no rows.

v$asm_operation this view describes the progress of an influx asm
rebalance operation. in a rdbms instance, v$asm_operationdisplays
no rows.

v$asm_template this view contains information on user- and systemdefined templates.

v$asm_templatedisplays one row for every template
present in every diskgroup mounted by the asm instance. in a rdbms
instance,v$asm_templatedisplays one row for every template present
in every diskgroup mounted by the asm instance with which the rdbms
instance communicates

如下视图可以在rdbms和asm实例中访问见p68

总结 asm实例管理asm metadata。asm实例与oracle实例非常相似也有 sga和绝大多数的后台进程。asm可以执行类似rdbms实例的命令。 asm实例不挂在数据库,但是挂载磁盘组。asm管理metadata使得 asm数据文件可以被数据库使用。asm实例和数据库实例必须可以访问所有的asm磁盘。当文件打开或创建时asm实例提供extent map给rdbms实例。 rdbms实例基于extent map直接读写磁盘。asm实例没有在i/0路径中。