oracle的使用(未分类)

本文详细介绍Oracle数据库的登录、用户切换、数据字典导出、表与视图结构查询等核心操作,涵盖实例名查看、表空间管理、字段属性检查及用户解锁等实用技能。


mysql中常说的库,相当于oracle的表空间。

登录,切换用户

连接数据库

sqlplus / as sysdba;   # 匿名用户作为sysdba登录
sqlplus guanyu/1234   # 实际用户登录

切换用户(表空间)

conn root/1234 ; -- 连接用户(也就是库)
-- 查看当前库(表空间)
show user;  
select user from dual;
select * from user_users;

查看当前数据库(实例名):

用处并不大,一般切换用户就能到所属库

show parameter instance_name;  -- 这个其实会显示所有有权限的库,一般用户只显示自己的所属库
select name from v$database;

表结构,列结构

查看所有表名

user_tables常用场景:
查看是否有某个表名, table_name
统计库的总行数, num_rows字段 求和

select t.table_name,t.num_rows 
from user_tables t ;  -- from tab也可 tab是user_tables的视图

desc dba_data_files; -- 这个是命令,不是sql

查看字段类型,长度,默认值(不带注释)

user_tab_columns 这个用处比较大,查表,查列,字段,长度,默认值等都在这里

select table_name,column_name,data_type,data_length,data_default 
from user_tab_columns where table_name ='t_user';

查看字段注释

user_col_comments(只有三个字段)应用场景:
查看某表的列注释
其他的时候推荐user_tab_columns,字段类型,长度等都在这里。

select 
table_name,
column_name,
comments
from user_col_comments where table_name like '%t_user%';

导出数据字典

有的时候客户要求导出字典表结构,用下面的语句可以满足一般要求:

select t.table_name,t.column_name,
case
-- 文档中常见的字段类型为varchar(32),number(10,2)这样的类
-- 如果是number类型还要考虑精度,data_type,data_precision,data_scale
WHEN t.data_type ='NUMBER'and t.data_precision is not null and t.data_scale is not null  THEN
t.data_type||'('||t.data_precision||','||t.data_scale||')'
else t.data_type||'('||t.data_length||')'
end as data_type
,t.nullable,
t2.comments
from user_tab_columns t
-- tab_columns表里面没有注释,所以要关联col_comments表
left join
user_col_comments t2
on t.table_name =t2.table_name and t.column_name =t2.column_name
order by t.table_name

视图结构,列结构

视图和表类似

查看所有视图

查表用*_tables,查视图用*_views。 而且视图最好dba_views,因为user_views太少了。视图一般都是系统级的。

select * from dba_views where view_name like '%$SESSION%'

v$ 和 v_$的区别

作用相同。

select * from sys.v$session;
select * from v$session.;

查视图字段,类型,长度,默认值

视图的列都也是放在*_tab_columns里面,而且都是table_name来查询。但要注意:

1. 最好用dba_tab_columns,不要用user_tab_columns。
2. 视图名要大写,而且最好模糊搜索。
因为视图名跟我想象的可能不一样,如查询中用:
select * from v$session   
但是实际视图名是V_$SESSION

示例语句:

select table_name,column_name,data_type,data_length,data_default 
from dba_tab_columns where table_name like '%$SESSION%';

视图列注释

和表一样。注意用dba_col_comments, 视图名大写。
其实这个没用,因为视图一般没有列注释。

select * from dba_col_comments where table_name  like '%$SQL%'

dict字典表

看了这么多,大家肯定要问,这些表视图,列视图都有哪些,能不能从全局的角度来看下,要不用到一个找一个太被动。
必须能,这些信息都在dict字典表,如sql:

# dict表只有2列table_name,comments
select TABLE_NAME,COMMENTS from dict 

这个字典表还是很有用的。

rownum限定行数

查看前10条

select * from sys_dict where rownum<11;

查看5-10条

oracle中的rownum不能使用大于>,所以sql如下:

(select * from sys_dict where rownum<10 )
minus
(select * from sys_dict where rownum<5 );

其他

查看所有表空间(用户)

dba_tablespaces 有表空间名,block,bytes等信息。

select * from dba_tablespaces;

查看数据的文件位置

DBA_DATA_FILES 有文件位置,表空间名,block,bytes等信息。

select * FROM DBA_DATA_FILES;

解锁用户

如果一个某个用户登录请求太频繁,会被锁住,这是一种保护机制。
解锁办法,使用system用户登录,或者使用dba用户登录:

alter user root identified by root 111111 unlock;

是否区分大小写

oracle是区分大小写的。
那么为什么我表名小写还能查询出来?
例如:

select * from test; 

发现确实可以查询出来。

那么这条能查出来吗?

select *  from user_col_comments where table_name = 'test';

差不出来的。因为存的是大写的TEST。

所以,如果是作为sql主体可以小写,如果作为字符串,那么需要大写。

oracle为什么要区分大小写。
因为只要你不使用双引号表示区分大小写, ORACLE 会默认把你写的脚本全部转换为大写的。

DG是什么

DG(data guard)这并不是备份库

DG(Data Guard,数据卫士)不是一个备份恢复的工具,然而,DG却拥有备份的功能,在物理DG下它可以和主库一模一样,但是它存在的目的并不仅仅是为了备份恢复数据,应该说它的存在是为了确保企业数据的高可用性,数据保护以及灾难恢复。DBA可以通过将一些操作(例如查询报表)转移到备库执行的方式来减小主库的压力,构建高可用的企业数据库应用环境。

DG的优点主要有以下几点内容:
① 灾难恢复及高可用性。
② 全面的数据保护。
③ 有效利用系统资源。
④ 在高可用及高性能之间更加灵活的平衡机制。
⑤ 故障自动检查及解决方案。
⑥ 集中的、易用的管理模式。
⑦ 自动化的角色转换。
DG的缺点主要有以下几点内容:
① 由于传输整个日志文件,所以,需要较高的网络传输带宽。
② 在Oracle 11g之前的物理备库虽然可以以只读方式打开,然后执行查询、报表等操作,但需要停止应用日志,这将使目标库与源数据不能保持同步,如果在此期间源数据库发生故障,那么将延长切换的时间。从Oracle 11g开始,ADG可以在数据库打开的情况下应用日志,这极大地提高了DG的应用范围。
③ 逻辑备库不能支持某些特定的数据对象和数据类型。
④ 不支持双向复制,所以,无法应用于信息集成的场合。
⑤ 只能复制整个数据库,不能选择某个SCHEMA或表空间或表进行单独复制。
⑥ 不支持异构的系统环境,需要相同的操作系统版本和数据库版本(Oracle 11g支持部分异构平台)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值