Oracle 常用命令大全

数据库
----数据库启动 & 关闭
  • 启动数据库
SQL> startup nomount;
SQL> alter database mount;
SQL> alter database open;
  • 关闭数据库
SQL> shutdown immediate;

更多内容请参考:Oracle数据库启动和关闭

----连接数据库
  • 登陆普通用户
SQL>sqlplus 用户名/密码@实例名//登陆普通用户,@实例名可省略

例:

SQL>sqlplus scott/tiger; //登陆普通用户 scott
  • 登陆sys帐户
SQL>sqlplus / as sysdba; //登陆 sys 帐户
SQL>sqlplus sys as sysdba;//登陆 sys 帐户

说明:
sys :系统管理员,拥有最高权限
system :本地管理员,次高权限
scott :普通用户,密码默认为tiger,默认未解锁

----查看数据库名
SELECT NAME FROM V$DATABASE;
----查看实例
  • Linux下查看oracle上已启动实例
$ ps -ef|grep smon
  • 查看当前启动的实例
SQL>select * from global_name;
  • 查看默认实例
$ echo $ORACLE_SID
  • 切换实例
$ export ORACLE_SID=实例名 
用户
----创建用户 :create user 用户名 identified by 密码;

例:

create user user1 identified by 123;
----重置密码:alter user 用户名 identified by 密码;

例:

alter user user1 identified by 456;
----账户解锁:alter user 用户名 account unlock;

例:

alter user user1 account unlock;
----账号赋权:
grant create session to zhangsan; //授予zhangsan用户创建session的权限,即登陆权限
grant unlimited session to zhangsan;//授予zhangsan用户使用表空间的权限
grant create table to zhangsan;//授予创建表的权限
grante drop table to zhangsan; //授予删除表的权限
grant insert table to zhangsan;//插入表的权限
grant update table to zhangsan;//修改表的权限
grant alert all table to zhangsan;//授予zhangsan用户alert任意表的权限
grant all to public; //授予所有权限(all)给所有用户(public)

oracle对权限管理比较严谨,普通用户之间也是默认不能互相访问的,需要互相授权

grant select on tablename to zhangsan;//授予zhangsan用户查看指定表的权限
grant drop on tablename to zhangsan;//授予删除表的权限
grant insert on tablename to zhangsan;//授予插入的权限
grant update on tablename to zhangsan;//授予修改指定表的权限
grant insert(id) on tablename to zhangsan;//授予对指定表特定字段的插入权限
grant update(id) on tablename to zhangsan;//授予对指定表特定字段的修改权限
grant role1 to test;//授予角色role1(role1为已存在的角色)
----账户撤销权限
基本语法同 grant,关键字为 revoke
----删除用户:

例:

drop user zhangsan; //仅删除用户
drop user zhangsan cascade; //删除用户的同时,删除此用户名下所有的对象
----查询所有用户(DBA账号执行):
select * from all_users;
----查看当前用户连接:
select * from v$Session;
----查看用户角色:
SELECT * FROM USER_ROLE_PRIVS;
----查看当前用户权限:
select * from session_privs;
select * from user_sys_privs;//查看当前用户所有权限
select * from user_tab_privs;//查看所用用户对表的权限
----查看所有用户所拥有的角色(DBA账号执行):
SELECT * FROM DBA_ROLE_PRIVS;
----创建用户并指定表空间
create user 用户名 identified by 密码 
default tablespace 默认表空间名
temporary tablespace 默认临时表空间名;
----查看当前用户的缺省表空间
select username,default_tablespace from user_users;
视图
----创建视图
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name[(alias[, alias]...)]AS subquery[WITH CHECK OPTION [CONSTRAINT constraint]][WITH READ ONLY]

参数说明:
* OR REPLACE :若所创建的试图已经存在,则替换旧视图;

* FORCE:不管基表是否存在ORACLE都会自动创建该视图(即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用);

* NOFORCE :如果基表不存在,无法创建视图,该项是默认选项(只有基表都存在ORACLE才会创建该视图)。

* alias:为视图产生的列定义的别名;

* subquery :一条完整的SELECT语句,可以在该语句中定义别名;

* WITH CHECK OPTION :插入或修改的数据行必须满足视图定义的约束;

* WITH READ ONLY :默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不能通过该视图进行增删改操作。现实开发中,基本上不通过视图对表中的数据进行增删改操作。

例:基于EMP表和DEPT表创建视图

