oracle杂记

╄→尐↘猪︶ㄣ 提交于 2019-11-30 17:48:51
--查看版本
select * from versions

--表注册信息表
select * from table_registry

--STATES表包含状态元数据,它指示一段时间内创建的状态,
--还有每个状态的创建时间、关闭时间、父状态以及所有者。
--每创建一个状态,都会指定状态ID并且会在该表中添加一条记录。
--用户的每一个编辑行为都会以一个状态ID来表示。
select *from states

--STATE_LINEAGES表用于存储各状态的谱系,为每个版本创建一个新的谱系名称。
--每添加一个状态时,都会添加谱系名称和状态ID。
--当添加的状态是新版本时,还会添加父状态的祖先状态谱系(包括该谱系名称)。
--要返回某个版本的正确视图,通过查询其状态谱系即可识别每次对该版本进行更改时所记录的所有状态。
--通过此状态列表,可确定正确表示版本的表行
select * from state_lineages

--每次在某个状态下修改要素类或表时,都会在MVTABLES_MODIFIED表中创建一个新条目。
--对两个版本进行协调时,此过程的第一个步骤是识别这两个版本引用的状态——当前编辑版本的状态和目标版本的状态。
--根据这些状态,通过追踪这两个版本的状态谱系可识别公共祖先状态。
--随后通过查询MVTABLES_MODIFIED表可识别在公共父状态与目标版本状态之间所修改的所有表。
--通过此修改表的列表,会生成这两个状态谱系通用的表的另一个列表。
--对于第二个列表中的所有公共表,会执行多个版本差异查询INSERT、UPDATE、DELETE、UPDATE_UPDATE和UPDATE_DELETE。
select * from mvtables_modified

--版本压缩的日志查看
select compress_start,start_state_count,compress_end,end_state_count,compress_status from compress_log

--查看状态
select * from state_lineages

--------------start:SDE用户建库权限--------------------------
grant  CREATE SESSION to sde;
grant  CREATE TABLE to sde;
grant  CREATE PROCEDURE to sde;
grant  CREATE SEQUENCE to sde;
grant  CREATE TRIGGER to sde;
grant  CREATE TYPE to sde;
grant  CREATE LIBRARY to sde;
grant  CREATE PUBLIC SYNONYM to sde;
grant  CREATE OPERATOR to sde;
grant  CREATE INDEXTYPE to sde;
grant  DROP PUBLIC SYNONYM to sde;
grant  UNLIMITED TABLESPACE to sde;
grant  CREATE VIEW to sde;
prompt * SELECT ANY TABLE is required for compressing the database
prompt * This privilege needs to be granted whenever a compress is run.grant  SELECT ANY TABLE to sde;
prompt * ADMINISTER DATABASE TRIGGER can be revoked after install
grant  ADMINISTER DATABASE TRIGGER to sde;

-------------------End------------------------------------

--------------------SDE用户升级权限--------------------

grant  ADMINISTER DATABASE TRIGGER to sde; 
grant  SELECT ANY TABLE to sde;
grant  SELECT ANY SEQUENCE to sde; 
grant  EXECUTE ANY PROCEDURE to sde; 
grant  ANALYZE ANY to sde; 
grant  ALTER ANY INDEX to sde;
grant  ALTER ANY TABLE to sde;
grant  CREATE ANY SEQUENCE to sde; 
grant  CREATE ANY TRIGGER to sde; 
grant  CREATE ANY INDEX to sde;
grant  CREATE ANY PROCEDURE to sde; 
grant  DROP ANY INDEX to sde;
grant  DROP ANY SEQUENCE to sde; 
grant  DROP ANY TABLE to sde; 
grant  DROP ANY VIEW to sde;
grant  DROP ANY PROCEDURE to sde;
--------------------End--------------------------

--创建表空间
CREATE SMALLFILE TABLESPACE ESRI DATAFILE 'E:\APP\ESRI\ORADATA\ORCL\ESRI' 
SIZE 10000M  --初始化大小
AUTOEXTEND ON NEXT 200M
 MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO DEFAULT NOCOMPRESS

--创建用户
CREATE USER TEST PROFILE DEFAULT IDENTIFIED BY "*******" 
DEFAULT TABLESPACE ESRI TEMPORARY TABLESPACE TEMP ACCOUNT UNLOCK

--创建临时表空间 
create temporary tablespace test_temp --test_temp表空间名称
tempfile 'E:\oracle\product\10.2.0\oradata\testserver\test_temp01.dbf'--oracle文件路径
size 32m 
autoextend on 
next 32m maxsize 2048m 
extent management local; 

--创建数据表空间 
create tablespace test_data --test_data临时表空间名称
logging 
datafile 'E:\oracle\product\10.2.0\oradata\testserver\test_data01.dbf'--oracle文件路径
size 32m 
autoextend on 
next 32m maxsize 2048m 
extent management local; 

--创建用户并指定表空间 
create user username identified by password --username用户名称
default tablespace test_data --默认用户表空间
temporary tablespace test_temp; --默认临时表空间

