Oracle常用的一些命令和知识点收集整理

0
已邀请:
7

梁勇 - 天道酬勤、上善若水。爱好商业智能 2013-07-17 回答

以下DOS下操作如下:

DOS下启动监听: lsnrctl start

启动对应的数据库服务: net start OracleServiceTIANSHAN

连接到对应的数据库: sqlplus ts/ts@tianshan as sysdba 或者 sqlplus "/ as sysdba"

修改密码: sql> alter user ts identified by xxxxx;

查看数据库编码: sql> select userenv('language') from dual;

查询对应的数据库名: SQL> select name from v$database

查询对应的实例名: SQL> select instance_name from v$instance;

查看用户下所有的表: SQL>select * from user_tables;

创建用户: SQL> create user tsxy identified by tsxy;
分配权限: SQL>grant dba to tsxy;

查看有哪些数据库实例: SQL>select instance_name from v$instance; 【查看有哪些实例】

查看有哪些用户: SQL> select username from dba_users; 【查看对应的用户】

用户锁住,解锁的方式,要用SYSDBA的身份登录 SQL>alter user username account unlock;
退出: SQL> exit



停止服务: net stop OracleServiceTIANSHAN

停止监听:lsnrctl stop


DOS下面导入 导出:

导出: exp 用户名/密码@实例名 file=路径 owner=用户
导入: imp 用户名/密码@实例名 file=路径 full=y

具体请参考如下图:

11.jpg
2

梁勇 - 天道酬勤、上善若水。爱好商业智能 2013-12-03 回答

创建表空间:

create tablespace gbrsrc_beidasoft
logging
datafile 'D:\gbrsrc_beidasoft.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
0

梁勇 - 天道酬勤、上善若水。爱好商业智能 2013-12-03 回答

Oracle直接创建一个表,用于测试数据,可以使用 :

create table xxx as select * from xxx_old
0

梁勇 - 天道酬勤、上善若水。爱好商业智能 2013-12-31 回答

//删除用户以及用户所有的对象

drop user zfmi cascade;


常用的操作命令 (切记:切换新的窗口)

SQL> conn /as sysdba;
SQL> shutdown abort
SQL> startup mount
SQL> alter database open;
0

梁勇 - 天道酬勤、上善若水。爱好商业智能 2014-03-12 回答


查询每个用户所占表空间的大小
select owner,tablespace_name ,sum(bytes)/1024/1024 from dba_segments group by owner,tablespace_name;
0

梁勇 - 天道酬勤、上善若水。爱好商业智能 2014-03-12 回答

循环批量插入数据

create table Dim_Shop
(
ShopId VARCHAR2(10) not null,
GroupId INTEGER,
ShopName VARCHAR2(20),
constraint PK_DIM_SHOP primary key (ShopId)
);

begin
for i in 1..10000
loop
insert into Dim_Shop (ShopId,GroupId,ShopName) values ('MD'||i,i,'门店'||i);
if mod(i,500)=0 then
commit;
end if;
end loop;
commit;
end;
0

梁勇 - 天道酬勤、上善若水。爱好商业智能 2014-04-11 回答

没有配置TNS,直接SQLPLUS连接远程的机器如下
环境说明:IP:192.168.0.102 端口:1521 实例:tsorcl 用户:ts 密码 ts
直接在DOS里面就可以通过如下方式就行连接

C:\Documents and Settings\dell> sqlplus ts/ts@192.168.0.102:1521/tsorcl
0

梁勇 - 天道酬勤、上善若水。爱好商业智能 2014-08-20 回答

Oracle函数应用


create or replace function getObjName_byobjid(i_objid varchar2)
return varchar2 is
t_Result varchar2(255);
begin

select objname into t_Result from (
select distinct objid,objname from timesheet_obj_snapshot group by objid,objname
)
where objid= i_objid;
return(t_Result);
end getObjName_byobjid;


调用 select getObjName_byobjid ('404') from dual;
0

梁勇 - 天道酬勤、上善若水。爱好商业智能 2014-12-05 回答

