Oracle笔记1

2009-07-16 21:24

oracle   商用的大型数据库【mysql 也是关系型数据库      xdbms - 面向对象的数据库 - NHN China 】
         rdbms    关系型数据库   ----- 一般使用
        【基本的数据库】
         1 用的最多
         2 olap (oracle) 和 ldap (oracle) 都是基于 oracle rdbms
         3 oracle 的功能“很”强大 、 “很”麻烦

             数据库的记录条数都是没有限制的,但是数据库的性能与记录条数是成反比的。

        PostgreSql   5M 速度明显变慢 ,优化以后 10M . . . . .
        MySql        类似
        Oracle       记录条数对性能的影响先对要小好多 【记录少的时候,没有快到哪里去,多的时候也没有慢到哪里去,优化比较复杂 】
        IBM DB2 UDB 记录条数对性能的影响先对要小好多 【记录少的时候,没有快到哪里去,多的时候也没有慢到哪里去 ,优化比较复杂 】
         
         oralce的麻烦:
                1 优化复杂
                2 记录锁机制 【经常由于记录锁导致查询非常慢,由于自身SQL导致的,10g ~ 11G 非常明显 】
                3 BUG 【JDBC驱动程序的BUG ,10G 自带的驱动有严重Bug ,需要用 11G自带的驱动程序替代,并不是特别的多 】
          
         oralce的强大:
                1 扩展基本sql,最典型的层次查询
                2 JDBC对 SUN的JDBC 规范做了很好的支持,一开始就提供了Type-3,Type-4的驱动 ,提供了SQL-J
                   以及 Java Package支持,XML支持.....
                       【 T-1 T-3 本地驱动
                          T-2 T=4 网络驱动
                          T-1 T=2 模拟(Java)驱动
                          T-3 T=4 Java驱动
                          T-1       Jdbc-Odbc 桥
                        】
                3 性能非常好,速度很快,另外支持分区表、裸设备、数据库文件系统等功能。


         olap     数据仓库   --不包含
        【数据挖掘 : 大型需要进行数据分析的时候用:       类似M161项目(飞信)-电信级 --数据量非常大 】
               执令: MK GB .....
               代码: 162100.....
               内容: 聊天内容

            自己的手机 ---- 发送到地方移动网关 ---- 北京移动 -----保存所有内容 ----- 检查客户端 ---- 地方移动网关
                                                                           |
            2005 一天的数据量 20M条 用户数量 4M    

            每个月同比上月的增长率     --- 用关系型数据库 --    sqlserver 2000 -- 统计不出来   【20M 】
                                                           sqlserver 2000 olap   -- 1小时 【20M 】
            2009 一天的数据量 ? 条 用户数量 400M


         ldap     目录服务   --不包含 -- windows 的 Active Directory 用来提供高速查询服务
        【outlook Express :windows 邮件客户端 -- 地址本: -- 从windows Active Directory 中查找用户 】
        【快速检索的目录服务:类似于NCIIS项目(公安部的全国公民身份信息系统--用户数14亿) 】
       

用户登录 --
   用户名 + 密码
   ----   >   对密码加密
   ----   >   到数据库里面执行一条 select 语句 【10M ~20M SQL查询的时间是可以接受的(数据库做优化的前提)】
   ----   >   结果查到一条 验证通过 /   否则失败
使用Ldap进行查询

 

数据库
    
     C1 C2 C3                  x
1   x x x
2
3
y


olap 数据以切片的方式来保存     【数据仓库 工具 - 数据挖掘和数据分析-功能 -- 数据的预测--应用 】
                        x

 

y                     z


olap 一张表 = rdbms 一张表的不确定数目的状态的集合


       时间       注册用户
       2008-12-5   AAA

 

      每个月同比上月的增长率     --- 用关系型数据库 --    sqlserver 2000 -- 统计不出来   【20M 】
                                                           sqlserver 2000 olap   -- 1小时 【20M 】
   10000条   【10M 】

--------------------------------------------------------------------------------------------------------------------

sqlplus "/ as sysdba"    只能在本机使用,用来连接缺省的oracle数据库,使用操作系统认证,作为SYSDBA这个角色【数据库系统管理员】
                         连接数据库
startup    = startup open   在sqlplus 命令行中启动数据库实例,装载数据库并且打开
startup mount               在sqlplus 命令行中启动数据库实例,装载数据库  
startup force       在sqlplus 命令行中强行启动数据库实例,【仅限于数据库出问题了,没有办法关闭、启动的时候用这种方式】    
shutdown                    在sqlplus 命令行中等待所有链接关闭后,关闭数据库实例      
shutdown immediate          在sqlplus 命令行中立刻关闭数据库实例
    
sqlplus "/@orcl as sysdba" 只能在本机使用,用来连接指定实例名称的oracle数据库,使用操作系统认证,作为SYSDBA这个角色【数据库系统管理员】
                         连接数据库,此时oracle必须处于 start状态

-----------------------------------------------------------------------------------------------------------------------
寻找实例名:
         C:/oracle/product/10.2.0/db_1/NETWORK/ADMIN/tnsnames.ora

ORCL =
(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = WWW-D33920E002E)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
)

在services.msc窗口中 oracleserviceSID 服务中的SID就是实例名称

------------------------------------------------------------------------------------------------------------------------------
sqlplus 执行过程
    1 使用@“字符串”   -- 字符串= tnsnames.ora中的链接描述符名称【客户端】
    2 使用 tnsnames.ora中的链接描述符中的 host 和 service_name 寻找、链接数据库【客户端】
    3 使用 Listener进行监听(1521) 【服务器】
    4 Listener收到请求后,在
          (ORACLE_HOME = C:/oracle/product/10.2.0/db_1) 数据库安装的地址
          (PROGRAM = extproc)                            使用的"Program"
    5 链接
