课程目标:
1、DBA的工作
第一,评估数据库服务器的硬件,根据业务的需求,比如数据量,业务量等,决定服务器的配置
第二,安装数据库软件
第三,规划数据库及安全策略
第四,创建,迁移然后打开数据库
第五,备份数据库
第六,创建用户,配置网络连接
第七,部署应用,创建表空间,创建表,创建存储过程,创建触发器等
第八,恢复出问题的数据库
第九,监控数据库的性能
2、管理数据库的工具
为完成上面的任务,oracle提供了一些工具
3、安装规划
(1)首先要明确安装目的,是要安装一个单实例的数据库还是一个RAC的数据库,如果只是安装单实例的数据库,那就直接安装数据库就可以了,如果要部署RAC,那么就需要先安装GI,配置ASM。管理Ⅰ不包括RAC的内容,但是包括ASM的内容,故需要先安装GI,然后创建一个单实例的数据库。
(2)明确对硬件的最低要求,一般通过联机文档或者MOS进行查看确认,如果没有MOS账户,可以查看http://blog.itpub.net/17252115/viewspace-751427/。
(3)对于安装顺序,如果是部署RAC,推荐是先安装GI,配置ASM,再安装数据库。如果先安装数据库,再去安装GI,就需要手工注册你的数据库并将文件迁移到ASM,就很麻烦了。
(4)安装的时候如果需要用到存储,还需要存储的工程师进行配合。
4、GI和数据库安装的系统要求
内存的要求:
磁盘空间的要求:
5、操作系统的组和用户
安装之前需要创建相关的组和用户,对于用户,如果只是安装Oracle,一般就创建用户Oracle,如果要安装GI,一般创建用户Grid,对于组,如果只是安装数据库软件,只需要创建oinstall组和dba组,如果还要安装GI,还可以创建asmdba,asmoper,asmadmin,当然你也可以只使用dba这个组,使用这么多组的原因就是细分权限。
组名 | 作用 |
oinstall | oinstall 组是Oracle推荐创建的OS用户组之一,建议在系统第一次安装oracle软件产品之前创建该oinstall组,理论上该oinstall组应当拥有oracle软件产品目录(例如$CRS_HOME和$ORACLE_HOME)和oracle Inventory信息目录仓库,oracle Inventory信息目录记录了系统上安装过的oracle产品的记录。 |
dba | 是我们必须要创建的一种系统DBA用户组(dba),若没有该用户组我们将无法安装数据库软件及执行管理数据库的任务。 |
oper | 是一种额外的用户组(oper),我们可以选择要不要创建该用户组,创建该用户组可以满足让os用户行使某些数据库管理权限(包括SYSOPER角色权限)的目的。注意SYSOPER的权限包括startup和shutdown,所以要小心为该用户组添加成员。 |
asmadmin | 如果使用ASM,那么我们创建osasm(asmadmin)用户组,该OSASM用户组的成员将被赋予SYSASM权限,以满足组成员管理Oracle Clusterware和Oracle ASM的权限需求。 |
asmdba | 该用户组的成员将被赋予读写访问ASM文件的权限。GI/CRS拥有者用户和所有oracle数据库软件的拥有者必须是该组的成员。同时所有dba用户组的成员也必须是asmdba组的成员。 |
asmoper | asmoper和oper类似都是额外的可选择创建的用户组,创建该独立的用户组以满足赋予用户一套受限的ASM实例管理权限(ASM的SYSOPER角色),该权限包括了启动和停止ASM实例,默认情况下OSASM(asmadmin)组成员将拥有所有SYSOPER的ASM管理权限。 |
6、设置环境变量
Oracle推荐在安装之前设置以下这4个环境变量:
DB也有自己的NLS_LANG参数,来标识数据库的语言,地域,字符集。可以通过以下的SQL来查看:
SELECT * FROM v$nls_parameters; DB的NLS_LANG和客户端环境变量中NLS_LANG尽可能的保持一致。那么为什么要保持一致呢?那是因为如果字符集不匹配,有可能在DB和Client间相互转换的过程中,出现字符转换错误的情况。7、检查系统
运行runInstaller,会去检查temp目录空间,操作系统版本,补丁包,依赖包,系统和内核参数,X server权限,DISPLAY环境变量,swap空间,ORACLE_HOME目录等。
8、安装方案
第一部分:安装GI
第二部分:安装DB
9、安装GI
(1)创建依赖包列表文件,并安装依赖包
[root@localhost ~]# cat ora_software.txt
binutils*
compat-libstdc++*
compat-libcap1*
elfutils-libelf*
elfutils-libelf-devel*
elfutils-libelf-devel-static*
gcc*
gcc-c++*
glibc*
glibc-common*
glibc-devel*
glibc-headers*
kernel-headers*
libaio*
libaio*
libgcc*
libgomp*
libstdc++*
libstdc++-devel*
make*
pdksh*
sysstat*
unixODBC*
unixODBC-devel*
挂载光驱
[root@oracletest ~]# mount /dev/cdrom /media/
mount: block device /dev/sr0 is write-protected, mounting read-only
创建本地YUM的脚本
[root@precise ~]# cat createlocalyum.sh
#!/bin/bash
cd /etc/yum.repos.d/
mkdir bak
mv *.repo bak/
cat << EOF > local.repo
[Local]
baseurl=file:///media/Server
gpgcheck=0
enabled=1
EOF
yum clean all
yum makecache
创建本地YUM并安装依赖包
[root@oracletest ~]# sh createlocalyum.sh
[root@localhost ~]#cat ora_software.txt | xargs yum install -y
(2)创建用户、组及目录脚本,并运行脚本
[root@localhost ~]# cat ora_user_dir.sh
#!/bin/bash
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
useradd -g oinstall -G dba grid
echo "123456" | passwd --stdin oracle
echo "123456" | passwd --stdin grid
mkdir -p /u01/app/grid
mkdir -p /u01/app/grid/product/11.2.0/gird
chown -R grid:oinstall /u01
mkdir -p /u01/app/oracle
chown oracle:oinstall /u01/app/oracle
chmod -R 775 /u01
[root@localhost ~]#sh ora_user_dir.sh
(3)创建环境变量列表文件,并增加环境变量到配置文件
[root@localhost ~]# cat ora_env.txt
# Oracle Settings
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME
ORACLE_SID=stone; export ORACLE_SID
NLS_LANG=american_america.zhs16gbk;export NLS_LANG
PATH=$ORACLE_HOME/bin:$PATH; export PATH
[root@localhost ~]#cat ora_env.txt >> /home/oracle/.bash_profile
[root@localhost ~]# cat gi_env.txt
#Grid Settings
ORACLE_BASE=/u01/app/grid
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/grid
ORACLE_SID=+ASM
PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
[root@localhost ~]#cat gi_env.txt >> /home/grid/.bash_profile
切换到oracle用户,确认环境变量已生效
[root@ localhost ~]# su - oracle
[oracle@ localhost ~]$ env | grep ORACLE
ORACLE_SID=stone
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
切换到grid用户,确认环境变量已生效
[root@oracletest1 ~]# su - grid
[grid@oracletest1 ~]$ env | grep ORACLE
ORACLE_SID=+ASM
ORACLE_BASE=/u01/app/grid
ORACLE_HOME=/u01/app/grid/product/11.2.0/grid
(4)使用root用户创建裸设备
先分别为磁盘创建分区
[root@oracletest1 ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xaa0a029a.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-261, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-261, default 261):
Using default value 261
Command (m for help): p
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xaa0a029a
Device Boot Start End Blocks Id System
/dev/sdb1 1 261 2096451 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
分区结果
[root@oracletest1 ~]# cat /proc/partitions
major minor #blocks name
8 0 41943040 sda
8 1 204800 sda1
8 2 4096000 sda2
8 3 37641216 sda3
8 16 2097152 sdb
8 17 2096451 sdb1
8 32 2097152 sdc
8 33 2096451 sdc1
8 48 2097152 sdd
8 49 2096451 sdd1
8 64 2097152 sde
8 65 2096451 sde1
8 80 2097152 sdf
8 81 2096451 sdf1
8 96 2097152 sdg
8 97 2096451 sdg1
使分区生效
[root@oracletest1 ~]# partprobe
将分区映射为raw设备:
[root@oracletest1 ~]# vim /etc/udev/rules.d/60-raw.rules
[root@oracletest1 ~]# tail -12 /etc/udev/rules.d/60-raw.rules
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
KERNEL=="raw1", OWNER="grid",GROUP="dba", MODE="0666"
ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw2 %N"
KERNEL=="raw2", OWNER="grid",GROUP="dba", MODE="0666"
ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw3 %N"
KERNEL=="raw3", OWNER="grid",GROUP="dba", MODE="0666"
ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw4 %N"
KERNEL=="raw4", OWNER="grid",GROUP="dba", MODE="0666"
ACTION=="add", KERNEL=="sdf1", RUN+="/bin/raw /dev/raw/raw5 %N"
KERNEL=="raw5", OWNER="grid",GROUP="dba", MODE="0666"
ACTION=="add", KERNEL=="sdg1", RUN+="/bin/raw /dev/raw/raw6 %N"
KERNEL=="raw6", OWNER="grid",GROUP="dba", MODE="0666"
[root@oracletest1 ~]# ls /dev/raw/
rawctl
[root@oracletest1 ~]# start_udev
Starting udev: udevd[29597]: GOTO 'pulseaudio_check_usb' has no matching label in: '/lib/udev/rules.d/90-pulseaudio.rules'
[ OK ]
[root@oracletest1 ~]# ls /dev/raw/
raw1 raw2 raw3 raw4 raw5 raw6 rawctl
(5)使用grid用户解压grid安装文件
[grid@oracletest1 ~]$ unzip /mnt/hgfs/data/oracle/software/11204/p13390677_112040_Linux-x86-64_3of7.zip
(6)使用oracle用户解压oracle安装文件
[oracle@oracletest1 ~]$ unzip /mnt/hgfs/data/oracle/software/11204/p13390677_112040_Linux-x86-64_1of7.zip
[oracle@oracletest1 ~]$ unzip /mnt/hgfs/data/oracle/software/11204/p13390677_112040_Linux-x86-64_2of7.zip
(7)安装GI
[root@oracletest1 ~]# su - grid
[grid@oracletest1 ~]$ export DISPLAY=192.168.230.1:0.0
[grid@oracletest1 ~]$ cd grid/
[grid@oracletest1 grid]$ ./runInstaller
选择语言,如果这儿选择了简体中文,软件启动后就可以显示中文了。
配置磁盘组,此处只能配置一个磁盘组,可以在安装完成后使用asmca来增加磁盘组,Oracle建议在大部分环境下创建2个磁盘组,一个用于存放数据,一个用于快速恢复区。
为sys和asmsnmp账户设置密码,由于ASM实例不包含数据字典,所有认证方式只有操作系统认证和密码文件认证,sys用户将会被加入到密码文件中(orapw+ASM)并授予sysdba,sysoper和sysasm权限,asmsnmp用户也会被加入到密码文件中但只授予sysdba权限。
指定OSASM,OSDBA,OSOPER组,因为此处只是安装单个实例(standalone server),通常就只使用一个所有者组dba。
此处“Oracle Base”为环境变量ORACLE_BASE的值,“Software Location”为ORACLE_HOME的值。
指定Inventory目录及所有者组,Inventory存储Oracle软件安装的目录信息,数据库的升级、增删组件都需要用到Inventory。Inventory的目录推荐为/u01/app/oraInventory/,所有者组推荐为oinstall,此处输入和选择的内容会写入到/etc/oraInst.loc文件。
此处进行条件检查,不满足安装条件的项目会列出来,如果是缺少相关软件包,就需要先去安装软件包,如果是参数不合适,可以点击“Fix&Chec Again”,以root身份运行一个生成的修复脚本。暂时解决不了又不影响安装的问题,可以勾选“Ignore All”。
以root用户运行脚本:
[root@oragrid ~]# /tmp/CVU_11.2.0.4.0_grid/runfixup.sh
对前面选择的安装选项进行确认。还可以将前面的操作保存为一个响应文件,用于后续相同情况下的静默安装。响应文件是一个文本文件,可以编辑用于不同的安装环境。最后点击“Install”进行安装。
监控安装过程。
“Execute Configuration Scripts”对话框出现,表示需要使用root用户执行这两个脚本,/u01/app/oraInventory/orainstRoot.sh这个脚本修改Invertory目录的权限;
/u01/app/grid/product/11.2.0/grid/root.sh这个脚本复制可执行文件到/usr/local/bin目录,创建/etc/oratab文件,为grid用户创建OCR keys,启动ohasd守护进程,并修改/etc/inittab文件以便在服务器启动的时候启动ohasd。
[root@oragrid ~]# /u01/app/oraInventory/orainstRoot.sh
[root@oragrid ~]# /u01/app/grid/product/11.2.0/grid/root.sh
安装完成后,使用下面的命令可以查看各个资源的状态:
[grid@oracletest1 grid]$ crsctl stat res -t
(8)创建磁盘组
由于在安装GI的时候只能创建一个磁盘组,如果需要增加磁盘组的话,在GI安装完成后,使用asmca命令增加磁盘组。
[grid@oragrid grid]$ export DISPLAY=192.168.230.1:0.0
[grid@oragrid grid]$ asmca
增加完成后,使用下面的命令查看资源状态:
[grid@oracletest1 grid]$ crsctl stat res -t
没有问题的话,建议重启服务器后再次运行上面的命令,确保Oracle Restart正常。
10、安装数据库软件
安装完成GI后,再安装Oracle数据库软件。
[root@oracletest1 ~]# su - oracle
[oracle@oracletest ~]$ export DISPLAY=192.168.230.1:0.0
[oracle@oracletest ~]$ cd database/
[oracle@oracletest database]$ ./runInstaller
选择“Install database software only”,只安装数据库。
选择“Single instance database Installation”,安装单实例数据库。
选择语言。
选择安装版本,一般选择“Enterprise Edition”。
此处“Oracle Base”为环境变量ORACLE_BASE的值,“Software Location”为ORACLE_HOME的值。注意不能包含空格。
指定OSDBA和OSOPER组,默认情况下,指定OSDBA为dba组,获取sysdba权限,指定OSOPER为oper组,获取sysoper权限。这里由于单实例安装不执行职责划分,故都选择dba组。因为oracle用户是属于dba组的,故oracle用户就有了创建数据库的权限(sysdba)。
此处进行条件检查,不满足安装条件的项目会列出来,如果是缺少相关软件包,就需要先去安装软件包,如果是参数不合适,可以点击“Fix&Chec Again”,以root身份运行一个生成的修复脚本。暂时解决不了又不影响安装的问题,可以勾选“Ignore All”。
以root用户运行脚本:
[root@oragrid ~]# /tmp/CVU_11.2.0.4.0_oracle/runfixup.sh
对前面选择的安装选项进行确认。还可以将前面的操作保存为一个响应文件,用于后续相同情况下的静默安装。响应文件是一个文本文件,可以编辑用于不同的安装环境。最后点击“Install”进行安装。
“Execute Configuration Scripts”对话框出现,表示需要使用root用户执行这个脚本。
[root@oragrid ~]# /u01/app/oracle/product/11.2.0/dbhome_1/root.sh
安装完成。
11、静默安装
步骤:
(1)准备响应文件,可以通过安装产生,也可以对模版进行修改。
(2)运行OUI在静默模式:./runInstaller -silent -responsefile ,安装完成后运行相应的脚本(/u01/app/oraInventory/orainstRoot.sh和$ORACLE_HOME/root.sh)。
12、相关习题:
(1)Which task would you perform before you run Oracle Universal Installer (OUI) in silent or suppressed mode for an installation?
A. Run the root.sh script.
B. Create the oraInst.loc file.
C. Create the tnsnames.ora file.
D. Run the oraInstRoot.sh script.
答案:B
(2)You are installing Oracle Database 11g on your server. During the installation Oracle Universal Installer (OUI) prompts you to enter the path of the inventory directory and also prompts you to specify an operating system group name. Which statement is true in this case? A. The ORACLE_BASE parameter is not set. B. The installation is being performed by the root user. C. The operating system group that will be specified should have root user as its member D. The installation is being performed without the "Create Starter Database" option selected. E. The operating system group that will be specified must have permission to write to the inventory director 答案:E (3)You are installing Oracle Database 11g on a machine. When you run the installer, the Universal Installer (OUI) shows the message that says one of the product-specific prerequisite checks has failed: Checking available swap space requirements ... Expected result: 1512MB Actual Result: 1018MB Check complete. The overall result of this check is: Failed <<<< Problem: The system does not have the required swap space. What happens to the installation in this situation? A. It can be continued. B. It resizes the swap space automatically when you proceed further. C. It can be continued, but the instance cannot be started without increasing the swap space. D. It shows a message saying one or more prerequisite checks have failed and the installation cannot proceed. 答案:A欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/) | Powered by Discuz! X3.2 |