--安装oracle前的准备:
-1.hareware required:
at least 1G physical memory (移动的海量内存250G)
swap > physical memory *1.5
/tmp >400m
补丁patch:
rpm -ivh compat-oracle-rhel4-1.05.i386.rpm 可打可不打,在生产环境中最好打,需网络下载
rpm -ivh /mnt/cdrom/redhat/rpms/libaio-0.3.102-1.i386.rpm 也是一个补丁,也是可打可不打,这两个包不影响现在的安装
yum install -y libXp 这个包要装,否则装oracle和运行都会出现问题
-2.create database:
groupadd dba
groupadd oinstall
useradd oracle -g oinstall -G dba
passwd oracle
mkdir -p /opt/oracle/product/10g
mkdir /opt/oracle/database
chown -R oracle.oinstall /opt/oracle
chmod 755 -R /opt/oracle
-3.configure environment 变量
vi ~/.bash_profile
export ORACLE_BASE=/opt/oracle/
export ORACLE_HOME=/opt/oracle/product/10g
export ORACLE_SID=orcl SID不要超过8位,超过8位会自动只取前8位
export PATH=$ORACLE_HOME/bin:$PATH
source ~/.bash_profile source一下使他生效
-4.modify kernel parameter
vi /etc/sysctl.conf
kernel.shmmax = 2148483648
kernael.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
sysctl -p 使生效
配置这些参数是为了更好的支持oralce,具体意思要查询相关文档,如果用oralce公司的linux系统就不用了,它已经调好了
注意这些参数写的时候等号两边要有空格,否则用vim看sysctl文件颜色会变
-5.vi /etc/pam.d/login
session required /lib/security/pam_limits.so
vi /etc/security/limits.conf 文件限制
oracle soft nproc 2047
oracle hard nporc 16384
oracle soft nofile 1024
oracle hard nofile 65536
然后把oracle的安装包拷过来10201_database_linux32.zip
解压unzip 10201_database_linux32.zip -d /opt/oracle/ 下 也可以解压到别的地方 不要解压到/opt/oracle/product/10g下,因为这是数据库10g的家目录
然后在root用户下用xhost + 给oralce用户一个图形安装界面
再su - oracle切换到oralce用户
cd /opt/oracle/database
有一个runinstaller的文件
./runinstaller 就可以用图形安装了 (见图1)
设置一个密码,要求以字符开头的密码,数字开头的不行
上面的是基础安装,下面的是高级安装,这里默认就用上面的基础安装
点下一步
--(问题:当打开图形时出现的乱码情况,就要去root用户查看一下语言环境,并改为中文,vi /etc/sysconfig/i18n 或者export lang=en_US )
(见图2) 直接下一步
(见图3) 这里会check你的安装要求是否都通过,通过的有succeeded,错误会显示error,或者警告warning 信息,并会在下方显示,根据他的提示来修改
(见图4)这里点password management 可以改密码,(见图5)看到目前只有SYS和SYSTEM两个管理用户是解锁的,别的用户都是锁着的,这里先不解锁点OK到下一步
安装完后,会提示要用root用户再运行这两个脚本(也可以安装完后再做),这时可以再开一个终端用root用户运行完这两个脚本(运行时会告诉你这两个脚本做了什么,只是改了下目录权限和确认了一下环境变量等),再点OK完成安装
sqlplus "/as sysdba" 能登录表示安装OK
装完后
要支持在oracle命令里支持上下翻页要装三个包
IO-Tty-1.07.tar.gz Term-ReadLine-Gnu-1.16.tar.gz uniread-1.01.tar.gz
cd $IO-Tty/
cd $Term-ReadLine-Gnu/
cd $uniread/
perl Makefile.PL;make;make install 这三个软件都要编译
whereis uniread 看是否有这个命令
su - oracle
~/.bash_profile
加一句 alias sql="uniread sqlplus"
source .bash_profile 使之生效
然后要用sql "/as sysdba"去登录才能翻页, 因为sql命令是uniread sqlplus的别名
用sqlplus "/as sysdba"也能登录,但不能翻页
--############################################################
linux下完全卸载oralce 10g (在AIX系统下也可行,别的系统还未经测试)
-1.$ORACLE_HOME/bin/localconfig delete 用root用户执行
-2.rm -rf $ORACLE_BASE/ * 用oracle用户执行
-3.rm -rf /etc/oraInst.loc /etc/oratab 用root用户执行
-4.rm -rf /etc/oracle 用root用户执行
-5.rm -rf /usr/local/bin/coraenv /usr/local/bin/dbhome /usr/local/bin/oraenv 用root用户执行
-6.userdel oracle groupdel dba groupdel oinstall 要完全卸载就要把用户和组也删掉
上面都是安装时要写入的文件,要这样来卸载, 直接rm 掉oracle家目录是不行
--##############################################################
管理员职责:管理数据库正常可用。
根据开发要求设计创建数据库
管理物理结构
管理与设计规划存储
管理与维护安全性
网络配置与管理 (net8协议)
备份与恢复保证数据的完整与可靠性。
数据库性能监控与调整。
DG:数据的保护与容灾。 data guard (standby database)
RAC :real application cluster 实现instance集群
开发方向的DBA:plsql java php c/c++ EBS
oracle软件是30%c/c++和70%java
学习: 熟练它的结构;
熟练所有的操作命令(非图形);
熟练性能维护的视图或工具,如:statspack/wait interface event
逻辑结构,体系结构。
oracle启动脚本:
dbstart
dbshut
要用上面的脚本,要更改下面两个配置文件。
[oracle@stu140 bin]$ vi /etc/oratab
orcl:/opt/oracle/db/10g:Y
[oracle@stu140 bin]$ vi $ORACLE_HOME/bin/dbstart
ORACLE_HOME_LISTNER=$ORACLE_HOME
也可以自己手动写脚本:
sql /nolog <
conn /as sysdba
startup
EOF
sql /nolog <conn /as sysdba
shutdown immediate
EOF
--#####################################################################################################################
oracle安装后的组件介绍:
$ORACLE_HOME/bin 目录下 包括了很多工具(其中就有重要的sqlplus)
sqlplus "/as sysdba" 或者sqlplus '/as sysdba' 或者sqlplus / as sysdba (/后面有个空格) 这里不用密码登录上,因为是用oracle用户去登录的,它是属于dba组的(前面装oracle时做过这个步骤)
$ORACLE_HOME/network/admin 目录下是做网络配置的 可以直接vi 来改,也可以用netmgr这个命令来图形配置(不过用这个命令配置的话,先确认这个目录下没有listener.ora和tnsname.ora文件,这样才可以去用图形新建)
host 写上主机名或者IP 注意主机名不要写错,否则会启不了监听 --(见图7)
上面选database service 下面点add database --(见图8)
改一下global database name 确认家目录 和SID没错 --(见图9)
再改tnsname.ora
选择tnsname.ora后 点左上角的绿色+号 写一个网络服务名,随便写,比如我要连66就写一个o66 --(见图10)
选择连接方式,这里有三种方式,这里选择TCP 下一步 --(见图11)
填写远端服务器IP或者地址 --(见图12)
填写远端服务器库名 下面选择dedicated server (也可以选择共享模式) --(见图13)
再点finish完成,最后点右上角的X 会问你是否保存,保存退出
配好后 可以看一下
vi listener.ora 这是监听文件,如果是服务器端只要配这个就可以了
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /opt/oracle/product/10g)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = li.lll.com)(PORT = 1521))--(这是本机的主机名,监听端口默认为1521,用TCP连接)
)
vi tnsname.ora 客户端远程登录别人要配置这个
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = li.lll.com)(PORT = 1521)) --(这就表示能登录li.lll.com这台主机,或者写上IP,)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
o212 = --(随便改个名,远程登录时要用,这是网络服务名,是客户端自己给远程服务器取的名)
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.212)(PORT = 1521)) --(这里表示能登录10.1.1.212,这一大段是把上面一段直接拷一份修改就行)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl) --(这里是服务器端的服务名)
)
)
lsnrctl start 命令启动监听 然后netstat -ntl | grep 1521 看到端口起来了
lsnrctl stop 关闭监听
lsnrctl stat 查看监听状态
远程登录方法:
sqlplus sys/oracle@o212 as sysdba 来远程登录
这就是一个C/S模式, 有时会给你一个测试库的IP和密码 让你去做一份工作, 远程登录就是第一步
如果客户机没有,
ORACLE支持大并发(支持几千个session并发,比如10086的查话费余额,在移动里还算小的库,并发也是几千的)
--#################################################################
数据库的三种
RDBMS 关系型数据管理系统 mysql是这种 做一个插件能支持对象中的类
ODBMS 对象数据管理系统
ORDBMS 又是关系又是对象 oracle是这种
sqlplus /nolog 不连接登陆
conn /as sysdba 用超级管理员身份连上
startup 可以启动
shutdown immediate 关闭
SQL> alter user scott identified by tiger account unlock; 选择scott用户密码为tiger 并解锁 在10i里是锁的 9i里是默认没锁的
SQL> conn scott/tiger 用scott用户连入 或者直接在最外面用sql scott/tiger连
SQL语句
先用scott这个用户来测试(ORACLE创建的用来测试的用户,这个用户下有几张表用来做测试的,默认是锁的,要解锁)
SQL> alter user scott identified by tiger account unlock; 设置scott用户密码为tiger,并解锁 (不过默认它的密码也是tiger)
User altered.
SQL> grant connect,resource to scott; 授权
Grant succeeded.
conn scott/tiger 用scott用户连接
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
SQL> desc emp
Name Null? Type
----------------------------------------- -------- ----------------------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
SQL> select ename,sal,hiredate from emp; 不区分大小写
ENAME SAL HIREDATE
---------- ---------- ---------
SMITH 800 17-DEC-80
ALLEN 1600 20-FEB-81
WARD 1250 22-FEB-81
JONES 2975 02-APR-81 --(字符串和时间类型是默认是左对齐,数值是右对齐,这里是复制的,所以不够齐~.~)
MARTIN 1250 28-SEP-81
BLAKE 2850 01-MAY-81
CLARK 2450 09-JUN-81
SCOTT 3000 19-APR-87
KING 5000 17-NOV-81
TURNER 1500 08-SEP-81
ADAMS 1100 23-MAY-87
ENAME SAL HIREDATE
---------- ---------- ---------
JAMES 950 03-DEC-81
FORD 3000 03-DEC-81
MILLER 1300 23-JAN-82
14 rows selected.
SQL结构查询语言
包括DQL 数据查询语言 主要指select
DDL 数据定义语言 主要指create alter drop rename truncate (这些语句一执行不能回退)
DCL 数据控制语言 主要指grant revoke
DTL 数据事物语言 主要指commit rollback savepoint
DML 数据操纵语言 主要指 insert update delete merge
列的别名:三种方法
空格后接别名
as 别名
“别名” 当别名里有空格或者特殊字符时就用双引号括起
字符串:
日期和字符只能在单引号出现
SQL> select ename|| ' sal is '||sal from emp; 连接符
ENAME||'SALIS'||SAL
----------------------------------------------------------
SMITH sal is 800
ALLEN sal is 1600
WARD sal is 1250
JONES sal is 2975
MARTIN sal is 1250
BLAKE sal is 2850
CLARK sal is 2450
SCOTT sal is 3000
KING sal is 5000
TURNER sal is 1500
ADAMS sal is 1100
ENAME||'SALIS'||SAL
----------------------------------------------------------
JAMES sal is 950
FORD sal is 3000
MILLER sal is 1300
14 rows selected.
SQL>select sal.(sal+100)*12 from emp; (把sal加上一百再12倍)
有+ - * / ()等运算
SQL>select sal.(sal+100)*12 asal from emp; (别名为asal,但默认为大写)
SQL>select sal.(sal+100)*12 “asal“ from emp; (这样别名就为小写的asal,sql语句不区分大小写,但在单或者双引号下就区分大小写)
SQL>clear screen 清屏命令 支持简写 可以SQL>cle scr
不属于SQL语句的可以不用; SQL语句就要用;
SQL>spool /vmware/oracle/bak/emp.txt
SQL>select ename,sal from emp;
SQL>spool off
这三句可以把emp表的ename,sal项的内容写到emp.txt里
SQL>ho cat /vmware/oracle/bak/emp.txt 用ho接shell命令直接调用shell的命令
SQL>! 打完!号再可以输入shell命令
当写错了 替换方法
SQL>select ename,sa from emp; 这一句sa写错了
SQL>l 1 选择1
SQL>c/sa/sal sa换成sal
SQL>/
SQL>/
SQL>run
SQL>r 这三条命令是执行前一次执行的SQL语句
SQL>select empno..............................from emp; 很长的一条SQL语句
SQL>save /vmware/oracle/bak/1.sql 把这个很长的语句保存下来方便下次用 要以.sql结尾
SQL>@ /vmware/oracle/bak/1.sql 执行它 最后用1或者1.sql都可以
SQL>start /vmware/oracle/bak/1 这种也可以 最后1或者1.sql
SQL>get /vmware/oracle/bak/1 这种也可以 get只是把它读到缓存里还没执行
SQL>l 1 查看发现读进来了 可以看清是要执行的再用run / r 三种之一执行
SQL>run
SQL书写标准
大小写不区分,单引或者双引里的要区分
关键字不能省略 如select from
可以分行写,但关键字和单双引内的不能分行写
别名一般用双引
字符串用单引
别名的好处
SQL>select ename as "ename",job from emp;
1,非法语句合法化 30个字符以上的名字会报错 用别名就不会
2.
3.做子查询的别名,让子查询语句可以执行
去除重复行
SQL>select distinct deptno from emp; 去掉deptno里的重复行 这个要排序
SQL>select unique deptno from emp; 也是去掉重复行 这个不要排序 效率要高点
SQL>select ename from emp where sal>3000; 用where做查询限制 查出所有工资大于3000的
SQL>select ename from emp where sal between 2000 and 3000; 查工资大于2000小于3000的
SQL>select ename from emp where sal sal>=2000 and sal<=3000; 用运行符查
SQL>select ename from emp where sal in(3000,5000); 查工资为3000或者5000的
SQL>select ename from emp where ename like 'A%'; 查询匹配A开头的 - 短横匹配一个字符 %多个字符 s-转义 s%转义
SQL>select ename from emp where ename like '--A'; 查询三个字符 第三个字符为A的项
SQL>insert into emp (empno,ename,sal) values (51,'B%123',10000);
SQL>select ename from emp where comm is not null; 查询非空值 有奖金的员工 空值这里没有资金 空值也会占一个位 只是现在没有值
SQL优先级别
1算术
2|| (连接字符串用)
3关系
4 is null/is not null, like ,in
5 between
6 not (取反)
7 and
8 or
SQL>select sal from emp order by sal asc; 升序排列
SQL>select sal from emp order by sal desc; 降序排列
SQL>select sal from emp order by sal 2 desc;
小练习:
查询部门为30的员工名字,职位,薪水
SQL> select ename,job,sal from emp where deptno=30;
查询字符最后为N的员工的上级领导是哪个
SQL> select mgr from emp where ename like '%N';
显示员工名字,上班日期,反序排列
SQL> select ename,hiredate from emp order by hiredate desc;
显示10部门员工 按照ename "sal is:"sal,
SQL> select ename||' sal is: '||sal||' ,comm is:'||comm from emp;
今天一个同事问我在安装数据库的时候出现了
Exception in thread "main"java.lang.InternalError: Can't connect to X11 window
serverusing ':0.0' as the value of the DISPLAY variable.
这个错误是为什么,其实我知道是由于当前用户不是oracle或者环境变量设置的不正确导致的,因为每次都是用oracle用户解压,安装,没有遇到这个问题,所以也没有仔细研究过这个错误,今天正好同事问到我这个问题,如果不回答清楚了显的我很不专业,呵呵,在这里简单说明一下自己的理解:
cause:
X-Windows emulation is not yet correctly configured or is being mis-used.
solution:
1.Make sure that "DISPLAY” is set properly as either:
:0.0
or
:0.0
note:In this example, ip_address/hostnameis
the host name or IP address of the system that you want to use to
display Oracle Universal Installer (your workstation or PC).
eg.[root@rac1 ~]# xhost +
access control disabled, clients can connect from any host
[root@rac1 ~]# su - oracle
[oracle@rac1 ~]$ export DISPLAY=192.16.2.98:0.0
[oracle@rac1 ~]$ cd database/
[oracle@rac1 database]$ ./runInstaller
Starting Oracle Universal Installer...
Checking installer requirements...
Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
Passed
All installer requirements met.
Preparing
to launch Oracle Universal Installer from
/tmp/OraInstall2009-03-05_03-36-28PM. Please wait ...[oracle@rac1
database]$ Oracle Universal Installer, Version 10.2.0.1.0 Production
Copyright (C) 1999,2005, Oracle. All rights reserved.
2.
Oracle Customer Support has seen instances where use of the UNIX/Linux
“su” command, even “su - oracle” has caused this “Can't connect to X11
window server” error. Therefore, please be sure that you are LOGGED ON
as the oracle account. Log directly into the install session. Do not use
any variety of “su”.
use oracle log on , not "su - oracle"
eg. [oracle@rac1 database]$ ./runInstaller
3.Oracle
Customer Support has seen instances where the incorrect “ulimit”
setting for number of files (aka “-n”, aka “nofiles”) has caused this
“Can't connect to X11 window server” error. Therefore, please be sure
that your values for “nofiles” in the output of “ulimit -a” is at least
65536.
备注:前2个办法只需要满足其中一个就可以避免这个错误了:直接用oracle登陆,不能su - oracle or 设置display=ip_address_that you want to use to display Oracle Universal Installer:0.0
注意在给了xhost +以后
图形安装直接这样 su oracle
然后执行安装脚本
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23141985/viewspace-703165/
,如需转载,请注明出处,否则将追究法律责任。