linux下oracle的安装

文章标签: linux,oracle
2015-1-12 19:30:41     8 人阅读    

首先安装linux
 
1  Oracle 10g 在redhat 5 .1下的安装 
 
1.1 安装RPM包  
 
 
 
# rpm –ivh 包名(包装RPM包) 
 
1.2              创建oracle组和用户 
 
创建用于安装和污染源oracle 10g软件的linux组和用户帐户。用户帐户将称为oracle,而组将称为oinstall和dba。以root用户身份执行以下命令。 
 
# groupadd oinstall 
 
# groupadd dba 
 
# useradd –m –g oinstall –G dba oracle 
 
#  passwd oracle(设置用户oracle密码) 
 
例如: 
 
# passwd oracle 
 
Changing password for user oracle. 
 
New password: 
 
Retype new password: 
 
passwd:all authentication tokens updated successfully. 
 
创建oracle安装目录 
 
# mkdir –p /DBSoftware/app/oracle(创建oracle安装目录ORACLE_BASE) 
 
# chown –R oracle:oinstall /DBSoftware(把文件夹授权给用户oracle) 
 
1.3  配置linux内核参数 
 
# vi  /etc/sysctl.conf 
 
############### 
 
kernel.sysrq=1 
 
 kernel.msgmni=1024 
 
 kernel.shmmax=2147483648 
 
 kernel.shmmni=4906 
 
 kernel.shmall=2097152 
 
 kernel.sem=1024 64000 200 512  
 
 fs.file-max=65536  
 
 net.ipv4.ip_local_port_range=1024 65000 
 
 net.ipv4.tcp_sack=0  
 
 net.ipv4.tcp_timestamps=0 
 
 net.ipv4.tcp_max_syn_backlog=8192 
 
 net.ipv4.tcp_keepalive_time=120 
 
 net.core.rmem_default=262144 
 
 net.core.rmem_max=262144 
 
 net.core.wmem_default=262144 
 
 net.core.wmem_max=262144 
 
 ################## 
 
保存退出。 
 
无需重启,执行以下命令使内核参数生效 
 
#  /sbin/sysctl -p 
 
以 root 用户身份运行以下命令来验证您的设置:  
 
# /sbin/sysctl -a | grep shm 
 
# /sbin/sysctl -a | grep sem 
 
# /sbin/sysctl -a | grep file-max 
 
# /sbin/sysctl -a | grep ip_local_port_range 
 
1.4 为oracle用户设置shell限制 
 
# vi /etc/security/limits.conf 
 
oracle soft nproc 2047 
 
oracle hard nproc 16384 
 
oracle soft nofile 1024 
 
oracle hard nofile 65536 
 
加上以上字符串。 
 
保存退出。 
 
1.5 设置oracle环境变量 
 
# vi /etc/profile 
 
export DISPLAY=:0.0 
 
保存退出。 
 
# source /etc/profile(让修改的环境变量生效) 
 
# su – oracle 
 
# vi .bash_profile 
 
export ORACLE_BASE=/DBSoftware/app/oracle 
 
export ORACLE_SID=orcl 
 
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1 
 
export PATH=$PATH:$ORACLE_HOME/bin 
 
export LD_LIBARY_PATH=$ORACLE_HOME/lib 
 
export NLS_LANG="Simplified Chinese_China".ZHS16GBK 
 
export LANG=en_US(设置以英文显示) 
 
export PATH 
 
保存退出 
 
1.6 修改hosts文件 
 
# vi /etc/hosts 
 
在其中加入以下字符串 
 
IP_address   DB  localhost 
 
保存退出 
 
1.7修改redhat版本文件 
 
 #vi /etc/redhat-release 
 
把版本改为Red Hat Enterprise Linux Server release 4 
 
1.8安装oracle 10g软件 
 
解压oracle 10g安装文件: 
 
首先把10201_database_linux32.zip放到文件夹/opt下,解压文件 
 
# cd /opt 
 
# unzip 10201_database_linux32.zip
# cd database/ 
 
# chmod +x *.sh(授权.sh文件可执行) 
 
# xhost local:oracle non-network connections local being added to access control list 
 
# su – oracle 
 
$cd /opt/database/ 
 
$ ./runInstaller 
 
 
将文件夹Backup的读写权限授予oracle用户 
chown oracle:oinstall Backup/

 
2 遇到的问题
 
ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/oradata/oracle/112/dbs/in
启动oracle时找不到spfile文件,报ORA-01078和LRM-00109错误
[oracle@localhost ~]$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.2.0.1.0 Production on Wed Apr 11 17:45:40 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
 
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/oradata/oracle/112/dbs/initORCL.ora'
 
解决方法:
1.启动时指定pfile文件
SQL> startup pfile=/oradata/oracle/admin/orcl/pfile/init.ora.3102012232637
ORACLE instance started.
 
