Oracle创建用户及表空间

/*分为四步 */
/*第1步:创建临时表空间  由于Oracle工作时经常需要一些临时的磁盘空间,
这些空间主要用作查询时带有排序(Group by,Order by等)等算法所用,
当用完后就立即释放,对记录在磁盘区的信息不再使用,因此叫临时表空间。
一般安装之后只有一个TEMP临时表空间。 */
create temporary tablespace user_temp  
tempfile 'G:\SoftSetup\Oracle\user_temp.dbf' 
size 50m  
autoextend on  
next 50m maxsize 20480m  
extent management local;  
 
/*第2步:创建数据表空间  */
create tablespace user_data  
logging  
datafile 'G:\SoftSetup\Oracle\user_data.dbf' 
size 50m  
autoextend on  
next 50m maxsize 20480m  
extent management local;  

/*第3步:创建用户并指定表空间  */
create user liyang identified by liyang  
default tablespace user_data  
temporary tablespace user_temp;  

/*第4步:给用户授予权限  */
grant connect,resource,dba to liyang;

/*删除用户*/
drop user MIGRATIONS cascade;

/*跨表空间创建视图  先给用户权限*/

grant select on C##FGHIS5.系统_操作人员表 to C##FGCPOE;

/*存储过程授权*/
grant execute on ###.ProManager to ##_CIS;


在创建视图
create view Name

/*修改视图 */

 create or replace view V_医嘱_病人费用汇总表 as
 select '' AS 病人唯一ID,
     '' 病人类型,
    '' 预交金额,
     0 已用费用,
     0 剩余金额
     ,'0' 门诊号,  0 结帐定额, 0  警戒金额,'' 报警日期, ''报警原因
, '' AS 在院标志, '' 结帐标志, '' 报销总费用, '' 自费总费用,''  其他总费用, 
 '' 所属科室,'' 姓名,'' 床位号  FROM 查询_药房信息表 ;

/*通过 ALTER session SET nls_date_format 设置日期的显示格式*/

ALTER session SET nls_date_format='yyyy-mm-dd hh24:mi:ss';

/*Oracle创建同义词*/
CREATE public synonym table_name for user.table_name;
/*Oracl创建序列*/
CREATE SEQUENCE sequence_FGCPOE -- emp_sequence这个就是后面要用到这个序列号时引用的名称
INCREMENT BY 1  -- 每次加几个
START WITH 1   -- 从1开始计数
NOMAXVALUE    -- 不设置最大值
NOCYCLE     -- 一直累加,不循环
CACHE 100; -- 缓存值 100

/*Oracle创建触发器使用序列*/
--最好每张表对应一个序列
create or replace TRIGGER FGCPOE_Trigger1--触发器名称
before insert on Test --{表名}
for each row
begin
select   ORCHARD_SEQUENCE/*序列名称*/.nextval into :new.ID/*表要自增的主键*/  from dual;
end;
 

 /*Oracle类似于sql的将结果集转换成XML格式*/
    select DBMS_XMLQUERY.getXml('select * from 医嘱_医生医嘱表 where rownum<10') from dual;


 

//一天24小时内执行的sql语句

select SQL_TEXT, FIRST_LOAD_TIME
from v$sqlarea where SQL_TEXT like '%1419649%'
 

Select object_name From user_objects Where object_type='TRIGGER';  --所有触发器
Select object_name From user_objects Where object_type='PROCEDURE';  --所有存储过程
Select object_name From user_objects Where object_type='VIEW';  --所有视图
Select object_name From user_objects Where object_type='TABLE'; --所有表




/*Oracle修改表字段长度*/

    alter table HD_PRESCRIPTION modify ONCE_AMOUNT NUMBER(11,4)
    alter table HN_PRESCRIPTION modify ONCE_AMOUNT NUMBER(11,4)

    

    /*Oracle新增字段*/

    alter table sf_users add (userName varchar2(30) default '' not null)




  

--存储过程
create or replace procedure p_test(p_cur out sys_refcursor)
as
begin
     open p_cur for select * from HN_PATIENT;
end p_test;
 

/*生成唯一随机数*/

      update test set Id=LPAD(ABS(MOD(DBMS_RANDOM.RANDOM,9))||seqtest.nextval,8,'0')


SELECT seqtest.nextval FROM dual;
 

/*生成随机字符函数*/

create or replace function test_func   
  return varchar2   
