oracle教程-爱代码爱编程
Linux下安装Oracle
下载安装包并解压
解压oracle文件
用ifconfig 查看inter地址
[root@localhostroot]#mkdir -p /usr/local/oracle
[root@localhostroot]#cd /usr/local/oracle
[root@localhostoracle]#unzip linux.x64_11gR2_database_1of2.zip
[root@localhostoracle]#unzip linux.x64_11gR2_database_2of2.zip
执行以上命令后,将会在/usr/local/oracle/下面产生名为database的目录,这就是oracle安装程序的目录
创建用户和用户组
oracle不能在root帐户下进行安装,所以需要为oracle的安装专门创建一个用户,同时需要创建dba和oinstall的用户组。
[root@localhost oracle]#groupadd dba
[root@localhost oracle]#groupadd oinstall
以下命令将创建oracle用户,并设置密码
[root@localhostoracle]#useradd -g oinstall -G dba oracle
[root@localhostoracle]#passwd oracle
准备安装目录
[root@localhost oracle]#mkdir -p /u01/app/oracle
[root@localhost oracle]#mkdir -p /u01/app/oraInventory
[root@localhost oracle]#chown -R oracle:oinstall /u01/app/oraInventory
[root@localhost oracle]#chown -R oracle:oinstall /u01/app/oracle
[root@localhost oracle]#chmod 755 /u01/app/oracle
安装目标目录是用户想将oracle安装到哪个位置的目录,本次我们将oracle安装到/u01/app/oracle目录中,以下为目录创建命令。
设置Linux内核参数
修改vi /etc/sysctl.conf,在最后加入以下内容 后启用# /sbin/sysctl -p
kernel.shmall = 4294967296
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
若报错:
error: “net.bridge.bridge-nf-call-ip6tables” is an unknown key
error: “net.bridge.bridge-nf-call-iptables” is an unknown key
error: “net.bridge.bridge-nf-call-arptables” is an unknown key
解决:
[root@172-1-1-154 oracle]# modprobe bridge
[root@172-1-1-154 oracle]# ls mod|grep bridge
修改vi /etc/security/limits.conf,在最后 # End of file前加入
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
修改vi /etc/hosts 最后一行添加本机ip
oracle用户打开此文件
[oracle@localhost oracle]#vi /home/oracle/.bash_profile
设置环境变量1(如果不行参考环境变量2)
.bash_profile
Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
User specific environment and startup programs
PATH= P A T H : PATH: PATH:HOME/bin
export PATH
umask 022
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
LD_LIBRARY_PATH=/usr/lib:/usr/X11R6/lib
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1
ORACLE_SID=ekp
LD_LIBRARY_PATH=
O
R
A
C
L
E
H
O
M
E
/
j
d
k
/
f
r
e
/
l
i
b
/
i
386
:
ORACLE_HOME/jdk/fre/lib/i386:
ORACLEHOME/jdk/fre/lib/i386:ORACLE_HOME/jdk/jre/lib/i386/server:
O
R
A
C
L
E
H
O
M
E
/
r
d
b
m
s
/
l
i
b
:
ORACLE_HOME/rdbms/lib:
ORACLEHOME/rdbms/lib:ORACLE_HOME/lib:
L
D
L
I
B
R
A
R
Y
P
A
T
H
P
A
T
H
=
LD_LIBRARY_PATH PATH=
LDLIBRARYPATHPATH=ORACLE_HOME/bin:$PATH
NLS_LANG=American_America.AL32UTF8
ctrl+c保存, shift加:加+ 再输入wq保存退出
环境变量2:vi /root/.bash_profile
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export PATH=
O
R
A
C
L
E
H
O
M
E
/
b
i
n
:
ORACLE_HOME/bin:
ORACLEHOME/bin:PATH
export LANG=en_US.UTF-8
应用该文件:1.tail .bash_profile
2.source .bash_profile
执行安装
先测试是否可以用图形界面安装软件
初始化服务:
[root@powerlong4 database]# yum groupinstall “X Window System” “Desktop Platform” Desktop
[root@powerlong4 database]# yum install vnc
注意:yum是联网安装,rpm是用安装包
用root账户输入
[root@orcltest ~]# export DISPLAY=:0.0
注意export DISPLAY=本机PC的真实ip:0.0
[root@orcltest ~]# xhost +
出现下面语句则成功
access control disabled, clients can connect from any host
如果无法打开图形界面,则执行
[root@orcltest ~]# yum install tigervnc-server
进入oracle安装文件
在安装oracle是可能会遇到network错误
可去http://vault.centos.org/6.5/os/x86_64/Packages/ 地址下载如下rpm
根据centos版本下载
用root进入目录安装
–nodeps 无视依赖
–force强制安装
rpm -ivh libstdc+±4.4.7-4.el6.x86_64.rpm
rpm -ivh ppl-0.10.2-11.el6.x86_64.rpm
rpm -ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpm
rpm -ivh mpfr-2.4.1-6.el6.x86_64.rpm
rpm -ivh cpp-4.4.7-4.el6.x86_64.rpm
rpm -ivh kernel-headers-2.6.32-431.el6.x86_64.rpm
rpm -ivh glibc-headers-2.12-1.132.el6.x86_64.rpm
rpm -ivh glibc-devel-2.12-1.132.el6.x86_64.rpm
rpm -ivh libstdc+±devel-4.4.7-4.el6.x86_64.rpm
rpm -ivh gcc-4.4.7-4.el6.x86_64.rpm
rpm -ivh gcc-c+±4.4.7-4.el6.x86_64.rpm
rpm -ivh compat-libstdc+±33-3.2.3-69.el6.x86_64.rpm
rpm -ivh unixODBC-2.2.14-12.el6_3.x86_64.rpm
rpm -ivh unixODBC-kde-2.2.14-12.el6_3.x86_64.rpm
如果装错版本
rpm -qa | grep -i cloog-ppl
查询出已装的rpm的名称
rpm -e 删除的名称
先在/etc/hosts文件里添加IP地址对应主机,例:192.168.40.131 myvm
[oracle@orcltest ~]# export LANG=en_US.UTF-8
[oracle@orcltest ~]# cd /usr/local/oracle/database
[oracle@orcltest ~]# ls
[oracle@orcltest ~]# ./runInstaller
如果无法启动图形界面,则用Xmanager用oracle账户登录
oracle进行check时,如果提示未安装的rpm,查看是否已安装版本。如果已安装比需求的高,则可忽略check。
检查时swap size不足:
root用户: 1.cd /tmp
建2G文件swapfree 2.dd if=/dev/zero of=swapfree bs=32k count=65515
该文件当交换区 3.mkswap swapfree
开启这个交换区 4.swapon swapfree
查看swap空间: 5.free
(2)安装数据库实例:
创建实例时对oracle赋予etc文件夹的权限:chown -R oracle:oinstall /etc
参考地址:http://blog.csdn.net/mchdba/article/details/43086037
[root@orcltest ~]# xhost +
[oracle@orcltest ~]# xhost +
[oracle@orcltest ~]# netmgr 配置监听
[oracle@orcltest ~]# netca 配置监听端口
[oracle@orcltest ~]# dbca 创建实例
以上都是图形界面
常见问题
解锁用户:
1.sqlplus /nolog;–运行sqlplus,进入slqplus环境,/nolog没有参数,即不登入数据库
2.conn/ as sysdba;–以sys身份连接,操作系统认证;
或sqlplus / as sysdba
3.alter user system identified by system;–修改system用户密码为system;
4.alter user system account unlock/lock;–system账户解锁/锁定;
错误: ORACLE not available
解决:SQL>startup force
错误:
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file
解决:原来是没有initicare1.ora文件
解决此问题的方法就是到cd /oracle/app/oracle/admin/orcl/pfile/目录下,将ora.1114201016265复制到dbs目录下,记得改名字
SGA、PGA的分配原则
OLTP:SGA=系统内存0.56,PGA=SGA(0.1~0.2)
OLAP:SGA=系统内存0.48,PGA=SGA(0.45~0.65)
Character Sets:
选择UTF-8
给用户赋权限:chown -R oracle:oinstall /oracle
主机名:hostname
与主机名有关的文件:
hosts
network
还有dbhome里的两个监听文件,(可用netmgr设置)
端口号修改:
/sbin/iptables -I INPUT -p tcp --dport 1521 -j ACCEPT
/etc/rc.d/init.d/iptables save
listener.ora文件如下:
listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora
Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST=
(SID_DESC=
(SID_NAME=ORCL)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_2)
)
(SID_DESC=
(GLOBAL_DBNAME=orcl)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_2)
(SID_NAME=orcl)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522))
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.1.1.34)(PORT = 1521))
)
)
DEFAULT_SERVICE_LISTENER = (ORCL)
INBOUND_CONNECT_TIMEOUT=60
ADR_BASE_LISTENER = /u01/app/oracle
Oracle笔记
当前数据库连接数select count(*) from v p r o c e s s 当前并发连接数 s e l e c t c o u n t ( ∗ ) f r o m v process 当前并发连接数select count(*) from v process当前并发连接数selectcount(∗)fromvsession where status =‘ACTIVE’
数据库最大连接数select value from v$parameter where name =‘processes’
用户解锁
alter user SUNDSPWP_IF account unlock;
删除用户
1.drop user sunds241 cascade
如果报错无法删除当前连接用户:
2.select sid,serial# from v$session where username=‘SUNDS241’;
3.alter system kill session ‘15,19095’; // ‘sid,serial#’
重启监听lsnrctl stop
lsnrctl start
错误oracle
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does notexist
解决:
SQL>startup force
修改最大连接数alter system set processes = 1000 scope=spfile;
1.关闭oracle:shutdown immediate
2.重启oracle:startup
管理员登录sqlplus: 1.su oracle
2.sqlplus / as sysdba
修改用户密码 alter user sunds identified by sunds;
#按用户导出
exp sunds241241/SUNDS241241@172.16.3.206/xe file=d:/sunds241241.dmp (不要加分号)
导入
imp sunds/sunds@192.168.1.8/sunbizdb file=d:/sunds241241.dmp full=y ignore=y
修改oracle编码:
1.shutdown immediate
2.startup mount
3.alter system enable restricted session;
4.alter system set job_queue_processes=0;
5.alter system set aq_tm_processes=0;
6.alter database open;
7.alter database character set internal_use ZHS16GBK;
8.shutdown immediate
9.startup
查看编码:
select userenv(‘language’) from dual
select * from nls_database_parameters
SIMPLIFIED CHINESE_CHINA.ZHS16GBK : 一个汉字占用两个字节
SIMPLIFIED CHINESE_CHINA.AL32UTF8 : 一个汉字占用三个字节
mybats (in 的 sql):
String []arr = role_no.split(“&”);
params.put(“menu”, menu);
params.put(“ids”, arr);
return menuTreeDao.selectdefaultQueryMenu(params);
DB2与Oracle 序列不同:
oracle中取dual表,db2没有dual表,其取特殊表SYSIBM.SYSDUMMY1
oracle:select SEQ_ELEMENTNO_STANDARD.nextval as id from dual
db2:select SEQ_ELEMENTNO_STANDARD.nextval from SYSIBM.SYSDUMMY1
兼容方法:创建一个与dual功能相同的视图:
create view dual as select IBMREQD as DUMMY from SYSIBM.SYSDUMMY1