Total System Global Area 523108352 bytes
Fixed Size                  1337632 bytes
Variable Size             314574560 bytes
Database Buffers          201326592 bytes
Redo Buffers                5869568 bytes
Database mounted.
Database opened.
2.启动后,重新创建spfile文件
SQL> create spfile from pfile='/oradata/oracle/admin/orcl/pfile/init.ora.3102012232637';
 
File created.
3.关闭数据库
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
4.此时启动就不需要指定pfile文件了,默认以spfile文件启动
SQL> startup
ORACLE instance started.
 
Total System Global Area 523108352 bytes
Fixed Size                  1337632 bytes
Variable Size             314574560 bytes
Database Buffers          201326592 bytes
Redo Buffers                5869568 bytes
Database mounted.
Database opened.
 
 
3修改字符编码
5:redhat5.1(linux)下面oracle10G中文显示乱码-----默认字符集:WE8ISO8859P1需要将字符集修改为:ZHS16GBK 
 
  1)以oracle用户登录数据库,执行命令: select * from nls_database_parameters where parameter='NLS_CHARACTERSET';----查看当前字符集 
  PARAMETER                                VALUE 
  ---------------------------------------- ---------------------------------------- 
  NLS_CHARACTERSET                         WE8ISO8859P1 
 
  2)执行命令: shutdown immediate--关闭数据库 
  Database closed. 
  Database dismounted. 
  ORACLE instance shut down. 
  3)执行命令:SQL> startup mount--启动数据库到mount状态 
  ORACLE instance started. 
  Total System Global Area  205520896 bytes 
  Fixed Size                  1266608 bytes 
  Variable Size             100666448 bytes 
  Database Buffers          100663296 bytes 
  Redo Buffers                2924544 bytes 
  Database mounted. 
 
  4)执行命令SQL> alter system enable restricted session;---限制session 
 
  5)执行命令SQL> show parameter job_queue_processes;  ----查询相关参数并修改 
   NAME                                 TYPE        VALUE 
   ------------------------------------ ----------- ------------------------------ 
   job_queue_processes                  integer     10 
 
   SQL> show parameter aq_tm_processes;  
   NAME                                 TYPE        VALUE 
   ------------------------------------ ----------- ------------------------------ 
   aq_tm_processes                      integer     0 
 
   SQL> alter system set job_queue_processes=0; 
   System altered. 
 
   6)SQL> alter database open;--打开数据库 
   Database altered 
 7)SQL> alter database character set ZHS16GBK; 
    alter database character set ZHS16GBK 
    * 
   ERROR at line 1: 
   ORA-12712: new character set must be a superset of old character set 
   出现错误提示,新字符集必须是老字符集的超集,也就原来字符集是新字符集的子集, 
   可以再Oracle官方文档上查询字符集包含关系。下面使用Oracle内部命令internal_use, 
   跳过超集检查,生产环境不建议使用此方法。 
 
   再次执行命令:SQL> alter database character set internal_use ZHS16GBK;           
   Database altered 
 
   8)执行命令:SQL> select * from nls_database_parameters where parameter='NLS_CHARACTERSET'; ---查看字符集 
   PARAMETER                                VALUE 
   ---------------------------------------- ---------------------------------------- 
   NLS_CHARACTERSET      
   ZHS16GBK 
   9)执行命令:SQL> shutdown immediate ---关闭数据库 
   Database closed. 
   Database dismounted. 
   ORACLE instance shut down 
 
   10)执行命令:SQL> startup mount  ---启动数据库到mount状态 
   ORACLE instance started. 
   Total System Global Area  205520896 bytes 
   Fixed Size                  1266608 bytes 
   Variable Size             100666448 bytes 
   Database Buffers          100663296 bytes 
   Redo Buffers                2924544 bytes 
   Database mounted. 
 
   11)执行命令:SQL> alter system set job_queue_processes=10; ---将相关参数改回原来值,job_queue_processes 
   System altered 
   12)执行命令:SQL> alter database open; ---打开数据库 
   Database altered 

 
 
4 oracle的操作
功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份。
大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失)。

Oracle有个好处,虽然你的电脑不是服务器,但是你装了oracle客户端,并建立了连接
(通过net8 assistant中本地-->服务命名 添加正确的服务命名 
其实你可以想成是客户端与服务器端修了条路,然后数据就可以被拉过来了)
这样你可以把数据导出到本地,虽然可能服务器离你很远。
你同样可以把dmp文件从本地导入到远处的数据库服务器中。
利用这个功能你可以构建俩个相同的数据库,一个用来测试,一个用来正式使用。

