Oracle日常维护语句
常用语句
数据库启停
监听启停
1 | su - oracle |
库启停
1 | sqlplus / as sysdba |
oracle查看实例名
1 | select name,dbid from v$database; |
查看 oracle版本
1 | SQL> select * from v$version; |
查询内存分配情况
1 | SQL> select * from v$sga; |
查看并发连接数
1 | SQL> select count(*) from v$session where status='ACTIVE'; |
日志文件
1 | SQL> select * from v$logfile; |
查看控制文件
1 | SQL> select name from v$controlfile; |
查看、管理 ORACLE 表
查看所有 segment 的大小
1 | Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name; |
查询用户下的表
1 | SELECT table_name FROM all_tables; |
查看某个表属于哪个表空间
1 | SQL> select tablespace_name from all_tables where table_name='SYS_EXPORT_FULL_01'; |
创建表时指定表空间
1 | SQL>create table a (name varchar(10)) tablespace test; |
查看数据库表结构
1 | SQL> desc 表名; |
查看表的索引
1 | SQL>select index_name,index_type,table_name from user_indexes where table_name='表名'; |
查看用户序列
1 | SQL> select sequence_name from USER_SEQUENCES; |
查看用户触发器
1 | SQL> select * from user_triggers where table_name = upper('job'); |
修改表的列名
1 | SQL> alter table 表名 rename column 列名 to 新列名; |
修改表的列的字符大小
1 | SQL> alter table student modify class varchar2(10); |
创建主键
1 | SQL> alter table 表名 add constraint 主键名 primary key(列名); |
查询表空间使用情况
表空间总体情况
1 | SELECT UPPER(F.TABLESPACE_NAME) "表空间名", |
查询表空间的总容量
1 | select tablespace_name, sum(bytes) / 1024 / 1024 /1024 as "大小(GB)" |
查询表空间使用率
1 | select total.tablespace_name, |
监控当前数据库谁在运行什么SQL语句
1 | select osuser, username, sql_text |
找使用CPU多的用户session
1 | select a.sid,spid,status,substr(a.program,1,40) prog, a.terminal,osuser,value/60/100 value |
等待最多的用户
1 | SELECT s.SID, s.username, SUM (a.wait_time + a.time_waited) total_wait_time |
等待最多的SQL
1 | SELECT a.program, a.session_id, a.user_id, d.username, s.sql_text, |
查看消耗资源最多的SQL
1 | SELECT hash_value, executions, buffer_gets, disk_reads, parse_calls |
查看某条SQL语句的资源消耗
1 | 查看某条SQL语句的资源消耗 |
查询会话执行的实际SQL
1 | SELECT a.SID, a.username, s.sql_text |
查看死锁信息
1 | SELECT (SELECT username |
显示正在等待锁的所有会话
1 | SELECT * FROM DBA_WAITERS; |
oracle配置查询
1 | select |
切换字符集
1 | #查看oracle数据库的字符集 |
查看oracle数据库的编码
1 | SQL> select * from nls_database_parameters where parameter ='NLS_CHARACTERSET'; |
查询当前oracle的并发连接数
1 | SQL> select count(*) from v$session where status='ACTIVE'; |
查看不同用户的连接数:
1 | SQL> select username,count(username) from v$session where username is not null group by username; |
查看所有用户:
1 | select * from all_users; |
当前的连接数
1 | select count(*) from v$process; |
查询当前连接会话数
1 | select s.value,s.sid,a.username |
清除用户下连接进程
1 | SQL> alter system kill session '204,4609'; |
修改processes和sessions值必须重启oracle服务器才能生效
ORACLE的连接数(sessions)与其参数文件中的进程数(process)有关,它们的关系如下:
sessions=(1.1*process+5)
数据库允许的最大连接数
1 | select value from v$parameter where name = 'processes'; |
查看数据库现有模式、是否归档
1 | SQl>select name,log_mode from v$database; |
也可以用下面的语句
1 | archive log list;--(该方法需要as sysdba) |
查看数据库的创建日期和归档方式
1 | SQL> Select Created, Log_Mode, Log_Mode From V$Database; |
配置用户密码过期时间
1 | alter profile "default" limit password_life_time unlimited; --配置用户密码永不过期 |
expdp与impdp
整库导出命令
1 | exp system/itcast full=y 或者 exp system/itcast file=文件名 full=y |
整库导入命令
1 | imp system/itcast full=y or imp system/itcast full=y file=water.dmp |
按用户导出与导入
按用户导出
1 | exp system/itcast owner=wateruser file=wateruser.dmp |
按用户导入
1 | imp system/itcast file=wateruser.dmp fromuser=wateruser |
按表导出与导入
按表导出
1 | exp wateruser/itcast file=a.dmp tables=t_account,a_area |
按表导入
1 | imp wateruser/itcast file=a.dmp tables=t_account,a_are |
如何正确终止expdp与impdp任务,操作步骤如下:
步骤1
查看视图dba_datapump_jobs
1 | select job_name,state from dba_datapump_jobs; |
步骤2
正确停止expdp导出任务使用stop_job
1 | expdp USERNAME/USERPASSWORD@SIDNAME attach=SYS_EXPORT_SCHEMA_02 |
步骤3
停止任务
1 | Export> stop_job=immediate |
步骤4
查看系统中的备份job状态
1 | select owner_name,job_name ,state from dba_datapump_jobs; |
1 | #扩展:下列命令在交互模式下有效: |
创建、管理 Oracle 表空间
先查询空闲空间
1 | select tablespace_name,file_id,block_id,bytes,blocks from dba_free_space; |
增加 Oracle 表空间
1 | --先查询数据文件名称、大小和路径的信息,语句如下: |
创建 Oracle 表空间
1 | create tablespace test |
查看表空间是否自动扩展
1 | SQL> select file_id,file_name,tablespace_name,autoextensible,increment_by from dba_data_files order by file_id desc; |
更改自动扩展属性:
1 | alter database datafile |
表空间的查看与修改
查看用户默认表空间
1 | SQL> select username,default_tablespace from dba_users;查看所有用户的默认表空间 |
1 | SQL> select USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users where username = 'hr'; 查看用户对应的默认表空间 |
修改用户默认表空间
1 | SQL> alter user zhanghr default tablespace test; |
设置数据库的默认临时表空间
SQL>Alter database default temporary tablespace temp_tbs_name;
查看用户和默认表空间的关系
1 | SQL>select username,default_tablespace from dba_users; |
查看临时表空间
1 | SQL> select file_name,file_id,blocks,user_blocks from dba_temp_files; |
查看 undo 表空间
1 | SQL> show parameter undo; |
查看 undo 表空间大小
1 | SQL> select sum(bytes)/1024/1024 "current undo size(M)" from dba_data_files where tablespace_name='UNDOTBS1'; |
通过增加数据文件来改变 undo 表空间大小
1 | SQL> alter tablespace undotbs1 |
查看某个表空间的数据文件
1 | SQL> select file_name,tablespace_name,bytes/1024/1024 "bytes MB",maxbytes/1024/1024 "maxbytes MB" from dba_data_files where tablespace_name='ORA1TBS';指定表空间名要大写 |
查看所有表空间大小
1 | SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_data_files |
查看已使用的表空间大小
1 | SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_free_space |
清理(还原时出错,清用户表空间)
1、删除数据表空间:
1 | #执行语句: |
2、删除临时表空间:
1 | #执行语句: |
3、删除用户:
1 | #执行语句: |
4、报用户正在连接,无法删除的解决方法
1 | ---方法1:重启并迅速执行drop user语句(个人推荐) |
查看、管理 ORACLE 数据文件
查看数据文件
1 | SQL> select name from v$datafile; |
更改数据文件大小
1 | SQL> alter database datafile '/oradata2/hisvhfs/undotbs01.dbf' resize 30G; |
查看用户所有表空间及对应的数据文件和数据文件大小
1 | SQL> select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name; |
查看数据文件状态及大小
1 | SQL> select name,BYTES,STATUS ,FILE# from v$datafile; |
创建、配置新用户及查看用户属性
解锁新用户:
1 | SQL> alter user scott account unlock; |
删除oracle用户:
1 | SQL>drop user username cascade; (删除与用户相关的所有对象) |
这样该用户包括该用户下的表,试图,同义词,过程,索引,及相关的一切就删除了。
创建用户并赋权限以及设置默认表空间。
以sysdba用户登陆进行以下设置:
1 | -- Create the user |
查看用户及角色权限
1.查看所有用户:
1 | select * from dba_users; |
2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限):
1 | select * from dba_sys_privs; |
3.查看角色(只能查看登陆用户拥有的角色)所包含的权限
1 | sql>select * from role_sys_privs; |
4.查看用户对象权限:
1 | select * from dba_tab_privs; |
5.查看所有角色:
1 | select * from dba_roles; |
6.查看用户或角色所拥有的角色:
1 | select * from dba_role_privs; |
7.查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)
1 | select * from V$PWFILE_USERS |
数据库游标设置
1 | SQL> show parameter open_cursors; 查看游标参数 |
查看、配置 ORACLE 重做日志
创建日志文件组
1 | SQL> alter database add logfile group 4 |
查看日志文件组
1 | SQL> select group#,status,member from v$logfile; |
为日志文件组增加日志文件
1 | SQL> alter database add logfile member '/oracle/oradata/orc6/redo05.log' to group 3; |
查看日志文件大小
1 | SQL> select GROUP#,BYTES,BLOCKSIZE,MEMBERS from v$log; |
desc 的常用查询
1 | SQL> desc dba_temp_files; 查询临时表空间 |
查看 ASM 磁盘组信息
1 | SQL> desc v$asm_disk; |
扩展知识
1)扩展1:
情况1、高版本往低版本导出还原时,如12往11还原时,在12c执行导出时,添加低版本的版本号version=11.1.0.2.0
1 | #格式: |
情况2、低版本往高版本还原时,高版本一般兼容低版本,目前个人运维工作中11往12还原没遇到什么问题。
2)扩展2:
(1)、按指定大小备份,如每份5G大小(parallel是多线程处理,线程数要小于生成文件个数,线程要小于 cpu 线程数)
1 | #备份格式 |
(2)、多个备份文件还原:
1 | #还原格式 |
3)扩展3导出过滤不导出某张表:
1 | #格式 |
4)扩展4不同库还原时不改变数据结构使用truncate参数:
1 | #格式 |
5)扩展5导出备份时保留表,清除表数据(query参数):
1 | #格式 |
6)扩展6导出备份时保留表,清除表数据,同时过滤某两张表
1 | #格式 |
7)扩展7仅统计数据库各表数据,但不导出,参数estimate_only=y
1 | #格式 |
Oracle日常维护语句
2020/01/06/oracle日常维护语句/
发布于
2020-01-06 21:10
许可
评论
评论插件加载失败
正在加载评论插件