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天则提示密码过期。 1、 ALTER USER 用户名 IDENTIFIED BY 密码 ; 2、 ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED 关闭Oracle过期策略 五、查询表空间位置 select file_name , tablespace_name from dba_data_files;
以沫浅夏----奔跑的孩子
个人博客地址:http://www.blog.liyang.love
个人博客地址:http://www.blog.liyang.love

浙公网安备 33010602011771号