执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,
DOS中可以执行时由于 在oracle 8i 中  安装目录\ora81\BIN被设置为全局路径,
该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。
oracle用java编写,我想SQLPLUS.EXE、EXP.EXE、IMP.EXE这俩个文件是被包装后的类文件。
SQLPLUS.EXE调用EXP.EXE、IMP.EXE他们所包裹的类,完成导入导出功能。

下面介绍的是导入导出的实例,向导入导出看实例基本上就可以完成,因为导入导出很简单。
数据导出:
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
   exp system/manager@TEST file=d:\daochu.dmp full=y
2 将数据库中system用户与sys用户的表导出
   exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
3 将数据库中的表table1 、table2导出
   exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2) 
4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
   exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"
  
     上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。
                     不过在上面命令后面 加上 compress=y  就可以了

数据的导入
1 将D:\daochu.dmp 中的数据导入 TEST数据库中。
   imp system/manager@TEST  file=d:\daochu.dmp
   上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
   在后面加上 ignore=y 就可以了。
2 将d:\daochu.dmp中的表table1 导入
imp system/manager@TEST  file=d:\daochu.dmp  tables=(table1) 

基本上上面的导入导出够用了。

 


create temporary tablespace user_temp   

tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf'  

size 50m   

autoextend on   

next 50m maxsize 20480m   

extent management local;   

  

//创建数据表空间   

create tablespace test_data   

logging   

datafile 'D:\oracle\oradata\Oracle9i\user_data.dbf'  

size 50m   

autoextend on   

next 50m maxsize 20480m   

extent management local;   

  

//创建用户并指定表空间   

create user username identified by password   

default tablespace user_data   

temporary tablespace user_temp;   

  

//给用户授予权限   

  

grant connect,resource to username;   

  

//以后以该用户登录,创建的任何数据库对象都属于user_temp 和user_data表空间,

这就不用在每创建一个对象给其指定表空间了  

撤权:   

       revoke   权限...   from  用户名; 

删除用户命令 

drop user user_name cascade; 

建立表空间 

CREATE TABLESPACE data01 

DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M 

UNIFORM SIZE 128k; #指定区尺寸为128k,如不指定,区尺寸默认为64k 

删除表空间 

DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES; 

一、建立表空间 

CREATE TABLESPACE data01 

DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M 

UNIFORM SIZE 128k; #指定区尺寸为128k,如不指定,区尺寸默认为64k 

二、建立UNDO表空间 

CREATE UNDO TABLESPACE UNDOTBS02 

DATAFILE '/oracle/oradata/db/UNDOTBS02.dbf' SIZE 50M 

#注意:在OPEN状态下某些时刻只能用一个UNDO表空间,如果要用新建的表空间,必须切换到该表空间: 

ALTER SYSTEM SET undo_tablespace=UNDOTBS02; 

三、建立临时表空间 

CREATE TEMPORARY TABLESPACE temp_data 

TEMPFILE '/oracle/oradata/db/TEMP_DATA.dbf' SIZE 50M 

四、改变表空间状态 

1.使表空间脱机 

ALTER TABLESPACE game OFFLINE; 

如果是意外删除了数据文件,则必须带有RECOVER选项 

ALTER TABLESPACE game OFFLINE FOR RECOVER; 

2.使表空间联机 

ALTER TABLESPACE game ONLINE; 

3.使数据文件脱机 

ALTER DATABASE DATAFILE 3 OFFLINE; 

4.使数据文件联机 

ALTER DATABASE DATAFILE 3 ONLINE; 

5.使表空间只读 

ALTER TABLESPACE game READ ONLY; 

6.使表空间可读写 

ALTER TABLESPACE game READ WRITE; 

五、删除表空间 

DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES; 

六、扩展表空间 

首先查看表空间的名字和所属文件 

select tablespace_name, file_id, file_name, 

round(bytes/(1024*1024),0) total_space 

from dba_data_files 

order by tablespace_name; 

1.增加数据文件 

ALTER TABLESPACE game 

ADD DATAFILE '/oracle/oradata/db/GAME02.dbf' SIZE 1000M; 

2.手动增加数据文件尺寸 

ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf' 

RESIZE 4000M; 

3.设定数据文件自动扩展 

ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf 

AUTOEXTEND ON NEXT 100M 

MAXSIZE 10000M; 

设定后查看表空间信息 

SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE, 

(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE" 

FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C 

WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE 

 

//删除表空间
drop tablespace bigoa_temp including contents and datafiles cascade constraints;
//including contents 删除表空间的内容,如果删除表空间之前表空间中有内容,而未加此参数,表空间删不掉
//cascade constraints 同时删除tablespace中表的外键参照


原文地址:http://www.itmmd.com/201501/480.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

js分页代码(jQuery)   上一篇
下一篇  javax.persistence + hibernate 创建对象类没法数据库自动建表

精彩回复
发表评论
姓名:       

《程序员app》专门为程序员量身定做!