CREATE OR REPLACE VIEW EMPDETAIL AS 
SELECT EMPNO,ENAME,JOB,HIREDATE,EMP.DEPTNO,DNAME
FROM EMP JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO
WITH READ ONLY
----删除视图
DROP VIEW schema_name.view_name 
[CASCADE CONSTRAINT];

参数说明 :

* schema_name :指定包含视图的模式的名称。如果跳过模式名称,则Oracle假定该视图位于当前用户模式中。
* view_name:指定要删除的视图的名称。如果一个视图被其他视图,物化视图或同义词所引用,Oracle将把这些对象标记为INVALID,但不会将其移除。
* CASCADE CONSTRAINT :如果视图有任何约束,则必须指定CASCADE CONSTRAINT子句以删除引用视图中的主键和唯一键的所有参照完整性约束。如果不这样做,存在这样的约束时,DROP VIEW语句将会失败。

角色
----创建角色:create role 角色名;

例:

create role myrole;
----给角色赋权:

例:

grant select on table1 to role1;//给角色 role1 赋予查询表 table1 的权限
----将角色赋予某用户:grant 角色名 to 用户名;

例:

grant role1 to zhangsan;//role1为已存在的角色
----删除角色:drop role 角色名;

例:

drop role myrole;
----查看角色权限:

例:

select * from dba_role_privs  where grantee ='role1'
select * from dba_role_privs  where grantee like'%role1%'
表空间
----创建表空间
create tablespace 表空间名 datafile '/oracle/.../数据文件名.dbf' size 100m autoextend on next 100m maxsize 400m extent management local;
----删除表空间
drop tablespace 表空间名 ;
----查看数据库的表空间使用状态
select a.tablespace_name tnm,b.FILE_PATH,--b.autoextensible,b.cnt,trunc(a.bytes/1024/1024/1024) total_G,trunc(a.bytes/1024/1024/1024/b.cnt) avg_G,trunc(c.bytes/1024/1024/1024) free_G,trunc((a.bytes-c.bytes)*100/a.bytes,2) used--,(c.bytes*100)/a.bytes "% FREE"from SYS.SM$TS_AVAIL A,SYS.SM$TS_FREE C,(select tablespace_name,substr(file_name,1,instr(file_name,'/',2)) FILE_PATH, --f.autoextensible,count(*) cnt from dba_data_files  f group by tablespace_name,substr(file_name,1,instr(file_name,'/',2))--,autoextensible) bWHERE  A.TABLESPACE_NAME=C.TABLESPACE_NAME(+)AND A.TABLESPACE_NAME=B.TABLESPACE_NAME--   AND A.TABLESPACE_NAME IN (select distinct tablespace_name from dba_tablespaces)order by  avg_g desc;
----查看表空间的datafile
select * from dba_data_files where tablespace_name like '表空间名' order by 1 desc;
----表空间扩容
  • 添加数据文件,以达扩大表空间
ALTER TABLESPACE 表空间名 ADD DATAFILE '/oradata/.../数据文件名.dbf' 
SIZE 4000M AUTOEXTEND ON NEXT 100M;
  • resize 数据文件方式,以达扩大表空间
alter database datafile  FILE_ID resize BYTES字段目标值;

例:

alter database datafile  179 resize 8194304000;
----查看表空间使用量(全库 )
select SUM(a.BYTES/1024/1024) "Size" from dba_segments a
----查看特定数据库的表空间使用率
select SUM(a.BYTES/1024/1024) "Size" from dba_segments a where a.owner = '数据库名'; 
----查看 temp tablespace(临时表空间)
select t.tablespace_name,t.contents,t.* from dba_tablespaces t
----查看 temp tablespace 的 datafile
select * from dba_temp_files
----添加temp tablespace的datafile
alter tablespace TEMP add tempfile '/oradata/.../数据文件名.dbf' size 2000m autoextend on next 100m maxsize unlimited;
----创建新表
  • 直接创建
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
  • 根据已有旧表创建
create table tab_new like tab_old //创建与旧表结构完全一致的新表
create table tab_new as select col1,col2… from tab_old definition only//选择旧表的某些字段创建新表
----表结构
  • 修改表结构

* 增加一列

Alter table 表名 add column 列名;

* 添加主键(Create/Recreate primary)

alter table 表名 add constraint 主键名 primary key(字段名);

* 删除表主键

ALTER TABLE 表名 DROP CONSTRAINT 主键名;

* 添加索引(Create/Recreate indexes)

create unique index 索引名 on 表名 (字段名);

* 删除索引

drop index schema.indexname;

----查询表数据

select * from tabname (where 字句);
----表数据
  • 插入数据
