一、Oracle数据库连接
1?? 三种以系统管理员身份连接数据库的方式
conn / as sysdba -- 无需监听进程
conn system/admin -- 本地连接
conn system/admin@oracle -- 需要监听进程
2?? 启动sqlplus,连接数据库服务器
conn / as sysdba -- 无需监听进程
conn system/admin -- 本地连接
conn system/admin@oracle -- 需要监听进程
3?? 查看当前数据库有多少用户连接
select username, sid, serial# from v$session;
4?? 监听服务
lsnrctl start -- 启动监听
lsnrctl stop -- 关闭监听
lsnrctl status -- 查看监听状态
5?? Oracle实例服务
startup; -- 启动实例
shutdown immediate; -- 关闭实例
select * from v$instance; -- 查看实例状态
二、Oracle用户管理
1?? 查看系统已有用户
select * from all_users;
2?? 显示当前连接用户
show user;
3?? 创建新用户并授权
create user a identified by a;
grant connect, resource to a;
4?? 修改用户密码
alter user a identified by 123456;
5?? 授权用户可以访问数据库所有表
grant select any table to a;
6?? 授权用户操作其他用户的表
grant select, insert, update, delete on student.emp to a;
7?? 查找用户下的所有表
select * from tab;
8?? 查看当前用户的默认表空间
select username, default_tablespace from user_users;
9?? 查看当前用户的角色
select * from user_role_privs;
查看当前用户的权限
select * from user_sys_privs;
select * from user_tab_privs;
三、Oracle表操作
1?? 查看用户下所有的表
select * from user_tables;
2?? 查找表名包含"LOG"的表
select object_name, object_id from user_objects
where instr(object_name, 'LOG') > 0;
3?? 查看表的创建时间
select object_name, created from user_objects
where object_name = upper('&table_name');
4?? 查看表的大小
select sum(bytes) / (1024*1024) as "size(M)"
from user_segments where segment_name = upper('&table_name');
5?? 查看存放在Oracle内存区的表
select table_name, cache from user_tables
where instr(cache, 'Y') > 0;
四、Oracle索引
1?? 查看索引个数和类别
select index_name, index_type, table_name from user_indexes
order by table_name;
2?? 查看索引所涉及的字段
select * from user_ind_columns where index_name = upper('&index_name');
3?? 查看索引大小
select sum(bytes) / (1024*1024) as "size(M)"
from user_segments where segment_name = upper('&index_name');
? 五、Oracle数据库管理
1?? 查看表空间的名称及大小
select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name
group by t.tablespace_name;
2?? 查看表空间物理文件的名称及大小
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files order by tablespace_name;
3?? 查看回滚段名称及大小
select segment_name, tablespace_name, r.status,
(initial_extent/1024) InitialExtent, (next_extent/1024) NextExtent,
max_extents, v.curext CurExtent
from dba_rollback_segs r, v$rollstat v
where r.segment_id = v.usn(+)
order by segment_name;
4?? 查看控制文件
select name from v$controlfile;
5?? 查看日志文件
select member from v$logfile;
6?? 查看表空间的使用情况
select sum(bytes)/(1024*1024) as free_space, tablespace_name
from dba_free_space group by tablespace_name;
7?? 查看数据库对象
select owner, object_type, status, count(*) count#
from all_objects group by owner, object_type, status;
8?? 查看数据库版本
select version FROM Product_component_version
where SUBSTR(PRODUCT,1,6)='Oracle';
9?? 查看数据库的创建日期和归档方式
select Created, Log_Mode From V$Database;
总结: 这些SQL命令涵盖了Oracle数据库的基本管理操作,适用于开发、运维、数据库管理员等多个场景。建议收藏备用!