模式对象管理(表,表空间,表分区等)

1.创建表:
create table '表名'(列名1 数据类型,列名2 数据类型,...) tablespace '表空间' storage(
initial 1M --指定初始区的大小
next 2m --指定下一个区的大小
minextents 2 --指定最少要分配多少区
maxextents 14 --指定区的最大数量
);

2.删除表:drop table '表名'

3.查询数据库所有的表:select * from dba_tables;--可以查到表的主用户,属于哪个表空间

4.把表重一个表空间移到另外一个表空间(A移动B):alter table A move tablespace B;、

5.查找表属于 哪个表空间:select * from user_tables where table_name = '表名';--什么用户登录sqlplus就查询哪个用户下的表

6.如何知道表table_a的结构:
方法一:SQL>desc TB_TRAN_CD
方法二:select * from all_tab_columns where table_name = 'TB_TRAN_CD';

7.根据现有的表克隆出一个新表(根据A表克隆出一个B表):
create table B as select * from A where 1=0;--1=0标数只克隆结果不克隆数据

8.表分析:
方法一:analyze table tb_int_tx_log compute statistics 90 percent;--抽样统计(抽样90%),抽样统计的速度快,但是不太准确
方法二:analyze table ta_int_tx_log compute statistics;--完全统计花费的时间比较长,但是比较准确
方式三:exec dbms_satts.gather_table_stats('cpab','tb_int_tx_log');--使用包dbms_stats对用户cpab的表tb_int_tx_log进行统计分析

9.得到创建表的sql:
select dbms_metadata.get_ddl('TABLE','表名','用户名') FROM DUAL;--得到创建表的sql语句(需要有dba权限)。
select dbms_metadata.get_ddl('TABLESPACE','表空间名') FROM DUAL;--得到创建表空间的sql语句(需要有dba权限)。
select dbms_metadata.get_ddl('USER','FUND') from  dual;--得到创建用户的sql语句。
select dbms_metadata.get_granted_ddl('ROLE_GRANT','FUND') from dual;--得到授权的sql语句,授权后会在user_role_privs视图中显示。
select dbms_metadata.get_ddl('INDEXE','索引名') from  dual;--得到创建索引的sql语句

10.改变表列的定义:ALTER TABLE ...MODIFY...命令改变列的属性
alter TABLE tablename MODIFY(column1 varchar2(400));--改变column1列的长度和数据类型
alter TABLE tablename MODIFY(column2 DEFAULT 'xzh');--改变column2列的默认值
alter TABLE tablename ADD(column3 NUMBER(7,2));--往表tablename中添加一列column3
alter TABLE tablename RENAME COLUMN column1 to columnbak1;--把表tablename中的column1列的名字改为columnbak1
alter TABLE tablename DROP COLUMN columnbak1;--删除单列columnbak1
alter TABLE tablename DROP (columnbak1,column2);--删除多列
alter TABLE tablename SET UNUSED (column1,column2);--将表中的column1和column2列标识为不可用
alter TABLE tablename DROP UNUSED COLUMNS;--删除表中被标数不可用的列

11.数据字典dba_extents(区),dba_segments(段)

12.数据字典dba_extents(区),dba_segments(段) --查看博客园:https://www.cnblogs.com/HiJacky/p/5492181.html
一个table的数据存放在block中,每次create table时,oracle以extent为单位分配空间,该table占用的空间为segment,segment由extent组成,extent由block组成
对于ASSM的管理segment
13.表空间(tableSpace) 段(segment) 盘区(extents) 块(block) 关系
Oracle表空间(tableSpace)、段 (segment)、盘区(extent)、块(block),这些都是Oracle用来保存数据库对象的分配单元。
14.v$PARAMETER:查看所有参数
show parameter spfile
15.数据库文件(数据文件,控制文件,数据库信息)信息查询
select * from v$datafile;--查询数据文件
select * from v$controlfile;--查询控制文件,有两个控制文件control01.ctl和control02.ctl(备份的),当control01.ctl破坏了,会从备份中拷贝过去
select * from v$database;--查询数据库信息
16.给用户赋予sysdba权限:
以SYS用户进入Oracle
SQL> grant sysdba to username;
17.查询数据库中有哪些索引:
select * from dba_indexes where owner = 'FUND';--查询FUND用户拥有哪些索引
18.查询数据库中有哪些视图:
select * from dba_views where  owner = 'FUND';--查询FUND用户拥有哪些视图
19.查看数据库中有哪些存储过程:
select * from dba_procedures owner = 'FUND';--查询FUND用户拥有哪些存储过程
20.查看数据库中有哪些触发器:
select * from dba_triggers where owner = 'FUND';--查询FUND用户拥有哪些触发器
21.查看数据库中有哪些序列号
select * from dba_sequences where sequence_owner = 'FUND';--查询FUND用户拥有哪些序列号
22.查询数据库中所有的表:
select * from dba_tables where owner = 'FUND';--查询FUND用户拥有哪些表

 

posted on 2018-01-04 08:58  zhabayi  阅读(436)  评论(0编辑  收藏  举报