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数据 ...
随机推荐
- 开发网页时,127.0.0.1或者localhost能访问,而本机地址不能访问的解决
第一 ping试试 127.0.0.1 和 本机地址 若127.0.0.1可以 说明可以自己ping自己 若本机地址可以 说明host正常 第二 检查服务器部署 再部署一个新的 若新的正常 说明你项目 ...
- Mysql根据一个基库生成其他库与其不同的库升级脚本
今天研究了一下不同数据库之间如何做同步.弄了一个升级工具类,希望以后还能有所帮助. public class UpgradeDataBase { public static void main(Str ...
- YARN整理
YARN整理 1.YARN的介绍 是一个资源管理.任务调度的框架,主要包含三大模块: ResourceManager(RM):负责所有资源的监控.分配和管理 ApplicationMaster(AM) ...
- 如何搭建samba服务?
为了日后便于查询,本文所涉及到的所有命令集合如下: chkconfig iptables off #关闭防火墙命令 在Centos7中使用的是chkconfig firewalld off seten ...
- Windows环境下,从零开始搭建Nodejs+Express+Ejs框架(一)---安装nodejs
第一步,安装nodejs https://nodejs.org/en/download/ 这个是nodejs的官网,由于操作系统是win7 64位的,所以,我下载的是node-v8.11.1-x64的 ...
- Docker容器访问控制
容器的访问控制,主要通过 Linux 上的 iptables 防火墙来进行管理和实现.iptables 是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 容器要想访问外部 ...
- EntityFramework Core 自动绑定模型映射
笔者最近在和同事共同开发项目时,需要从他们提供的包含数据库实体类型的类库中读取实体信息绑定到自己的项目中(但是都在同一个解决方案里),所以很直接的一种方式就是把项目中所有的实体都以 public Db ...
- 安卓高级8 SurfaceView (1)
文章转载:http://www.cnblogs.com/xuling/archive/2011/06/06/android.html 首先我们先来看下官方API对SurfaceView的介绍 Surf ...
- 集群技术(二) MySQL集群简介与配置详解
when?why? 用MySQL集群? 减少数据中心结点压力和大数据量处理(读写分离),采用把MySQL分布,一个或多个application对应一个MySQL数据库.把几个MySQL数据库公用的数据 ...
- Android图表库MPAndroidChart(五)——自定义MarkerView实现选中高亮
Android图表库MPAndroidChart(五)--自定义MarkerView实现选中高亮 在学习本课程之前我建议先把我之前的博客看完,这样对整体的流程有一个大致的了解 Android图表库MP ...