Oracle对象下集(序列、同义词、分区表、database link)

本人所有博文纯手码,给个关注或者赞吧!博主:张晨晨QQ:1445696451欢迎随时加Q讨论技术。
一、Oracle的序列
·序列是用来生成惟一的连续的整数的数据库对象。序列通常可以用来自动生成主键或者唯一键的值;可根据数值进行升序或者降序的排列
·比如创建班级的学生信息登记表,可以将学号使用序列自动生成。班级的学号都是10000~10060这个范围,每登记一个学生,序列自动增长一个。
1、创建序列的命令语法
create sequence seq_name [start with interger] [increment by interger] [maxvalue interger ] [minvalue interger] [cycle|nocycle] [cache interger|nocache];
注释:
create sequence seq_name :创建序列
start with :从...开始生成序列
increment by :每次增长的数值
maxvalue :最大的序列值,默认不限制最大值
minvalue :最小的序列值,默认不限制最小值
cycle :翻译为中文是圆的意思,这里其实是指循环,当序列到达最大值/最小值时,从初始值开始继续生成。默认为nocycle,不进行循环生成。
cache :预先分配出来的序列,保存于缓存中,可用于快速访问序列号。默认为nocache,即不分配缓存
举例:
create sequence seq_1
start with 10000
increment by 1
maxvalue 10060
nocycle;

:还是上面的例子,创建一个seq_1序列,从10000开始,每次增长为1,最大值为10060,不进行循环生成。
2、我们建立好了序列自然需要将序列应用到我们创建的表(table)中。可以通过nextval、currval伪列来访问该序列的值。
·nextval:这个伪列会在创建序列后第一次使用时,返回该序列的初始值。在以后使用时,将使用increment by子句的值来增加序列值
·currval:会返回序列的最后一次引用nextval时返回的值。
举例:
create table student_class25(stu_id number not null,stu_name varchar2(20),
stu_age number);

创建一个student_class25表
insert into student_class25 values (seq_1.nextval,’zhangsan’,’13’);
insert into student_class25 values (seq_1.nextval,’lisi’,’13’);
...

向student_class25表中插入数据,在对应stu_id这一列我们引用序列seq_1。
select seq_1.currval from dual;
查询序列当前值
##如果在你指定缓存的环境下,执行startup force重启数据库,接着写的数据的序列号会从初始值+缓存值开始。例如,初始值为10,缓存值为30个,那么执行startup force后,序列号会从40开始生成。
3、维护序列
1)查看序列(使用字典user_sequences)
select from user_sequences;
2)删除序列
drop sequence seq_name;
3)更改序列
alter sequence seq_name [...];
二、Oracle的同义词
·顾名思义,同义词就是意思相同的词语,你可以看做是对象的一个别名,就像liunx操作系统中的命令的别名一样。但是linux命令别名只提供了方便容易记忆的好处。
1、而在Oracle中,同义词可用来:
1)简化Oracle中输入的SQL语句,通过给对象建立同义词,我们可以简化复杂的SQL语句,方便记忆和操作
2)隐藏对象的名称和所有者,给对象建立了同义词,如scott模式下的emp表(scott,emp),我们建立一个同义词就叫做se。那么我们在查询这个表的时候就不用担心暴露表的位置,提供了一定的安全性
3)提供对数据库的公共访问,可以通过给远程连接建立公有同义词给其他的用户查看。
4)以及为分布式数据库的远程对象提供位置透明性,我们给数据库链接(将其看做是一个对象)建立同义词,使用户可以无阻碍的查看数据表,这时候对于用户而言,位置就是透明的。
2、同义词分类(两种)
1)私有同义词:为当前模式的用户私有,其他用户无法使用
2)公有同义词:与私有同义词相反
3、创建同义词
create [or replace] [public] synonym sy_name for object_name;
注释:
create ... for :给...创键同义词
[or replace] :该可选项的作用是覆盖(如果存在同名的同义词就会将其覆盖掉)
[public] :加上该选项表示创建公有同义词
sy_name :同义词名
object_name :对象名称,如scott.emp(即scott用户下的emp表)
4、举例
create synonym sy_name for scott.emp;
为scott.emp表创建私有同义词
create public synonym sy_name for scott.emp;
创建公有同义词
##创建好的公有同义词不代表用户就可以使用,我们还需要对需要操作这个表的用户进行授权
5、复杂应用
1)建立oracle连接的命令
举例:
①conn system/[email protected];
②create database link link_1 connect system identified by pwd123 using orcl;
③create synonym sy_t for [email protected]_1;
通过以上命令建立一条连接到远程数据库的数据库链接,并为链接中数据库的scott.emp表建立同义词。
6、维护同义词
1)查看同义词
select
from user_synonyms;

