1、先备份SPFILE文件:①WMSSPFILEORCL.ORA TMSSPFILEORCLTMS.ORA

文件所在地址:D:\app\Administrator\product\11.2.0\dbhome_1\database

如果服务器上有多个实例,不确定当前操作的是哪个实例,可以通过以下语句查看一下:

SELECT NAME FROM v$database;   ---PLSQL中执行

备份方法:在当前文件夹内,复制一份上面的文件,重命名一个名字,比如:SPFILEORCL20190924.ORASPFILEORCLTMS20190924.ORA

 

2、在PLSQL中打开命令窗口

输入SQL> show parameter memo //显示当前实例占用的内存大小

image.png

 

3、修改分配给oracle实例的最大内存

   SQL> alter system set memory_max_target=12G scope=spfile; //此处是将内存设置为12G

 

4、修改分配给oracle实例的当前内存

   SQL> alter system set memory_target=12G scope=spfile;

说明:memory_max_target memory _target 两个值一般都设置成一样大。

image.png

 

5SQL> show parameter sga;    //查看内存配置信息

image.png

 

6SQL> alter system set sga_max_size=12G scope=spfile; //修改oracle可以使用的最大内存

 

image.png

说明:通常memory_target值需为sga+pga内存的和,一般pga的大小都是0,所以将sga的值设置的与memory_target的值相同即可。注意:sga的值不可以大于memory_target的值,否则重启数据库服务时会报错,报错如下:

SQL> startup

ORA-00844: Parameter not taking MEMORY_TARGET into account

ORA-00851: SGA_MAX_SIZE 42949672960 cannot be set to more than MEMORY_TARGET 6979321856. (里面的数字会根据实际设置的内存大小不同,而变化)

此时需要用备份的SPFILE文件启动数据库(方法见文章最后)

 

7、进入sqlplus

方法:打开windows命令窗口, ①在‘运行’中输入‘CMD’回车;或者 窗口键 + R

输入以下命令:set ORACLE_SID=ORCL  //指定要修改的oracle实例

              Sqlplus / as sysdba     //使用sqlplus 连接数据库

 

8SQL> select name from v$database;  //查看当前操作的实例名称

image.png

 

9SQL> shutdown immediate;  //关闭数据库

image.png

 

 

10SQL> startup  //重启数据库 (需要一会时间,耐心等待)

image.png

 

11SQL> show parameters sga;  //再次查看配置信息

12SQL> exit  退出sqlplus, 内存增加完毕;

 

以下为sga的值设置的大于memory_target的值时,数据库启动失败时的操作方法

用备份的SPFILE文件启动数据库

在目录:D:\app\Administrator\product\11.2.0\dbhome_1\database

找到SPFILEORCL.ORA,重命名一个新的名字,将之前备份的:SPFILEORCL20190924.ORA名字改为SPFILEORCL.ORA

sqlplus中,执行以下命令:

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup

ORACLE 例程已经启动。

 ③重新修改内存参数值,并重启数据库即可

SQL>alter system set memory_target = 52430m scope = spfile;

SQL>alter system set sga_max_size=40960M scope=spfile;

SQL>alter system set sga_target=40960M scope=spfile;

SQL>alter system set pga_aggregate_target=10240M scope=spfile;

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup

ORACLE 例程已经启动。

结束

 

 

 

 

 

数据库服务器运行缓慢,查看影响服务器的慢查询

一、查询执行最sql

select 

 from (select sa.SQL_TEXT,

        sa.SQL_FULLTEXT,

        sa.EXECUTIONS "执行次数",

        round(sa.ELAPSED_TIME / 1000000, 2) "总执行时间",

        round(sa.ELAPSED_TIME / 1000000 / sa.EXECUTIONS, 2) "平均执行时间",

        sa.COMMAND_TYPE,

        sa.PARSING_USER_ID "用户ID",

        u.username "用户名",

        sa.HASH_VALUE

     from v$sqlarea sa

     left join all_users u

      on sa.PARSING_USER_ID = u.user_id

     where sa.EXECUTIONS > 0

     order by (sa.ELAPSED_TIME / sa.EXECUTIONS) desc)

 where rownum <= 50;

 

二、查询次数最多的sql

select 

 from (select s.SQL_TEXT,

        s.EXECUTIONS "执行次数",

        s.PARSING_USER_ID "用户名",

        rank() over(order by EXECUTIONS desc) EXEC_RANK

     from v$sql s

     left join all_users u

      on u.USER_ID = s.PARSING_USER_ID) t

 where exec_rank <= 100;

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注