假设我有三个表空间,一个是表空间A,用户名和密码都是ONE,另外一个是表空间B,用户名和密码都是TWO,A和B的表空间中的表结构都是一样的.
现在我想在第三个表空间C上建立视图,就是把A和B的每张表的数据合并起来
在SQL里就是SELECT * from A.表1 union SELECT * from B.表1 的意思
不知道我有没有表述清楚,能否在ORACLE中实现?刚刚接触ORALCE所以不是很了解
现在我想在第三个表空间C上建立视图,就是把A和B的每张表的数据合并起来
在SQL里就是SELECT * from A.表1 union SELECT * from B.表1 的意思
不知道我有没有表述清楚,能否在ORACLE中实现?刚刚接触ORALCE所以不是很了解
比如说SCHEMA,TABLESPACE,USERhttp://blog.csdn.net/wh62592855/archive/2009/10/16/4683983.aspx有兴趣的话可以去上面的链接看看
当使用这个用户创建对象时如果没有显示的指定这个对象创建在哪个表空间中
那么该对象就会被创建在用户的默认表空间中不过这不并不代表一个用户只能在一个表空间中创建对象
如果某个用户拥有在其他表空间上的QUOTA 那么他也可以把对象创建到其他表空间中去
例:CREATE USER "QL_ARCHIVE" PROFILE "DEFAULT"
IDENTIFIED BY "ql_archive" DEFAULT TABLESPACE "AL_ARCHIVE"
TEMPORARY TABLESPACE "TEMP"
ACCOUNT UNLOCK;
GRANT CREATE ANY INDEX TO "QL_ARCHIVE"
GRANT CREATE ANY TABLE TO "QL_ARCHIVE"
GRANT CREATE ANY VIEW TO "QL_ARCHIVE"
GRANT CREATE DATABASE LINK TO "QL_ARCHIVE"
GRANT UNLIMITED TABLESPACE TO "QL_ARCHIVE"
GRANT "CONNECT" TO "QL_ARCHIVE";
GRANT "DBA" TO "QL_ARCHIVE";
GRANT "RESOURCE" TO "QL_ARCHIVE";如果是不同数据库的,可以建立跨数据库访问,在C空间里同样可以访问A和B表:
CREATE DATABASE LINK ONE
CONNECT TO ONEIDENTIFIED BY ONE
USING '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME=ONE)
)
)'
查看数据库连接:
select owner,object_name from dba_objects where object_type='DATABASE LINK';删除数据库连接:
drop database link ONE
--1、ONE用户登录讲表1查询权限给用户C
grant select on 表1 to C;
--2、TOW用户登录讲表1查询权限给用户C
grant select on 表1 to C;
--3、C用户登录建立视图
create or replace view view_name as
SELECT * from A.表1 union SELECT * from B.表1;
--4、说一句,普通视图存储的只是sql定义,并不存储数据,其实并不具备你说的存到表空间C上,只是让C用户可以查询。