下面我们将Oracle 11g作为一个例子来介绍一下。 Oracle本身就是一个很占资源的软件,光一个实例服务所占内存,根据其安装时分配的内存就至少要达到256MB以上,再加上其他附属服务,光内存就要占用物理内存的30%左右,至于CPU,Oracle也需要占用30%左右,因而,我们考虑在有需要使用Oracle时启用其相关服务,平时则停止该服务。 我们拿Oracle 11g作为例子。首先在“开始=〉运行”中输入“services.msc”,按回车,进入“服务”控制台,将Oracle ORCL VSSWriterService、OracleDBConsolexx(xx表示实例名称)、OracleOraDb11g_home1TNSListener及OracleServicexx(xx表示实例名称)服务的属性中启动类型修改为“手动”,然后在需要使用时启动OracleDBConsolexx(xx表示实例名称)、OracleOraDb11g_home1TNSListener及OracleServicexx(xx表示实例名称)这些服务,不使用时停止,而且这样做即使机器关机或重启后,默认系统还是不会启动这些服务的。当然我们建议将启动停止服务的操作写在一个批处理文件中方便使用。 下面我们附上启动及停止Oracle 11g服务的批处理文件内容(具体批处理文件请见附件,oracle实例名称以orcl为例):启动Oracle11g服务批处理代码如下:@echooff@ ECHO 启动 Oracle 11g 服务net start"OracleDBConsoleorcl"net start"OracleOraDb11g_home1TNSListener"net start"OracleServiceORCL" @ ECHO 启动完毕 按任意键继续pauseexit停止Oracle11g服务批处理代码如下:@echooff@ ECHO 停止 Oracle 11g 服务net stop"OracleDBConsoleorcl"net stop"OracleOraDb11g_home1TNSListener"net stop"OracleServiceORCL" @ ECHO 停止完毕
成都创新互联专注于梁子湖网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供梁子湖营销型网站建设,梁子湖网站制作、梁子湖网页设计、梁子湖网站官网定制、微信小程序开发服务,打造梁子湖网络公司原创品牌,更为您提供梁子湖网站排名全网营销落地服务。
今天在项目中遇到一个比较棘手的问题,需要用到触发器。在编写触发器和调试过程中遇到下列问题,在此记录一下:
由于之前写的触发器都能正常运行,就没有涉及到触发器的调试,今天发现触发器没起作用,需要调试,竟不知道在哪儿调试。在网上借鉴一些别人的经验(),记录一下。在PL/SQL中,触发器的调试方法如下:
1,选中要调试的触发器,右击,然后勾选 Add debug information,只有勾选这个按钮后,调试才能进入到断点。
2,选中触发器,点击 Edit,到Edit 界面,在要调试的行号前面单击,或者右键,添加断点。
3,在菜单的新建中选择“测试窗口”,打开一个如下块,在begin和end中间添加能触发触发器的语句
4,按F9或者点击调试菜单中的开始菜单,进入运行调试状态(后面的红框是单步进入)
5,点击运行图标跳到触发器中断点位置
6,鼠标放到变量上可以显示变量值。
7,如果有异常,就弹出相关异常信息。
调试的时候发现new对象的日期格式为中文,而后面又需要yyyy-mm-dd 的格式来作为查询条件。所以就在赋值的时候转换一下。
在select into 给变量赋值的时候,select 查询出来的集合为空,导致报错ORA-01403,解决方案就是将这一段用begin end 包裹起来,抛出改异常的时候给变量一个默认值。如下图:
--关闭某表上所有trriger
alter table table_name disable all triggers;
--开启某表上所有trriger
alter table table_name enable all triggers
在windows里启动Oracle有两个步骤,一是先启动服务,二是再启动实例、数据库,这两个都可以设置成自动或者手动
针对数据库开机自动启动问题,解决方法有两个
方法一:在服务把oracleservice%SID%这个服务改成手动启动
方法二:修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\HOME0\ORA_%SID%_AUTOSTART的值为false,这个是控制启动服务时是否自动启动数据库(实例,占内存),默认是true
注册表还有个ORA_%SID%_shutdown它是控制你关机时是否自动关数据库的
启动服务可以用net start oracleservice%SID% 命令
停止服务可以用net start oracleservice%SID% 命令
手动启动数据库要先开始服务,不然sqlplus不能进行操作系统验证了
进入sqlplus “/as sysdba"
启动数据库是在sqlplus里输入startup
关闭数据库是在sqlplus里输入shutdown immediate
可以创建这样一个触发器,在这个时间段内插入数据就报错,数据插不进去就可以了,代码如下:
create
or
replace
trigger
aa_trigger2
before
insert
on
aa
referencing
new
as
n
old
as
o
for
each
row
when
(to_char(sysdate,'hh')
=
'22'
)
declare
begin
raise_application_error(-20009,
'该时间段内禁止插入数据');
exception
when
others
then
raise_application_error(-20009,
'该时间段内禁止插入数据');
end;
1、shutdown normal (从字面就可理解这是一个用正常的方式来关闭数据库。)
) 当执行shutdown immediate时,数据库并不立即关闭,而是在Oracle执行完内部的必要的工作后才关闭,shutdown immediate可以完成shutdown不能对数据库关闭的操作。建议DBA们常用此方法关闭数据库 3、shutdown abort (直接关闭数据库) 这个停止的方法不推荐,因为对于正在访问数据库的会话会被突然终止,可能会造成数据库的数据丢失,并且如果数据库中有大量操作正在执行,这时执行shutdown abort后,重新启动数据库需要很长时间。 举例说明: 1、停Oracle # su – oracle $ lsnrctl stop $ svrmgrl connectinternal shutdown immediate exit 相应的启动Oracle的方法如下: # su – oracle 以ORACLE用户身份进入 $ svrmgrl 打开ORACLE的管理器 connectinternal 建立库的连接 startup 启动数据库 exit 退出管理器 $ lsnrctl start 启动监听 $lsnrctl status 查看监听的状态
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款