Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 plsql в режиме mount  [new]
ShaDmiF
Member

Откуда:
Сообщений: 302
Добрый день! Для таких деяний нужен open?

SQL> select status from v$instance;

STATUS
------------
MOUNTED

SQL> select max(SEQUENCE#) from v$archived_log where ARCHIVED = 'YES';
select max(SEQUENCE#) from v$archived_log where APPLIED = 'YES';

MAX(SEQUENCE#)
--------------
        300994

SQL>
MAX(SEQUENCE#)
--------------
        300982

SQL> spool /data02/repo/script/logs_apply.sql;
declare
  arc number;
  apl number;
begin
  select max(SEQUENCE#) into arc from v$archived_log where ARCHIVED = 'YES';
  select max(SEQUENCE#) into apl from v$archived_log where APPLIED = 'YES';
  if arc = apl then
    dbms_output.put_line('--All shipped logs are aplied');
  else
    dbms_output.put_line('--Not all shipped logs are aplied');
    dbms_output.put_line('exit');
  end if;
end;
/
spool off;
SQL>   2    3    4    5    6    7    8    9   10   11   12   13   14  declare
*
ERROR at line 1:
ORA-01219: database not open: queries allowed on fixed tables/views only


SQL> SQL>
21 апр 10, 14:07    [8663513]     Ответить | Цитировать Сообщить модератору
 Re: plsql в режиме mount  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
ShaDmiF
Добрый день! Для таких деяний нужен open?


Дык вроде Oracle все написал...
21 апр 10, 14:10    [8663541]     Ответить | Цитировать Сообщить модератору
 Re: plsql в режиме mount  [new]
ShaDmiF
Member

Откуда:
Сообщений: 302
tru55,

SQL> spool /data02/repo/script/logs_apply.sql;
begin
  if 1 = 1 then
    dbms_output.put_line('--All shipped logs are aplied');
  else
    dbms_output.put_line('--Not all shipped logs are aplied');
    dbms_output.put_line('exit');
  end if;
end;
/
spool off;
SQL>   2    3    4    5    6    7    8    9
PL/SQL procedure successfully completed.

SQL> SQL>
21 апр 10, 14:21    [8663656]     Ответить | Цитировать Сообщить модератору
 Re: plsql в режиме mount  [new]
-2-
Member

Откуда:
Сообщений: 15330
ShaDmiF,

А если x$kccal?
21 апр 10, 14:25    [8663693]     Ответить | Цитировать Сообщить модератору
 Re: plsql в режиме mount  [new]
ShaDmiF
Member

Откуда:
Сообщений: 302
-2-
ShaDmiF,

А если x$kccal?


SQL> select max(SEQUENCE#) from v$archived_log where ARCHIVED = 'YES';
select max(SEQUENCE#) from v$archived_log where APPLIED = 'YES';

MAX(SEQUENCE#)
--------------
        300994

SQL>
MAX(SEQUENCE#)
--------------
        300982
21 апр 10, 14:30    [8663752]     Ответить | Цитировать Сообщить модератору
 Re: plsql в режиме mount  [new]
SysOper
Member

Откуда: M
Сообщений: 9760
ShaDmiF,

SQL> conn / as sysdba
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 2617245696 bytes
Fixed Size                  2057216 bytes
Variable Size             251661312 bytes
Database Buffers         2348810240 bytes
Redo Buffers               14716928 bytes
Database mounted.
SQL> select max(SEQUENCE#) from v$archived_log where ARCHIVED = 'YES';

MAX(SEQUENCE#)
--------------

SQL> declare d varchar2(1); begin d := 'd'; end;
  2  /

PL/SQL procedure successfully completed.

SQL> declare
  2    arc number;
  3    apl number;
  4  begin
  5    select max(SEQUENCE#) into arc from v$archived_log where ARCHIVED = 'YES';
  6    select max(SEQUENCE#) into apl from v$archived_log where APPLIED = 'YES';
  7    if arc = apl then
  8      dbms_output.put_line('--All shipped logs are aplied');
  9    else
 10      dbms_output.put_line('--Not all shipped logs are aplied');
 11      dbms_output.put_line('exit');
 12    end if;
 13  end;
 14  /

PL/SQL procedure successfully completed.

SQL> spool c:\1.txt;
SQL> declare
  2    arc number;
  3    apl number;
  4  begin
  5    select max(SEQUENCE#) into arc from v$archived_log where ARCHIVED = 'YES';
  6    select max(SEQUENCE#) into apl from v$archived_log where APPLIED = 'YES';
  7    if arc = apl then
  8      dbms_output.put_line('--All shipped logs are aplied');
  9    else
 10      dbms_output.put_line('--Not all shipped logs are aplied');
 11      dbms_output.put_line('exit');
 12    end if;
 13  end;
 14  /

PL/SQL procedure successfully completed.

SQL> spool off;
SQL> spool c:\1.txt;
SQL> declare
  2    arc number;
  3    apl number;
  4  begin
  5    select COUNT(SEQUENCE#) into arc from v$archived_log where ARCHIVED = 'YES';
  6    select COUNT(SEQUENCE#) into apl from v$archived_log where APPLIED = 'YES';
  7    if arc = apl then
  8      dbms_output.put_line('--All shipped logs are aplied');
  9    else
 10      dbms_output.put_line('--Not all shipped logs are aplied');
 11      dbms_output.put_line('exit');
 12    end if;
 13  end;
 14  /

PL/SQL procedure successfully completed.

SQL> spool off;
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Release 10.2.0.3.0 - 64bit Production
PL/SQL Release 10.2.0.3.0 - Production
CORE    10.2.0.3.0      Production
TNS for 64-bit Windows: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production
21 апр 10, 14:47    [8663917]     Ответить | Цитировать Сообщить модератору
 Re: plsql в режиме mount  [new]
ShaDmiF
Member

Откуда:
Сообщений: 302
SysOper, у меня 9.2.0.8
SQL> declare d varchar2(1); begin d := 'd'; end;
  2  /

PL/SQL procedure successfully completed.
21 апр 10, 15:01    [8664037]     Ответить | Цитировать Сообщить модератору
 Re: plsql в режиме mount  [new]
ShaDmiF
Member

Откуда:
Сообщений: 302
В общем, понятно, что ничего не понятно:
SQL> declare
  arc number;
  apl number;
begin        
  select max(SEQUENCE#) into arc from v$archived_log where ARCHIVED = 'YES';
  select max(SEQUENCE#) into apl from v$archived_log where APPLIED = 'YES'; 
  if arc = apl then                                                         
    dbms_output.put_line('--All shipped logs are applied');                 
  else                                                                      
    dbms_output.put_line('--Not all shipped logs are applied');             
    dbms_output.put_line('exit');                                           
  end if;                                                                   
end;                                                                        
/                                                                           

  2    3    4    5    6    7    8    9   10   11   12   13   14  declare
*                                                                       
ERROR at line 1:                                                        
ORA-01219: database not open: queries allowed on fixed tables/views only


SQL> SQL>
SQL> declare
  arc number;
  apl number;
begin
--  select max(SEQUENCE#) into arc from v$archived_log where ARCHIVED = 'YES';
--  select max(SEQUENCE#) into apl from v$archived_log where APPLIED = 'YES';
  if arc = apl then
    dbms_output.put_line('--All shipped logs are applied');
  else
    dbms_output.put_line('--Not all shipped logs are applied');
    dbms_output.put_line('exit');
  end if;
end;
/

  2    3    4    5    6    7    8    9   10   11   12   13   14
PL/SQL procedure successfully completed.

SQL> SQL>
SQL> select max(SEQUENCE#) arc from v$archived_log where ARCHIVED = 'YES';
select max(SEQUENCE#) apl from v$archived_log where APPLIED = 'YES';

       ARC
----------
    301000

SQL>
       APL
----------
    300982

SQL>
21 апр 10, 15:06    [8664069]     Ответить | Цитировать Сообщить модератору
 Re: plsql в режиме mount  [new]
ShaDmiF
Member

Откуда:
Сообщений: 302
значит дело в переменных?
SQL> declare
  n number;
begin
  select 1 into arc from dual;
end;
/
  2    3    4    5    6  declare
*
ERROR at line 1:
ORA-01219: database not open: queries allowed on fixed tables/views only


SQL> select 1 from dual;

         1
----------
         1
21 апр 10, 15:36    [8664357]     Ответить | Цитировать Сообщить модератору
 Re: plsql в режиме mount  [new]
SysOper
Member

Откуда: M
Сообщений: 9760
ShaDmiF,

SQL> declare
  2    n number;
  3  begin
  4    select 1 into arc from dual;
  5  end;
  6  /
  select 1 into arc from dual;
                *
ERROR at line 4:
ORA-06550: line 4, column 17:
PLS-00201: identifier 'ARC' must be declared
ORA-06550: line 4, column 21:
PL/SQL: ORA-00904: : invalid identifier
ORA-06550: line 4, column 3:
PL/SQL: SQL Statement ignored

21 апр 10, 15:52    [8664497]     Ответить | Цитировать Сообщить модератору
 Re: plsql в режиме mount  [new]
ShaDmiF
Member

Откуда:
Сообщений: 302
SysOper,
)))
SQL> declare
  2  n number;
  3  begin
  4  select 1 into n from dual;
  5  end;
  6  /
declare
*
ERROR at line 1:
ORA-01219: database not open: queries allowed on fixed tables/views only
21 апр 10, 16:09    [8664653]     Ответить | Цитировать Сообщить модератору
 Re: plsql в режиме mount  [new]
SysOper
Member

Откуда: M
Сообщений: 9760
ShaDmiF,

а так?

declare
  n number;
begin
  FOR rec IN (select 1 a from dual)
  LOOP
     n := rec.a;
  END LOOP;   
end;
21 апр 10, 16:12    [8664679]     Ответить | Цитировать Сообщить модератору
 Re: plsql в режиме mount  [new]
ShaDmiF
Member

Откуда:
Сообщений: 302
SysOper,

SQL> declare
  n number;
begin
  FOR rec IN (select 1 a from dual)
  LOOP
     n := rec.a;
  END LOOP;
end;  2    3    4    5    6    7    8
  9  /
declare
*
ERROR at line 1:
ORA-01219: database not open: queries allowed on fixed tables/views only
21 апр 10, 16:13    [8664686]     Ответить | Цитировать Сообщить модератору
 Re: plsql в режиме mount  [new]
SysOper
Member

Откуда: M
Сообщений: 9760
ShaDmiF,

declare
  n varchar2(1);
begin
  FOR rec IN (select '1' a from dual)
  LOOP
     n := rec.a;
  END LOOP;   
end;
21 апр 10, 16:15    [8664718]     Ответить | Цитировать Сообщить модератору
 Re: plsql в режиме mount  [new]
AlexFF__|
Member

Откуда:
Сообщений: 2852
Весело Вам)))
21 апр 10, 16:22    [8664801]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить