oracle系统管理常用sql语句

user_XXX  all_XXX  dba_XXX --数据字典保存的是oracle系统信息,分为这三个。
---
----------------------------------系统用户、表、索引信息-----------------------------------
select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&table_name');—— 查看某表的大小

select table_name,cache from user_tables where instr(cache,'Y')>0;——查看放在ORACLE的内存区里的表
select * from user_synonyms;——查看同义词的名称
查看函数和过程的状态
  SQL>select object_name,status from user_objects where object_type='FUNCTION';
  SQL>select object_name,status from user_objects where object_type='PROCEDURE';
select text from all_source where owner=user and name=upper('&plsql_name');——查看函数和过程的源代码
select * from dba_objects; 数据对象
select * from user_objects;
select username from dba_users;--查看系统的全部用户了,注意,在表里面都变成了大写。
select table_name from user_tables;--查看该用户的表
select table_name from all_tables;--查看该用户可以访问的表
select * from user_tablespaces;--查看表空间
select * from dba_tablespaces;--查看表空间
select * from user_indexes;--查看索引  dba_indexs is not exist
select * from dba_users;--88A2B2C183431F00 查看系统用户 崔钟
select length(t.password) from dba_users t where rownum <2;--16,not 32.
select distinct(t.GRANTEE) from dba_sys_privs t;
select * from dba_role_privs t where t.GRANTEE=upper('lele');--查看乐乐拥有的角色
select * from dba_roles;--oracle roles
select * from global_name;--全局数据库名==sid==主机字符串==实例名
-------------------------------------表空间与数据文件-----------------------------------
create tablespace test02 datafile 'd:\ykdatefile03.dbf' size 100m uniform size 64k; --数据文件1g,区大小64k。error,是因为语法错误,datafile、size丢失。。。
select table_name from dba_tables where tablespace_name=upper('users');--查看属于某个表空间的表
drop tablespace 'biaomingzi' including contents and datafiles;--删除表空间及其对象
--alter tablespace datefileyk add datafile 'd:\adddatafile02.dbf' size 50m uniform size 128k;--扩展表空间方法一:增加数据文件(error by 'uniform size 128k')
alter tablespace datefileyk add datafile 'd:\adddatafile02.dbf' size 50m;--扩展表空间方法一:增加数据文件
alter tablespace test01 'd:\ykdatefile02.dbf' resize 150m;--扩展表空间方法二:增大数据文件--error
alter database datafile 'd:\ykdatefile02.dbf' resize 150m;--扩展表空间方法二:增大数据文件--right!
alter database datafile 'd:\ykdatefile02.dbf' autoextend on next 100m maxsize 200m;--扩展表空间方法三:设置数据文件自动增长--righit!
alter database datafile '/u01/app/oracle/oradata/cmsdb/users01.dbf' autoextend on next 100M MAXSIZE UNLIMITED;--扩展表空间四,不限制增长。该方法不宜使用!魔屏资讯、users。fchen
alter tablespace users online;--offline,脱机状态,当移动数据文件时执行脱机。
--修改数据文件,不需要指明表空间,因为数据文件肯定属于一个特定的表空间,而创建、增加数据文件的时候,则必须指明这些文件是属于哪个tablespace的。
--datafile
select * from dba_data_files;--查看表空间和它的数据文件的位置!!!
--执行命令mv 移动数据文件,执行命令rename 修改datafile名字。
SELECT tablespace_name 表空间,sum(blocks*8/1024) 剩余空间M FROM dba_free_space GROUP BY tablespace_name;--查看剩余表空间
select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name;
------------------------------------oracle中的约束-----------------------------------

not null,primary key,foreign key,check,unique.
---------index---------
1.大表上建立索引才有意义
2.在where子句或者是连接条件上经常使用的列上建立索引
3.索引不要超过4层
--
4.单索引,即建立在单列上的索引,一个表可以建立多个索引
5.符合索引,建立在两个列或者更多列上的索引,但要求组合(排列)必须不同,如
create index ind_dpixuqiu on dpixuqiu(id,name);
create index ind_dpixuqiu on dpixuqiu(name,id);
这是两个不同的索引,建议写sql的时候,记住列上的索引是如何建立的!
6.修改表结构,维护成本高。。。
---
SQL> conn sys/zhangle as sysdba;--使用sys登录,必须as sysdba或者sysoper,不能是normal!!!搞了一天,也问了浩伟,原来是这个情况。。。what a fucking things!
grant update on dpixuqiu(name) to xiaoshuai;--select delete update insert和alter,可以具体到某个字段。
-------------------------------------拜神测试-----------------------------------
---
select *
  from (select * from tadmin where rownum < 10) t
 where rownum > 2;
select rownum rn, t.* from tadmin t where rownum < 5;
select *
  from (select t.*, rownum rn from tadmin t where rownum < 5) t
 where rn > 2;
--
insert into test2 values (1, '测试数据1....1', sysdate, 'y');
insert into test2 values (2, '百胜', sysdate, 'N');
insert into test2 values (5, '测试数据1....3', sysdate, 'Y');
insert into test2 values (11, '测试数据1....3', sysdate, 'Y');
commit;
update test2 set testname='百胜凯哥' where id=1;
select * from test2;
--
update test1
   set testname =test2.testname
   where exists (select 1 from test2 where test1.id=test2.id);
   
       (select s.testname from test1 t, test2 s where t.id = s.id);
       --
update test1 t
   set t.testname =
       (select s.testname from test1 t, test2 s where t.id = s.id)
 where t.id in (select t.id from test1 t, test2 s where t.id = s.id);
--
--正确的
update test1 t
   set testname =
       (select s.testname
          from  test2 s
         where t.id = s.id)
         where t.id in (select t.id from test1 t, test2 s where t.id = s.id);
 ---- 
 commit;
 rollback;                
 where t.id = 2;
select * from test1;

update test1 t set t.testname = test2.testname where t.id = test2.id;
select lower(t.cadduser) from tadmin t;--upper lower
select upper(substr(t.cadduser,1,1))||lower(substr(t.cadduser,2,length(t.cadduser)-1)) from tadmin t;
create table addr02(iid2 number(2),cname2 char(8));
alter table addr02 modify iid2 number(2) primary key;
alter table addr01 add  ttime date;
insert into addr02 values ('1','kai01');
insert into addr02 values ('2','kai02');
insert into addr02 values ('4','kai03');
insert into addr01 values ('4','kai01',sysdate);
select * from addr01;
commit;
rollback;
update addr01,addr02 set addr01.cname1=addr02.cname2 where addr01.iid=addr02.iid2;--mysql下可以
update addr01 t set t.cname1=(select s.cname2 from addr02 s where t.iid=s.iid2) where t.iid in (select s.iid2 from addr02 s where t.iid=s.iid2);
create table addr02(iid2 number(2) primary key,cname2 char(8));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值