insert into table1(field1,field2) values(value1,value2)
  • 更新数据
update table1 set field1=value1 where 条件;
  • 删除表中数据:
delete from table_name where子句;//删除筛选数据
 truncate table table_name;//删除表中所有数据
----删除表
drop table table_name;
----索引
  • 根据索引名,查询表索引字段
select * from user_ind_columns where index_name='索引名';
  • 根据表名,查询一张表的索引
select * from user_indexes where table_name='表名';
  • 通过列名查询表名
select table_name from user_tab_columns where column_name='列名';
系统监控
----查询正在执行的sql语句及执行该语句的用户
SELECT b.sid oracleID,b.username 登录Oracle用户名,b.serial#,spid 操作系统ID,paddr,sql_text 正在执行的SQL,
b.machine 计算机名 
v$sql.sql_id,
s.terminal,
s.program,
from v$process a, v$session b, v$sqlarea c 
WHERE a.addr = b.paddrAND b.sql_hash_value = c.hash_value; 

或者

select a.username, a.sid,b.SQL_TEXT, b.SQL_FULLTEXT
from v$session a, v$sqlarea b where a.sql_address = b.address 
----锁(lock)
  • 查看当前被锁对象
SELECT l.session_id sid,s.serial#,l.locked_mode 锁模式,l.oracle_username 登录用户,l.os_user_name 登录机器用户名,s.machine 机器名,s.terminal 终端用户名,o.object_name 被锁对象名,s.logon_time 登录数据库时间 FROM v$locked_object l, all_objects o, v$session s WHERE l.object_id = o.object_idAND l.session_id = s.sid ORDER BY sid, s.serial#;
  • 查看死锁语句
select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID

select * from v$lock where block=1
  • kill死锁
alter system kill session 'SID,serial#';//实际操作时,将SID和serial#替换成实际数值

例:

ALTER SYSTEM KILL SESSION '2210,2769';

补:操作系统级别杀掉进程:

#top
#kill -9 SPID 
  • 查询DML死锁会话sid
select sid,blocking_session,LOGON_TIME,sql_id,status,event,seconds_in_wait,state,BLOCKING_SESSION_STATUSfrom v$sessionwhere event like 'enq%'and state = 'WAITING'and BLOCKING_SESSION_STATUS = 'VALID'

select(select username from v$session where sid=a.sid) blocker,a.sid,a.id1,a.id2,' is blocking ' "IS BLOCKING",(select username from v$session where sid=b.sid) blockee,b.sidfrom v$lock a, v$lock bwhere a.block = 1and b.request > 0and a.id1 = b.id1and a.id2 = b.id2;
  • 查询锁住的DDL对象
select d.session_id, s.SERIAL#, d.namefrom dba_ddl_locks d, v$session swhere d.owner = 'zhangsan'and d.SESSION_ID = s.sid
  • 查询等待事件
select event,sum(decode(wait_time, 0, 0, 1)) "之前等待次数",sum(decode(wait_time, 0, 1, 0)) "正在等待次数",count(*)from v$session_waitgroup by eventorder by 4 desc
  • 根据 sid 查 spid 或根据 spid 查 sid
select s.sid, s.serial#, s.LOGON_TIME, s.machine, p.spid, p.terminalfrom v$session s, v$process pwhere s.paddr = p.addrand s.sid = xxor p.spid = yy
  • 根据sid查看具体的sql语句
select username, sql_text, machine, osuserfrom v$session a, v$sqltext_with_newlines bwhere DECODE(a.sql_hash_value, 0, prev_hash_value, sql_hash_value) =b.hash_valueand a.sid = &sidorder by piece;
  • 根据spid查询具体的sql语句
select ss.SID,ss.SERIAL#,ss.LOGON_TIME,pr.SPID,ss.action,sa.SQL_FULLTEXT,ss.machine,ss.TERMINAL,ss.PROGRAM,ss.USERNAME,ss.STATUS,ss.OSUSER,ss.last_call_etfrom v$process pr, v$session ss, v$sqlarea sawhere ss.status = 'ACTIVE'and ss.username is not nulland pr.ADDR = ss.PADDRand ss.SQL_ADDRESS = sa.ADDRESSand ss.SQL_HASH_VALUE = sa.HASH_VALUEand pr.spid = xx
  • 查询执行过的sql语句及执行该语句的用户
