ITPub博客

首页 > 数据库 > Oracle > 043-6 ASM

043-6 ASM

原创 Oracle 作者:zuiai510416 时间:2014-04-22 10:43:15 0 删除 编辑

--**用文件代替磁盘,模拟ASM的安装
C:\>asmtool -create C:\asmdisk\DISK1 1024   --在C盘asmdisk目录下创建一个1024M的ASM文件代替磁盘
C:\>asmtool -create C:\asmdisk\DISK2 1024   --下面2个可以直接用复制重命名的方式进行创建
C:\>asmtool -create C:\asmdisk\DISK3 1024  

--***************创建ASM过程*******************
c:\Dbca
配置自动存储管理  --报错:要使用自动存储管理(ASM),必须配置并启动ORACLE集群同步服务(CSS)
C:\>localconfig Add    --执行后系统的服务中多了一个OracleCSService服务 可以实现ORACLE2个实例之间的同步
配置自动存储管理       --下一步
修改ASM参数:   asm_diskstring   C:\asmdisk\*      --让ASM到我们创建的文件夹去找磁盘
输入SYS口令                --创建ASM实例用于远程管理的SYS用户口令
下一步完成创建ASM              --完成后系统的服务中多了一个OracleASMService+ASM这个服务;OracleASMService是ASM的服务,+ASM是实例名

--****************操作ASM实例创建磁盘组******************
c:\Set oracle_sid=+asm
sqlplus / As Sysdba
SQL> select path from v$asm_disk;
no rows selected                  --这里没有查询出数据,是因为默认ASM只允许裸磁盘,修改参数就可以
SQL> alter system set "_asm_allow_only_raw_disks"=false scope=spfile;   --隐含参数,所以要scope=spfile写入配置文件
SQL> shutdown Immediate
SQL> startup
SQL> select path from v$asm_disk;  --成功查询出asmdisk\下的3个文件

回到dbca
在ASM磁盘组中新建   --由于刚刚重启数据库,通道结束,取消再点一次新建就能看到磁盘路径
磁盘组名:dg1  冗余 高是在3块磁盘互相备份 常规2块互相备份 外部不备份  这里选常规 选中DISK1和DISK2 确定
磁盘组名:dg2  外部 选中DISK3 确定
完成

--****************创建ASM数据库***********************
c:\Dbca
创建数据库
定制数据库
全局数据库名:asmdb  SID:asmdb
不要EM
自动存储管理(ASM)
DG1作为存储
所有数据库文件使用公共位置
快速恢复区用DG2
组件都不要
SGA 200  PGA 40  --根据需要
创建完成  --完成后系统的服务中多了一个OracleServiceASMDB

监听增加数据库服务

sqlplus Sys@asmdb As Sysdba
Select * From dba_data_files
/*FILE_NAME                               FILE_ID    TABLESPACE_NAME    BYTES        BLOCKS    STATUS      RELATIVE_FNO    AUTOEXTENSIBLE    MAXBYTES      MAXBLOCKS    INCREMENT_BY    USER_BYTES    USER_BLOCKS    ONLINE_STATUS
1    +DG1/asmdb/datafile/system.262.839954983    1        SYSTEM            314572800    38400      AVAILABLE    1                YES                34359721984    4194302      1280            314507264      38392          SYSTEM
2    +DG1/asmdb/datafile/undotbs1.263.839955015    2    UNDOTBS1    209715200    25600    AVAILABLE    2    YES    34359721984    4194302    640    209649664    25592    ONLINE
3    +DG1/asmdb/datafile/sysaux.264.839955033    3    SYSAUX    125829120    15360    AVAILABLE    3    YES    34359721984    4194302    1280    125763584    15352    ONLINE
4    +DG1/asmdb/datafile/users.266.839955047    4    USERS    5242880    640    AVAILABLE    4    YES    34359721984    4194302    160    5177344    632    ONLINE*/
Select * From v$controlfile
/*       STATUS    NAME    IS_RECOVERY_DEST_FILE    BLOCK_SIZE    FILE_SIZE_BLKS
1        +DG1/asmdb/control01.ctl    NO    16384    430
2        +DG1/asmdb/control02.ctl    NO    16384    430
3        +DG1/asmdb/control03.ctl    NO    16384    430*/
Select * From v$logfile
/*       GROUP#    STATUS    TYPE    MEMBER    IS_RECOVERY_DEST_FILE
1    1        ONLINE    +DG1/asmdb/redo01.log    NO
2    2        ONLINE    +DG1/asmdb/redo02.log    NO
3    3        ONLINE    +DG1/asmdb/redo03.log    NO*/
Select * From Dba_temp_files
/*       FILE_NAME    FILE_ID    TABLESPACE_NAME    BYTES    BLOCKS    STATUS    RELATIVE_FNO    AUTOEXTENSIBLE    MAXBYTES    MAXBLOCKS    INCREMENT_BY    USER_BYTES    USER_BLOCKS
1    +DG1/asmdb/tempfile/temp.265.839955045    1    TEMP    20971520    2560    AVAILABLE    1    YES    34359721984    4194302    80    19922944    2432*/
SQL> show parameter spfile;
/*NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
spfile                               string                            C:\ORACLE\PRODUCT\10.2.0\DB_1\
                                                                       DATABASE\SPFILE+ASM.ORA       */