--给用户授予权限 
grant connect,resource to username; 
grant dba to username

--删除空的表空间,但是不包含物理文件
drop tablespace tablespace_name;
--删除非空表空间,但是不包含物理文件
drop tablespace tablespace_name including contents;
--删除空表空间,包含物理文件
drop tablespace tablespace_name including datafiles;
--删除非空表空间,包含物理文件
drop tablespace tablespace_name including contents and datafiles;
--如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS
drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;

--说明: 删除了user,只是删除了该user下的schema objects,是不会删除相应的tablespace的。
drop user username cascade

-- ====================设置oracle数据库属性===================================
--1.Oracle最大连接数:
 show parameter processes
 alter system set processes=3000 scope=spfile;

--2.oracle最大会话数:
show parameter sessions
alter system set sessions=3000scope=spfile;

--3.oracle最大游标数:
select count(*) from v$open_cursor; 
alter system set open_cursors=5000 scope=both;


--4.大小写敏感
alter system set sec_case_sensitive_logon=false;

--5.关闭用户过期
ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

--6. 空表导出oracle11G
ALTER SYSTEM SET DEFERRED_SEGMENT_CREATION = FALSE;

-- =========================End=====================================


-- ====================创建oracle空间表============================================
--创建GIS临时表空间
create temporary tablespace 表空间名  
tempfile 'E:\DATABASE\GISTEMP.DBF' --表空间的位置路径
size 100m  
autoextend on  
next 100m maxsize 20480m  
extent management local;


-- 创建XXX表空间
create tablespace XXX                             -- 表空间名
datafile 'E:\DATABASE\ XXX.DBF' size 100M          -- 数据文件位置和初始文件大小
autoextend on next 100M maxsize unlimited logging   -- 文件自动扩展大小
extent management local autoallocate
segment space management auto;

03.
-- 创建xxxx用户
create user xxxx 
identified by xxxx
default tablespace xxxx
temporary tablespace TEMP;
-- 角色权限
grant connect to xxxx;

grant resource to xxxx;
--设置权限
GRANT CREATE SESSION, CREATE ANY TABLE, CREATE ANY VIEW ,CREATE ANY INDEX, CREATE ANY PROCEDURE,ALTER ANY TABLE, ALTER ANY PROCEDURE,DROP ANY TABLE, DROP ANY VIEW, DROP ANY INDEX, DROP ANY PROCEDURE,SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE 
TO HZCGIS; 

-- 系统权限
grant unlimited tablespace to xxxx;
grant create any view to xxxx;
---------------------------------

--=============================End=====================================================


--查找用户
select * from dba_users;

--查找工作空间的路径
select * from dba_data_files; 

--删除用户
drop user 用户名 cascade;

--删除表空间
drop tablespace 用户名 including contents and datafiles cascade constraint;

--例如:删除用户名成为ABC,表空间名称为ABC

--删除用户,及级联关系也删除掉
drop user 用户名 cascade;
--删除表空间,及对应的表空间文件也删除掉
drop tablespace 用户名 including contents and datafiles cascade constraint;

--=================start:删除表空间====================================

--查询这个默认表空间中的用户
select d.username,d.default_tablespace from dba_users d;

--SDE用户的会话状态
select v.USERNAME,v.SID,v.SERIAL# from v$session v where username =upper(用户名)
-- 删除用户的sid、serial
alter system kill session 用户的sid号

--删除用户
drop user 用户名 cascade
 
--删除非空表空间,但是包含物理文件
drop tablespace 表空间名 including contents and datafiles;

--=================End====================================

--导出dmp
exp 用户名/用户名@服务地址/orcl file=f:\data.dmp owner=(用户名)

select * from all_tables where owner='TEST';

IMP 用户名/用户名@orcl FILE=f:\data.dmp FULL=Y ignore=y

Oracle修改字段类型方法总结

有一个表名为tb,字段段名为name,数据类型nchar(20)。

1、假设字段数据为空,则不管改为什么字段类型,可以直接执行:
alter table tb modify (name nvarchar2(20));

2、假设字段有数据,则改为nvarchar2(20)可以直接执行:
alter table tb modify (name nvarchar2(20));

3、假设字段有数据,则改为varchar2(40)执行时会弹出:“ORA-01439:要更改数据类型,则要修改的列必须为空”,这时要用下面方法来解决这个问题

/修改原字段名name为name_tmp/
alter table tb rename column name to name_tmp;

/增加一个和原字段名同名的字段name/
alter table tb add name varchar2(40);

/将原字段name_tmp数据更新到增加的字段name/
update tb set name=trim(name_tmp);

/更新完,删除原字段name_tmp/
alter table tb drop column name_tmp;

总结:
1、当字段没有数据或者要修改的新类型和原类型兼容时,可以直接modify修改。

2、当字段有数据并用要修改的新类型和原类型不兼容时,要间接新建字段来转移。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!