oracle 11g R2安装与配置
Oracle11gR2安装1.1安装前准备:本文是在RHEL6.0x64系统上安装oracle11g
物理内存应不少于1GB,对于VMWARE虚拟机建议不少于1200MB.对于系统中的交换分区设置,应参以下约定:物理内存为1GB~2GB时,交换分区为物理内存的1.5~2倍;物理内存为2GB~16GB时,交换分区与物理内存大小相同;物理内存超过16GB时,交换分区使用16GB就可以了。
对于32位的oracle11g数据库,若程序文件和数据文件安装在同一个分区,则该分区的硬盘空间要求分别为:企业版5.65GB、标准版5.38GB;除此以外,还应确保/tmp目录所在分区的空间不少于1GB,总的来说,建议为oracle11g准备至少8GB的硬盘空间 为oracle用户设置Shell限制:为了优化性能,需要添加oracle用户的限制参数。进程会话限制可以采用pam_limits认证模块来实现,通过修改登录程序login的PAM设置以启用该认证。 修改/etc/security/limits.conf,将用户oracle能够打开的进程数、进程使用的文件数加在。加入如下内容: 注: 第1行是设置进程数软限制;第2行是设置进程数硬限制;第3行是设置文件数软限制;第4行是设置文件数硬限制 /etc/pam.d/login,加入如下内容:
1.在安装oracle时,假设使用名为oracle用户安装oracle数据库,必须以oracle用户登录一次Linux系统。
将pdksh-5.2.14-37.el5_8.1.x86_64.rpm,rlwrap-0.37.tar,install.sh,zysong以及oracle的安装文件拷贝到oracle用户的家目录下。
2.安装oracle时,一定要保证主机名出现在/etc/hosts中。 [root@orclsrv~]#vi/etc/sysconfig/network
[root@orclsrv~]#vi/etc/hosts
重新启动系统 4.配置YUM [root@orclsrv~]#vim/etc/yum.repos.d/rhel.repo [oracle] name=oracle baseurl=file:///mnt/Server enabled=1 gpgcheck=0 挂在光盘到/mnt [root@orclsrv~]#mount/dev/cdrom/mnt mount:blockdevice/dev/sr0iswrite-protected,mountingread-only 关闭防火墙 [root@orclsrv~]#serviceiptablessave iptables:Savingfirewallrulesto/etc/sysconfig/iptables:[OK] 4.创建/u01目录 [root@orclsrv~]#mkdir/u01 5.将oracle11g的安装文件拷贝到/u01中 [root@orclsrvoracle]#mvlinux.x64_11gR2_database_*/u01/ 6.解压安装包 [root@orclsrvu01]#unziplinux.x64_11gR2_database_1of2.zip&&unziplinux.x64_11gR2_database_2of2.zip 7.删除oracle安装文件,节省磁盘空间 [root@orclsrvu01]#rm-rflinux.x64_11gR2_database_* 8.使用oracle用户安装oracle11gR2 9.以oracle用户安装oracle,修改/u01目录的属主和属组为oracle用户 [root@orclsrvu01]#ls-ld/u01/ drwxr-xr-x3rootroot4096Aug1209:56/u01/ [root@orclsrvoracle]#chown-Roracle:oracle/u01/ [root@orclsrvu01]#ls-ld/u01/ drwxr-xr-x3oracleoracle4096Aug1209:56/u01/ 1.2开始安装oracle11gR2使用oracle用户身份运行/u01/database/runinstaller [oracle@orclsrvu01]$ls database [oracle@orclsrvu01]$cddatabase/ [oracle@orclsrvdatabase]$ls docinstallresponserpmrunInstallersshsetupstagewelcome.html [oracle@orclsrvdatabase]$./runInstaller
发现oracle安装界面上的文字都是方块字。
出现这种情况的原因是:oracle所使用的字体在我们当前的操作系统里不存在的原因。 解决办法: 首先创建一个目录 mkdir?Cp/usr/share/fonts/zh_CN/TrueType 将字体文件拷贝到上面创建的目录中 [root@orclsrvoracle]#cpzysong.ttf/usr/share/fonts/zh_CN/TrueType/ [root@orclsrvoracle]#chmodo+r/usr/share/fonts/zh_CN/TrueType/zysong.ttf [oracle@orclsrvdatabase]$./runInstaller
安装oracle软件的同时创建数据库
修改oracle用户的.bash_profile exportORACLE_BASE="/u01/app/oracle" exportORACLE_HOME="/u01/app/oracle/product/11.2.0/dbhome_1" exportPATH=$PATH:$ORACLE_HOME/bin exportORACLE_SID=orcl exportNLS_LANG="SIMPLIFIEDCHINESE_CHINA.UTF8" exporPATH ORACLE基目录:符合OFA的oracle目录结构的根,适用于计算机上的所有oracle软件产品。这个环境变量制定计算机上所有的oracle产品的目录,例如/u01/app/oracle…. 软件位置:<ORACLE_HOME>:当前oracle安装软件的主目录,通常这个环境变量的指定有ORACLE_BASE指示的路径下的一个目录,如/u01/app/oracle/product/ 10.设置环境变量:为了使oracle在安装完成后能够正常工作,还需要为oracle用户配置一些列的环境变量。在Windows环境下,安装oracle软件时创建的注册表条目会自动完成环境变量的设置,但是在unix和Linux环境中,我们需要人工配置这些环境变量。 以下是oracle清单目录的位置以及用户名,我们使用oracle用户即可。
oracle安装之前需要修改很多内核参数,oracle越来越人性化,只需在界面上点击“修补并在次检查”
以root用户身份运行脚本
[root@orclsrvu01]#/tmp/CVU_11.2.0.1.0_oracle/runfixup.sh Responsefilebeingusedis:/tmp/CVU_11.2.0.1.0_oracle/fixup.response Enablefilebeingusedis:/tmp/CVU_11.2.0.1.0_oracle/fixup.enable Logfilelocation:/tmp/CVU_11.2.0.1.0_oracle/orarun.log SettingKernelParameters... kernel.sem=25032000100128 fs.file-max=6815744 net.ipv4.ip_local_port_range=900065500 net.core.rmem_default=262144 net.core.wmem_default=262144 net.core.rmem_max=4194304 net.core.wmem_max=1048576 fs.aio-max-nr=1048576 uid=500(oracle)gid=500(oracle)groups=500(oracle) [root@orclsrvu01]# yum安装依赖的软件包 [root@orclsrvu01]#yum-yinstalllibaioglibccompat-libstdc*elfutils-libelf-devel*gcc-c++libaio-develunixODBC*readline* [root@orclsrvu01]#cd~oracle/ [root@orclsrvoracle]#rpm-ivhpdksh-5.2.14-37.el5_8.1.x86_64.rpm warning:pdksh-5.2.14-37.el5_8.1.x86_64.rpm:HeaderV3DSA/SHA1Signature,keyIDe8562897:NOKEY Preparing...###########################################[100%] 1:pdksh###########################################[100%] 点击重新检查,如下图所示,点击“全部忽略”,在点击“下一步”,这些包是32位的包所以可以忽略。
在创建数据库时,会弹出两次小窗口,点击忽略即可。 口令管理为sys,system用户设置管理口令,启用scott用户,设置管理口令 启用scott用户,该用户默认是锁定状态,不锁定scott用户 提示以root用户运行前面指定的oracle详细目录中的一个脚本orainstRoot.sh。在服务器上首次安装任何oracle产品时,都需要运行该脚本,运行这个脚本会创建名为oraINST.loc的详细目录清单文件,从而能够创建其他目录,为文件设置正确的所属关系和权限。 [root@orclsrv~]#/u01/app/oraInventory/orainstRoot.sh 更改权限/u01/app/oraInventory. 添加组的读取和写入权限。 删除全局的读取,写入和执行权限。
更改组名/u01/app/oraInventory到oracle. 脚本的执行已完成。 [root@orclsrv~]#/u01/app/oracle/product/11.2.0/dbhome_1/root.sh RunningOracle11groot.shscript...
Thefollowingenvironmentvariablesaresetas: ORACLE_OWNER=oracle ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
Enterthefullpathnameofthelocalbindirectory:[/usr/local/bin]: Copyingdbhometo/usr/local/bin... Copyingoraenvto/usr/local/bin... Copyingcoraenvto/usr/local/bin...
Creating/etc/oratabfile... Entrieswillbeaddedtothe/etc/oratabfileasneededby DatabaseConfigurationAssistantwhenadatabaseiscreated Finishedrunninggenericpartofroot.shscript. Nowproduct-specificrootactionswillbeperformed. Finishedproduct-specificrootactions. 、
注销oracle用户后,就可以变成中文界面了 1.3使用脚本检查oracle安装先决条件
install.sh脚本为配置oracle用户的环境变量,安装oracle需要安装的依赖包,改变oracle语言环境,运行脚本之前需要配置IP地址,主机名,yum仓库, [oracle@orclsrv~]$catinstall.sh 使用root用户运行install.sh脚本
运行完脚本查看oracle用户的.bash_profile 执行source.bash_profile 将oracle的安装包拷贝到/u01目录下
解压oracle软件包
删除oracle安装文件
使用oracle用户安装oracle
后面的部分和上节内容一致,请参考。 测试安装完的oracle oracle安装知识点: 设置环境变量:为了使oracle在安装完成后能够正常工作,还需要为oracle用户配置一些列的环境变量。在Windows环境下,安装oracle软件时创建的注册表条目会自动完成环境变量的设置,但是在unix和Linux环境中,我们需要人工配置这些环境变量。
ORACLE_BASE:符合OFA的oracle目录结构的根,适用于计算机上的所有oracle软件产品。这个环境变量制定计算机上所有的oracle产品的目录,例如/u01/app/oracle…. ORACLE_HOME:当前oracle安装软件的主目录,通常这个环境变量的指定有ORACLE_BASE指示的路径下的一个目录,如/u01/app/oracle/product/ ORACLE_SID:将要连接或创建的oracle实例的标识符。该环境变量在大多数环境下必须为8个或8个以下的字符,这些字符以字母开头,并且可以包含字母和数字。在实际应用群集环境下这个环境变量必须为5个或少于5个字符。虽然ORACLE_SID总是被设置为本地连接到的一个实例,默认的实例名为ORCL NLS_LANG:这个环境变量指定用于oracle安装的全局设置,采用的格式为language_territory.character_set。在除了Windows之外的环境中,NLS_LANG的默认值都为“American_AmericaUS7ASCII”。在Windows环境中,NLS_lang的值被设置成为操作系统与键盘设置所指定的区域。 DISPLAY:在Unix下需要为OUI指明图形屏幕显示的发送位置。默认的方法是继承操作系统中DISPLAY环境变量的值,并且按照这个值发送所有输出。 1.4安装oracle时不创建数据库安装oracle时不安装数据库,操作系统准备和环境准备就不做重复截图了。
用root用户脚本之后开始安装oracle11gR2 使用DBCA数据库助手创建数据
退出DBCA
1.5了解oracle数据库管理工具1.OEM:oracle企业管理器 oracle企业管理器有两个工具可以使用。分别是databasecontrol和gridcontrol前者用来管理单实例的环境。gridcontrol是用来管理RAC环境的。gridcontrol必须安装oracle网格计算。我们现在使用的是databasecontrol。 通过databasecontrol访问OEM的方式: https://orclsrv:1158/em 我们还可以使用sqlplus连接数据库 我们还可以使用sqldevelper管理数据库,需要安装sqldevelper sys用户必须以sysdba身份登录 [oracle@orclsrv~]$sqlplus/nolog
SQL*Plus:Release11.2.0.1.0Productionon星期四8月1309:52:582015
Copyright(c)1982,2009,Oracle.Allrightsreserved.
SQL>connsys/123.abc ERROR: ORA-28009:应当以SYSDBA身份或SYSOPER身份建立SYS连接
SQL>connsys/123assysdba 已连接。 SQL> 使用本地用户连接,密码错误也可以连接,远程连接方式就不可以了 SQL>connsys/12333assysdba 已连接。 SQL>connsys/123.abcassysdba 已连接。
ctrl+l可以清屏
1.1.1.使用SCOTT用户连接SQL>connscott/123.abc 已连接。 SQL>showuser; USER为"SCOTT" SQL> 查看当前数据库的名字 使用sys用户连接,查看数据库的名字 SQL>selectnamefromv$database;
NAME --------------------------- ORCL
SQL>selecttable_namefromtabs;
TABLE_NAME -------------------------------------------------------------------------------- DEPT EMP BONUS SALGRADE
1.1.2.创建表Sql语句都要以分号“;”结束。 使用scott用户连接 [oracle@orclsrv~]$sqlplus/nolog SQL>connscott/123.abc 已连接。 SQL>selecttable_namefromtabs;
TABLE_NAME -------------------------------------------------------------------------------- SALGRADE BONUS EMP DEPT 创建一个名为“test”的表,表的结构为“id,name,sex”三个列 SQL>createtabletest( 2idnumber, 3namevarchar2(10), 4sexvarchar2(5) 5); 查看表的结构 SQL>desctest; 名称是否为空?类型 -------------------------------------------------------------------------------------------------------- IDNUMBER NAMEVARCHAR2(10) SEXVARCHAR2(5) 查看test表中所有的列 SQL>select*fromtest;
未选定行------//表中目前没有和任何记录 为test表中插入记录,使用insert命令 SQL>insertintotest(id,name,sex)values(1,'huarong','女');
SQL>insertintotest(id,sex)values(2,'zhangjing',sex)values(3,'liming','男');
SQL>insertintotest(id,sex)values(4,'chenhao','男');
SQL>insertintotest(id,sex)values(5,'ligang','男'); 查看test表中的内容 SQL>select*fromtest;
IDNAMESEX --------------------------------------------- 1huarong女 2zhangjing女 3liming男 4chenhao男 5ligang男 如果向所有的列插入记录,可以省略列 SQL>insertintotestvalues(6,'baijing','女'); SQL>insertintotestvalues(7,'baobao','女'); SQL>select*fromtest;
IDNAMESEX --------------------------------------------- 1huarong女 2zhangjing女 3liming男 4chenhao男 5ligang男 6baijing女 7baobao女 但是这样的插入方式却会失败。 SQL>insertintotestvalues(8,'sunhongzhi'); insertintotestvalues(8,'sunhongzhi') * 第1行出现错误: ORA-00947:没有足够的值 如果插入的列是有限制的,可以这样插入记录
SQL>insertintotest(id,name)values(9,'luwenjuan'); 提交事务 SQL>commit; 提交完成。 通过oraclesqldeveloper查看我刚刚创建的表 查看test表中ID,name列 查看特定的某一行 SQL>select*fromtestwherename='liming';
IDNAMESEX ------------------------------------ 3liming男
SQL>select*fromtestwhereid=6;
IDNAMESEX --------------------------------------- 6baijing女 每个表中都有隐含的列rowid 1.1.3.设置每列在屏幕上显示占用的的字符在sqldeveloper中查看dept表 在sqlplus中查看dept表 会发现在sqlplus中显示比较杂乱 可以修改每一列显示时所占用的字符长度a是固定的格式,不能修改。
如果是字符类型的使用“a”设置,如果是数值型的字段,如deptno就不可以了 SQL>coldeptnoformata3 SQL>select*fromdept;
DEPTNODNAMELOC ----------------------------------- ##########ACCOUNTINGNEWYORK ##########RESEARCHDALLAS ##########SALESCHICAGO ##########OPERATIONSBOSTON
如果是数值类型的字段,我们可以使用“9”来表示
SQL>coldeptnofor99; SQL>select*fromdept;
DEPTNODNAMELOC ------------------------------- 10ACCOUNTINGNEWYORK 20RESEARCHDALLAS 30SALESCHICAGO 40OPERATIONSBOSTON 举例说明: SQL>connsys/123.abcassysdba; 已连接。 SQL>selectfile_name,tablespace_namefromdba_data_files; SQL>colfile_namefora55; SQL>coltablespace_namefora10 SQL> FILE_NAMETABLESPACE ----------------------------------------------------------------- /u01/app/oracle/oradata/orcl/users01.dbfUSERS /u01/app/oracle/oradata/orcl/undotbs01.dbfUNDOTBS1 /u01/app/oracle/oradata/orcl/sysaux01.dbfSYSAUX /u01/app/oracle/oradata/orcl/system01.dbfSYSTEM /u01/app/oracle/oradata/orcl/example01.dbfEXAMPLE
目前默认一行可以显示80字符,超过80字符就会换行。 SQL>showlinesize; linesize80 SQL>setlinesize60; 可以查看以下显示效果: SQL> 一次默认显示14行
SQL>colusernamefora30 SQL>selectusernamefromdba_users; 一次默认显示14行 SQL>showpagesize; pagesize14 修改默认显示的行为100 SQL>setpagesize100 SQL>selectusernamefromdba_users; 以上的colfile_namefora10、linesize、pagesize的设置只在当前会话中有效,断开连接之后就不会再有效果了。可以通过修改$ORACLE_HOME/sqlplus/admin/下的glogin.sql实现 [oracle@orclsrv~]$cd/u01/app/oracle/product/11.2.0/dbhome_1/sqlplus/admin/ [oracle@orclsrvadmin]$ls glogin.sqlhelplibsqlplus.defplustrce.sqlpupbld.sql [oracle@orclsrvadmin]$ [oracle@orclsrvadmin]$vimglogin.sql 添加常用的一些参数 setpagesize100 setlinesize120 coldnamefora20 collocfora15 colfile_namefora55 coltablespace_namefora10 colnamefora20 1.1.1.进入数据库的不同状态NOMOUNT阶段 nomount:已经通过参数文件知道控制文件在哪个位置,但是还没有读取控制文件。此时的状态时started,此时如果控制文件丢失了,实例是无法启动的。此时实例停留在stared状态。 MOUNT阶段 读取了控制文件,是指通过控制文件知道了其他文件(数据文件和日志文件),此时并没有读取数据文件和日志文件,这个状态叫mount状态 读取完控制文件之后,找到了数据文件和日志文件,数据库就处于OPEN状态了。 startupnomount|mount|open shudownnormal|immedieate|transactional|abort 测试过程: SQL>selectstatusfromv$instance;
STATUS ------------------------------------ OPEN
SQL>shutdownimmediate; 数据库已经关闭。 已经卸载数据库。 ORACLE例程已经关闭。
SQL>startupnomount; ORACLE例程已经启动。
TotalSystemGlobalArea1202556928bytes FixedSize2212816bytes VariableSize754977840bytes DatabaseBuffers436207616bytes RedoBuffers9158656bytes
SQL>selectstatusfromv$instance;
STATUS ------------------------------------ STARTED 进入mount阶段,是失败?N SQL>startupmount; ORA-01081:?????????ORACLE-?????? 此时可以使用shutdownimmediate,在startupmount SQL>shutdownimmediate; ORA-01507:??????
ORACLE例程已经关闭。 SQL>startupmount; ORACLE例程已经启动。
TotalSystemGlobalArea1202556928bytes FixedSize2212816bytes VariableSize754977840bytes DatabaseBuffers436207616bytes RedoBuffers9158656bytes 数据库装载完毕。 SQL>selectstatusfromv$instance;
STATUS ------------------------------------ MOUNTED 如果现在想切换到open状态,可以使用alter SQL>alterdatabaSEOpen;
数据库已更改。
SQL>selectstatusfromv$instance;
STATUS ------------------------------------ OPEN
SQL>shutdownimmediate; 数据库已经关闭。 已经卸载数据库。 ORACLE例程已经关闭。 SQL>startupnomount; ORACLE例程已经启动。
TotalSystemGlobalArea1202556928bytes FixedSize2212816bytes VariableSize754977840bytes DatabaseBuffers436207616bytes RedoBuffers9158656bytes SQL>alterdatabaSEOpen; alterdatabaSEOpen * 第1行出现错误: ORA-01507:??????
SQL>alterdatabasemount;
数据库已更改。
SQL>selectstatusfromv$instance;
STATUS ------------------------------------ MOUNTED 如果采用startupnomount或者startupmount命令,必须采用alterdatabase命令来执行打开数据库的操作 1.1.2.关于shutdown的选项的区别直接写shutdown默认状态是normal. SQL>shutdown ORA-01109:??????
已经卸载数据库。 ORACLE例程已经关闭。 normal:这是默认选项,使用该选项时,不允许任何新的用户连接,但是允许继续当前的所有连接,只有所有用户(自愿的)退出登录时,数据库才能真正的关闭 通常,正常的数据库关闭是没有意义的,即使只剩下databasecontrol在运行,也总是存在未退出登录的用户。 immediate:使用这个选项时,不允许任何新的用户连接,当前的所有连接的会话都被终止。任何活动的事务都会都将回滚,随后数据库会被关闭。 transactional:使用这个选项时,不允许任何新的用户连接,没有存在于某个事务中的现有会话被终止,允许当前位于某个事务中的会话在完成该事务之后终止。一但所有会话终止,数据就会被关闭。 abort:就oracle而言,使用这个选项相当于断电。实例被立即终止。此时,任何数据都不会被写入磁盘,任何文件句柄都不会被关闭,同时也不会采用任何有序的方式终止正在 进行的事务。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |