课程目标:
1、DBA的工作
第一,评估数据库服务器的硬件,根据业务的需求,比如数据量,业务量等,决定服务器的配置 第二,安装数据库软件 第三,规划数据库及安全策略 第四,创建,迁移然后打开数据库 第五,备份数据库 第六,创建用户,配置网络连接 第七,部署应用,创建表空间,创建表,创建存储过程,创建触发器等 第八,恢复出问题的数据库 第九,监控数据库的性能
2、管理数据库的工具
为完成上面的任务,oracle提供了一些工具 - 安装数据库软件可以使用统一安装器(runInstaller)
- 创建数据库可以用数据库配置助手(dbca)
- 升级可以使用数据库升级助手(dbua)
- 配置网络可以使用网络管理器或者网络配置助手(netmgr、netca)
- 管理Oracle可以使用企业管理器(emctl、emca)
- 安装GI后,管理服务可以使用服务控制工具(srvctl)
- SQL*Plus使用命令行工具管理数据库(sqlplus)
- 备份恢复可以使用恢复管理器(rman)
- 数据的导入,导出,迁移可以使用数据泵(impdp、expdp)
- 使用SQL*Loader导入数据(sqlldr)
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和数据库安装的系统要求
内存的要求: - 安装带EM的数据库,至少需要1GB的内存
- 安装GI,至少需要1.5GB的内存
磁盘空间的要求: - 如果只是安装数据库,内存为2GB,swap为3GB,就是说内存为1GB到2GB,那么swap为内存的1.5倍,内存为2GB到16GB,那么swap等于内存,内存大于16GB,那么swap就为16GB;如果安装GI,内存为2GB到8GB,那么swap为内存的2倍,如果内存为8GB到32GB,那么swap为内存的1.5倍,如果内存大于32GB,那么swap就为32GB.
- /tmp目录的空间至少为1GB
- 数据库软件需要3.8GB空间
- GI软件需要4.5GB空间
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个环境变量: - ORACLE_BASE:Oracle目录结构的起始点,Oracle所有的文件都位于这个目录下面,一般都设置为/u01/app/oracle
- ORACLE_HOME:Oracle产品运行的目录,如果设置了ORACLE_BASE,可以不设置,为方便维护和管理一般设置为/u01/app/oracle/product/11.2.0/dbhome_1
- ORACLE_SID:Oracle System Identifier,用于在1台服务器上面标识不同的实例,默认情况下,实例名就是ORACLE_SID的值。
- NLS_LANG:National Language Support,用于定义语言,地域及客户端字符集,格式是NLS_LANG=language_territory.charset,Linux/Unix下NLS_LANG是一个环境变量,Windows下NLS_LANG一般是在注册表里面设置,Linux/Unix下的设置方式为:export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1,Windows下在HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_目录下
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
|