现在的位置: 首页 > 综合 > 正文

Oracle 学习小记-040720

2013年09月20日 ⁄ 综合 ⁄ 共 1686字 ⁄ 字号 评论关闭

1. 对于存放数据的表空间,有两种管理方式:字典管理、本地管理,推荐使用本地管理方式。

2. 创建数据库用户时,Resource权限使得用户可以创建数据库对象,否则该用户创建任何数据库
    对象时都会报错:ORA-01031。

3. 对于主外键,主键删除时有三种选择:
    (1)如果有引用它的外键记录存在,不允许删除,这是默认情况(不指定ON DELETE子句就是
              这种情况)。
    (2)如果有引用它的外键记录存在,删除主表记录及相应的从表记录:ON DELETE CASCADE。
    (3)如果有引用它的外键记录存在,删除主表记录,设置表外键值为空:ON DELETE SET NULL

4. 创建表的时候,对于主键和唯一约束,ORACLE会自动创建一个索引,索引名字由系统自动生成。

5. 索引段空间不会被重用,因此,索引的键值经过多次的insert,update,delete之后,空间利用效率会变
    低,以下代码用于检查一个索引的空间利用率:

    ANALYZE INDEX idx_name VALIDATE STRUCTURE;
    SELECT name,del_lf_rows,lf_rows,
    round((del_lf_rows/(lf_rows+0.0000000001))*100) "Freg Percent" FROM index_stats;

    如果索引的叶子行的碎片超过10%,考虑对索引进行重建:
    ALTER INDEX idx_name REBUILD;

    Notes:index_stats只存放最后一次analyze index ... validate structure的结果。

6. 视图所引用的基本发生变化时,视图会变得无效,此时需要修改或重新编译视图:
    ALTER VIEW view_name COMPILE;
    视图又称为虚表,它并不实际存储数据,因此它能帮助提高查询速度,在生成报表时依赖于视图
    并不是明智的选择,它能做的只是构造一些固定的查询,使复杂的查询语句看起来清晰一些。
    视图最主要的用途是用来限制用户对数据的访问。

7. 同义词可以使得访问另一个用户的对象,就像访问自己的对象一样。
    以下为创建一个同义词的语句:
    -- 首先将相应的权限赋给另外一个用户
    GRANT SELECT,UPDATE,DELETE,INSERT ON TABLE1 TO USER_B;
    -- 创建同义词
    CREATE SYNONYM TABLE1 FOR USER_A.TABLE1;
    -- 现在USER_B访问USER_A.TABLE1可以用如下语句:
    SELECT COUNT(*) FROM TABLE1;
    创建以上同义词的前提是USER_B中没有与TABLE1同名的对象。

    如果USER_A和USER_B位于不同的主机上,这时候还需要借助一个数据库链接,它是跨越不同数
    据库服务器的桥梁。
    -- 创建数据库链接
    CREATE DATABASE LINK DBLINK_NAME CONNECT TO SERVICE_NAME USING USER_NAME
    IDENTIFIED BY PASSWORD;
    -- 创建同义词
    CREATE SYNONYM TABLE1 FOR USER_A.TABLE1@DBLINK_NAME;

8. 触发器的代码不宜太长,整个触发器作为一个事务,不能在触发器中添加COMMIT或ROLLBACK
    语句。

9. 数据迁移
    1>. SQL SERVER与ORACLE之间的数据迁移:
          将ORACLE数据服务建成一个ODBC数据源,在SQL SERVER服务器上针对这个数据源进行数据
          导入导出。可能会有一些自动的数据转换过程,这个要注意观察一下。
    2>. 将操作系统文件形式的数据导入ORACLE:
           使用ORACLE自带的工具:sqlldr
           sqlldr userid/password control=controlfile.ctl
  
 

抱歉!评论已关闭.