*注册表中的ORACLE_SID=ASMDB 默认修改成最后创建的数据库实例SID 所以用sqlplus / 登录上的是ASMDB数据库

--***************封装起来的ASM,需要开扇窗**ASMCMD****************
c:\asmcmd
"asmcmd: the environment variable ORACLE_HOME is not set."   --未设置ORACLE_HOME
c:\Set ORACLE_HOME = C:\oracle\product\10.2.0\db_1
c:\asmcmd
asmcmd:command disallowed By Current Instance Type     --实例的类型不符合
SQL> show parameter instance_type
/*NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
instance_type                        string      RDBMS*/
c:\Set oracle_sid=+asm
sqlplus / As Sysdba
SQL> show parameter instance_type
/*NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
instance_type                        string                 asm*/
C:\>asmcmd
ASMCMD>
C:\>asmcmd -p    --显示当前目录的ASMCMD
ASMCMD [+] >help
commands:
--------
cd              --改变目录
du              --查看当前ASMCMD [+dg1/asmdb/datafile] > du    相当于UNIX的du -s
                 --Used_MB      Mirror_used_MB
                 --632                1267
find            --查找文件     ASMCMD [+dg1/asmdb/datafile] > find + SYSAUX.*     -t datafile 缩小查找范围到datafile中查找
                                --       +DG1/ASMDB/DATAFILE/SYSAUX.264.839968473
help            --help du
ls              --list       ls -l  详细列表
lsct            --查看哪个客户端连接到该ASM实例      ASMCMD [+dg1/asmdb/datafile] > lsct
                 --DB_Name   Status        Software_Version  Compatible_version  Instance_Name
                 --asmdb     CONNECTED           10.2.0.1.0          10.2.0.1.0  asmdb
lsdg            --list 磁盘组
mkalias         --创建文件的别名
mkdir           --创建目录
pwd             --显示当前路径
rm              --移除
rmalias         --移除别名
Create Tablespace test Datafile '+dg1/asmdb/datafile/test.dbf' Size 10m;  --创建表空间
ASMCMD [+dg1/asmdb/datafile] > ls -l test.dbf
Type      Redund  Striped  Time             Sys  Name
                                            N    test.dbf => +DG1/ASMDB/DATAFILE/TEST.268.839971471     --test.dbf是别名指向+DG1/ASMDB/DATAFILE/TEST.268.839971471
ASMCMD [+dg1/asmdb/datafile] > mkalias '+DG1/ASMDB/DATAFILE/system.262.839954983' '+DG1/ASMDB/DATAFILE/SYSTEM.dbf'    --创建别名
--默认数据库不失败SYSTEM.dbf这个别名,需要修改控制文件中的路径
Shutdown Immediate
startup Mount
Alter System Rename File  '+DG1/ASMDB/DATAFILE/system.262.839954983' To  '+DG1/ASMDB/DATAFILE/SYSTEM.dbf'
Alter Database Open;
Select * From dba_data_files Where FILE_ID=1  --+DG1/asmdb/datafile/SYSTEM.dbf
--****别名的另一种创建方法
Set oracle_sid=+asm
sqlplus / As Sysdba
ALTER DISKGROUP dg1 ADD ALIAS  '+DG1/ASMDB/DATAFILE/SYSTEM.dbf' For  '+DG1/ASMDB/DATAFILE/system.262.839954983'
rmalias SYSTEM.dbf;   --删除别名
rmalias -r            --如果别名是目录,递归删除目录及目录下面的文件