Linux下一个数据库,可以安装多个实例,只需要一个监听即可。直接使用DBCA进行实例的安装,而Linux下的环境变量对我们来说没有任何影响的。这个环境变量当他默认你连进来后SQLPLUS进去的实例和对应编码。一般的导入导出基本都用 EXPDP/IMPDP。exp、imp一般只有在高版本向低版本迁移才用,一般都是用EXPDP/IMPDP做,这个导出和导入的效率要高很多。 Oracle expdp/impdp导出导入命令及数据库备份 http://www.flybi.net/article/215
0

梁勇 - 天道酬勤、上善若水。爱好商业智能 2014-12-15 回答

/*
功能说明: 触发器 控制用户 drop OR truncate 删除数据表的权限
修改说明:Create By 2014-12-15
*/


CREATE OR REPLACE TRIGGER ddl_deny_lee
BEFORE drop OR truncate on database
declare
user STRING(30);
begin
SELECT SYS_CONTEXT('USERENV','SESSION_USER') into user from dual;
if user='TS' ----此处控制对应的限制的用户

THEN
raise_application_error(num => -20000,
msg => '主机:' || SYS_CONTEXT('USERENV', 'HOST') ||
chr(13) || 'IP:' ||
SYS_CONTEXT('USERENV', 'IP_ADDRESS') ||
'试图删除' || ora_dict_obj_name() || '表');
END IF;
end;


0

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-05-13 回答

学习了,梁总无私
0

Kiwi2021 2021-04-10 回答

一、Oracle数据库实例、用户、目录及session会话查看:

1、ORACLE SID查看设置

查看SID、用户名

$ env|grep SID 、select * from v$instance、select instance_name,host_name from v$instance;

查看数据库所有用户及用户状态:天津快乐十分

SQL> select usernames,account_status from dba_users;

设置SID

$ export ORACLE_SID=hisvhfs

查看数据库DBID:

SQL>select * from v$DBID

2、查询、设置Oracle数据库实例最大进程数及最大会话数

查看系统最大session:

SQL>show parameter session

查看当前连接数:

SQL>select count(*) from v$bgprocess

查看系统最大进程数:

SQL>show parameter process

查看当前连接到数据库的用户:幸运飞艇

SQL>select count(*) from v$session

查看当前数据库建立的会话情况:

SQL> select sid,serial#,username,program,machine,status from v$session;

查询应用的连接数SQL:

SQL> SELECT b.MACHINE, b.PROGRAM, COUNT (*)

FROM v$process a, v$session b

WHERE a.ADDR = b.PADDR AND b.USERNAME IS NOT NULL

GROUP BY b.MACHINE, b.PROGRAM

ORDER BY COUNT (*) DESC;

查看当前数据库的并发连接数

SQL> select count(*) from v$session where status='ACTIVE';

查看当前有哪些用户正在使用数据:

select osuser,a.username,cpu_time/executions/1000000||'s',sql_fulltext,machine

from v$session a,v$sqlarea b

where a.sql_address = b.address

order by cpu_time/executions desc;

查看数据库指定用户的连接情况

SQL> select sid,serial# from v$session where username='XX'; XX为用户

例如:福彩双色球

SQL> select sid,serial# from v$session where username='BSPDEV';

SID SERIAL#

---------- ----------
-1

梁勇 - 天道酬勤、上善若水。爱好商业智能 2014-03-31 回答

索引相关

【Oracle index】SQL语句无法走索引的一些情况分析及语句改写思路 http://blog.chinaunix.net/uid- ... .html

1、 适合B-Tree索引的字段(主键、唯一键、字段重复率少的)如ID、NAME、Code
语法如下:CREATE INDEX 索引名 ON 表(索引列)
2、 适合位图索引的字段(重复率高的、常用于AND、IN、OR等)如 TABLE_NAME、ISSUBMIT、ISINVALID、ISDELETE
语法如下:CREATE BITMAP INDEX 索引名 ON 表(索引列)
3、 适合全文索引的字段(模糊查询、常用于Like等),如Remarks、COMMENTS
语法如下:CREATE INDEX 索引名 ON 表(索引列) INDEXTYPE IS CTXSYS.CONTEXT

要回复问题请先登录注册