is   
Result varchar2(50); --定义变量  
begin    
SELECT code into Result FROM( SELECT * FROM V_CPOE_USAGE T ORDER BY dbms_random.VALUE()) WHERE ROWNUM<2;
return(Result); --返回值  
end test_func;  
    
 

生成随机日期
   
 select to_date(TRUNC(DBMS_RANDOM.VALUE(  
       to_number(to_char(to_date('20180301','yyyymmdd'),'J')),  
       to_number(to_char(to_date('20180329','yyyymmdd')+1,'J')))),'J')+  
       DBMS_RANDOM.VALUE(1,3600)/3600  
       prize_time            
from dual;

//拼接字符串
select --wm_concat(to_char(c2.DEPT_NAME)) 
          listagg(c2.DEPT_NAME,',' ) within GROUP (order by (c2.DEPT_NAME)) 
              from HD_CONS_INVITE c1 
              left join sys_dept_property c2 on c1.DEPT_ID=c2.DEPT_ID where cons_id=T1.cons_id) INVITE_DEPT,

select listagg(a.name,',' ) within GROUP (order by (a.name)) from A a
 

select * from (select a.*, rownum row_num from CIS_DRUG_INFO a) x    
where x.row_num in (select min(rownum) from CIS_DRUG_INFO t group by drug_code)
 

 

 

--1、查看表空间的名称及大小 
SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size 
FROM dba_tablespaces t, dba_data_files d 
WHERE t.tablespace_name = d.tablespace_name 
GROUP BY t.tablespace_name; 
--2、查看表空间物理文件的名称及大小 
SELECT tablespace_name, 
file_id, 
file_name, 
round(bytes / (1024 * 1024), 0) total_space 
FROM dba_data_files 
ORDER BY tablespace_name; 


 
/*Oracle备份数据库语句*/
exp 用户名/密码@192.168.20.91:1521/ORCL file =d:\xxx.dmp

/*Oracle还原数据库语句*/

imp 用户名/密码@127.0.0.1/ORCL file=E:\公司程序\ORACLE备份\bak\xxx.dmp full=y;  (还原)
 

Oracle的sql跟踪

第一种:  SELECT * FROM v$session a,v$sql b
WHERE a.SQL_ID = b.SQL_ID(+)

第二种:select * from v$sqlarea where first_load_time>'2016-04-22/17:30:00' order by first_load_time desc ;
 

 
SQL> select count(*) from v$session #当前的连接数
SQL> Select count(*) from v$session where status='ACTIVE' #并发连接数
SQL> select value from v$parameter where name = 'processes' --数据库允许的最大连接数
SQL> show parameter processes #最大连接 
SQL> select username,count(username) from v$session where username is not null group by username; #查看不同用户的连接数

#修改最大连接数:
alter system set processes = 300 scope = spfile;

#重启数据库:
shutdown immediate;
startup;

 

一.Oracle日志的路径:

登录:sqlplus "/as sysdba"

查看路径:SQL> select * from v$logfile;

SQL> select * from v$logfile;(#日志文件路径)

二.Oracle日志文件包含哪些内容:(日志的数量可能略有不同)

control01.ctl example01.dbf redo02.log sysaux01.dbf undotbs01.dbf

control02.ctl redo03.log system01.dbf users01.dbf

control03.ctl redo01.log SHTTEST.dbf temp01.dbf

三.Oracle日志的查看方法:

SQL>select * from v$sql (#查看最近所作的操作)

SQL>select * fromv $sqlarea(#查看最近所作的操作)

Oracle 数据库的所有更改都记录在日志中,从目前来看,分析Oracle日志的唯一方法就是使用Oracle公司提供的LogMiner来进行,因为原始的日志信息我们根本无法看懂,Oracle8i后续版本中自带了LogMiner,而LogMiner就是让我们看懂日志信息的工具,通过这个工具可以:查明数据库的逻辑更改,侦察并更正用户的误操作,执行事后审计,执行变化分析。



四、Oracle提示密码已过期

   Oracle默认密码有效期180天,如果超过180天则提示密码过期。
  1ALTER USER 用户名 IDENTIFIED BY 密码 ;
  2ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED   关闭Oracle过期策略

五、查询表空间位置
    select file_name , tablespace_name from dba_data_files;

 

posted @ 2014-12-01 10:49  以沫浅夏  阅读(1156)  评论(0)    收藏  举报