oracle基础学习
1.desc table_name 可以查询表的结构 2.怎么获取有哪些用户在使用数据库 select username from v$session;
3.如何在Oracle服务器上通过SQLPLUS查看本机IP地址 ? select sys_context('userenv','ip_address') from dual; 如果是登陆本机数据库,只能返回127.0.0.1 4.如何给表、列加注释?
SQL>comment on table 表 is '表注释'; 注释已创建
SQL>comment on column 表.列 is '列注释'; 注释已创建。
SQL> select * from user_tab_comments where comments is not null; 5.如何在ORACLE中取毫秒? select systimestamp from dual; 6.如何在字符串里加回车? 添加一个||chr(10)
select 'Welcome to visit'||chr(10)||'www.CSDN.NET' from dual ; 7.怎样修改oracel数据库的默认日期?
alter session set nls_date_format='yyyymmddhh24miss'; 8.怎么可以看到数据库有多少个tablespace? select * from dba_tablespaces; 9.如何显示当前连接用户? SHOW USER
10.如何测试SQL语句执行所用的时间? SQL>set timing on ;
11.怎么把select出来的结果导到一个文本文件中? SQL>SPOOL F:\\ABCD.TXT; SQL>select * from table; SQL >spool off;
12.如何在sqlplus下改变字段大小?
alter table table_name modify (field_name varchar2(100)); 改大行,改小不行(除非都是空的) 13.如果修改表名?
alter table old_table_name rename to new_table_name; 14.如何搜索出前N条记录? (desc降序)
SELECT * FROM Tablename WHERE ROWNUM < n ORDER BY column;
15. 如何在给现有的日期加上2年? select add_months(sysdate,24) from dual; 16.Connect string是指什么?
应该是tnsnames.ora中的服务名后面的内容 17.返回大于等于N的最小整数值?
SELECT CEIL(-10.102) FROM DUAL; 18.返回小于等于N的最大整数值? SELECT FLOOR(2.3) FROM DUAL; 19.返回行的物理地址
SELECT ROWID, ename FROM tablename WHERE deptno = 20 ; 20.将N秒转换为时分秒格式? set serverout on declare
N number := 1000000; ret varchar2(100); begin
ret := trunc(n/3600) || '小时' || to_char(to_date(mod(n,3600),'sssss'),'fmmi\分\秒\dbms_output.put_line(ret); end;
21.如何监控当前数据库谁在运行什么SQL语句?
SELECT osuser, username, sql_text from v$session a, v$sqltext b where a.sql_address =b.address order by address, piece; 22.如何知道当前用户的ID号? SQL>SHOW USER; OR
SQL>select user from dual;
23.如何知道使用CPU多的用户session? 11是cpu used by this session
select a.sid,spid,status,substr(a.program,1,40) prog,a.terminal,osuser,value/60/100 value from v$session a,v$process b,v$sesstat c
where c.statistic#=11 and c.sid=a.sid and a.paddr=b.addr order by value desc; 24.Oracle建立表空间和用户
建立表空间和用户的步骤: 用户
建立:create user 用户名 identified by \密码\授权:grant create session to 用户名; grant create table to 用户名;
grant create tablespace to 用户名; grant create view to 用户名; 表空间
建立表空间(一般建N个存数据的表空间和一个索引空间): create tablespace 表空间名
datafile ' 路径(要先建好路径)\\***.dbf ' size *M tempfile ' 路径\\***.dbf ' size *M autoextend on --自动增长
--还有一些定义大小的命令,看需要 default storage( initial 100K,
next 100k, );
用户权限
授予用户使用表空间的权限:
alter user 用户名 quota unlimited on 表空间; 或 alter user 用户名 quota *M on 表空间;
create tablespace zq datafile 'D:\\zq\\zw.dbf' SIZE 1000M AUTOALLOCATE; 修改用户的默认表空间
alter user username default tablespace tablespacename;
25.在sqlplus 中清屏命令:clear src clear screen; cl scr; 怎样用语句查询表空间里面表的内容?
select table_name from all_tables where tablespace_name='zq';
select table_name from user_tables where tablespace_name='xx' 26.如何查询表在哪个表空间中?(单引号里面的要大写) SELECT tablespace_name FROM USER_TABLES WHERE table_name = 'YOUR_TABLENAME'
查一下,这个表是哪个用户下的,如果是本用户则可以用上面的sql 如果是别的用户的表你就用 SELECT tablespace_name FROM DBA_TABLES WHERE table_name = 'YOUR_TABLENAME' and owner='表的OWNER'
还有你要确定你查的确实是一个表而不是 view 或 SYNONYM 而且在引号里面的表名和owner都要用大写字母
27.表的创建 create table aa (a varchar2(10), b number(8,2), c date
) tablespace users;
如果在创建用户时没有指定默认表空间,系统默认表空间为System,在创建表时必须指定tablespace;
28.如何查询一个表空间下的所有表(单引号里面的要大写)
select table_name from user_tables where tablespace_name='表空间名';
29.更改计算机名后会出现Oracle ORA-12541:TNS:no listener错误解决方法 D:\\oracle\\product\\10.2.0\\db_1\\NETWORK\\ADMIN\\listener.ora
修改为现在的计算机名,再次启动OracleOraHome90TNSListener服务成功 30.创建表时默认表空间是SYSAUX
31.oracle10g em Database Control的启动问题修复
打开http://localhost:1158/em/ 显示数据库状态没有启动,提示用户登录错误ORA-28000: the account is locked,使用PL/SQL或SQL*plus
连接是正常的。到网上搜索一番,没有找到确切的原因。其中一个可能的原因是用户DBSNMP的密码和sys用户的密码不一致,导致
OracleDBConsoleSID服务错误,网上很多朋友说使用emca(EM Configuration Assistant)工具进行修复。
在命令行里键入下面两个命令就可以修复数据库的em emca -repos recreate
emca -config dbcontrol db
另外,网上很多朋友给出“emca -r”这样的命令,我试了之后发现10g版本的命令格式已经有所变化,具体的命令格式可以通过命令 的帮助获得。在命令行中键入 emca help=y
可以查看详细的命令格式。 常用的命令语法:
emca -repos create创建一个EM资料库 emca -repos recreate重建一个EM资料库 emca -repos drop删除一个EM资料库
emca -config dbcontrol db配置数据库的 Database Control
emca -deconfig dbcontrol db删除数据库的 Database Control配置 emca -reconfig ports 重新配置db control的端口,默认端口在1158
emctl start console启动EM console服务,使用前需要先设置ORACLE_SID环境变量 emctl stop console停止EM console服务,使用前需要先设置ORACLE_SID环境变量 32.解决启动Oracle9i的OEM或OMS的常见问题(VTK-1000) 能否正常启动OEM或OMS关键有以下两点: 第一.Oracle的系统服务是否开启;
第二.登录时用的用户名和口令是否正确。
那么先针对第一点谈谈Oracle的系统服务。在完全安装的情况下,Oracle的系统服务共有11项:
1.Oracle OLAP 9.0.1.0.1 2.Oracle OLAP Agent 3.OracleOraHome90Agent
4.OracleOraHome90ClientCache 5.OracleOraHome90HTTPServer
6.OracleOraHome90ManagementServer(0.5M) 7.OracleOraHome90PagingServer
8.OracleOraHome90SNMPPeerEncapsulator 9.OracleOraHome90SNMPPeerMasterAgent 10.OracleOraHome90TNSListener(5.2M) 11.OracleServiceORACLE(70M)
(注:OraHome90是可以在安装时改变的Oracle的主目录名称,是安装时的默认值) 其中最重要的服务有3个,分别是OracleOraHome90ManagementServer、OracleOraHome90TNSListener与
OracleServiceORACLE。下面就来看一下有哪些启动错误与它们有关。 1.Oracle系统提示:Ora-12541:TNS:没有监听器; 2.操作系统提示:在本地计算机无法启动OMS服务
错误:1053:服务并未及时响应来控制请求附带;
以上两种错误提示大都是由OracleOraHome90TNSListener监听服务引起的。
解决方法:控制面版->管理工具->服务->右键单击“OracleOraHome90TNSListener”,再单击“启动”。
3.Oracle系统提示:Ora-12500:TNS:监听程序无法启动专用服务器进程; 该错误是由OracleServiceORACLE专用服务器进程引起的。 解决方法:控制面版->管理工具->服务->右键单击“OracleServiceORACLE”,再单击“启动”。 4.Oracle系统提示:VTK-1000:无法连接到Management Server。
请验证您已输入Oracle Management Server的正确主机名和状态。
该错误引起的原因有两种,一是OracleOraHome90ManagementServer还没启动;二是没有输入主机名。
解决方法:控制面版->管理工具->服务->右键单击“OracleOraHome90ManagementServer”, 再单击“启动”,
或是输入您这台计算机的完整名称。
接着针对第二点谈谈登录时用的用户名和口令。
在安装结束后,系统提供了两个默认的数据库系统管理员,其用户名和口令分别是SYS/change_on_install和SYSTEM/manager,同时系统还
提供了登录OMS的用户名和口令:sysman/oem_temp。这里容易出现错误的是在登录OMS是用SYS或SYSTEM作为用户名进行登录,那么Oracle系统 就回有“登录身份证明不正确”的提示。
小结:这三个服务的启动或关闭还有先后的顺序。一般来讲,启动时必须先启动OracleOraHome90TNSListener再启动 OracleOraHome90ManagementServer或OracleServiceORACLE,在启动OracleOraHome90ManagementServer时,同时也启动了
OracleServiceORACLE。而关闭时必须先关闭OracleOraHome90ManagementServer再关闭OracleOraHome90TNSListener或OracleServiceORACLE,
关闭OracleOraHome90ManagementServer时,若有提示输入用户名和口令,请输入sysman的用户名和口令,以确保成功的执行。有些其他提示如
:资源已被占用,I/O重复,端口已被使用等等之类的话,那最好与系统管理员联系,再寻求解决办法。
1) 查询数据库名:
SQL> select name from v$database; (2) 查询数据库实例名:
SQL> select instance_name from v$instance; (3) 查询数据库服务名:
SQL> select value from v$parameter where name='service_names'; // (小写) (4) 查询全局数据库名(sys用户):
SQL> select value$ from props$ where name='GLOBAL_DB_NAME'; // 字符串区分大小写 监视用户会话: