ORACLE数据库 DBA常用知识
<常用命令参考>
个系统变量值
SQL> show user --显示当前连接用户
SQL> show error --显示错误
SQL> set heading off --禁止输出列标题,默认值为ON
SQL> set feedback off --个或更多的记录,回送ON"
SQL> set timing on --默认为OFF,设置查询耗时,可用来估计SQL语句的执行时间,测试性能
SQL> set sqlprompt "SQL> " --设置默认提示符,默认值就是"SQL>"
SQL> set linesize 1000 --设置屏幕显示行宽,默认100
SQL> set autocommit ON --设置是否自动提交,默认为OFF
SQL> set pause on --默认为OFF,设置暂停,会使屏幕显示停止,等待按下ENTER键,再显示下一页
SQL> set arraysize 1 --默认为15
SQL> set long 1000 --默认为80
说明:
long是为了显示更多的内容,因为很多数据字典视图中用到了long数据类型,如:
SQL> desc user_views
列名可空值否类型
------------------------------- -------- ----
VIEW_NAME NOT NULL VARCHAR2(30)
TEXT_LENGTH NUMBER
TEXT LONG
SQL> define a = '''20000101 12:01:01''' --定义局部变量,如果想用一个类似在各种显示中所包括的回车那样的常量,
--可以用define命令来设置
SQL> select &a from dual;
原值 1: select &a from dual
新值 1: select '20000101 12:01:01' from dual
'2000010112:01:01
-----------------
20000101 12:01:01
问题提出:
1、用户需要对数据库用户下的每一张表都执行一个相同的SQL操作,这时,一遍、一遍的键入SQL语句是很麻烦的
实现方法:
SQL> set heading off --禁止输出列标题
SQL> set feedback off --禁止显示最后一行的计数反馈信息
列出当前用户下所有同义词的定义,可用来测试同义词的真实存在性
select 'desc '||tname from tab where tabtype='SYNONYM';
查询当前用户下所有表的记录数
select 'select '''||tname||''',count(*) from '||tname||';' from tab wheretabtype='TABLE';
把所有符合条件的表的select权限授予为public
select 'grant select on '||table_name||' to public;' from user_tables where
《条件》;
删除用户下各种对象
select 'drop '||tabtype||' '||tname from tab;
删除符合条件用户
select 'drop user '||username||' cascade;' from all_users where user_id>25;
快速编译所有视图
----当在把数据库倒入到新的服务器上后(数据库重建),需要将视图重新编译一遍,
----因为该表空间视图到其它表空间的表的连接会出现问题,可以利用PL/SQL的语言特性,快速编译。
SQL> SPOOL ON.SQL
SQL> SELECT'ALTER VIEW '||TNAME||' COMPILE;' FROM TAB;
SQL> SPOOL OFF
然后执行ON.SQL即可。
SQL> @ON.SQL
当然,授权和创建同义词也可以快速进行,如:
SQL> SELECT 'GRANT SELECT ON '||TNAME||' TO 用户名;'FROM TAB;
SQL> SELECT 'CREATE SYNONYM '||TNAME||' FOR 用户名.'||TNAME||';'FROM TAB;
命令列表:
假设当前执行命令为:select * from tab;
(a)ppend添加文本到缓冲区当前行尾 aorder by tname 结果:select * from tab order bytname;
个空格)
(c)hange/old/new 在当前行用新的文本替换旧的文本 c/*/tname 结果:selecttname from tab;
(c)hange/text 从当前行删除文本 c/tab 结果:selecttname from ;
del 删除当前行
del n 删除第n行
(i)nput 文本 在当前行之后添加一行
(l)ist显示缓冲区中所有行
(l)ist n显示缓冲区中第n行
(l)ist m n显示缓冲区中m到 n
行
run 执行当前缓冲区的命令
/ 执行当前缓冲区的命令
r 执行当前缓冲区的命令
@文件名 运行调入内存的sql文件,如:
SQL> edit s<回车>
如果当前目录下不存在s.sql文件,则系统自动生成s.sql文件,
在其中输入"select * from tab;",存盘退出。
SQL> @s<回车>
系统会自动查询当前用户下的所有表、视图、同义词。
@@文件名 在.sql文件中调用令一个.sql文件时使用
save 文件名 将缓冲区的命令以文件方式存盘,缺省文件扩展名为.sql
get 文件名 调入存盘的sql文件
start 文件名 运行调入内存的sql文件
spool 文件名 把这之后的各种操作及执行结果"假脱机"即存盘到磁盘文件上,默认文件扩展名为.lst
spool 显示当前的"假脱机"状态
spool off 停止输出
例:
SQL> spool a
SQL> spool
正假脱机到 A.LST
SQL> spool off
SQL> spool
当前无假脱机
exit退出SQL*PLUS
desc 表名 显示表的结构
show user 显示当前连接用户
show error显示错误
show all个系统变量值
edit打开默认编辑器,Windows系统中默认是notepad.exe,把缓冲区中最后一条SQL语句调入afiedt.buf文件中进行编辑
edit 文件名 把当前目录中指定的.sql文件调入编辑器进行编辑
clear screen清空当前屏幕显示
二.Oracle sqlplus语句编辑命令
首先我们输入这样一条指令:
SELECT emp_id, emp_name
FROM Employees
input 命令可以接着上一条指令的后面添加语句,比如在上述语句运行后输入:
input WHERE emp_age > 30
便可得到如下指令:
SELECT emp_id, emp_name
FROM Employees
WHERE emp_age > 30
ln 命令用于指定对以输入的第n行语句进行操作,比如在上述语句运行后输入:
l1则当前选中的语句行即为
SELECT emp_id, emp_name
(语句前有"*"表示)
a 命令用于直接在当前行的末尾加上字符,比如在上述语句运行后输入:
a , emp_dept
则执行的指令变为:
SELECT emp_id, emp_name, emp_dept
FROM Employees
WHERE emp_age > 30
c 命令用于修改当前语句中的字符,比如在上述语句运行后输入:
c /emp_name/emp_age/则执行的指令变为:
SELECT emp_id, emp_age, emp_dept
FROM Employees
WHERE emp_age > 30
del n 命令用于删除第n行指令,比如在上述语句运行后输入:
DEL 3
则执行的指令变为:
SELECT emp_id, emp_age, emp_dept
FROM Employees
<查看表空间>
SELECT upper(f.tablespace_name) "表空间名",
d.Tot_grootte_Mb "表空间大小(M)",
d.Tot_grootte_Mb - f.total_bytes "已使用空间(M)",
),'990.99')
"使用比",
f.total_bytes "空闲空间(M)",
f.max_bytes "最大块(M)"
FROM
(SELECT tablespace_name,
)total_bytes,
)max_bytes
FROM sys.dba_free_space
GROUPBY tablespace_name) f,
)
Tot_grootte_Mb
FROM sys.dba_data_files dd
GROUPBY dd.tablespace_name) d
WHERE d.tablespace_name =f.tablespace_name
DESC;
<Oracle分页查询>
1. select * fromtable_name where rownum>begin and rownum< end
2.sql = "select * from table"
con.prepareCall("SELECT * FROM(SELECT A.*, rownum r FROM("+sql+") A WHERE rownum <= "+intPage*intPageSize+") B WHERE r > "+(intPage-1)
*intPageSize);
select table_name from all_tables;//所有的表明
select table_name from user_all_tables;//用户的所有的表
一下是转贴的sql语句的帖子.
select * fromuser_objects; //查询所有的表
select * fromdba_tables; //查询所有的表
select * fromall_tables; //查询所有的表
select * fromuser_users //查出一个用户
select * fromall_users //查询所有用户
select * fromdba_users //查询所有用户
select name,dbid fromv$database; //查询数据库名和它的ID
select * from sys.user_tab_columns; //查询表名,并显示列名
describe 表名 //查询表结构
select * from sys.user_tab_columns wheretable_name=表名 //查询指定表名的字段
2: 查询数据库参数
show parameter db;
:查询数据库的实例名
select instance_name from v$instance;
4: 数据库域名
数据库安装结束后,如果要知道正在运行额数据库是否有域名以及数据库域名名称可以用
select value from v$parameter wherename='db_domain'
show parameter domain
5:数据库服务名
如果数据库有域名,则数据库服务名就是全局数据库名,如果该数据库没有定义域名,则数据库服务名与数据库名相同
show parameter service_name
6:显示当前用户
show user
7:直接登陆
sqlplus "/as sysdba"
8:当前ORACLE系统时间
select sysdate from dual;
9:查询数据库字典v$nls_parameter产看字符集相关参数
select * from v$nls_parameters;
//*************
oracle基本操作语句(适合初学者)
oracle操作语句:
1.创建表
create table 表名(
列名1
类型,
列名2
类型
);
2.修改类属性
alter table 表名modify(列名类型);
3.添加列
alter table 表名add(列名类型);
4.添加主键约束和非空约束
alter table 表名add constraint pk_表名 primary key(列名);
alter table 表名modify(列名 not null);
5.删除主键约束
alter table 表名drop primary key;
alter table 表名drop constraint pk_表名;
6.失效约束
alter table 表名disable primary key;
alter table 表名disable constraint pk_表名;
7.有效约束
alter table 表名enable primary key;
alter table 表名enable constraint pk_表名;
8.删除列
alter table 表名drop column列名;
9.设置某列不可用,然后删除
alter table 表名set unused(列名);
alter table 表名drop unused columns;
10.修改表名
rename 表名1to表名2
alter 表名1rename to表名2;
11.截断表
truncate table 表名;
12.截断表保留行空间
truncate table 表名resue storage;
13.查看表结构
desc table 表名;
14.删除表
drop table 表名;
15.插入记录
例:insert into表名values(内容1,内容2,内容3,内容4);
16.带参数对话方式插入行
例:insert into表名values(&列名1,&列名2);
insert into 表名values(内容1,内容2);
17.插入某几列记录
insert into 表名(列名1,列名2)values(内容1,内容2);
18.为列插入空值(其列不能为notnull)
insert into 表名values(内容1,null,null);
19.创建表(包括主键及外键设置)方法一
create table 表名(
列名1
类型
constraint pk_表名primary key,
列名2
类型 not null,
列名3
类型
constraint fk_表名reference表名(列名),
列名3
类型
constraint ck_表名check(列名3 in(''内容1'',''内容2'',''内容3''))
);
20.查询所有行
select * from 表名;
21.查询某几列
select 列名1,列名2from表名;
22.重复行消除
select distict 列名from表名;
23.where语句查询
select * from 表名where条件 order by列名;
(注:如number类型查出自动按升序排列,如要按降序排列,则select* from表名
where 条件order by
列名 desc;)
24.创建表,方法二
create table 表名(
列名1
类型 primary key,
列名2
类型 not null,
列名3
类型 check(列名3in('''','''','''')),
列名4
类型 refernce
表名(列名)
);
25.修改列=‘?’的数据
update 表名set (列=?)
where 列=‘?’;
26.删除行
delete from 表名where条件;
27.事务处理
--事务处理
update 表名
set 列名(日期)= ''30-5月-98''
where 条件;
savepoint mark1;
delete from 表名where条件;
savepoint mark2;
rollback to savepoint mark1;
rollback;
28.建立用户user1,密码为password
授予用户connect,resource的权限
connect角色用于登录
resource角色用于建表等.
connect system/manager
create user user1 identified by password;
grant connect,resource to password;
29.数据控制语言
connect scott/tiger
查询和修改的权限授予user1
grant select,update on 表1to user1;
修改的权限授予user1
grant update(列1,列2)on表1
to user1;
查询的权限授予用户user1
并且user1用户还可以把这个权限授予别的用户(withgrant option)
grant select on 表1 to user1 with grantoption;
查询和修改的权限
revoke select,update on 表1from user1;
<查dataguide日志同步时间>
alter session setnls_date_format='yyyy-mm-dd hh24:mi:ss';
SELECTSEQUENCE#,APPLIED,COMPLETION_TIME,status FROM V$ARCHIVED_LOG ORDER BY SEQUENCE# desc;
<常用Sql参考> 1. oracle安装完成后的初始口令? 2. oracle9ias web cache的初始默认用户和密码? 3. oracle 8.0.5怎么创建数据库? 4. oracle 8.1.7怎么创建数据库? 5. oracle 9i 怎么创建数据库? 6. oracle中的裸设备指的是什么? 7. oracle如何区分 64-bit/32bit 版本??? 8. svrmgr什么意思? 9. 请问如何分辨某个用户是从哪台机器登陆oracle的? 10. 用什么语句查询字段呢? 11. 怎样得到触发器、过程、函数的创建脚本? 12. 怎样计算一个表占用的空间的大小? 13. 如何查看最大会话数? 14. 如何查看系统被锁的事务时间? 15. 如何以archivelog的方式运行oracle。 16. 怎么获取有哪些用户在使用数据库 17. 数据表中的字段最大数是多少? 18. 怎样查得数据库的sid ? 19. 如何在oracle服务器上通过sqlplus查看本机ip地址 ? 20. unix 下怎么调整数据库的时间? 21. 在oracle table中如何抓取memo类型字段为空的数据记录? 22. 如何用bbb表的数据去更新aaa表的数据(有关联的字段) 23. p4计算机安装方法 24. 何查询server是不是ops? 25. 何查询每个用户的权限? 26. 如何将表移动表空间? 27. 如何将索引移动表空间? 28. 在linux,unix下如何启动dba studio? 29. 查询锁的状况的对象有? 30. 如何解锁? 31. sqlplus下如何修改编辑器? 32. oracle产生随机函数是? 33. linux下查询磁盘竞争状况命令? 33. linux下查询cpu竞争状况命令? 34. 查询当前用户对象? 35. 如何获取错误信息? 36. 如何获取链接状况? 37. 查看数据库字符状况? 38. 查询表空间信息? 39. oracle的interal用户要口令? 40. 出现java.exe的解决办法? 41. 如何给表、列加注释? 42. 如何查看各个表空间占用磁盘情况? 44. 如何才能得知系统当前的scn号 ? 45. 请问如何在oracle中取毫秒? 46. 如何在字符串里加回车? 47. 中文是如何排序的? 48. oracle8i中对象名可以用中文吗? 49. 如何改变win中sql*plus启动选项? 50. 怎样修改oracel数据库的默认日期? 51. 如何将小表放入keep池中? 52. 如何检查是否安装了某个patch? 53. 如何使select语句使查询结果自动生成序号? 54. 如何知道数据裤中某个表所在的tablespace? 55. 怎么可以快速做一个和原表一样的备份表? 55. 怎么在sqlplus下修改procedure? 56. 怎样解除procedure被意外锁定? 57. sql reference是个什么东西? 58. 如何查看数据库的状态? 59. 请问如何修改一张表的主键? 60. 改变数据文件的大小? 61. 怎样查看oracle中有哪些程序在运行之中? 62. 怎么可以看到数据库有多少个tablespace? 63. 如何修改oracle数据库的用户连接数? 64. 如何查出一条记录的最后更新时间? 65. 如何在pl/sql中读写文件? 66. 怎样把“&”放入一条记录中? 67. exp 如何加query参数? 68. 关于oracle8i支持简体和繁体的字符集问题? 69. data guard是什么软件? 70. 如何创建spfile? 71. 内核参数的应用? 73. 如何单独备份一个或多个表? 74. 如何单独备份一个或多个用户? 75. 如何对clob字段进行全文检索? 76. 如何显示当前连接用户? 77. 如何查看数据文件放置的路径 ? 78. 如何查看现有回滚段及其状态 ? 79. 如何改变一个字段初始定义的check范围? 80. oracle常用系统文件有哪些? 81. 内连接inner join? 82. 如何外连接? 83. 如何执行脚本sql文件? 84. 如何快速清空一个大表? 85. 如何查有多少个数据库实例? 86. 如何查询数据库有多少表? 87. 如何测试sql语句执行所用的时间? 89. 字符串的连接 90. 怎么把select出来的结果导到一个文本文件中? 91. 怎样估算sql执行的i/o数 ? 92. 如何在sqlplus下改变字段大小? 93. 如何查询某天的数据? 94. sql 语句如何插入全年日期? 95. 假如修改表名? 96. 如何取得命令的返回状态值? 97. 如何知道用户拥有的权限? 98. 从网上下载的oracle9i与市场上卖的标准版有什么区别? 99. 怎样判定数据库是运行在归档模式下还是运行在非归档模式下? 100. sql>startup pfile和ifile,spfiled有什么区别? 101. 如何搜索出前n条记录? 102. 如何知道机器上的oracle支持多少并发用户数? 103. db_block_size可以修改吗? 104. 如何统计两个表的记录总数? 105. 怎样用sql语句实现查找一列中第n大值? 106. 如何在给现有的日期加上2年?( 107. used_ublk为负值表示什么意思? 108. connect string是指什么? 109. 怎样扩大redo log的大小? 110. tablespace 是否不能大于4g? 111. 返回大于等于n的最小整数值? 112. 返回小于等于n的最小整数值? 113. 返回当前月的最后一天? 114. 如何不同用户间数据导入? 115. 如何找数据库表的主键字段的名称? 116. 两个结果集互加的函数? 117. 两个结果集互减的函数? 118. 如何配置sequence? 日期的各部分的常用的的写法 120>.取时间点的月份的写法: 121>.取时间点的日的写法: 122>.取时间点的时的写法: 123>.取时间点的分的写法: 124>.取时间点的秒的写法: 125>.取时间点的日期的写法: 126>.取时间点的时间的写法: 127>.日期,时间形态变为字符形态 128>.将字符串转换成日期或时间形态: 129>.返回参数的星期几的写法: 130>.返回参数一年中的第几天的写法: |
<查mview同步时间>
SELECT MVIEW_NAME, LAST_REFRESH_DATE, STALENESSFROM USER_MVIEWS;
ORACLE数据库 DBA常用知识的更多相关文章
- 【绝密外泄】风哥Oracle数据库DBA高级工程师培训视频教程与内部资料v0.1
[绝密外泄]风哥Oracle数据库DBA高级工程师培训视频教程与内部资料v0.1 由于是[绝密外泄]资料,防止被查,需要的小伙伴赶紧下载附件中的课件文档.由于视频太大了,已放在百度网盘了,已经在附中说 ...
- Oracle数据库,基础知识
1.Oracle的五大约束条件: 1 主键 primary key2 外键 foreign key,3 唯一 unique,4 检测 check5 非空 not null 实例运用: -- ...
- Oracle EBS DBA常用SQL - 安装/补丁【Z】
Oracle EBS DBA常用SQL - 安装/补丁 检查应用补丁有没有安装:select bug_number,last_update_date from ad_bugs where bug_nu ...
- 在shell终端操作oracle数据库的常用命令
这里面是在一个项目中用到的操作oracle数据库的常用linux命令,因为当时无法用plsql远程连接,大部分操作都需要在命令行窗口进行,总结一下 第一种方式 (1)先切换至sqlplus [orac ...
- (转)Oracle数据库DBA必备基本技能
[Oracle数据库DBA必备基本技能] shutdown Normal 需要等待所有的用户断开连接 Immediate 等待用户完成当前的语句 Transactional 等待用户完成当前的事 ...
- 8个DBA最常用的监控Oracle数据库的常用shell脚本
本文介绍了8个常用的监控数据shell脚本.首先回顾了一些DBA常用的Unix命令,以及解释了如何通过Unix Cron来定时执行DBA脚本.网上也有好多类似的文章,但基本上都不能正常运行,花点时间重 ...
- Oracle数据库入门——基础知识
1.安装完成Oracle数据库后,使用sqlplus客户端登录数据库管理系统,只输入用户名,没有输入密码时,会提示口令为空,登录被拒绝. 请输入用户名:system 输入口令: ERROR:ORA-0 ...
- oracle数据库查询常用语句
1.查询SCOTT表中有多少表,并显示表的一些描述select * from all_tables WHERE owner='SCOTT' ; 2.查询oracle数据库版本select * from ...
- Oracle数据库基本常用命令汇总
1.得到数据库名和创建日期SELECT name, created, log_mode, open_mode FROM v$database; 2.ORACLE数据库的计算机的主机名,ORACLE数据 ...
随机推荐
- Prometheus(转载)
Prometheus 系统监控方案 一 https://www.cnblogs.com/vovlie/p/Prometheus_CONCEPTS.html 最近一直在折腾时序类型的数据库,经过一段时间 ...
- Spring Boot Cache Redis缓存
1.集成MyBatis 1.1.引入maven依赖 1.2.生成Mapper 具体可以看MyBatis Generator官网 http://www.mybatis.org/generator/run ...
- Swift 3.0项目迁移的一些记录
刚执行完Convert后报错600+,真是令人奔溃. 之后重新编译,仔细分析后发现其实真实错误远没有那么多.最终实际修改到的错误也就几十个,而且其中某些还是同一种错误. 这个项目是一个供自己使用的浏览 ...
- jQuery 效果 – 淡入淡出
在在jQuery中可以通过四个方法来实现元素的淡入淡出,这四个方法分别是:fadeIn().fadeOut().fadeToggle() 以及 fadeTo(),本文通过实例来为你讲解如何在jQuer ...
- ELK学习记录二 :elasticsearch、logstash及kibana的安装与配置
注意事项: 1.ELK版本要求5.X以上,本人使用版本:elasticsearch-6.0.0.kibana-6.0.0-linux-x86_64.logstash-6.0.0.tar 2.Elast ...
- MySQL系列教程(五)
MyCAT MyCat是基于阿里开源的Cobar产品而研发,Cobar的稳定性.可靠性.优秀的架构和性能以及众多成熟的使用案例使得MYCAT一开始就拥有一个很好的起点,站在巨人的肩膀上,我们能看到更远 ...
- FindBugs入门简介(eclipse安装使用实例)
前言:一般公司都会有一些开发规范,但是事实上,简单看那么一两遍并不能养成习惯,或者将这些规范记住.特别的,对于一些新手,写的代码往往会很糟糕.回头看看你一两年前写的代码就会知道,所谓的"糟糕 ...
- Programming In Scala笔记-第十七章、Scala中的集合类型
本章主要介绍Scala中的集合类型,主要包括:Array, ListBuffer, Arraybuffer, Set, Map和Tuple. 一.序列 序列类型的对象中包含多个按顺序排列好的元素,可以 ...
- shiro自定义Realm
1.1 自定义Realm 上边的程序使用的是shiro自带的IniRealm,IniRealm从ini配置文件中读取用户的信息,大部分情况下需要从系统的数据库中读取用户信息,所以需要自定义realm. ...
- Swift基础之两种选择星星的评价样式并获取星星的索引值
想练练手,所以封装了一个两种选择星星的评价样式的Demo,并且可以获取到点击的星星的索引值,方便记录值,上传数据时使用 首先创建View类,设计初始化方法,并且用到了枚举类型和代理方法 方式一:默认的 ...