select a.USERNAME 登录Oracle用户名,a.MACHINE 计算机名,SQL_TEXT,b.FIRST_LOAD_TIME,b.SQL_FULLTEXTfrom v$sqlarea b, v$session awhere a.sql_hash_value = b.hash_valueand b.FIRST_LOAD_TIME between '2020-06-01/09:00:00' and'2020-06-30/15:39:00'order by b.FIRST_LOAD_TIME desc;
  • 查看正在执行sql的发起者的发放程序
SELECT OSUSER 电脑登录身份,PROGRAM 发起请求的程序,USERNAME 登录系统的用户名,SCHEMANAME,B.Cpu_Time 花费cpu的时间,STATUS,B.SQL_TEXT 执行的sql FROM V$SESSION A LEFT JOIN V$SQL B ON A.SQL_ADDRESS = B.ADDRESSAND A.SQL_HASH_VALUE = B.HASH_VALUE ORDER BY b.cpu_time DESC
  • 查看占io较大的正在运行的session
SELECT se.sid,se.serial#,pr.SPID,se.username,se.status,se.terminal,se.program,se.MODULE,se.sql_address,st.event,st. p1text,si.physical_reads,si.block_changesFROM v$session se, v$session_wait st, v$sess_io si, v$process prWHERE st.sid = se.sidAND st. sid = si.sidAND se.PADDR = pr.ADDRAND se.sid > 6AND st. wait_time = 0AND st.event NOT LIKE '%SQL%'ORDER BY physical_reads DESC
----监听
  • 查看监听状态
lsnrctl status
  • 启动监听器
lsnrctl start
  • 关闭监听器
lsnrctl stop
----防火墙
  • 查看防火墙状态
#firewall-cmd --state
  • 关闭防火墙
#systemctl stop firewalld.service
  • 启动防火墙
#systemctl start firewalld.service

本文转自 https://blog.csdn.net/Ruishine/article/details/113178508,如有侵权,请联系删除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/88821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UG\NX二次开发 信息窗口的4种输出方式 NXOpen::ListingWindow::DeviceType

文章作者:里海 来源网站:《里海NX二次开发3000例专栏》 简介 UG\NX二次开发 信息窗口的4种输出方式 NXOpen::ListingWindow::DeviceType 信息窗口的输出类型 enum NXOpen::ListingWindow::DeviceType 枚举值描述 DeviceTypeWindow0输出将写入“信息”窗口DeviceTypeFile1输出…

nginx配置密码访问

安装htpasswd 因为需要使用到htpasswd,htpasswd是Apache服务器中生成用户认证的一个工具,如果未安装,则使用如下命令安装htpasswd。 yum install -y httpd-tools设置用户名和密码 htpasswd 安装成功后,就可以设置用户名和密码&am…

Java项目-Spring Boot的生鲜网上交易系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1 简介2 技术栈3 系统功能4 功能设计5系统详细设计5.1系统功能模块5.2后台功能模块5\.2\.1用户功…

vscode左键无法跳转到定义的文件

