1、 oracle Database :数据解决方案,different from data storage Range 100G-1000G
2、 OLTP/OLAP(DSS) OLTP:联机事务处理 (短、小、快)如银行取款,移动通话and so on
有大的并发控制,比如支付宝每秒有8000次事务。OLAP:Data analysis 联机应用程序。DSS:决策支持系统。特定:可能会跑很久,很大的复杂算法,很大的数据量,不讲究并发。OLTP离不了Oracle。Hadoop is what?
二、SQL
1,su – oracle 切换到oracle
2, sqlplus / as sysdba 以系统权限连接数据库 不用安全验证了(密码 等,直接用/) (最高权限)DBA. As sysdba 只能是本机local操作,远程就不可以,安全认证交给了操作系统
3,报提示:connected to an idle instance ,说明数据库没启动,用命令startup 来启动:Oracle instance Started,idle:空闲,只用启动一次就可以了
Shutdown immediate 关闭数据库
一台机器有多个数据库,这时候sqlplus就不知道是哪个数据库了,所以连接前设置环境变量。Linux下:ORACLE_SID=A,这样再次启动时,就会默认启动名字为A的数据库,linux下要注意大小写
3、 create user 用户名 identitfied by 密码; for instance create user lhb identified by abcde;用户已经创建。Oracle中所有命令以;结束。
4、 授权 grant dba to 用户;所有的名称在内部会自动转换为大写,大小写不敏感,想保留小写用“”;
5、 此时可以sqlplus lhb/abcde就可以了,想显示用户:show user 这个命令不是oracle服务器命令,显示当前用户,它是sqlplus的命令可以缺省“;”,可以加,但是没有意义。
6、 Connect lhb/abcde 可以简写为conn lhb/abcde
7、 Sqlplus /nolog 不登陆连接,然后用conn来登录用户。可以用来检测sqlplus是不是出现问题。是不是不能够连接到数据库。排除法
8、 命令是:数据库和sqlplus的交互过程。
三 、表
Create table t1 (emp_no number(10),//salary(10,2),//总长度之内就可以了,同时number(10)可以有小数部分
Name Varchar(20),
Age number(3),
Tel varchar2(30),
Dept_no number(5));
Varchar2 可变长度,随数据量而变,会稍微复杂,计算速度慢。数据定长一般都不用,因为其效益非常低。
表的设计非常重要!!流程:产品经理或者架构师来 收集需求,然后和开发人员 交流沟通,然后定表,定列,然后DBA介入参加进一步讨论。Further discussion 。经过修改后提交最后的resolution。
块为单位:8K的大小。一个表至少占用一个块。
数据库特别重视细节。
表的修改;alter table t1 add(sal number(10,2));使用desc 表名 来查看表结构。
对表的修改,表结构的更改命令DDL Data Define Language
Drop table 表名;把表删除。
四、行
插入、删除、更新、提交、回滚
Insert into t1(emp_no,age,tel,dept_no)values(value1,value2,value3,value4);换种格式是这样的
Insert into t1 values(value1,value2,vlaue3,value4);这样需要一一对应,与表结构相同。
注意隐患的杜绝,所以第二种方式最好别用,会埋下伏笔。
另一种格式:
Insert into t1 (emp_no,age) values (value1,value2);会导致其他列为空值,空值的使用十分特殊。
事务:从第一个insert开始,到提交或回滚为止。
当用一个用户insert后另一个用户是看不到相应的数据的。因为没有进行事务的处理,只有当事连接可以看到,别的连接看不到,牵扯到隔离性问题。提交属于本连接的事务。
查询语句不算是事务。
别的语句Oracle会自动创建事务。所以你要提交。
回滚,rollback。用户一般不会涉及回滚事务的。因为用户一般是对事务的查询与浏览。
删除 任然在rollback的控制范围内。
修改 除了add外都需要条件的限制。Update t1 set tel=”234” where name =”jack”;在rollback的范围内。
Insert update delete belong to DML data Mannual Language.
Select 自成一派,不属于DDL和DML neither of them.
Oracle的联机文档。下载相应的文档,建议下载10g 或者11gr1。
Oracle介绍命令的格式:
|或者的意思[]可选{}必选项 alias 别名
{[DISTINCT]column|expression[alias],…}从前往后进行看,表达式如:sal*100,100,300+23 etc.
Dual 特殊的表 create table aaa(a number); select 2*4 from aaa; 这就类似于selec 2*4 from dual;
Alias别名
下午
常用运算符 可以用在expression的运算符
连接|| select ‘www.’||name||’.com’ from t1;
如果用双引号“”会产生Error。双引号用在程序设计里面,用双引号代表特殊字符。加上双引号时,数据库会理解为保持设计状态,保持字符串,不进行更改。如想设计一个有小写列的表,这时候列名改为”name”,而不是name,后者会变成大写、
列从右向左解析.
DISTINCT踢出重复行。当存在重复的时候,保留下面一个。Oracle会自动排序,按照字符的ASCII码来解释。
空值
Oracle解释空值为不知道。(未知)。空值不参与运算!!!!!!!!或者说空值不满足任何判断条件。当然了,这是指当前列的空值情况。
空值处理命令:is null(is not null)
Where
<.> != ^=都代表不等于。尽量用第一个。
Between,in,like,is null,exist.
1、[not]between and
2、[not]in(value1,value2,….)
3、搜索匹配,两个通配符,%和_,简单的字符串匹配算法。%可以么有的,有木有。尽量不要用正则表达式,正则表达式会造成内存泄露的。如果想用_或者%的时候,用Escape 符号
\来开始。如“\_one”表示字符串“_one”。可以用任意字符表示\.
For example select * from t1 where name = ‘a_o’ ESCAPE a;这样a就变成了自定义的转义字符。
排序 order by 默认状态下为升序,select name ,sal from t1 order by sal desc ,name desc;两个之间用逗号分隔.。dump命令:主要用作调试,
Linux下安装Oracle
请参考:http://wenku.baidu.com/view/6c50ba1e650e52ea55189815.html
首先配置环境:打开~/.bash_profile
Vi ~/.bash_profile
然后修改给PATH变量加上/usr/sbin 使用i开始插入 然后按esc 再输入:wq保存输入并推出使用source~/.bash_profile使设置生效
设置参数
1. #vi /etc/sysctl.conf:
2. 再文件末尾添加下列配置
kernel.shmmax= 2147483648
kernel.shmmni=4096
kernel.shmall=2097152
kernel.sem=250 32000 100 128
fs.file-max = 6815744
fs.aio-max-nr = 1048576
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 = 1048576
按esc并输入:wq保存,使用 sysctl –p使配置生效
创建dba组 #groupadddba
创建oinstall组 groupadd oinstall
useradd –g oinstall –g dba –m oracle
设置 oracle 用户密码
#passwd oracle
连续两次输入密码
第二大步
创建安装目录 mkdir –p /opt/oracle (注意-p后面有一个空格)
修改权限:
chown –R oracle:oinstall /opt/oracle/
chmod –R 755 /opt/oracle
添加以下内容到/etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
添加以下内容到etc/pam.d/login
session required /lib.security/pam_limits.so
session required pam_limits.so
添加以下内容到/etc/profile
#vi /etc/profile
If[ $USER = “oracle”];then
If[$SHELL=”/bin/ksh”];then
ulimit –p 16384
ulimit –p 65536
else
ulimit –u 16384 –n 65536
fi
fi
第三步:配置oracle用户环境变量
# su – oracle
vi ~/.bash_profile
增加以下内容
export ORACLE_BASE=/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export CLASSPATH
第四步
三.安装Oracle 10g
我把10201_database_linux32.zip放在/opt/oracle目录下,并通过
#unzip 10201_database_linux32.zip解压,现在使用oracle用户到/opt/oracle/database目录下执行安装:
cd /opt/database/
$ ls
doc install response runInstaller stage welcome.html
./runInstaller
出现以下错误,于是从网上下载libXp-1.0.0-8.i386.rpm放到database中
Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/java/j2sdk1.4.2_17/jre/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory
用命令:rpm -Uvh libXp-1.0.0-8.i386.rpm
然后又出了问题 界面出不来 在root下用下列命令:
#export DISPLAY=0.0
# xhost +
界面出来后
安装时不用选择的:安装时同时创建数据库 advanced security OLAP Spatial OEMC programmer XML
出现错误:ip_local_port_range
安装完成后要在root、下跑脚本 两个脚本 两个以.sh结尾的脚本
建立数据库
Dbca打开建立数据库界面 选择定制(custom) 数据库名字 gloal database name and sid 最好一致(保证和前面的配置文件里的字符或者说数据库的名字是一样的) File System 不要 specify flash ( custom script 全部不要。右下角) standard Database 里面全部不要。 Sizing设置中总 Process 设置允许同时多少人使用 大型5000 自己电脑保持150就可以了.字符集(Character)找Z开头的 GBKZHS16GBK(自己选择)Database Character Set。
(控制文件如果有一个损坏 整个运转就会出现问题)把UndoTBS修改为50 这样会使得建立库的速度加快。
然后创建用户 给用户授权等操作,并建表实验。OK,一切搞定。
数据库的组成:
1、 数据文件
2、 重做日志文件(Redo File)
3、 控制文件
非核心文件
1、 参数文件
2、 口令文件
3、 归档日志文件
调试用文件
1、 DUMP文件盒Trace文件
文件系统 ASM 裸设备(RAW)
Export Oracle_sid =pord export 代表全局
控制文件多备份(一般3份不需要跨存储)
日志文件、redo Groups(每个组中两个成员,两个成员是需要跨存储的)