1、 安装数据库注意事项:
1) 安装路径必须是英文,最好不要有空格。如默认D:\oracle\product\10.2.0
2) 安装完成后,配置监听:
打开D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora 文件,把默认的HOST = Cname 改成 HOST=127.0.0.1(避免在开发过程中遇到的数据库监听适配错误问题);
3) 创建数据库:通过sql Plus 工具以sysdba身份登录,创建表空间,如:
Cmd
sqlplus /nolog
conn /as sysdba
create tablespace WaterSys datafile 'e:/database/WaterSys_DATA.dbf' size 50M autoextend on next 30M maxsize unlimited;
4) 创建用户:
create user abc identified by abc12345 default tablespace WaterSys temporary tablespace temp;
5) 给用户赋予基本权限:
grant connect,resource to abc;
grant dba to abc;(将dba权限赋给abc用户)
权限包括:CREATE SESSION, CREATE ANY TABLE , CREATE ANY VIEW , CREATE ANY INDEX , CREATE ANY PROCEDURE ,
ALTER ANY TABLE , ALTER ANY PROCEDURE ,
DROP ANY TABLE , DROP ANY VIEW , DROP ANY INDEX , DROP ANY PROCEDURE ,
SELECT ANY TABLE , INSERT ANY TABLE , UPDATE ANY TABLE , DELETE ANY TABLE 等
6) 撤销权限:
revoke connect, resource from user01;
7) 创建表、存储过程、作业等:
Start 'E:\ DB.sql';或者@E: \DB.sql;
8) 删除表空间:
drop tablespace WaterSys including contents and datafiles;
2、 查看及配置数据库相关信息:
1) 查看所有用户
SELECT * FROM DBA_USERS;
SELECT * FROM ALL_USERS;
SELECT * FROM USER_USERS;
2) 查看用户系统权限
SELECT * FROM DBA_SYS_PRIVS;
SELECT * FROM USER_SYS_PRIVS;
3) 查看用户对象或角色权限
SELECT * FROM DBA_TAB_PRIVS;
SELECT * FROM ALL_TAB_PRIVS;
SELECT * FROM USER_TAB_PRIVS;
4) 查看所有角色
SELECT * FROM DBA_ROLES;
5) 查看用户或角色所拥有的角色
SELECT * FROM DBA_ROLE_PRIVS;
SELECT * FROM USER_ROLE_PRIVS;
6) 查看表空间
select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name;
7) 查看监听状态
lsnrctl status
8) 启动/停止监听
lsnrctl start/ lsnrctl stop
9) 查看连接数
select count(*) from sys.v_$session;
10) 查询数据库当前进程的连接数
select count(*) from v$process;
11) 查看数据库当前会话的连接数
select count(*) from v$session;
12) 查看数据库的并发连接数
select count(*) from v$session where status='ACTIVE';
13) 查看当前数据库建立的会话情况
select sid,serial#,username,program,machine,status from v$session;
14) 查询数据库允许的最大连接数
select value from v$parameter where name = 'processes';
15) 修改数据库允许的最大进程连接数
alter system set processes = 1000 scope = spfile;
16) 修改数据库允许的最大会话连接数
alter system set sessions=1150 scope=spfile;
注意修改参数后要重启:
SQL> shutdown immediate;
SQL> startup;
17) 查看当前有哪些用户正在使用数据
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;
18) 查看SID
SELECT Name FROM v$database;
19) 查看oracle数据库字符集
select userenv('language') from dual;
20) 修改oracle数据库字符集
sql> conn / as sysdba;
sql> shutdown immediate;
database closed.
database dismounted.
oracle instance shut down.
sql> startup mount;
oracle instance started.
total system global area 135337420 bytes
fixed size 452044 bytes
variable size 109051904 bytes
database buffers 25165824 bytes
redo buffers 667648 bytes
database mounted.
sql> alter system enable restricted session;
system altered.
sql> alter system set job_queue_processes=0;
system altered.
sql> alter system set aq_tm_processes=0;
system altered.
sql> alter database open;
database altered.
sql> alter database character set internal_use ZHS16GBK;
sql> shutdown immediate;
sql> startup;
3、 当数据库spfile 文件被破坏,数据库无法启动的情况下,解决办法:
1)从pfile 启动数据库
startup pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.628200622196';
2)创建spfile文件
create spfile from
pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.628200622196';
3)关闭重启
shutdown immediate;
startup;
4、 使用DBMS_JOB包创建ORACLE定时任务
1) SUBMIT
该过程用于建立一个新的作业,当建立作业的时候,需要通过设置相应的参数来告诉Oracle要执行的内容,要执行的时间,要执行任务的间隔。如下格式:
DBMS_JOB.SUBMIT(
JOB OUT BINARY_INTERGER,
WHAT IN VARCHAR2,
NEXT_DATE IN DATE DEFAULT SYSDATE,
INTERVAL IN VARCHAR2 DEFAULT ‘NULL’,
NO_PARSE IN BOOLEAN DEFAULT FALSE,
INSTANCE IN BINARY_INTEGER DEFAULT ANY_INSTANCE,
FORCE IN BOOLEAN DEFAULT FALSE
);
参数说明:
job
用于指定作业编号
what
用于指定作业要执行的操作
next_date
用于指定该操作的下一次运行的日期
interval
用于指定该操作的时间间隔
no_parse
用于指定是否需要解析与作业相关的过程
instance
用于指定哪个例程可以运行作业?
force
用于指定是否强制运行与作业相关的例程
interval参数值参考信息:
每天午夜12点
'TRUNC(SYSDATE + 1)'
每天早上8点30分
'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'
每星期二中午12点
'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'
每个月第一天的午夜12点
'TRUNC(LAST_DAY(SYSDATE ) + 1)'
每个季度最后一天的晚上11点
'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'
每分钟执行一次
'SYSDATE+1/1440'
2) REMOVE
这个过程的作用是用于删除作业队列当中的特定的作业,它的语法如下:
DBMS_JOB.REMOVE(JOB IN BINARY_INTEGER);
下面是一个删除作业的例子:
首先查看DBA_JOBS表,看表里面有哪些任务正在执行着?
SELECT * FROM DBA_JOBS;
可以看到里面的JOB就是我们要删除的作业的编号,LOG_USER是创建该任务的人。
SQL> EXEC DBMS_JOB.REMOVE(26);
SQL>COMMIT;
3) CHANGE
该过程改变与作业相关的所有的信息,其中包括作业的操作内容,作业运行的时间以及运行时间间隔信息等等。语法如下:
DBMS_JOB.CHANGE(
JOB IN BINARY_INTEGER,
WHAT IN VARCHAR2,
NEXT_DATE,
INTERVAL IN VARCHAR2,
INSTANCE IN BINARY_INTEGER DEFAULT NULL,
FORCE IN BOOLEAN DEFAULT FALSE
);
例子:
SQL>EXEC DBMS_JOB.CHANGE(12,NULL,NULL,’SYSDATE+2’);
SQL>COMMIT;
4) WHAT
WHAT用来改变作业要执行的操作,例如:
SQL>EXEC DBMS_JOB.WHAT(26,’GETNO_F1;’);
5) NEXT_DATE
用来改变作业的下次运行日期
SQL>EXEC DBMS_JOB.NEXT_DATE(‘26’,’SYSDATE+2’);
6) INTERVAL
该过程用来改变作业的运行时间间隔,下面的运行时间间隔修改为每分钟执行一次:
SQL>exec dbms_job.interval(26,’SYSDATE+1/24/60)
7) BROKEN
该过程用于给该作业打上中断标志,可以在DBA_JOBS表里面观察该作业的BROKEN标志知否为中断。例子:
SQL>EXEC DBMS_JOB.BROKEN(26,TRUE);
SQL>COMMIT;
8) RUN
该过程用来执行该作业,例子:
SQL>EXEC DBMS_RN(26);
SQL>COMMIT;
如何停止一个作业?
SQL>DBMS_JOBS.BROKEN(2,TRUE);
SQL>COMMIT;
如何启动一个作业?
SQL>DBMS_JOBS.BROKEN(2,FALSE);
SQL>COMMIT;
学习资料待续》》》