|
第 5 阶段:使用数据库配置助手创建一个示例数据库
Oracle-on-Linux VMware 简明手册
第五阶段:使用数据库配置助手创建一个示例数据库
下载这个脚本的支持文件。
为了便于演示,我们将使用自定义方法
创建数据库。使用这一方法我们还将获得
比附带的示例数据库小的数据库。
VMWARE 注意事项:o 如果是在 RHEL3 vanilla 或 Update 1 上运行,
确保在环境中设置 LD_ASSUME_KERNEL=2.4.19,
否则 java 程序将看起来像挂起一样(解决方法:control-Z/bg/fg,或以上)
RHEL3 Update 2(或以上),SUSE 没有问题。
1. 我们将使用 netca(网络配置助手)来配置 SQL*Net
监听器。TAF(透明的应用程序故障切换)部分我们将
手工完成。
a. 以 oracle 身份运行 netca 创建两个监听器(在一个节点上):
$ export LD_ASSUME_KERNEL=2.4.19 (只用于 RHEL3 vanilla 或 Update1)
$ netca
i. 屏幕显示:“Oracle Net Config...”
选择:“Cluster configuration”
单击“Next”
ii.屏幕显示:“TOPSNodes”
实际情况下我们应选择所有节点,在此只要保留 raclinux1 就行了
选择:“raclinux1”
单击“Next”
iii.屏幕显示:“Welcome”
选择:“Listener configuration”
单击“Next”
iv.屏幕显示:“Listener Configuration, Listener”
选择:“Add”
单击“Next”
v. 屏幕显示:“Listener Configuration, Listener Name”
保留:“LISTENER”
单击“Next”
vi.屏幕显示:“Listener Configuration, Select Protocols”
保留:“TCP”
单击“Next”
vii.屏幕显示:“Listener Configuration, TCP/IP Protocol”
保留: "1521"
单击“Next”
viii.屏幕显示:“Listener Configuration, More Listeners?”
选择:“Yes”
单击“Next”
ix.在实际的硬件(两个或更多节点)上,上述步骤已在每个节点上
(都是端口 1521)配置了一个监听器,这非常好。
跳到步骤“x”,否则对于用于培训的“single node RAC”,
使用以下参数重复步骤 iv. 到 vii.:
Listener Name = "LISTENER2"
Port=1522
x. 屏幕显示:"Listener Configuration, More Listeners?"
选择:"No"
单击“Next”
xi.屏幕显示:“Listener Configuration, Select Listener”
选择:“LISTENER2”
单击“Next”
xii.屏幕显示:“Listener Configuration Done”
单击“Finish”(两次)。
b. 启动主监听器:
$ srvctl start nodeapps -n raclinux1
c. 确认两个监听器正在运行:
$ ps -efm|grep tnslsnr
应该看到两行:LISTENER_RACLINUX1 & LISTENER2_RACLINUX1
在 10.1.0.3 中启动的话,每个监听器都有多个线程,因此会
显示更多行。
注意:如果在没有正确设置监视器的情况下调用 dbca,则在数据库创建期间
emca 将无法配置。
d. 获得 tsnames.ora
REDHAT:tnsnames.ora.RedHat
SUSE:tnsnames.ora.SUSE
并将其复制到:
$ORACLE_HOME/network/admin/tnsnames.ora
e. 如果您通过 NETCA 创建了监听器,则 CRS 将自动启动它们,
否则:要在启动时启用自动启动,
将启动行添加到:
REDHAT:/etc/rc.local
SUSE:/etc/init.d/boot.local
su - oracle -c "lsnrctl start listener_raclinux1"
su - oracle -c "lsnrctl start listener2_raclinux1"
2. 使用 dbca 创建数据库时一些选项会看起来有些奇怪,
这是因为我们正在试图创建一个足够小的能适应有限空间的
数据库:
a. 以 oracle 用户身份调用 dbca:
$ export LD_ASSUME_KERNEL=2.4.19 (只用于 RHEL3 vanilla 或 Update1)
$ dbca
i. 屏幕显示:“Welcome...”
选择:“Oracle Real Application Clusters database”
单击“Next”
ii.屏幕显示:“Step 1 of 17:Operations”
选择:“Create a database”
单击“Next”
iii.屏幕显示:“Step 2 of 17:Node Selection”
实际情况下我们应选择所有节点,在此只要保留 raclinux1 就行了
如果没有看到这一信息,检查 VIP/GSD/ONS 是否为 UP
单击“Next”
iv.屏幕显示:“Step 3 of 17:Database Templates”
选择:“Custom Database”
单击“Next”
v. 屏幕显示:“Step 4 of 17:Database Identification”
在两个域中(SID 和 DB Name)都输入“O10G”
单击“Next”
注意:数据库名称为“O10G”(字母“O”,数字“10”和大写字母“G”)
SID:“O10G1”和“O10G2”;1 和 2 由 dbca 自动追加。
不要混淆“O”(字母“O”)和“0”(零)。
vi.屏幕显示:“Step 5 of 16:Management Options”
保留:“Configure the Database with Enterprise Manager”
单击“Next”
vii.屏幕显示:“Step 6 of 16:Database Credentials”
输入:“oracle”作为所有帐号的口令
单击“Next”
viii.屏幕显示:“Step 7 of 14:Storage Options”
保留:“Cluster File System”
单击“Next”
注意:在这一阶段,可以选择 ASM 而非 OCFS
这意味着所有数据文件都将由 ASM 管理,
包括 init.ora、控制文件以及数据库和重做日志文件。
您需要设置原始设备或安装 ASMLib。
ix.屏幕显示:“Step 8 of 14:Database File Locations”
选择:“Use Common Location for All Database Files”
输入:“/ocfs”
单击“Next”
x. 屏幕显示:“Step 9 of 14:Recovery Configuration”
输入位置“/ocfs/flash_recovery_area”
减少:将“Flash Recovery Area Size”减少到 500MB
单击“Next”
xi.屏幕显示:“Step 10 of 14:Database Content”
取消除“Enterprise Manager Repository”外的所有选定
单击:“Standard Database Components”
取消选定:“Oracle Intermedia”和“Oracle XML DB”
单击“OK”
单击“Next”
注意:如果需要的话可以选择使 XML DB 保持打开,这是因为如果您计划
安装 HTML DB 的话,它会有所帮助
注意:如果您在上文中选择了 Spatial 选项,确保
a) 也选择 Intermedia
b) 从 Metalink 应用补丁 3928367
xii.屏幕显示:“Step 11 of 14:Database Services”
单击“Next”
xiii.屏幕显示:“Step 12 of 14:Initialization Parameters”
在“Sizing”选项卡中,更改:
Block Size:2KB
Processes: 100
在 10.1.0.3 中,SGA 内存的计算基于物理内存的百分比,
可以通过选择以下选项来禁用:
“Custom”、“Manual”
Shared Pool = 150M
Buffer Cache = 40M
Java Pool = 50M
PGA Size = 58M
这是为了确保在 VMware 环境中即便在低内存情况下
也能成功创建数据库。
单击“Next”
xiv.屏幕显示:“Step 13 of 14:Database Storage”
选择左侧的“Controlfile”
在“General”选项卡中删除
control03.ctl,突出显示并点击退格键
在“Options”选项卡中将
实例的最大数更改为: 8
将日志历史记录的最大数更改为: 100
展开左侧的“Tablespaces”并选择“SYSAUX”
在“General”选项卡中将大小更改为 150MB
选择“SYSTEM”表空间
在“General”选项卡中将大小更改为 300MB
单击“OK”
在“Storage”选项卡中更改为“Managed in the dictionary”
初始大小:32KB
更改后的大小:128KB
增加幅度:0 (PCTINCREASE,设置为零!)
注意:“Locally Managed”是产品部署的
推荐设置。
我们改为“Managed in the dictionary”有两个原因:
1. 节约了一些空间;用空间换取了位图
分配的速度。
2. 如果 SYSTEM 表空间是本地管理的,则即便是为了
培训/测试,也无法在这个数据库上创建任何
词典管理的表空间。
选择左侧的“TEMP”,并将其大小更改为 10MB
选择左侧的“UNDOTBS1”并将其大小更改为 100MB
展开左侧的“Redo Log Groups”
选择“3”
通过按左下角的 Delete 按钮删除组并确认。
单击“Next”
xv.屏幕显示:“Step 14 of 14:Creation Options”
选择“Generate Database Creation Scripts”
要手动创建数据库(转到下面的步骤 3)
取消“Create Database”的选定 (不推荐,错误 3463569)
或者
(首选)现在就让 dbca 自动创建数据库:
选择“Create Database”(并跳过下面的步骤 3)
每种方法都要检查“Generate Database Creation Scripts”
单击“Finish”
查看摘要并单击“OK”;单击“OK”创建脚本。
大约 50-120 分钟(如果马上创建)— 取决于计算机的速度 —
您将会看到成功的消息。
单击 Exit。
“Do you want to perform another operation?”
单击“no”
注意:如果看到错误消息:
ORA-2142:missing or invalid ALTER TABLESPACE option
只需单击 Ignore。
注意:emca 没有完成配置的错误是由于没有像上面
那样完全配置监听器的缘故。
3. 手动运行数据库创建脚本
(如果如上用 dbca 创建脚本,那么跳过这个步骤,转到步骤 4)
a. 用 CRS 注册数据库:
% srvctl add database -d O10G -o $ORACLE_HOME
$ srvctl add instance -d O10G -i O10G1 -n raclinux1
$ $ORA_CRS_HOME/bin/crs_stat -t
疑难解答:
% srvctl add database -d O10G -o $ORACLE_HOME
PRKP-1037 :Failed to create cluster database O10G.
b. 使用手动脚本创建数据库:
$ cd /opt/oracle/admin/O10G/scripts
$ time ./O10G1.sh (约 50 分钟)
输入:oracle,作为所有口令
c. 使用 srvctl 启动数据库,以便使其可以用 CRS 注册
$ sqlplus "/ as sysdba"
SQL> shutdown immediate;
$ srvctl start instance -d O10G -i O10G1
d. 要在启动时启用自动启动,(如果已用 CRS 注册,则 10g 不需要如此):
United Linux:
在 /etc/sysconfig/oracle(包含在 orarun 程序包中)中更改
START_ORACLE_DB="yes"
RedHat:
将启动行添加到 /etc/rc.local 中
su - oracle -c "dbstart"
4. 启用数据库的自动启动,缩小 SGA 的大小:
a. 编辑 /etc/oratab:
如果手动创建数据库,将下列行添加到 /etc/oratab:
O10G:/opt/oracle/DB10g:Y
如果 dbca 自动创建了数据库,则 CRS 将在重启或失败时自动启动
实例。使用 srvctl 启动/停止
或者启用/禁用该自动操作。
b. 缩小实例的 SGA 大小以节约内存。这对 vmware 用户
尤其有用。我们还将修复一些其他的 init.ora 参数,并远离 spfile 以便
并远离 spfile 以便使后面的 init.ora 修改
更容易。如果在 dbca 步骤 2.a.viii. 中选择了 ASM 作为主存储,
而且您希望从 spfile 转换出去,以先进行步骤“iii.”,然后进行
步骤“i.”的顺序完成。如果您的 init.ora 不在
ASM 内,则可以放心地先执行“i.”然后执行“ii.”或“iii.”,
或者更常见的先执行“iii.”然后执行“i.”
i. 禁用 spfile(如果使用 ASM 作为主数据库存储则不禁用):
确认发出:
$ srvctl config database -d O10G -a
禁用 spfile:
$ srvctl modify database -d O10G -p ""
再次发出上面的确认命令。
现在执行下面的“ii.”或“iii.”。
ii.使从支持文件获得的预先编辑的 init.ora 就位 (/opt/oracle/DB10g/dbs/initO10G1.ora)。
iii.手动编辑 initO10G1.ora,如下
(如果进行了上面的 cp,则跳过这一步):
$ cd $ORACLE_HOME/dbs
$ sqlplus "/ as sysdba"
SQL> create pfile from spfile;
SQL> exit
现在编辑新创建的 initO10G1.ora 并进行以下更改:
*.db_cache_size=40M
*.java_pool_size=20M
*.shared_pool_size=55M
*.cluster_database_instances=2
*.cluster_database=TRUE
O10G1.thread=1
O10G1.instance_number=1
O10G1.local_listener='LISTENER_O10G1'
O10G1.remote_listener='LISTENER_O10G2'
O10G1.undo_tablespace='UNDOTBS1'
O10G2.thread=2
O10G2.instance_number=2
O10G2.local_listener='LISTENER_O10G2'
O10G2.remote_listener='LISTENER_O10G1'
O10G2.undo_tablespace='UNDOTBS2'
_lm_send_mode="global_ordering" # Critical for SLES9/VMware/10gRAC
iv.重新启动实例以确保更改生效:
$ srvctl stop instance -d O10G -i O10G1
$ srvctl start instance -d O10G -i O10G1
ipcs 应显示大小为 128MB 的一段
5. 将第二个实例添加到数据库,有两个选项可用于此;选择选项 1:
a. (首选)选项 1:使用 DBCA 添加实例
i. 创建第二个实例
$ dbca
选择:RAC、Instance Management、Add instance
user:sys, passwd:oracle, next, next, next,
(可选,节约空间:将大小更改为 50MB)完成。
Instance Summary:OK
如果“Instance Management”变灰,最可能是由于
手动创建的数据库而非通过 DBCA 创建的。在该情况下发出如下命令:
% srvctl add database -d O10G -o $ORACLE_HOME
$ srvctl add instance -d O10G -i O10G1 -n raclinux1
$ srvctl add instance -d O10G -i O10G2 -n raclinux1
然后重新运行上面的 dbca 步骤。(注意:由于使用 VMware
的特殊情况,我们将两个实例都添加到 raclinux1,
在实际的硬件上,用实际节点名替换:raclinux2)
10.1.0.3: 由于一个错误(将在下一版本中修复),
EM 失败:
EM configuration failed due to the following error -
Error updating EM configuration for node raclinux1
单击 OK 忽略。(我们将在以后修复它。)
安装程序询问“Do you want perform another operation?”
单击“NO”。
如果自动启动失败,可以使用下列命令启动:
$ srvctl start instance -d O10G -i O10G2
ii.使两个实例都使用同一 init.ora(RAC 最佳实践):
$ cd $ORACLE_HOME/dbs
$ mv initO10G2.ora initO10G2.ora.orig
$ ln -s initO10G1.ora initO10G2.ora
b. 选项 2:手动添加另一个实例:
i. 获取 addinstance.sh 脚本
ii.设置另一个 init.ora 文件:
$ cd $ORACLE_HOME/dbs
$ ln -s initO10G1.ora initO10G2.ora
iii.添加第二个实例。
以 oracle 用户身份运行:
$ srvctl add instance -d O10G -i O10G2 -n raclinux1
$ $ORA_CRS_HOME/bin/crs_stat -t
$ cd /opt/oracle/admin/O10G/scripts
$ ./addinstance.sh
$ srvctl start instance -d O10G -i O10G2
6. 您现在在同一节点上就有了两个实例,下面确认一下:
a. 在 Linux 层级上:
ipcs (应看到两个大段)
ps -ef|grep dbw (应看到两个 dbwr 的进程)
b. 在 Oracle 层级上:
sqlplus "sys/oracle@O10G1 as sysdba"
sqlplus "sys/oracle@O10G2 as sysdba"
sqlplus "sys/oracle@O10G-TAF as sysdba"
sqlplus "sys/oracle@O10G-NOTAF as sysdba"
上面所有这些实例都应连接到数据库,为确认您连接到了
哪个实例,执行:
SQL> select host_name,instance_name from v$instance;
c. 您还需要将 Enterprise Manager 配置好,
管理并监视到以下地址的连接:
http://raclinux1.us.oracle.com:5500/em
用户:sys 口令:oracle
我们来修复一些配置:
i. 用支持文件中提供的文件替换 /opt/oracle/DB10g/bin/emctl.pl。
这将修复在 VMware 环境中更容易出现的代理
启动/停止问题。Oracle 将来发行的版本中将包含这一修复。
ii.(可选,强烈推荐)由于在一个节点上发现了两个实例,
没有正确配置 targets.xml 以发现两个实例和监听器。
要添加第二个实例和监听器目标:
$ emctl stop dbconsole
$ cd $ORACLE_HOME/raclinux1*1/sysman/emd
<将监听器与实例 xml 定义下载并解压到这个目录>
$ cp -p targets.xml targets.xml_single_instance
$ emctl config agent addtarget `pwd`/targets-add-inst.xml
$ emctl config agent addtarget `pwd`/targets-add-list.xml
$ emctl start dbconsole
您还可以选择在下面的步骤“iv.”完成后或在此阶段结束时重启动,
这样就能确知它是否有效。(不能将两个目标添加到一个 xml
文件中)
这一步骤在实际硬件上是不需要的,这是因发现过程会正常运行。
iii.要在重启动时自动启动,将:
su - oracle -c "emctl start dbconsole"
添加到 /etc/rc.local (RedHat) 或 /etc/init.d/boot.local (SUSE)。
7. (可选)安装示例模式。
由于我们没使用预先创建的数据库(想要自定义:了解如何自定义,并获得
对计算机来说足够小的数据库),
没有安装示例模式的选项。我们需要用所随附
CD 来安装它:
a. 将 Oracle 10g 随附 CD 放入 CD 托盘中;
Linux 会将其自动挂载,并在桌面上添加一个“CDROM”图标。
否则,以 root 身份执行:
Red Hat:# mount /mnt/cdrom
SUSE:# mount /media/cdrom (以 oracle 用户挂载也可以)
b. 以 oracle 用户身份运行安装程序:
$ cd $ORACLE_HOME/oui/bin (Do NOT cd into /mnt/cdrom or /media/cdrom)
$ ./runInstaller
i. 屏幕显示:“Welcome”
单击“Next”
ii.屏幕显示:“Specify File Locations”
确认 xml 路径:/media/cdrom/stage/products.xml
将 Name 更改为:DB10g
验证 Path 是否为:/opt/oracle/DB10g
单击“Next”
iii.屏幕显示:“Select Nodes”
实际情况下我们应选择所有节点,在此只要保留 raclinux1 就行了
单击“Next”
注意:如果从 cdrom 运行安装程序,则不会显示节点选择。
iv.屏幕显示:“Select a Product to Install”
选择:“Oracle Database 10g Products”(最上面的选项)
包括 Oracle JDBC、SQLJExamples 等
单击“Next”
v. 屏幕显示:Summary
单击“Install” (大约 5 分钟)
如果未找到文件:%fileName%,单击 Ignore。
vi.弹出窗口:以 root 身份运行 /opt/oracle/DB10g/root.sh
# /opt/oracle/DB10g/root.sh
可能选择选项 3(不安装任何 Legato 软件),返回安装程序,
单击 OK 完成。
“Do you want to perform another operation?”
单击“no”
c. 现在我们有了创建示例模式的脚本。要加载它,使用 mksample.sh
(它还将重新编译所有无效对象)
从支持文件获得 mksample.sh。
$ time sh ./mksample.sh >& /tmp/mksample.log (大约 40 分钟)
由于缺少数据库支持(如对空间的支持),一些对象无法创建
是正常的。
8. 一般注意事项:
a. 要启动/停止数据库
(这将在启动时由 CRS 自动完成):
$ srvctl stop database -d O10G
$ srvctl start database -d O10G
PRKP-1001 :Error starting instance O10G1 on node raclinux1
CRS-1005:Failed to get required resources
CRS-0223:Resource ora.O10G.O10G1.inst has placement error.
这是由于有两个实例在同一节点上。可能的变通方法是:
$ srvctl start instance -d O10G -i O10G1
$ sleep 10
$ srvctl start instance -d O10G -i O10G2
b. 检查数据库是如何配置的:
srvctl config database -d O10G -a
示例输出:
raclinux1 O10G1 /opt/oracle/DB10g
raclinux1 O10G2 /opt/oracle/DB10g
DB_NAME:O10G
ORACLE_HOME:/opt/oracle/DB10g
SPFILE:null:
DOMAIN:null:
DB_ROLE:null:
START_OPTIONS:null:
c. 在 srvctl 中打开跟踪:
$ export SRVM_TRACE=true
d. 将另一节点添加到 RAC:从一个 *现有* RAC 成员/节点运行:
$ cd $ORA_CRS_HOME/oui/bin/ (以 oracle 用户身份)
$ ./addNode.sh
按照提示进行操作,oui 会将软件复制到远程节点
稍后可以使用 dbca 将一个实例添加到该新节点。不需要使用
CDs/ISO 来重新安装该软件。OUI 会将现有的 ORACLE_HOME 镜
像到新建主机。
-- 完成(注意:可能会从 EM 得到一个警告;忽略就可以了。)
这个脚本只供开发和评估使用。Oracle 将不会支持产品部署。
|