之前用vscode的时候,明明是可以ctrl键鼠标左键跳转到定义文件的,突然之间就不行了,鼠标移到引入上根本都没有下划线,无法跳转 解决方法: 项目的根目录新建 jsconfig.json 文件,代码如下 {"compiler…

win10 删除gnu grub界面

之前在win10系统上,装了ubuntu双系统。后来把Ubuntu系统删除后,每次开机都会卡在GNU GRUB界面。 删除GNU GRUB界面的操作步骤: 启动cmd.exe在cmd中运行 diskpart命令,启动diskpart工具 在diskpart中运行 list disk选择boot文件…

http基础教程(超详细)

HTTP HTTP 一 、基础概念 请求和响应报文URL 二、HTTP 方法 GETHEADPOSTPUTPATCHDELETEOPTIONSCONNECTTRACE 三、HTTP 状态码 1XX 信息2XX 成功3XX 重定向4XX 客户端错误5XX 服务器错误 四、HTTP 首部 通用首部字段请求首部字段响应首部字段实体首部字段 五、具体应用 连接管理…

敏捷发布列车初探2 ---- Agile Release Train

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 敏捷发布列车二、ART的特性2.敏捷团队为列车提供动力3.与共同节奏保持一致4.关键角色启用 三、ART的责任总结 敏捷发布列车 敏捷发布列车(ART&#xff…

CentOS 7.5 centos failed to load selinux policy 错误解决方法

这是个 selinux 使能导致的, 关闭即可 在进入到内核选中界面,选中要启动的内核, 按键盘 e 就会进入启动参数界面 进入启动参数界面如图,按上下键找到 UTF8 UTF8如图, 添加 selinux0 添加完成如图, 按 ctr…

MQTT协议知识梳理,看完你就懂了

目录 一、MQTT简介 二、MQTT框架图 三、MQTT特点 四、MQTT协议原理 1.MQTT协议实现框图 3.网络传输与应用消息 4.MQTT客户端 5.MQTT服务器 6.MQTT协议中的订阅、主题、会话 五、MQTT优缺点 优点 缺点 一、MQTT简介 MQTT是基于TCP/IP协议栈构建的异步通信消息协议&a…

比特币 ZK 赏金系列:第 2 部分——查找哈希冲突

在我们的零知识赏金 (ZKB) 系列的第二部分中,我们将其应用于解决哈希冲突难题。在这样的谜题中,两个不同的输入散列到相同的输出。此类赏金可用于: 充当煤矿中的金丝雀,给我们一个有价值的提醒。存在冲突是散列函数较弱的标志&…

linux内网渗透

一、信息收集 主机发现: nmap -sP 192.168.16.0/24 端口探测 masscan -p 1-65535 192.168.16.168 --rate1000 开放端口如下 nmap端口详细信息获取 nmap -sC -p 8888,3306,888,21,80 -A 192.168.16.168 -oA ddd4-port目录扫描 gobuster dir…

19.组合模式(Composite)

意图:将对象组成树状结构以表示“部分-整体”的层次结构,使得Client对单个对象和组合对象的使用具有一致性。 上下文:在树型结构的问题中,Client必须以不同的方式处理单个对象和组合对象。能否提供一种封装&#xff0c…

如何使用ArcGIS Pro制作标准地图样式国界

相信大家都浏览过标准地图服务提供的标准地图,不知道你有没有想过尝试制作里面的国界,这里为大家介绍一下制作方法,希望能对你有所帮助。 制作已定国界 在地图数据内,国界分为已定国界、未定国界和海岸线,我们先对已定…

C++使用高斯模糊处理图像

C使用高斯模糊处理图像 cv::GaussianBlur 是 OpenCV 中用于对图像进行高斯模糊处理的函数。高斯模糊是一种常用的图像滤波方法,它可以减少图像中的噪声,并平滑图像以降低细节级别。 void cv::GaussianBlur(const cv::Mat& src, cv::Mat& dst, …

OPTEE Gprof(GNU profile)

安全之安全(security)博客目录导读 OPTEE调试技术汇总 目录 一、序言 二、Gprof使用 三、Gprof实现 1、Call graph information 2、PC distribution over time 一、序言 本文描述了如何使用gprof对TA进行概要分析。 配置选项CFG_TA_GPROF_SUPPORTy使OP-TEE能够从在用户模…

B2901A 是德科技keysight精密型电源

181/2461/8938Agilent B2901A精密源/测量单元(SMU)是一款单通道、紧凑且经济高效的台式SMU,能够采集和测量电压和电流。它功能多样,可以轻松、高精度地执行I/V(电流与电压)测量。四象限源和测量功能的集成使I/V测量简单易行,无需配置多种仪器…

如何看待著名游戏引擎 Unity 宣布将更改收费模式,收取「运行时费用」?这将造成哪些影响?

先下结论:Unity 的高管是不是【不友善内容,请于 24 小时内及时更改】? 简单介绍下这个收费模式:年收入大于 20w 美金且安装量大于 20w 的,每一份额外下载需要给 Unity 交 0.2 刀。 首先:听上去好像不会影响…

基础题——数组

输入一个电子邮箱,检查用户输入的字符串是否为有效的电子邮件地址 正确的邮箱地址: 必须包含字符,不能是开头或结尾 必须以 .com结尾 和.com之间必须有其他字符 public static void main(String[] args) {Scanner sc new Scanner(System.in…

使用Process Monitor工具探测日志文件是程序哪个模块生成的

目录 1、问题描述 2、使用Process Monitor监测目标文件是哪个模块生成的思路说明 3、操作Process Monitor监测日志文件是哪个模块生成的 4、通过screenctach.dll库的时间戳,找到其pdb文件,然后去查看详细的函数调用堆栈 5、最后 VC常用功能开发汇总…

嵌入式Linux应用开发-文件 IO

嵌入式Linux应用开发-文件 IO 第四章 文件 IO4.1 文件从哪来?4.2 怎么访问文件?4.2.1 通用的 IO 模型:open/read/write/lseek/close4.2.2 不是通用的函数:ioctl/mmap 4.3 怎么知道这些函数的用法?4.4 系统调用函数怎么…