在windows中搭建虚拟ASM环境创建Oracle 10G数据库
来源:互联网 发布:罗技m100r 知乎 编辑:程序博客网 时间:2024/05/18 02:43
本文分四部分,1,创建虚拟的ASM磁盘,2在虚拟的ASM磁盘上创建数据库,3,asmcmd工具,4为磁盘组增加磁盘
第一部分:创建虚拟的ASM磁盘:(本例中Oracle安装在D:\oracle\product\10.2.0)
1,利用Oracle提供的asmtool创建ASM虚拟磁盘,asmtool在D:\oracle\product\10.2.0\db_1\BIN目录下,
在CMD中执行:
asmtool -create D:\oracle\asmdisk\disk1 1024
asmtool -create D:\oracle\asmdisk\disk2 1024
asmtool -create D:\oracle\asmdisk\disk3 1024
2,配置CSS(Cluster Synchronization Services)
CSS主要用来同步ASM instance和它的client,也即database instance。可以由Oracle自带的localconfig命令来完成。Localconfig命令也位于D:\oracle\product\10.2.0\db_1\BIN目录下.
在CMD中执行
localconfig add
output:
Step 1: creating new OCR repository
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'zhangrp', privgrp ''..
Operation successful.
Step 2: creating new CSS service
successfully created local CSS service
successfully added CSS to home
配置完成后,在Windows Services中会出现类似如下一个entry
--检查CSS守护进程的状态
D:oracle10g>crsctl check cssd
CSS appears healthy
D:oracle10g>
备注:如果后期要删除这个css服务,只需要在windows command下执行如下命令即可:
localconfig delete
3,在D:\oracle\product\10.2.0\admin下创建+asm文件夹,在其下创建bdump,cdump,udump三个文件夹.如下:
D:\oracle\product\10.2.0\admin\+asm\bdump
D:\oracle\product\10.2.0\admin\+asm\cump
D:\oracle\product\10.2.0\admin\+asm\udump
4,在D:\oracle\product\10.2.0\db_1\database\文件夹下创建文件: INIT+asm.ora
D:\oracle\product\10.2.0\db_1\database\INIT+asm.ora
文件内容如下:
*._asm_allow_only_raw_disks=FALSE
*.asm_diskstring='D:\oracle\asmdisk\*'
*.user_dump_dest='D:\oracle\product\10.2.0\admin\+asm\udump'
*.core_dump_dest='D:\oracle\product\10.2.0\admin\+asm\cdump'
*.background_dump_dest='D:\oracle\product\10.2.0\admin\+asm\bdump'
*.instance_type='ASM'
*.large_pool_size=12M
*.db_unique_name='+ASM'
*.asm_power_limit=1
*.remote_login_passwordfile='SHARED'
4,创建ASM虚拟磁盘实例的服务,
oradim -new -asmsid +asm -startmode auto -SRVCSTART system -pfile 'D:\oracle\product\10.2.0\db_1\database\init+asm.ora
成功后也会在Windows的服务中添加一个名为OracleASMService+asm的服务.
备注:如果后期要删除这个asm实例,只需要在windows command下执行如下命令即可:
oradim -delete -asmsid +asm
5,连接到ASM实例,如果是OS认证,
注意要设置ORACLE_SID=刚刚创建ASM实例
D:\>set oracle_sid=+asm
直接 sqlplus / as sysdba,如果不是的话改为OS认证或者创建一个pwd文件:
orapwd file=D:\oracle\product\10.2.0\db_1\database\PWD+asm.ora password=sys entries=5
重启OracleASMService+asm的服务,
D:\>sqlplus sys/sys as sysdba
Connected to an idle instance.
SQL> startup
ASM instance started
Total System Global Area 83886080 bytes
Fixed Size 1295152 bytes
Variable Size 57425104 bytes
ASM Cache 25165824 bytesORA-15110: no diskgroups mounted
SQL>
注意:这里有一个ORA-15110的错误信息,因为是首次启动asm实例,还没有创建diskgroup,所以显示15110错误是正常的,忽略掉该错误,继续后面的步骤。
查看instance的状态:
SQL> select host_name,instance_name,version,status from v$instance;
HOST_NAME INSTANCE_NAME VERSION STATUS
------------------------------ ---------------- ----------------- ------------
PC-625040 +asm 10.2.0.1.0 STARTED
(ASM实例只会处于STARTED状态不能像普通DB instance那样OPEN)
这时候可以查看识别出来的的磁盘:
SQL> col path format a30;
SQL> select path,mount_status from v$asm_disk order by disk_number;
PATH MOUNT_S
------------------------------ -------
D:\ORACLE\ASMDISK\DISK1 CLOSED
D:\ORACLE\ASMDISK\DISK2 CLOSED
D:\ORACLE\ASMDISK\DISK3 CLOSED
6,创建ASM磁盘组,创建两个磁盘组.
a,创建一个由2块1000M的磁盘组成的磁盘组,采用2-way冗余
SQL> create diskgroup dg1
2 Normal Redundancy
3 failgroup DG1_0000 disk 'D:\oracle\asmdisk\disk1'
4 failgroup DG1_0001 disk 'D:\oracle\asmdisk\disk2';
b,--闪回用的磁盘组FLASH_DATA,由1块1000M的磁盘组成,采用外部冗余
SQL> create diskgroup dg2
2 External Redundancy
3 disk 'D:\oracle\asmdisk\disk3';
(这里我只用一个磁盘,正常也应该用多块)
还可以用DBCA创建
1,
2,这里我截的图因为是在做完之后的,在"select member disks"中没有可用的,没有做之前正常应该列出D:\oracle\asmdisk\disk1,disk2,disk3
选择disk1,disk2,group name为dg1,redundancy为normal创建一组.
选择disk3,group name为dg2,redundancy为external创建一组.
磁盘组创建完成查看状态:
SQL> select path,mount_status from v$asm_disk order by disk_number;
PATH MOUNT_S
------------------------------ -------
D:\ORACLE\ASMDISK\DISK1 CACHED
D:\ORACLE\ASMDISK\DISK3 CACHED
D:\ORACLE\ASMDISK\DISK2 CACHED
7,--重启ASM实例
SQL> shatdown immediate
SQL> startup
ASM instance started
Total System Global Area 83886080 bytes
Fixed Size 1295152 bytes
Variable Size 57425104 bytes
ASM Cache 25165824 bytes
ASM diskgroups mounted
SQL>
刚才的"ORA-15110: no diskgroups mounted"错误信息也没了。
--生成SPFILE
SQL> create spfile from pfile;
File created.
8,--配置listener.ora和tnsnames.ora,这样就可以通过pl/sql developer这样的工具连接访问你的ASM实例了。
在listener.ora的SID_LIST加上
(SID_DESC =
(GLOBAL_DBNAME = +asmdb)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = +asm)
)
在tnsnames.ora加上
ASM =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = NBK-DAL-625040.ap.bt.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = +ASMDB)
)
)
这样toad,pl/sql developer等工具也可以通过tns访问asm 实例了.
--------------------------------------------------------------------------
第二部分,在ASM磁盘组上创建数据库
创建完ASM磁盘组后:用DBCA创建数据库:下面把与创建常规DB不同的地方列出来
1,选择自定义类型的数据库
2,SID 写成ASMDB,不创建EM,在选择存储类型的时候:
3,选择安装的磁盘组:
4,指定数据库文件的磁盘组 dg1
5,指定flash recovery的磁盘组:dg2
6,为了节约空间,不安装下面这些组件
7,将SGA size设为合适的值300M,PGA 40M, UNDO对应的文件100M,其他根据需要做适当调整.
然后finish.
创建完成后
C:\>set oracle_sid=asmdb
注意和开始的ASM的instance不一样
连接到DB的实例,C:\>sqlplus sys/sys as sysdba
启动数据库,SQL> startup
这后面的操作和普通的数据库就一样了.注意在启动数据库实例的时候,ASM的实例要先启动起来.
在创建过程中,碰到一个错误 ORA-06553: PLS-213: package STANDARD not accessible
解决方法:
1. SQL>ALTER PACKAGE STANDARD COMPILE;
2. SQL>ALTER PACKAGE DBMS_STANDARD COMPILE;
3,@ORACLE_BASE\ORACLE_HOME\rdbms\admin\utlrp.sql
第三步会费时较长,
可以 SELECT COUNT(*) FROM obj$ WHERE status IN (4, 5, 6);查看,数字应该不断变小.
第三部分:ASMCMD.
asmcmd使用同样需要连接到ASM实例
1,设置ORACLE_HOME环境变量,注册表有的话也要设置
C:\>set oracle_home=D:\oracle\product\10.2.0\db_1
2,设置oralce_sid环境变量,如果注册表的oracle_sid不是asm实例的话
C:\>asmcmd
ORA-12560: TNS:protocol adapter error (DBD ERROR: OCIServerAttach)
C:\>set oracle_sid=+asm
3,操作asmcmd
C:\>asmcm
ASMCMD>
help查看帮助.提供的命令和unix命令
ASMCMD> pwd
+
ASMCMD> ls
DG1/
DG2/
ASMCMD> cd asmdb
Type Redund Striped Time Sys Name
Y CONTROLFILE/
Y DATAFILE/
Y ONLINELOG/
Y PARAMETERFILE/
Y TEMPFILE/
N control01.ctl => +DG1/ASMDB/CONTROLFILE/Current.256.772306553
N control02.ctl => +DG1/ASMDB/CONTROLFILE/Current.257.772306557
N control03.ctl => +DG1/ASMDB/CONTROLFILE/Current.258.772306561
N redo01.log => +DG1/ASMDB/ONLINELOG/group_1.259.772306567
N redo02.log => +DG1/ASMDB/ONLINELOG/group_2.260.772306579
N redo03.log => +DG1/ASMDB/ONLINELOG/group_3.261.772306591
N spfileASMDB.ora => +DG1/ASMDB/PARAMETERFILE/spfile.267.772307483
上面看到的就是数据库文件的结构,下面的是数据文件.
ASMCMD> cd datafile
ASMCMD> ls -l
Type Redund Striped Time Sys Name
DATAFILE MIRROR COARSE JAN 11 21:00:00 Y SYSAUX.264.772306671
DATAFILE MIRROR COARSE JAN 11 21:00:00 Y SYSTEM.262.772306615
DATAFILE MIRROR COARSE JAN 11 21:00:00 Y UNDOTBS1.263.772306657
DATAFILE MIRROR COARSE JAN 11 21:00:00 Y USERS.266.772306717
上面第一部分配置的CSS(Cluster Synchronization Services)服务,是为ASM实例(+asm)和ASMDB数据库实例提供服务的.
负责同步数据库的信息到+asm管理的磁盘上.
ASMCMD> lsct
DB_Name Status Software_Version Compatible_version Instance_Name
+ASM CONNECTED 10.2.0.1.0 10.2.0.0.0 +asm
ASMDB CONNECTED 10.2.0.1.0 10.2.0.1.0 asmdb
ASMCMD> find + cont*
+DG1/ASMDB/CONTROLFILE/
+DG1/ASMDB/control01.ctl
+DG1/ASMDB/control02.ctl
+DG1/ASMDB/control03.ctl
mkalias可以为文件创建别名,该成我们在文件系统下熟悉的文件名,如 SYSTEM.262.772306615看起来不像system01.dbf那样熟悉,可以改完后将数据文件指向alias.
ASMCMD> mkalias SYSTEM.262.772306615 system01.dbf
SQL> startup mount
修改数据库
SQL> alter database rename file '+DG1/asmdb/datafile/system.262.772306615' to '+DG1/asmdb/datafile/system01.dbf';
SQL> alter database open;
SQL> select file_name from dba_data_files;
FILE_NAME
-------------------------------------------
+DG1/asmdb/datafile/system01.dbf
+DG1/asmdb/datafile/undotbs1.263.772306657
+DG1/asmdb/datafile/sysaux.264.772306671
+DG1/asmdb/datafile/users.266.772306717
第四部分:为磁盘组增加磁盘
1,创建两个ASM磁盘
D:\>asmtool -create D:\oracle\asmdisk\disk4 200
D:\>asmtool -create D:\oracle\asmdisk\disk5 200
2,连接到ASM实例,
SQL> col path format a30;
SQL> col name format a20
SQL> col failgroup format a20;
SQL> select group_number,mount_status,name,failgroup,path from v$asm_disk;
GROUP_NUMBER MOUNT_S NAME FAILGROUP PATH
------------ ------- -------------------- -------------------- ---------------------------
0 CLOSED D:\ORACLE\ASMDISK\DISK4
0 CLOSED D:\ORACLE\ASMDISK\DISK5
1 CACHED DG1_0000 DG1_0000 D:\ORACLE\ASMDISK\DISK1
1 CACHED DG1_0001 DG1_0001 D:\ORACLE\ASMDISK\DISK2
2 CACHED DG2_0000 DG2_0000 D:\ORACLE\ASMDISK\DISK3
可以看到新建的两块磁盘已经识别
3,添加磁盘disk4到DG1_0000
SQL> ALTER DISKGROUP dg1 ADD failgroup DG1_0000 disk 'D:\oracle\asmdisk\disk4';
Diskgroup altered.
SQL> ALTER DISKGROUP dg1 ADD failgroup DG1_0001 disk 'D:\oracle\asmdisk\disk5
Diskgroup altered.
SQL> select group_number,mount_status,name,failgroup,path from v$asm_disk;
GROUP_NUMBER MOUNT_S NAME FAILGROUP PATH
------------ ------- -------------------- -------------------- ------------------------
1 CACHED DG1_0000 DG1_0000 D:\ORACLE\ASMDISK\DISK1
1 CACHED DG1_0001 DG1_0001 D:\ORACLE\ASMDISK\DISK2
2 CACHED DG2_0000 DG2_0000 D:\ORACLE\ASMDISK\DISK3
1 CACHED DG1_0002 DG1_0000 D:\ORACLE\ASMDISK\DISK4
1 CACHED DG1_0003 DG1_0001 D:\ORACLE\ASMDISK\DISK5
这样磁盘组dg1的容量就加大了.
更多细节:http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_1006.htm#SQLRF01113
本文是参考 Thomas Zhang在ITPUB的文章和warehouse的OCP讲课完成的.
http://tomszrp.itpub.net/post/11835/487501
- 在windows中搭建虚拟ASM环境创建Oracle 10G数据库
- Windows下虚拟ASM磁盘搭建基于ASM的Oracle 10g数据库系统
- Windows下虚拟ASM磁盘搭建基于ASM的Oracle 10g数据库系统(1)
- Windows下虚拟ASM磁盘搭建基于ASM的Oracle 10g数据库系统(2)
- Windows下虚拟ASM磁盘搭建基于ASM的Oracle 10g数据库系统(3)
- 在ORACLE 10G R2上利用ASMLIB创建ASM数据库
- Windows Oracle 10G手工创建数据库
- Windows Oracle 10G手工创建数据库
- Windows Oracle 10G手工创建数据库
- Windows Oracle 10G手工创建数据库
- Windows Oracle 10G手工创建数据库
- Windows Oracle 10G手工创建数据库
- Windows Oracle 10G手工创建数据库
- 在ASM环境下,手动创建11g数据库,并修改成bigfile
- 创建ASM With Oracle 10G
- Oracle 11g ASM:如何在 ASMCMD 命令行工具中创建 Oracle ACFS 文件系统
- 在Oracle Linux 4.7上安装配置Oracle 10g ASM数据库
- Linux环境下手工创建Oracle 10g数据库
- DBA日常工作职责 - 我对DBA的七点建议
- 2012的计划
- Windows7 安装VS2010失败的原因
- Android群
- 关于C语言的位作用域,恩,要好好看看,貌似还没怎么接触过呢,丢脸啊
- 在windows中搭建虚拟ASM环境创建Oracle 10G数据库
- Silverlight项目打开报错
- mysql远程登录
- Minimize Code by Using jQuery and Data Templates
- wpf中实现数据的逐条加载显示效果
- CListctrl用法
- Linux中errno使用
- WPF计时器
- C++中的文件输入输出操作