oracle spatial运维操作备忘录,持续更新中……

数据环境

创建表空间

1.创建表空间查看用户使用的表空间,分别查询所有用户:

select distinct tablespace_name from user_tables;

2.查看一共该用户下有多少表空间:

select t.tablespace_name, round(sum(bytes / (1024 * 1024)), 0) ts_size
from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name
group by t.tablespace_name;

3.为用户规划并建立表空间

-- 创建表空间 USERNAM为用户名
create tablespace  USERNAME datafile 
'F:\ORADATA\USERNAME_1.DBF' size 4096M reuse ;  

-- 增加表空间,设置扩展
alter tablespace USERNAME add datafile 
'F:\ORADATA\USERNAME_2.DBF' size 4096M autoextend on next 100M

需要注意的一点是,在创建表空间的时候,单个DBF文件大小是有限制的。
Oracle数据文件默认大小上限是32G,如果要数据文件大于32G,需要在数据库创建之初就设置好。
表空间数据文件容量与DB_BLOCK_SIZE有关,在初始建库时,DB_BLOCK_SIZE要根据实际需要,设置为 4K,8K、16K、32K、64K等几种大小,ORACLE的物理文件最大只允许4194304个数据块(由操作系统决定),表空间数据文件的最大值为 4194304×DB_BLOCK_SIZE/1024M。
即:
4k最大表空间为:16384M=16G
8K最大表空间为:32768M=32G
16k最大表空间为:65536M=64G
32K最大表空间为:131072M=128G
64k最大表空间为:262144M=256G

新建自定义坐标系

占个坑,这块我还没吃透,虽然有SQL语句,但是坐标系涉及敏感信息,就不放出来了,以后补充。

表的相关操作

1.修改原表名称

ALter table <tablename> RENAME to  <newtablename>

2.查询该表索引

select * From user_indexes t  where 
	t.table_name=<'TABLENAME'>

3.删除索引

drop index <INDEX_NAME>

4.拼接批量修改索引名称的SQL

select 'alter index '||i.index_name||' rename to '||substr(i.index_name,0,(length(i.index_name)-1)) ||';' sql_text
from user_ind_columns i where 
i.column_name <> 'GEOMETRY' and i.table_name in 
(select table_name From user_sdo_geom_metadata t where t.srid='9992017')

这里需要注意一点,
查询索引可以在user_ind_columns和user_indexs两个视图中查到,之所以用user_ind_columns判断而不是用user_indexs,因为有的数据的索引的所有者可能不是该用户。即,用user_indexs有可能会有遗漏的情况。

5.拼接批量修改约束名称的SQL

select 'alter table '||table_name||' rename constraint '||constraint_name ||' to '||substr(constraint_name,0,(length(constraint_name)-1)) ||';' sql_text
from  user_constraints where 
table_name in 
(select table_name From user_sdo_geom_metadata t where t.srid='9992017')

6.创建空间索引:

create index <user>.<indexname>  on  <user>.<tablename>(geometry) indextype is mdsys.spatial_index;

修改元数据表SRID指向并新建SRID

1.修改原表指向

UPDATE USER_SDO_GEOM_METADATA SET TABLE_NAME = '@Value(新表名)' WHERE TABLE_NAME = '@Value(TABLE_NAME)';
commit;

2.插入新的SRID

insert into user_sdo_geom_metadata
(table_name, column_name, srid, DIMINFO)
values
  ('<TABLE_NAME>',
   'geometry',
   '<srid>',
   sdo_dim_array(sdo_dim_element('X', -180, 180, 0.5),
                 sdo_dim_element('Y', -90, 90, 0.5)));

不要忘记点击提交!

数据库的导入导出

通过DBLINK导出dump方式整个用户导出。

1.本地库创建dblink指向远程库。

--以'192.168.1.1/testora'数据库,testuser用户,密码testpassword,创建DBlink名称为“linkname”为例
create database link linkname  connect to testuser identified by testpassword using '192.168.1.1/testora';

2.本地库创建directory目录对象并授权

--只需要执行一次,创建其他用户不用再执行了
Create  directory  expdp_dir  as 'E:/ expdp_dir/';
grant all on directory expdp_dir to system;  

3.被导出数据库授予远程数据库用户exp_full_database权限

GRANT exp_full_database TO linkname;  

4.创建bat文件导出数据库。

expdp system/oracle@192.168.1.1/testora network_link=linkname directory=expdp_dir dumpfile=testuser.dmp logfile=testuser.log schemas=testuser
pause

5.bat导出数据

impdp system/oracle@192.168.1.2/test    directory=expdp_dir dumpfile=testuser.dmp logfile=testuser_导入.log table_exists_action=replace
pause

通过create …as…导入指定数据

CREATE TABLE <TABLENAME> AS SELECT * FROM <TABLENAME>@<linkname>;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值