一、ORACEL常用操作
1、解锁账户:ALTER USER username ACCOUNT UNLOCK;
2、查看数据库字符集:SELECT USERENV ('language') FROM DUAL;
3、创建表空间:create tablespace cdj_userpace1 datafile '/usr/oracle/oradata/cdj/userpace1.dbf' size 500M;
4、创建数据库用户:create user 用户名 identified by 密码 default tablespace 表空间;
5、给用户授权:grant connect,resource to 用户名;
6、删除数据库用户:drop user 用户名 cascade; // 加上cascade可以将用户创建的东西全部一起删除
7、完整启动数据库三连:lsnrctl start; sqlplus / as sysdba; startup;
8、完整关闭数据库三连:sqlplus / as sysdba; shutdown; lsnrctl stop;
9、查看连接当前数据库的应用:select a.osuser,a.process,a.machine,a.port,a.program,a.sql_hash_value,a.sql_id from v$session a where a.username='数据库用户';
10、修改序列值:alter sequence 序列名 increment by 增量值; select 序列名.nextval from dual; alter sequence 序列名 increment by 1;
11、select * from v$nls_parameters; --查看数据库参数
12、alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; --修改当前会话时间默认格式,
export NLS_TIMESTAMP_FORMAT='yyyy-mm-dd-hh24.mi.ss' --修改环境变量也可以达到修改时间格式的效果
------------------------
1、时间类型操作
select to_char(current_timestamp,'yyyy-mm-dd hh24:mi:ss.ff6') from dual;
select to_timestamp('2012-02-03 10:29:46.453234','yyyy-mm-dd hh24:mi:ss.ff6') from dual;
select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ff6') from dual;
select cast(sysdate as timestamp) from dual;
select to_date(to_char(add_months(sysdate,-2)+1,'yyyy-mm-dd'),'yyyy-mm-dd') from dual ; --上月第一天
select next_day(sysdate, '星期五') from dual;--下个周五
select next_day(sysdate, 6) from dual;--下个周五, 周日为1
select LAST_DAY(sysdate) from dual;--当月最后一天
select add_months(sysdate,1) last_month,add_months(sysdate,12) last_year from dual;--下一月,下一年
二、数据库名、数据库实例名、数据库域名、全局数据库名、数据库服务名的区别和联系
1、数据库名就是一个数据库的标识,就像人的身份证号一样。如果一台机器上装了多个数据库,那么每一个数据库都有一个数据库名。
数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的。
查询当前数据库名
方法一:select name from v$database;
方法二:show parameter db
方法三:查看参数文件。
2、数据库实例名是用于和操作系统进行联系的标识,就是说数据库和操作系统之间交互用的是数据库实例名。
数据库名和实例名可以相同也可以不同。
在一般情况下,数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群)中,数据库名和实例名是一对多的关系。
查询当前数据库实例名
方法一:select instance_name from v$instance;
方法二:show parameter instance
方法三:在参数文件中查询。
数据库实例名与ORACLE_SID
虽然两者都表是oracle实例,但两者是有区别的。instance_name是oracle数据库参数。而ORACLE_SID是操作系统的环境变量。ORACLD_SID用于与操作系统交互,也就是说,从操作系统的角度访问实例名,必须通过ORACLE_SID。且ORACLE_SID必须与instance_name的值一致,否则,你将会收到一个错误。
3、数据库域名,在分布工数据库系统中,不同版本的数据库服务器之间,不论运行的操作系统是unix或是windows,各服务器之间都可以通过数据库链路进行远程复制,数据库域名主要用于oracle分布式环境中的复制。举例说明如:
全国交通运政系统的分布式数据库,其中: 福建节点:fj.jtyz 福建厦门节点:xm.fj.jtyz 江西:jx.jtyz 江西上饶:sr.jx.jtyz 这就是数据库域名。
数据库域名在存在于参数文件中,他的参数是db_domain.
查询数据库域名
方法一:select value from v$parameter where name = 'db_domain';
方法二:show parameter domain 方法三:在参数文件中查询。
4、全局数据库名=数据库名+数据库域名,如前述福建节点的全局数据库名是:oradb.fj.jtyz
5、数据库服务名,从oracle9i版本开始,引入了一个新的参数,即数据库服务名。参数名是SERVICE_NAME。数据库与客户端的连接字符串使用数据库服务名。之前用的是ORACLE_SID,即数据库实例名。数据库服务名可以与数据库实例名一致,也可以不一致。可以配置多个服务名连接同一个数据库,相当于是给实例名起了多个“别名”给不同的客户端程序使用。
查询数据库服务名
方法一:select value from v$parameter where name = 'service_name';
方法二:show parameter service_name
方法三:在参数文件中查询。
综上所述,为了便于记忆,可以理解为,数据库名/全局数据库名是数据库系统内部的称呼,数据库实例名是介绍给操作系统认识的,数据库服务名是介绍给操作系统上的客户程序认识的。
各个名字在主要配置文件中的使用举例如下:
listener.ora文件配置
SID_LIST_LISTENER = //配置文件中必须要要有SID_LIST_LISTENER,否则启动监听时会提示监听程序不支持服务。
(SID_LIST =
(SID_DESC=
(GLOBAL_DBNAME = 全局数据库名)
(ORACLE_HOME =ORACLE_HOME环境变量设置的位置)
(SID_NAME = 数据库实例名)
)
)
监听名称 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = IP地址)(PORT = 端口))
)
)
tnsnames.ora文件配置
数据库服务名 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ip地址)(PORT = 端口)) //注意:这里的IP地址如果写成192.168.*.*等局域网IP时,必须联网,sqlplus才能正常连接数据库。 若无网络,必须写成127.0.0.1
)
(CONNECT_DATA =
(SERVICE_NAME = 数据库服务名)
)
)
两个配置文件都是放在$ORACLE_HOME etworkadmin目录下。
三、使用sqlplus可以用sysdba用户无密码登录的原因
命令:sqlplus / as sysdba 即可登陆dba权限的用户,原因在于${ORACLE_HOME}/network/admin/sqlnet.ora中设置了“以操作系统认证”的方式登陆数据库。即当前的系统用户位于dba的用户组中,则可以以这种方式登陆。 目前一般刚装好的oracle数据库都是这种认证方式。
SQLNET.AUTHENTICATION_SERVICES= (NTS) // NTS代表操作系统认证,改成none, 则代表改成密码认证
四、windows/linux下程序连接ORACLE需要的东西。
1、windows下:oci.h 和 oci.dll或oci.lib
2、unix/linux下:${ORACLE_HOME}/include下的头文件,以及libclntsh.so和libnnz11.so
oracleinclude
zerror.h
.............
zt.h
.............occi.h
.............occiAQ.h
.............occiCommon.h
.............occiControl.h
.............occiData.h
.............occiObjects.h
.............oci.h
.............oci1.h
.............oci8dp.h
.............ociap.h
.............ociapr.h
.............ocidef.h
.............ocidem.h
.............ocidfn.h
.............ociextp.h
.............ocikpr.h
.............ocixml.h
.............ocixmldb.h
.............ocixstream.h
.............odci.h
.............oratypes.h
.............ori.h
.............orid.h
.............orl.h
.............oro.h
.............ort.h
.............xa.h