oracle第一天

来源:互联网 发布:奋斗拼搏的诗句 知乎 编辑:程序博客网 时间:2024/06/05 17:40
 

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(每个组中两个成员,两个成员是需要跨存储的)

原创粉丝点击