Oracle学习(5)

2019-03-29 11:12

SQL> Create Materialized View manager as select * from emp where job = 'MANAGER'; (3) 删除实体化视图:

SQL> Drop Materialized View manager; 删除基表:

SQL>drop table 表名; 删除视图:

SQL> drop view 视图名;

三、创建数据库链路(Database link):

数据库链路:用于数据库之间的远程数据复制。 DB1(UNIX) <------- DB2(NT)

若要将DB2中的数据复制到DB1,则需要在DB1中创建数据库链路指向DB2数据库。 创建数据库链路的步骤: (1) 创建好连接串。 (2) 创建数据库链路。

1. 创建数据库链路的语法:

SQL> Create database link 数据库链路名 connect to 用户名 identified by 口令 using '主机字符串';

[*]数据库链路名必须与远程数据库的全局数据库名(数据库名.域名,若没有数据库名,就是数据库名)相同

[*]用户名及口令为远程数据库的用户名及口令 [*]主机字符串为本机tnsnames.ora中网络连接串。

SQL> Create database link ora31 connect to user30 identified by user30 using 'ora31'; 2. 使用数据库链路:

SQL> select * from product@ora31;

SQL> insert into product@ora31 values(...);

SQL> Create table product as select * from product@ora31; 3. 删除数据库链路:

SQL> Drop database link ora31;

(一) 创建数据库触发器实现两个数据库之间实时数据传输。 DB1(UNIX) <------- DB2(NT)

若要将DB2中的数据复制到DB1,则需要在DB1中创建数据库链路指向DB2数据库。 [*]在对方的数据库(DB2)上建立触发器,即数据发送方的数据库上建立触发器。 [*]在数据发送方建立指向DB1的数据库链路。 [操作步骤(假设db1为ora31, db2为ora8i):] (1) 在DB1上建立用来复制远程数据的表: SQL> Create table product

as select * from product@ora31;

(2) 在DB2上建立到DB1的数据库链路:

SQL> Create database link ora31 connect to user30 identified by user30 using 'ora31'; (3) 在DB2上建立触发器:

SQL> Create or Replace trigger insert_product before insert on product for each row

Begin

Insert into product@ora8i

values(:new.p_id, :new.p_name); End insert_product;

// 上述创建数据库触发器的语句,请以.号结束,然后以/执行。 /* 查看SQL语句执行的错误信息: SQL> show errors */

(4) 在DB2上测试数据的自动复制是否成功:

SQL> Insert into product values(1005, '测试商品'); // 在db2的表中插入一条数据 SQL> select * from product; // 检查数据是否正确插入本地表

SQL> select * from product@ora31; // 检查数据是否复制到了db1的表中 查询数据库链路信息:

SQL> select username, password from user_db_links; 数据更新:

SQL> Create or Replace trigger update_product before update on product for each row Begin

update product@ora8i

set p_id = :new.p_id, p_name = new.p_name where p_id = :old.p_id End update_product; 数据删除:

SQL> Create or Replace trigger delete_product before delete on product for each row Begin

delete from product@ora8i where p_id = :old.pid End delete_product

(二). 创建快照(实体化视图)实现两个数据库之间定时数据库传输: 快照:要求主副站点数据库的用户名相同 (1) 在主节点创建快照日志

语法:SQL> Create snapshot log on 主节点表名; //主节点基表必须含有主键 (2) 在副节点创建快照 语法:

SQL> Create snapshot 快照名 refresh 刷新方式 next 时间间隔 with primary key for update

as select * from 主节点表名@数据库链路名; [*]刷新方式:

Compelete:完全刷新

Force:强制刷新(建议使用,强制刷新自动先fast刷新,然后再force刷新)

Fast:快速刷新

[*] 时间间隔:以天为单位。 sysdate + 1/4 // 六个小时刷新一次 sysdate + 1/1440 // 一分钟刷新一次 SQL> show user USER 为\

SQL> create snapshot log on dept; 实体化视图日志已创建。 SQL> show user USER 为\SQL> select * from dept;

SQL> insert into dept values(60, 'test snap', 'snapshot'); [2]副节点

SQL> connect system/ab 已连接。

SQL> create user stud29 identified by stud29; 用户已创建

SQL> grant connect, resource to stud29; 授权成功。

SQL> grant create snapshot to stud29; 授权成功。

SQL> connect stud29/stud29; 已连接。

SQL> connect system/ab 已连接。