-----------------------------------------------------------------------------------------------------------------------
1) 找到实例名称
2) 启动数据库
3) 关闭数据库


Oracle 数据库软件
             数据库 - orcl - 实例

 

oracle数据库 【完整的概念,包括两部分:数据库软件和数据库实例】

                提供服务的是实例

                数据库实例包括: 表空间、表、视图、触发器、(存储)过程、函数、序列、用户、方案、数据类型、xml、日志.....

数据实例实际上是数据库软件的一个具体的实现【类似于java里面类与对象的概念】
               
                实例
                  数据库进程 - 实例-【类似于java类里面的static内容: 链接(connection) 锁 (lock) 内存(memory) 字符集(charset).....】
                  数据库方案(以用户作为单位,一个用户如果拥有了对象之后,就会建立自己的方案,方案里包括的内容有
                           【表、视图、触发器、(存储)过程、函数、序列、数据类型(用户自定义的数据类型)....】)
                  数据库安全
                           用户、授权.....
                  表空间、日志.....

   Oracle 进行连接的时候
           sqlplus "orcl_user/password@orcl"
              1   对于用户登录后所进行的操作均需要授权 ,缺省情况下,如果使用 【create user orcl_user identified by "password"; 】
                  建立用户的时候,用户没有任何权限,所有的都需要授权。
              2   需要使用用户名、密码   除此之外还需要一个可以连接的授权【权限】 connect 【grant connect to orcl_user;】
              3   需要授予资源的权限 【 1 tablacespace 的使用 2 table、all table 的创建、删除、更新等权限】
                                         grant resource to orcl_user;   可以给用户所有的tablespace的使用权
             
                                         
         
   oracle 数据库的链接     ---    connect   --- > session [一个链接需要对应一个会话]
                    创建一个链接就是创建一个服务器与客户端的会话  
            connect 权限包括了 回话的所有权限
                  查看用户的数据库表的方法【select table_name from user_tables ;】
            创建表的方法:
                      create table table_name (
                             column_1 number primary key,
                             column_1 varchar2(32)
                        );
            删除用户的时候用 drop user oracle_user   [在该用户不包含任何对象的时候,可以直接删除成功,否则删除失败]
                             drop user oracle_user cascade [删除用户及其所有对象]
            以上命令均不可以恢复
            查看表结构的方法: desc table_name;
            删除表的方法:
                         drop table table_name;
           
------------------------------------------------------------------
在 oracle中,“;”表示一条sql语句的结束,在缺省情况下,一条sql结束后,该sql会被执行
在 oracle中,“/”表示执行一条语句,在正常情况下,使用“/”来执行一条已经输入的命令


------------------------------------------1-------------------------------------------------
一个用户通过网络连接到数据库的操作
    1: 在服务器端sqlplus "/ as sysdba";
    2: 在服务器端的sqlplus中:startup
    3: 在服务器端的sqlplus中:create user abc identified by "password";
    4: 在服务器端的sqlplus中:grant connect to abc;
    5: 在服务器端的sqlplus中:grant resource to abc;   [仅有这两个权限不可以使用 oracle 的 OEM - Oracle Enterpirse Manager ]
    6: 在客户端检查是否安装了oracle 的客户端或者服务器端,如果使用sqlplus 则必须安装两者中的某一个[如果
             仅仅是开发使用,有oracle的驱动就可以了,注意: windows的非java应用程序依旧需要安装oracle的运
             行端,System.data.OracleSqlClient]
    7: 在客户端查找 tnsnames.ora文件,修改内容,建立新的“连接描述符”
    8: 在客户端 sqlplus "abc/password@连接描述符";
    9: 退出sqlplus 使用: exit;
------------------------------------------2--------------------------------------------------------
连接到数据库后建立自己的数据库方案【表】  
    1: create table table_name (
                column_1 datatype_define [primary key],
                column_2 datatype_define not null,
                column_3 datatype_define ,
                 ... ...
                column_n datatype_define
           );
    2:insert into table_name ( column_1,column_3,......column_(n-x)) values (c_1_v,c_3_v,........c_(n-x)_v);
      insert into table_name values (c_1_v,c_2_v,........c_n_v);
      insert into talbe_name select c_1_v,......c_n_v from xxx;
      insert into table_name values(c_1_seq.nextval,.......); //引入序列 1、2、3、4、5

administrator/123456

--------------------------------------------------------------------------------------------------
Oracle 中主要的数据类型
Varchar2 变长字符串     4000个汉字   varchar2(1~4000)
Number    数字                     Number = Number(10) =Number(10,0)
                                    Number(总长度,小数点后有几位)
DATE       日期                     DATE     进行操作的时候必须使用函数 TO_DATE('2009-11-11','yyyy-mm-dd')
CLOB       大的字符数据对象 2G     CLOB    Stream
BLOB       大的二进制数据对象 2G    BLOB    Stream


------------------------------------------3--------------------------------------------------------
连接到数据库后建立自己的数据库方案【序列】   SEQUERENCE 0?x ~ INT.MAX?n 循环使用/一直增加
在oracle中,数据类型中没有自增字段 : GUID - UUID 32个16进制数字组成的唯一标识码


------------------------------------------4---------------------------------------------------------
连接到数据库后建立自己的数据库方案【视图】  


-------------------------------------------5--------------------------------------------------------
连接到数据库后建立自己的数据库方案【过程】  

----------------------------------------------------------------------------------------------------
连接到数据库后建立自己的数据库方案【函数】  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值