--****au: Allocate unit

--****ASM相关视图
Select * From dict Where table_name Like 'V$ASM%'
/*
       TABLE_NAME    COMMENTS
1    V$ASM_ALIAS    Synonym for V_$ASM_ALIAS
2    V$ASM_CLIENT    Synonym for V_$ASM_CLIENT
3    V$ASM_DISK    Synonym for V_$ASM_DISK
4    V$ASM_DISKGROUP    Synonym for V_$ASM_DISKGROUP
5    V$ASM_DISKGROUP_STAT    Synonym for V_$ASM_DISKGROUP_STAT
6    V$ASM_DISK_STAT    Synonym for V_$ASM_DISK_STAT
7    V$ASM_FILE    Synonym for V_$ASM_FILE
8    V$ASM_OPERATION    Synonym for V_$ASM_OPERATION
9    V$ASM_TEMPLATE    Synonym for V_$ASM_TEMPLATE
*/  --连接ASM实例进行研究

--**********************
用第三方工具管理+ASM实例
--**********************
编辑listener.ora文件,增加
/*
    (SID_DESC =
      (GLOBAL_DBNAME = asm)
      (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
      (SID_NAME = +asm)
    )
*/
lsnrctl reload   --重新加载监听
编辑tnsnames.ora文件,增加   --由于配置的是静态的监听,所以tnsname只能配置静态的服务名
ASM =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.50)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ASM)
    )
  )

--****ASM相关视图
Select * From dict Where table_name Like 'V$ASM%'
/*
       TABLE_NAME    COMMENTS
1    V$ASM_ALIAS    Synonym for V_$ASM_ALIAS
2    V$ASM_CLIENT    Synonym for V_$ASM_CLIENT
3    V$ASM_DISK    Synonym for V_$ASM_DISK
4    V$ASM_DISKGROUP    Synonym for V_$ASM_DISKGROUP
5    V$ASM_DISKGROUP_STAT    Synonym for V_$ASM_DISKGROUP_STAT
6    V$ASM_DISK_STAT    Synonym for V_$ASM_DISK_STAT
7    V$ASM_FILE    Synonym for V_$ASM_FILE
8    V$ASM_OPERATION    Synonym for V_$ASM_OPERATION
9    V$ASM_TEMPLATE    Synonym for V_$ASM_TEMPLATE
*/  --连接ASM实例进行研究

Select * From V$ASM_DISK    --*研究下FAILGROUP
asmtool Create              --创建disk4,5
Alter Diskgroup dg1 Add Failgroup 'FG1_DISK4' Disk 'C:\asmdisk\DISK4' Name 'DG1_DISK4'      --disk4加到DG1
Alter Diskgroup dg2 Add Failgroup 'FG2_DISK5' Disk 'C:\asmdisk\DISK5' Name 'DG2_DISK5'      --DISK5加到DG2
此时dg1有3个磁盘,3个failgroup,即使删除其中一个,数据库也可以启动

Select * From V$ASM_DISKGROUP   --磁盘组
Select * From V$ASM_CLIENT      --客户端
Select * From V$ASM_FILE        --ASM文件
Select * From V$ASM_ALIAS       --别名和文件列表
Select * From V$ASM_OPERATION   --记录较长的操作,如删除dg1中的disk1,disk2和disk4仍然满足启动条件,oracle计算重新恢复disk1的过程就会记录进来   power(状态 0暂停 )
Select * From V$ASM_TEMPLATE    --ASM模版,REDUNDANCY(冗余 UNPROT没有镜像 MIRROR2个镜像 HIGH3个镜像) STRIPE(条带 COARSE粗糙1M FINE精细128K)
sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES = (None)     --屏蔽了系统认证

--plsql中alt+选择,可以选择矩形区域,类似CMD中的标记

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15810196/viewspace-1146684/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 043-5 Flashback 闪回
请登录后发表评论 登录
全部评论

注册时间:2011-07-19

  • 博文量
    53
  • 访问量
    132096