【求助】 让表空间启动后offline

s_evra 2013-12-25 05:55:39
各位大大,本人新手,想在启动数据库实例后让某个指定的表空间offline,需要时再手动Online,从而给外部用户整体感觉就是该表空间从未online过。

由于对oracle启动顺序的了解仅限于nomount mount open的阶段,因此希望在open之前改变该表空间的相关参数从而使之不open。

我是这样处理的:
创建一个系统事件触发器,里面调用一个存储过程:
create or replace trigger my_trigger after startup on database
begin
my_procedure;
end;

存储过程是:
create or replace procedure my_procedure authid current_user
is
begin
execute immediate 'alter tablespace my_tablespace offline normal';
end;

单独在sqlplus里面执行my_procedure是可以的,触发器也能正常触发。但是重启oracle服务(直接在windows服务管理器里面重启OracleServiceXXX服务),它为什么没起作用呢?还是我的处理方向有问题?
跪求大神们解惑,本人感激不尽。
...全文
170 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
s_evra 2013-12-27
  • 打赏
  • 举报
回复
引用 6 楼 stublue 的回复:
[quote=引用 5 楼 s_evra 的回复:] [quote=引用 4 楼 stublue 的回复:]

ALTER SYSTEM SET "_SYSTEM_TRIG_ENABLED"=TRUE SCOPE=BOTH;
修改一下这个参数试试。 需要先确认你的触发器被触发了
你好,我之前试过把存储过程中的execute immediate...改成了insert into my_table values(xxx),启动后发现是有数据插入的,这样可以确定触发器被触发了吗?[/quote] 那就是触发了。你把execute immediate 'alter tablespace my_tablespace offline normal'; 这个放到触发器里面试试[/quote] 呃,还是一样。请问有没有办法得到执行这条SQL的结果呢?我想知道它到底是直接被忽略了,还是执行失败了。
Leon_He2014 2013-12-27
  • 打赏
  • 举报
回复
引用 5 楼 s_evra 的回复:
[quote=引用 4 楼 stublue 的回复:]

ALTER SYSTEM SET "_SYSTEM_TRIG_ENABLED"=TRUE SCOPE=BOTH;
修改一下这个参数试试。 需要先确认你的触发器被触发了
你好,我之前试过把存储过程中的execute immediate...改成了insert into my_table values(xxx),启动后发现是有数据插入的,这样可以确定触发器被触发了吗?[/quote] 那就是触发了。你把execute immediate 'alter tablespace my_tablespace offline normal'; 这个放到触发器里面试试
s_evra 2013-12-27
  • 打赏
  • 举报
回复
引用 4 楼 stublue 的回复:

ALTER SYSTEM SET "_SYSTEM_TRIG_ENABLED"=TRUE SCOPE=BOTH;
修改一下这个参数试试。 需要先确认你的触发器被触发了
你好,我之前试过把存储过程中的execute immediate...改成了insert into my_table values(xxx),启动后发现是有数据插入的,这样可以确定触发器被触发了吗?
Leon_He2014 2013-12-26
  • 打赏
  • 举报
回复

ALTER SYSTEM SET "_SYSTEM_TRIG_ENABLED"=TRUE SCOPE=BOTH;
修改一下这个参数试试。 需要先确认你的触发器被触发了
s_evra 2013-12-25
  • 打赏
  • 举报
回复
引用 1 楼 stublue 的回复:
在sqlplus用startup命令重启oracle呢?
嗯,试过了,sqlplus下用startup,效果还是一样的。
shenlele088 2013-12-25
  • 打赏
  • 举报
回复
标注下,同学习
Leon_He2014 2013-12-25
  • 打赏
  • 举报
回复
在sqlplus用startup命令重启oracle呢?

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