2)删除公有/私有同义词
drop [public] synonym sy_name;
三、数据库链接
1、数据库链接是定义一个数据库到另一个数据库路径的对象,可以通过数据库链接查询远程表、执行远程程序。在分布式环境中,Oracle数据库链接是必须的。有一点,oracle数据库链接是单向的;一个链接,能从a数据库链接到b数据库,那么无法从b数据库链接到a数据库。
2、数据库链接分类
private:属于创建该链接的用户,也只有该用户可以使用
public:属于public,允许本地数据库中所有拥有数据库访问权限的用户使用
global:全集类型,网络中的数据库用户均可使用
3、创建数据库链接
create database link connect to username identified by user
passwd using
‘(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ipaddress)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = dbtest)
)
)’;

四、分区表
·Oracle可将表的行分成多个部分(存储于不同的表空间),这些部分组成的表就是分区表,这些部分被称为Oracle分区。而分区表的应用一般来说,表的大小要足够大才可以体现分区表的作用,太小的表不建议使用。
1、分区表有很大的作用:
1)改善标的查询性能;同时实现分开管理
2)便于备份和恢复,如果一部分的数据丢失,只需要单独恢复对应分区即可
3)分开存储数据,提高安全性
4)分区对于用户而言也是透明的
2、创建分区表
create table t_name
(stu_id number,stu_name varchar2(20),stu_age number)
partition by range (stu_id)
(
partition p1 values less than (),
partition p2 values less than (),
parti...
);

原文地址:http://blog.51cto.com/13434336/2122604

时间: 2024-10-19 15:59:07

Oracle对象下集(序列、同义词、分区表、database link)的相关文章

oracle database link使用说明

作用:将多个oracle数据库逻辑上看成一个数据库,也就是说在一个数据库中可以操作另一个数据库中的对象 简易语法: CREATE [PUBLIC] DATABASE LINK dblink CONNECT TO user IDENTIFIED BY password USING 'connect_string';  DROP [PUBLIC] DATABASE LINK dblink; 注意:你必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK

Oracle组函数、多表查询、集合运算、数据库对象(序列、视图、约束、索引、同义词)等

count组函数:(过滤掉空的字段) select count(address),count(*) from b_user max() avg() min(),sum() select sum(age),max(age),min(age),avg(nvl(age,0)) from b_user 1       260     70      10      37.1428571428571 group by:如果前面定义了该字段名  则groupby必须也写上该字段 select name,pw

Oracle创建database link(dblink)和同义词(synonym)

同一个数据库不同用户之间建立dblink和synonym 1.建立dblink 实现在A用户下通过dblink访问B用户下的数据库表,需要在A用户下创建访问B库的dblink连接 --创建远程连接dblink语句示例: create database link dblink名 connect to B库用户名 identified by B库密码 using '172.66.50.241:1521/AAA'; 备注:需修改对应访问连接用户和密码.IP.端口和数据库示例名 相关连接: https:

Oracle创建Database Link

一菜单方式: 打开plsql,点击[File]-[New]-[Database link],打开如下图所示窗口 填好各项信息后,点击[Apply]即可完成Database Link的创建. 二SQL方式 -- Drop existing database link drop public database link dblink_name; -- Create database link create public database link dblink_name connect to SYS

ORACLE 11g 通过odbc建立连接到mysql库的database link

以前做过在oracle通过gateway建立到sqlserver的database link(详情参见:http://blog.csdn.net/mchdba/article/details/52719278),现在需要无缝访问mysql,所以也需要建立类似这样的连接通道. 1.分配mysql账号 先在mysql库上建立连接账号: GRANT SELECT ON test.* TO [email protected]'192.168.129.%' IDENTIFIED BY 'data_quer

ora-01017 和oracle database link

DB link ,创建完了后总是报密码错误.我感到奇怪.明明密码是对的.怎么可能错误呢. SQL> create public database link kk40 connect to khfx identified by xffsf3 using '1004' SQL> select * from ; select * from ORA-01017: invalid username/password; logon deniedORA-02063: 紧接着 line (起自 KK40) S

oracle 创建database link

有时候需要在两个数据库的表join 查询 这时候要用到 database link . database link 的作用就是搭建数据库和数据库的连接. 1.先看如何使用 PL\SQL  工具创建. 找到database links  右键  新建 填名称,  这里的用户名是远程数据库的登录名 数据库就是本地文件 D:\oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora 的 也可以在数据库这里直接填 (DESCRIPTION =(A

Oracle查看和删除database link

1.查看 select * from dba_db_links; 2.删除 drop database link 连接名称;   备注:sys 用户不能删除其他用户的 db links 忘记Oracle数据库管理员密码的解决办法 如何不用密码以sysdba的身份登陆到oracle? 输入下面命令,进去了 sqlplus / as sysdba 修改密码语句: alter user system identified by system Oracle11g数据库修改sys和system用户的密码和

Oracle Database Link 的创建和使用小见

假设:需要从数据库db_a通过db_link连接到db_b查询数据库b的部分相关信息 前提条件: 数据库a账户需要有创建dblink的权限,如果没有可以使用dba账户赋权限 grant CREATE PUBLIC DATABASE LINK to  username;grant DROP PUBLIC DATABASE LINK to usenrame; 数据库b账号需要有连接的权限,一般账户都有这个权限 以下是创建的语句: 基本语法: CREATE [SHARED][PUBLIC] datab