Oracle日常运维

一般日常维护的都会放进碗里来的

数据库配置

修改Oracle内存

查看当前内存配置

show parameter memory,万一配置错了起不来,只能通过pfile文件重新启动

Oracle日常运维-每日运维Oracle日常运维-每日运维

修改memory_target

MEMORY_TARGET:oracle所能使用的最大内存,该参数可以动态调整

MEMORY_MAX_TARGET:MEMORY_TARGET参数所能动态设定的最大值,不能动态调整,需要重启数据库


SQL>alter system set memory_max_target=2048M scope=spfile;

SQL> alter system set memory_target =2048M scope=spfile;

Oracle日常运维-每日运维

重启数据库后生效:

Oracle日常运维-每日运维

连接数/会话

oracle限制某个用户的连接数

1. 查看resource_limit参数:

SQL> show parameter resource_limit

设置 RESOURCE_LIMIT参数为TRUE,开启资源限制:

alter system set resource_limit =TRUE;

该改变对密码资源无效,密码资源总是可用的

2. 创建PROFILE :

SQL>create profile sessnum limit sessions_per_user 20; --最大连接数限制为20

3. 将PROFILE指定给用户:

SQL>alter user test profile sessnum;

另外,SESSIONS_PER_USER不会像10g和11g那样限制12C中的并行从进程。

drop profile sessnum cascade;

当某个profile被删除时,如果这个profile已经被分配给某个用户,那么我们在删除的时候要加上cascade,并且已经被分配的用户的profile会被自己修改成default profile。

当前进程的连接数

select count(*) from v$process;

当前会话的连接数

select count(*) from v$session;

查看数据库的并发连接数

select count(*) from v$session where status='ACTIVE';

查询数据库允许的最大连接数

select value from v$parameter where name = 'processes';


修改数据库允许的最大连接数:

alter system set processes = 300 scope = spfile;

(需要重启数据库才能实现连接数的修改)


查看当前数据库建立的会话情况

select count(1),username from v$session group by username

结束/杀掉会话

SELECT SID, SERIAL# FROM V$SESSION WHERE USERNAME = 'ETC';

ALTER SYSTEM KILL SESSION '13,772';

字符集

SIMPLIFIED CHINESE_CHINA.ZHS16GBK

AMERICAN_AMERICA.ZHS16GBK

注意:以上两种字符集是一样的

select * fromnls_database_parameters(服务端字符)

select * fromnls_session_parameters(客户端字符)


查询语句:select userenv('language') from dual;(客户端字符)

查询结果:SIMPLIFIED CHINESE_CHINA.ZHS16GBK


oracle最大游标数修改和查询

查看ORACLE最大游标数

SQL> show parameter open_cursors;

查看当前打开的游标数目

SQL> select count(*) from v$open_cursor;

修改ORACLE最大游标数

SQL> alter system set open_cursors=1000 scope=both;

关闭密码过期

--1、查看用户的proifle是哪个,一般是default: (DBSNMP=》MONITORING_PROFILE)

SELECT username,PROFILE FROM dba_users;

--2、查看指定概要文件(如default)的密码有效期设置:

SELECT * FROM dba_profiles s WHERE resource_name='PASSWORD_LIFE_TIME';

--3、将密码有效期由默认的180天修改成“无限制”:

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

ALTER PROFILE MONITORING_PROFILE LIMIT PASSWORD_LIFE_TIME UNLIMITED;

查看Oracle版本 32位/64位

select * from v$version

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0

启动数据库

startup nomount选项:(通常启动到这里可以做create database , create or recreate control file 或者是mount standby database等动作)

startup mount 选项 (通常启动到这里的目的有recover dtabase ; backup database ; rename db files ,change archivelog mode等)

startup open 选项:(打开数据文件,日志文件)


startup mount

alter database open read only;


startup mount

alter database open read write;


【注意:alter database *** 命令需要在database为mount状态下才行,如果数据库已启动,先要shutdown】

关闭数据库

重启数据库:

shutdown immediate;

startup;

使用shutdown的时候 normal和immediate可能都因为连接没有释放而造成数据库无法重启的现象。

shutdown abort;

startup

表名信息查询

select * from tabs where table_name like '%BAK'

重新配置em https=>http

emca -config dbcontrol db

zjts

1521

Oracle日常运维-每日运维

http://opcserver252:1158/em/console

Oracle日常运维-每日运维

监听日志(windows下监听日志超过4G监听会失败)

Oracle日常运维-每日运维

日志位置:/home/oracle/app/oracle/diag/tnslsnr/primary/listener/trace

日志内容:

Oracle日常运维-每日运维

1.>lsnrctl set log_status off # 先把日志状态停掉,这样就不会写监听器日志

2. 备份或者删除监听日志

3.>lsnrctl set log_status on # 重新打开日志,开始记录监听器日志。该文件会自动创建

4.>lsnrctl status #检查监听状态

归档操作

删除归档日志

rman target system/Zjts8356@zjts

list archivelog all;

delete archivelog all completed before ‘sysdate-3’;

主库执行后,备库已同步控制文件,所以备库直接删除物理日志好了

可以直接删除物理文件

直接系统删除后,控制文件中的记录还在

RMAN> crosscheck archivelog all;(将磁盘或者磁带上不存在的日志标记为expired 这个检查应该是控制文件跟实际文件进行的一个效验)

delete expired archivelog all; 删除过期的归档日志(这里的过期是指手动实际删除日志,这里的删除应该是控制文件中的记录删除)

(备库的日志基本不受控制,在备库上操作跟在主库上操作一致)

Linux下操作删除

[oracle@primary Desktop]$ rman

RMAN> connect target /

关闭归档

shutdown immediate;

startup mount;

alter database noarchivelog;

archive log list;

alter database open;


审计

查看有哪些对象审计权限和对哪些用户进行了对象权限审计

select * from dba_priv_audit_opts order by user_name;


*在11g中默认启用了对登录注销操作LOGON/LOGOFF的审计

select count(1),username from dba_audit_trail group by username --登录登出数量统计

select action_name,count(*) from dba_audit_trail group by action_name; --基本都是LOGON LOGOFF


取消此类审计:

noaudit session whenever successful;


可以取消对一些登录特别频繁的用户的审计:

SQL> noaudit session by ts_ahs; (无效)

SQL> noaudit session whenever successful;(有效)


查看审计参数

SQL> show parameter audit

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

audit_file_dest string C:\APP\ADMINISTRATOR\ADMIN\ZJTS\ADUMP

audit_sys_operations boolean FALSE

audit_trail string DB


开启审计功能后,这个值会非常大

select count(*) sum from AUD$;

truncate table aud$; --清除数据


关闭审计功能

alter system set audit_trail=none scope=spfile;

shutdown immediate;

startup;

如果不想重启数据库,毕竟在用的东西哪能说重启就重启,可以使用如下:

SQL> noaudit all statements;

Noaudit succeeded.

SQL> noaudit all privilege;

Noaudit succeeded.


通过上面2条命令基本上都可以关闭了,还剩下一个EXEMPT ACCESS POLICY,单独noaudit一下就可以了:

SQL> noaudit EXEMPT ACCESS POLICY;

Noaudit succeeded.


自此所有开启的审计选项全部关闭了。


表和表空间

查看所有表的行数

select t.TABLE_NAME,t.NUM_ROWS from user_tables t;