SELECT a.tablespace_name "表空间名",b.total/1024/1024 表空间大小M,a.free/1024/1024 表空间剩余大小M,
(b.total-a.free)/1024/1024 表空间使用大小M,
ROUND((b.total-a.free)/b.total,4)*100 "使用率 %"
FROM
(SELECT tablespace_name,SUM(bytes) free FROM DBA_FREE_SPACE GROUP BY tablespace_name ) a,
(SELECT tablespace_name,SUM(bytes) total FROM DBA_DATA_FILES GROUP BY tablespace_name) b
WHERE a.tablespace_name=b.tablespace_name;
create tablespace 表空间名
datafile 'C:\oracledata\表空间存储的位置名.dbf' --表位置
size 100m -- 表空间大小
autoextend on -- 自动扩容
next 10m; --扩容大小
select * from v$version;
select count(*) from v$process;
select count(*) from v$session;
select count(*) from v$session where status='ACTIVE';
select sid,serial# as session的序列号,username,program,machine,status from v$session;
select value from v$parameter where name='processes';
alter system set processes=最大连接数值 scope=spfile;
shutdown immediate; --关闭实例
startup; --启动实例
select *from user_dependencies r where r.referenced_name = '表名';
select *from user_source a where a.text like '%存储过程名%'
select * from dba_tab_columns where column_name = '字段名'
select *from user_constraints e where e.table_name='表名'
select b.table_name, b.column_name from user_constraints a
inner join user_cons_columns b on a.constraint_name = b.constrain_name
where a.r_constraint_name = '上条sql查出的具体键对应的约束名'
select i.session_id, o.owner, o.object_name from v$locked_object i, dba_objects o where i.object_id = o.object_id;
select s.username, s.sid, s.serial#,
s.logon_time from v$locked_object o, v$session s
where o.session_id = s.sid order by s.logon_time desc;
sid和serial从上一条sql可获取到
alter system kill session '具体的sid, 具体对应的serial'
select name,dbid from v$database;
-- 或者
show parameter db_name;
select instance_name from v$instance;
-- 或者
show parameter instance_name;
select value from v$parameter where name='db_domain';
-- 或者
show parameter domain;
select value from v$parameter where name='service_names';
-- 或者
show parameter service;
-- 或者
show parameter names;
此参数是数据库标识类参数,用service_name表示。数据库如果有域,则数据库服务名就是全局数据库名;如果没有,则数据库服务名就是数据库名。查询:
show parameter service_name;
select * from dba_users;
create user 用户名 identified by 用户名密码;
-- 指定表空间
default tablespace 表空间名字;
-- 指定临时表空间
temporary tablespace 临时表空间名字(默认系统temp);
-- 特殊字符用双引号引起来
alter user 用户名 identified by 新密码;
grant create session to 用户名;
grant unlimited tablespace to 用户名;
grant drop any table to 用户名;
grant insert any table to 用户名;
grant update any table to 用户名;
grant select on 表名 to 用户名;
grant create view to 用户名;
Connect 角色:是授予最终用户的典型权利,最基本的权利,能够连接到Oracle数据库中,并在对其他用户的表有访问权限时,做select、update、insert 等操作。
grant connect to 用户名;
-- with admin option的意思是被授予该权限的用户有权将某个权限(如create any table)授予其他用户或角色,取消是不级联的。
grant connect to 用户名 with admin option;
-- 取消是级联的
grant connect to 用户名 with grant option;
Resouce角色:是授予开发人员的,能在自己的方案中创建表、序列、视图等。
grant resource to 用户名;
DBA角色:是授予系统管理员的,拥有该角色的用户就能成为系统管理员了,它拥有所有的系统权限。
grant dba to 用户名;
grant execute on 函数名称 to 用户名;
-- 取消所有表的查询权限
revoke select any table from 用户名;
-- 取消某个表的查询权限
revoke select on 表名 from 用户名;
select * from dba_role_privs;
drop user 用户名;
-- cascade:级联
-- 删除数据库用户及名下的所有表和视图
drop user 用户名 cascade;
select * from dba_profiles where resource_name='FAILED_LOGIN_ATTEMPTS';
-- 提示 ORA-28000:the account is locked
alter user 用户名 account unlock;
select * from user_users;
select * from dba_roles;
select username,default_tablespace from user_users;
SELECT osuser, a.username,cpu_time/executions/1000000||'s', b.sql_text,machine
from v$session a, v$sqlarea b
where a.sql_address =b.address order by cpu_time/executions desc;
create table t_name
(
xh varchar2(20) not null primary key,
xm varchar2(60),
CSRQ date
)
comment on table t_nameis '姓名表';
comment on column t_name.xh is '学号';
create table 备份表名 as select * from 需要备份的表名;
select *from 表名 for update;
select t.rowid, t.* from 表名;
over:开窗函数,通过over()函数,对明细数据再次进行分组,然后聚合
第一大类:聚合开窗函数====》聚合函数(列) OVER (选项),这里的选项可以是PARTITION BY子句,但不可是ORDER BY子句
第二大类:排序开窗函数====》排序函数(列) OVER(选项),这里的选项可以是ORDER BY子句,也可以是 OVER(PARTITION BY子句 ORDER BY子句),但不可以是PARTITION BY子句
select rownum,t.* from (select * from 表名 order by t.需要排序的字段名) t;
select row_number() over (order by t.需要排序的字段名) 序号的别名,t.* from 表名 t;
dual
:是一个虚拟表,只有一条数据hextoraw
:char 、 VARCHAR2 、 NCHAR 或 NVARCHAR2 数据类型中包含十六进制数字的 char 转换为原始值select sys_guid() from 表名;
substr(源字符串,符串截取的起始下标负数表示从倒数第几个字符开始,字符串截取长度)
instr(源字符串,查找的字符串,[开始查找的位置,查找第几次出现])
listagg(需要拼接汇总的列名, '连接符') within group(order by 按照排序的列名)
regexp_like(列名,正则表达式)
-- 数字开头的
select * from test where regexp_like(str,'^[0-9]');
-- 从头到位都是数字
select * from test where regexp_like(str,'^[0-9]+$')
-- 字段中是数字或者是字母组成
select * from test where regexp_like(str,'^[a-z]|[0-9]$','i');
-- 从头到位都是字母
select * from test where regexp_like(str,'^[A-Z]+$','i');
regexp_instr(列名,正则表达式,[开始查找位置默认1,查找第几次出现,模式i不区分大小写c区分大小写,是否含有子表达式])
-- 从第一个位置开始查找第2次出现非数字的位置
select '1,23,456,7890',
regexp_instr('1,23,456,7890', '[^0-9]+',1,2)
from dual;
regexp_substr(列名,正则表达式,[开始查找位置默认1,查找第几次出现,模式i不区分大小写c区分大小写,是否含有子表达式])
-- 拆分邮箱
select '[email protected]',
regexp_substr('[email protected]','[a-zA-Z0-9]+') 邮箱名,
regexp_substr('[email protected]', '\@[a-zA-Z0-9]+\.[a-zA-Z0-9]+') 邮箱后缀
from dual;
-- 匹配固定电话号码和手机号码
select regexp_substr('0755-11112222','^0[0-9]{2,3}-[0-9]{6,7}') 固定电话,
regexp_substr('15866668888','^1[0-9]{10}') 手机号码,
from dual;
regexp_replace(列名,正则表达式,[替换的字符串,替换第几次出现,模式i不区分大小写c区分大小写])
select 'abc123',
regexp_replace('abc123', '[0-9]', 'A', 1) 将数字替换为A,
regexp_replace('abc123', '[0-9]') 将数字替换为空
from dual;