Oracle Concept读书笔记(一)

    xiaoxiao2025-06-07  37

    分区

    1 分区策略

    1)   范围分区

    CREATE TABLE time_range_sales 

      ( prod_id        NUMBER(6)    ,

    cust_id        NUMBER    ,

    time_id        DATE    ,

    channel_id     CHAR(1)    ,

    promo_id       NUMBER(6)    ,

    quantity_sold  NUMBER(3)    ,

    amount_sold    NUMBER(10,2)    )

    PARTITION BY RANGE (time_id)  ( /*以time id字段分区*/

    PARTITION SALES_1998 VALUES LESS THAN (TO_DATE('01-JAN-1999','DD-MON-YYYY')),   /*time id 小于01 JAN 1999 为分区SALES_1998*/

    PARTITION SALES_1999 VALUES LESS THAN (TO_DATE('01-JAN-2000','DD-MON-YYYY')), /*time id 小于01 JAN 2000 为分区SALES_1999*/

    PARTITION SALES_2000 VALUES LESS THAN (TO_DATE('01-JAN-2001','DD-MON-YYYY')), /*time id 小于01 JAN 2001 为分区SALES_2000*/

    PARTITION SALES_2001 VALUES LESS THAN (MAXVALUE)  );/*其他 为分区SALES_2001*/

    2)列表分区

    CREATE TABLE list_sales   

    ( prod_id        NUMBER(6)    ,

    cust_id        NUMBER    ,

    time_id        DATE    ,

    channel_id     CHAR(1)    ,

    promo_id       NUMBER(6)    ,

    quantity_sold  NUMBER(3)    ,

    amount_sold    NUMBER(10,2)    )

    PARTITION BY LIST (channel_id)  (/*以channel id字段分区*/

    PARTITION even_channels VALUES (2,4),    /*channel id 为2或4的为分区even_channels */

    PARTITION odd_channels VALUES (3,9)  )/*channel id 为3或9的为分区odd_channels */

    3) 哈希分区

    根据哈希算法决定所在的分区。当您插入行时,数据库会尝试随机、 均匀地将它们分布在各个分区之间。 您不能指定某行被放置在哪一个分区。数据库应用哈希函数,其结果确定由 哪个分区包含此行。如果重新更改了分区数目,那么数据库会在所有分区上 重新分布数据

    CREATE TABLE hash_sales    (

    prod_id        NUMBER(6)    ,

    cust_id        NUMBER    ,

    time_id        DATE    ,

    channel_id     CHAR(1)    ,

    promo_id       NUMBER(6)    ,

    quantity_sold  NUMBER(3)    ,

    amount_sold    NUMBER(10,2)    )

    PARTITION BY HASH (prod_id)

    PARTITIONS 2;

    事物控制语句 example

    SET TRANSACTION NAME 'Update salaries';   //事务 SAVEPOINT before_salary_update;  //设置事务回滚点 UPDATE employees SET salary=9100 WHERE employee_id=1234 # DML  //update ROLLBACK TO SAVEPOINT before_salary_update;  //回滚到之前设定的回滚点 UPDATE employees SET salary=9200 WHERE employee_id=1234 # DML  //update COMMIT COMMENT 'Updated salaries'; //commit提交update

    系统控制语句

    唯一的系统控制语句是 ALTER SYSTEM。

    example:

    ALTER SYSTEM SWITCH LOGFILE; ALTER SYSTEM KILL SESSION '39, 23'; ALTER SYSTEM 语句不会隐式提交当前事务

    嵌入式的 SQL 语句

    定义、 分配、和释放游标 (DECLARE CURSOR, OPEN, CLOSE)。  指定一个数据库,并连接到该数据库(DECLARE DATABASE, CONNECT)。  分配变量名称 (DECLARE STATEMENT)。  初始化描述符(DESCRIBE) 指定如何处理错误和警告(WHENEVER)。 分析并运行 SQL 语句 (PREPARE, EXECUTE, EXECUTE IMMEDIATE)。 从数据库中检索数据(FETCH)

    转载请注明原文地址: https://ju.6miu.com/read-1299685.html
    最新回复(0)