1 创建初始化文件
Oracle RAC 中spfile是存放在磁盘组里的,而本地的pfile里面是个指针,指向spfile。
[oracle@rac1 dbs]$ cat initanqing1.ora SPFILE='+DATA/ANQING/PARAMETERFILE/spfileanqing.ora'[oracle@rac1 dbs]$
所以在我们手工建库的时候,需要先建本地的pfile,用pfile来建库,最后在修改过去。
RAC中的pfile如下:
[oracle@rac1 dbs]$ pwd /u01/app/oracle/11.2.0/db_1/dbs[oracle@rac1 dbs]$ cat initcndba.ora *.audit_file_dest='/u01/app/oracle/admin/cndba/adump' *.audit_trail='db' *.cluster_database_instances=2 *.cluster_database=FALSE *.compatible='11.2.0.0.0' *.control_files='+DATA' *.db_block_size=8192 *.db_create_file_dest='+DATA' *.db_domain='' *.db_file_multiblock_read_count=16 *.db_name='cndba' *.db_recovery_file_dest='+FRA' *.db_recovery_file_dest_size=1018937856 *.db_unique_name='cndba' cndba1.instance_name='cndba1' cndba2.instance_name='cndba2' cndba1.instance_number=1 cndba2.instance_number=2 *.job_queue_processes=10 *.log_archive_dest_1='location=+FRA' *.log_archive_dest_state_1='ENABLE' *.memory_target=418937856 *.open_cursors=300 *.processes=150 *.remote_login_passwordfile='exclusive' *.standby_file_management='auto' cndba1.thread=1 cndba2.thread=2 *.undo_management='AUTO' cndba1.undo_tablespace='UNDOTBS1' cndba2.undo_tablespace='UNDOTBS2'[oracle@rac1 dbs]$
2 创建相关目录
要保证所有pfile中出现的目录,都要存在,创建完之后,注意检查权限。
另外是rac 环境,需要在所有节点上创建。
[oracle@rac1 dbs]$ mkdir -p /u01/app/oracle/admin/cndba/adump[oracle@rac2 ~]$ mkdir -p /u01/app/oracle/admin/cndba/adump
3 使用pfile 将DB启动到nomount
[oracle@rac1 dbs]$ export ORACLE_SID=cndba[oracle@rac1 dbs]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Thu Sep 10 11:01:32 2015 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to an idle instance. SQL> startup nomount ORACLE instance started. Total System Global Area 417546240 bytes Fixed Size 2228944 bytes Variable Size 281021744 bytes Database Buffers 125829120 bytes Redo Buffers 8466432 bytes SQL>
4 执行创建脚本
CREATE DATABASE cndba USER SYS IDENTIFIED BY oracle USER SYSTEM IDENTIFIED BY oracle LOGFILE GROUP 1 ('+DATA') SIZE 50M BLOCKSIZE 512, GROUP 2 ('+DATA') SIZE 50M BLOCKSIZE 512, GROUP 3 ('+DATA') SIZE 50M BLOCKSIZE 512 MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXLOGHISTORY 1 MAXDATAFILES 100 CHARACTER SET AL32UTF8 NATIONAL CHARACTER SET AL16UTF16 EXTENT MANAGEMENT LOCAL DATAFILE '+DATA' SIZE 325M REUSE SYSAUX DATAFILE '+DATA' SIZE 325M REUSE DEFAULT TABLESPACE users DATAFILE '+DATA' SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED DEFAULT TEMPORARY TABLESPACE temp TEMPFILE '+DATA' SIZE 20M REUSE UNDO TABLESPACE undotbs1 DATAFILE '+DATA' SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
创建完毕之后库已经读写了:
SQL> select name,open_mode from v$database; NAME OPEN_MODE ------------------ ---------------------------------------- CNDBA READ WRITE
5 执行善后脚本
用SYS用户执行脚本创建相应视图和对象:
SQL> @?/rdbms/admin/catalog --约3分钟 SQL> @?/rdbms/admin/catproc -- 约17分钟 SQL> @?/rdbms/admin/owminst.plb --约2分钟 SQL> @?/rdbms/admin/catclust.sql --约1分钟
用system用户运行以下脚本: -- 约1分钟
SQL> conn system/oracle SQL> @?/sqlplus/admin/pupbld SQL> @?/sqlplus/admin/help/hlpbld.sql helpus.sql
6 创建SPFILE 和 PFILE
注意我们之前创建的时候,没有指定具体的控制文件的位置,所以需要先修改创建的pfile:
[oracle@rac1 dbs]$ cat initcndba.ora …… *.control_files='+data/cndba/controlfile/Current.270.890046845' ……
SPFILE 保存在磁盘组里:http://www.cndba.cn/dave/article/210
SQL> conn / as sysdba Connected. SQL> create spfile='+DATA' from pfile='/u01/app/oracle/11.2.0/db_1/dbs/initcndba.ora'; File created.
分别在2个节点的$ORACLE_HOME/dbs 目录下创建PFILE文件:
[oracle@rac1 ~]$ cd $ORACLE_HOME/dbs[oracle@rac1 dbs]$ ls hc_anqing1.dat hc_dave1.dat initcndba.ora init.ora orapwdave1 _rm_dup_anqing1.dat hc_cndba.dat initanqing1.ora initdave1.ora orapwanqing1 orapwdave2 snapcf_dave1.f[oracle@rac1 dbs]$ touch initcndba1.ora
--进ASM 查看spfile 位置
ASMCMD> cd parameterfile ASMCMD> ls spfile.274.890048969 ASMCMD> pwd +data/cndba/parameterfile ASMCMD> ls spfile.274.890048969
修改pfile如下:
[oracle@rac1 dbs]$ vim initcndba1.ora[oracle@rac1 dbs]$ cat initcndba1.ora SPFILE='+data/cndba/parameterfile/spfile.274.890048969'[oracle@rac1 dbs]$
同样在节点2创建initcndba2.ora 文件:http://www.cndba.cn/dave/article/210
[oracle@rac2 dbs]$ touch initcndba2.ora[oracle@rac2 dbs]$ vim initcndba2.ora[oracle@rac2 dbs]$ cat initcndba2.ora SPFILE='+data/cndba/parameterfile/spfile.274.890048969'[oracle@rac2 dbs]$
7 验证节点1
SQL> select comp_name,version,status from sys.dba_registry; COMP_NAME VERSION STATUS ---------------------------------------- -------------------- -------------------- Oracle Workspace Manager 11.2.0.3.0 VALID Oracle Database Catalog Views 11.2.0.3.0 VALID Oracle Database Packages and Types 11.2.0.3.0 VALID Oracle Real Application Clusters 11.2.0.3.0 VALID 4 rows selected. SQL> select file_name from dba_data_files; FILE_NAME ------------------------------------------------------------------------------------------------------------------------ +DATA/cndba/datafile/system.297.890046857 +DATA/cndba/datafile/sysaux.298.890046879 +DATA/cndba/datafile/undotbs1.299.890046899 +DATA/cndba/datafile/users.285.890046913 4 rows selected. SQL> select file_name from dba_temp_files; FILE_NAME ------------------------------------------------------------------------------------------------------------------------ +DATA/cndba/tempfile/temp.290.890046913 1 row selected. SQL> select group#,thread# from v$log; GROUP# THREAD# ---------- ---------- 1 1 2 1 3 1 3 rows selected. SQL> col member for a50 SQL> select group#,member from v$logfile; GROUP# MEMBER ---------- -------------------------------------------------- 1 +DATA/cndba/onlinelog/group_1.295.890046847 2 +DATA/cndba/onlinelog/group_2.296.890046849 3 +DATA/cndba/onlinelog/group_3.268.890046853 3 rows selected.
节点1已经ok了。
8 配置节点2
创建节点2的undo表空间undotbs2
SQL> create undo tablespace undotbs2 datafile '+data' size 200m autoextend on maxsize unlimited; Tablespace created.
创建thread 2的3组redo日志组并启用thread 2
SQL> alter database add logfile thread 2 ('+data') size 50m; SQL> alter database add logfile thread 2 ('+data') size 50m; SQL> alter database add logfile thread 2 ('+data') size 50m; SQL> alter database enable thread 2; SQL> select a.group#,a.thread#,b.member from v$log a,v$logfile b where a.group#=b.group#; GROUP# THREAD# MEMBER ---------- ---------- -------------------------------------------------- 1 1 +DATA/cndba/onlinelog/group_1.295.890046847 2 1 +DATA/cndba/onlinelog/group_2.296.890046849 3 1 +DATA/cndba/onlinelog/group_3.268.890046853 4 2 +DATA/cndba/onlinelog/group_4.276.890050331 5 2 +DATA/cndba/onlinelog/group_5.277.890050445 6 2 +DATA/cndba/onlinelog/group_6.278.890050453 6 rows selected.
修改参数cluster_database开启群集http://www.cndba.cn/dave/article/210
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options[oracle@rac1 dbs]$ export ORACLE_SID=cndba1[oracle@rac1 dbs]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Thu Sep 10 12:26:28 2015 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to an idle instance. SQL> startup ORACLE instance started. Total System Global Area 417546240 bytes Fixed Size 2228944 bytes Variable Size 281021744 bytes Database Buffers 125829120 bytes Redo Buffers 8466432 bytes Database mounted. Database opened. SQL> alter system set cluster_database=true scope=spfile; System altered.
9 将数据库资源添加到CRS管理
在节点1用oracle用户运行:
[oracle@rac1 dbs]$ echo $ORACLE_HOME /u01/app/oracle/11.2.0/db_1[oracle@rac1 dbs]$ srvctl add database -d cndba -o /u01/app/oracle/11.2.0/db_1 -c RAC -y MANUAL -a DATA,FRA[oracle@rac1 dbs]$ srvctl add instance -d cndba -i cndba1 -n rac1[oracle@rac1 dbs]$ srvctl add instance -d cndba -i cndba2 -n rac2[oracle@rac1 dbs]$ srvctl config database -d cndba Database unique name: cndba Database name: Oracle home: /u01/app/oracle/11.2.0/db_1 Oracle user: oracle Spfile: Domain: Start options: open Stop options: immediate Database role: PRIMARY Management policy: MANUAL Server pools: cndba Database instances: cndba1,cndba2 Disk Groups: DATA,FRA Mount point paths: Services: Type: RAC Database is administrator managed[oracle@rac1 dbs]$
10 验证RAC
使用sqlplus 关闭所有节点上的cndba实例,然后用crs启动。
[grid@rac1 ~]$ srvctl start database -d cndba[grid@rac1 ~]$ srvctl status database -d cndba Instance cndba1 is running on node rac1 Instance cndba2 is running on node rac2[grid@rac1 ~]$ crsctl stat res -t -------------------------------------------------------------------------------- NAME TARGET STATE SERVER STATE_DETAILS -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.DATA.dg ONLINE ONLINE rac1 ONLINE ONLINE rac2 ora.FRA.dg ONLINE ONLINE rac1 ONLINE ONLINE rac2 ora.LISTENER.lsnr ONLINE ONLINE rac1 ONLINE ONLINE rac2 ora.OCRVOTING.dg ONLINE ONLINE rac1 ONLINE ONLINE rac2 ora.asm ONLINE ONLINE rac1 Started ONLINE ONLINE rac2 Started ora.gsd ONLINE OFFLINE rac1 ONLINE OFFLINE rac2 ora.net1.network ONLINE ONLINE rac1 ONLINE ONLINE rac2 ora.ons ONLINE ONLINE rac1 ONLINE ONLINE rac2 -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.LISTENER_SCAN1.lsnr 1 ONLINE ONLINE rac1 ora.cndba.db 1 ONLINE ONLINE rac1 Open 2 ONLINE ONLINE rac2 Open ora.cvu 1 ONLINE ONLINE rac1 ora.dave.dave_taf.svc 1 ONLINE ONLINE rac1 ora.dave.db 1 ONLINE ONLINE rac1 Open 2 OFFLINE OFFLINE Instance Shutdown 3 ONLINE ONLINE rac2 Open ora.dave.server_taf.svc 1 ONLINE ONLINE rac1 2 ONLINE ONLINE rac2 ora.oc4j 1 ONLINE ONLINE rac1 ora.rac1.vip 1 ONLINE ONLINE rac1 ora.rac2.vip 1 ONLINE ONLINE rac2 ora.rac3.vip 1 ONLINE INTERMEDIATE rac1 FAILED OVER ora.scan1.vip 1 ONLINE ONLINE rac1 [grid@rac1 ~]$
至此手工创建RAC 实例完成。
版权声明:本文为博主原创文章,未经博主允许不得转载。