SQL> grant create database link to stud29; 授权成功。

SQL> connect stud29/stud29 已连接。

SQL> create database link ora8i connect to stud29 identified by stud29 using 'tea'; 数据库链接已创建。 SQL> create snapshot dept 实体化视图已创建。

*******************************************************************************************/ 创建索引(indexes):

语法:SQL> create index 索引名 on 表名(列名);

例:SQL> create index index_dept_dname on dept(dname); 索引数据字典:

SQL>select index_name, table_owner, table_name, from user_indexes; 五、创建序列(Sequences):

语法:SQL> Create sequence 序列名 start with 起始编码 increment by 步长

maxvalue 终止编码;

SQL> create sequence id_code start with 2 increment by 2 maxvalue 999; 序列使用方法:

id_code.nextval // 下一个值 id_code.currval // 当前值

第一次要使用nextval,然后以后每次使用currval。 insert into student values(id_code.nextval, '姓名');

[*] ||(双竖线)在oracle中是连接符号,将两个字符串连成一个,如:'A' || 'B' = 'AB' 数据库分区技术 一、什么是数据分区?

数据分区是指把一个表划分成若干小块。在创建表的结构时应考虑好分区方案,选择表中某一列或多列

数据作为分区关键字,该关键字决定哪些数据分到哪些区。Oracle对分区进行管理,新插入数据自动存储到 相应的分区。 二、创建分区表:

SQL> Create table employee ( id number(7),

name varchar2(20), sal number(7,2))

Partition by range(sal)

(Partition p1 values less than(500) tablespace users, Partition p2 values less than(800) tablespace tools, partition p3 values less than(1000) tablespace system); // p1, p2, p3是三个分区的名字,users, tools, system是三个表空间的名字。less than是小于(不包含 )。

几点说明:

[.] 所插数据不得大于LESS THAN中的最大值 [.] 可以使用MAXVALUE(如上面的语句中,要求工资不能大于1000,如果出现这种情况,则应该改成下面的 语句:

SQL> Create table employee ( id number(7),

name varchar2(20), sal number(7,2))

Partition by range(sal)

(Partition p1 values less than(500) tablespace users, Partition p2 values less than(800) tablespace tools, partition p3 values less than(1000) tablespace system, partition p4 values less then(maxvale) tablespace users);

[.] 不指定表空间时,则该区使用该用户的缺省表空间。 * 查询每个用户的用户缺省表空间:

SQL> select username, default_tablespace from dba_users; // 使用dba用户查询 [*]查询可以使用的表空间名字:

SQL> select tablespace_name, file_name from dba_data_files; // 使用dba(sys或system)来执行

SQL> select dba_users.username, dba_users.default_tablespace, dba_data_files.file_name from dba_users, dba_data_files

where dba_users.default_tablespace = dba_data_files.tablespace_name; [temp表空间不能用于数据分区。] 三、分区表的查询方法:

SQL> select * from employee; // 按没有分区的方法查询

SQL> select * from employee partition(p1); // 只查询p1分区的数据。 SQL> create table part3 as select * from employee partition(p3); 四、分区表的修改: 1、增加分区:

SQL> Alter table employee ADD

partition p4 values less than(1500) tablespace users; [*]分区数据字典:

SQL> select partition_name, high_value, tablespace_name from user_tab_partitions

where table_name = 'EMPLOYEE'; 2、删除分区:

SQL> Alter table employee DROP partition p4; // 结构数据全部删除(相应分区及数据全部被删除)

SQL> Alter table employee TRUNCATE partition p4; // 保留结构(即区还存在),数据删除 3、修改区名:

SQL> Alter table employee RENAME partition p4 to p5;

4、分区数据移动:将分区数据从一个表空间移动到另一个表空间 SQL>Alter table employee MOVE partition p4 tablespace system; 5、分区的拆分:

SQL> Alter table employee SPLIT partition p3 at(900)

into(partition p31, partition p32); /* 关于数据字典的几点说明:

v$打头的数据字典,后面不会以s结尾,例如:V$database, v$session; user打头的,后面都会以s结尾(复数), 如:user_tab_partitions, user_tables dba打头的,有的以s结尾,有的不。

***************************************************************************/ 6、分区的合并:

SQL> Alter table employee MERGE partitions p31, p32 into partition p3; SQL*Plus 报表功能

/********************** 插入内容:数据字典的一些说明 *****************************


Oracle学习(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中考英语复习: 初中生必备句型 - 动词句型

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: