ºìÁªLinuxÃÅ»§
Linux°ïÖú

OracleÊý¾Ý¿âÍøÂçÓ밲ȫFAQ¾«´â

·¢²¼Ê±¼ä:2006-11-06 00:32:58À´Ô´:ºìÁª×÷Õß:smallwl
¡¾µ¼¶Á¡¿±¾ÎÄÏêϸÃèÊöÁËOracleÓйØÍøÂçÓ밲ȫ·½ÃæµÄÅäÖúͲÙ×÷£¬Í¨¹ýÎÊ´ðµÄ·½Ê½£¬¶Ô³£ÓÃÐÅÏ¢×öÁ˹éÀà×ܽáºÍ½²½â¡£

[Q]ÈçºÎÏÞ¶¨Ìض¨IP·ÃÎÊÊý¾Ý¿â

[A]¿ÉÒÔÀûÓõǼ´¥·¢Æ÷¡¢cmgw»òÕßÊÇÔÚ$OREACLE_HOME/network/adminÏÂÐÂÔöÒ»¸öprotocol.oraÎļþ(ÓÐЩos¿ÉÄÜÊÇ. protocol.ora)£¬9i¿ÉÒÔÖ±½ÓÐÞ¸Äsqlnet.ora:

Ôö¼ÓÈçÏÂÄÚÈÝ:

tcp.validnode_checking=yes

#ÔÊÐí·ÃÎʵÄip

tcp.inited_nodes=(ip1,ip2,¡­¡­)

#²»ÔÊÐí·ÃÎʵÄip

tcp.excluded_nodes=(ip1,ip2,¡­¡­)

[Q]ÈçºÎ´©¹ý·À»ðǽÁ¬½ÓÊý¾Ý¿â

[A]Õâ¸öÎÊÌâÖ»»áÔÚWINƽ̨³öÏÖ£¬UNIXƽ̨»á×Ô¶¯½â¾ö¡£

½â¾ö·½·¨:

ÔÚ·þÎñÆ÷¶ËµÄSQLNET.ORAÓ¦ÀàËÆ

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)

TRACE_LEVEL_CLIENT = 16

×¢²á±íµÄHOME0¼Ó[HKEY_LOCAL_MACHINE]

USE_SHARED_SOCKET=TRUE

[Q]ÈçºÎÀûÓÃhostname·½Ê½Á¬½ÓÊý¾Ý¿â

host name·½Ê½Ö»Ö§³Ötcp/ipЭÒéµÄС¾ÖÓòÍø

ÐÞ¸Älistener.oraÖеÄÈçÏÂÐÅÏ¢

(SID_DESC =

(GLOBAL_DBNAME = ur_hostname) --ÄãµÄ»úÆ÷Ãû

(ORACLE_HOME = E:\oracle\ora92) --oracle home

(SID_NAME = orcl) --sid name

)

È»ºóÔÚ¿Í»§¶ËµÄsqlnet.oraÖУ¬È·±£ÓÐ

NAMES.DIRECTORY_PATH= (HOSTNAME)

Äã¾Í¿ÉÒÔÀûÓÃÊý¾Ý¿â·þÎñÆ÷µÄÃû³Æ·ÃÎÊÊý¾Ý¿âÁË

[Q]dbms_repcat_adminÄÜ´øÀ´Ê²Ã´°²È«Òþ»¼

[A]ÒÔÏÂÇé¿ö¿ÉÄÜ»ñµÃ¸Ã°üµÄÖ´ÐÐȨÏÞ:

1¡¢ÔÚsysÏÂ

grant execute on dbms_repcat_admin to public[|user_name]

2¡¢Óû§ÓµÓÐexecute any procedureÌØȨ(½öÏÞÓÚ9iÒÔÏ£¬9i±ØÐëÏÔʾÊÚȨ)

Èç¹ûÓû§Í¨¹ýÖ´ÐÐÈçÏÂÓï¾ä:

exec sys.dbms_repcat_admin.grant_admin_any_schema('user_name');

¸ÃÓû§½«»ñµÃ¼«´óµÄϵͳÌØȨ

¿ÉÒÔ´Óuser_sys_privsÖлñµÃÏêϸÐÅÏ¢

[Q]ÔÚ²»ÖªµÀÓû§ÃÜÂëµÄʱºò£¬ÔõôÑùÌøתµ½ÁíÍâÒ»¸öÓû§Ö´ÐвÙ×÷ºó²¢²»Ó°Ïì¸ÃÓû§?

[A]ÎÒÃÇͨ¹ýÈçϵķ½·¨£¬¿ÉÒÔ°²È«Ê¹ÓøÃÓû§£¬È»ºóÔÙÌøת»ØÀ´£¬ÔÚijЩʱºò±È½ÏÓÐÓÃ

ÐèÒªAlter userȨÏÞ»òDBAȨÏÞ:


SQL> select password from dba_users where username='SCOTT';

PASSWORD

-----------------------------

F894844C34402B67

SQL> alter user scott identified by lion;

User altered.

SQL> connect scott/lion

Connected.

REM Do whatever you like...

SQL> connect system/manager

Connected.

SQL> alter user scott identified by values 'F894844C34402B67';

User altered.

SQL> connect scott/tiger

Connected

[Q]ÈçºÎ¼Ó¹ÌÄãµÄÊý¾Ý¿â

[A]ҪעÒâÒÔÏ·½Ãæ

1. ÐÞ¸Äsys, systemµÄ¿ÚÁî¡£

2. Lock£¬Ð޸ģ¬É¾³ýĬÈÏÓû§: dbsnmp,ctxsysµÈ¡£

3. °ÑREMOTE_OS_AUTHENT¸Ä³ÉFalse£¬·ÀÖ¹Ô¶³Ì»úÆ÷Ö±½ÓµÇ½¡£

4. °ÑO7_DICTIONARY_ACCESSIBILITY¸Ä³ÉFalse¡£

5. °ÑһЩȨÏÞ´ÓPUBLIC RoleÈ¡Ïûµô¡£

6. ¼ì²éÊý¾Ý¿âµÄÊý¾ÝÎļþµÄ°²È«ÐÔ¡£²»ÒªÉèÖóÉ666Ö®ÀàµÄ¡£¼ì²éÆäËûdba Óû§¡£

7. °ÑһЩ²»ÐèÒªµÄ·þÎñ(±ÈÈçftp, nfsµÈ¹Ø±Õµô)

8. ÏÞÖÆÊý¾Ý¿âÖ÷»úÉÏÃæµÄÓû§ÊýÁ¿¡£

9. ¶¨ÆÚ¼ì²éMetalink/OTNÉÏÃæµÄsecurity Alert¡£±ÈÈç:http://otn.oracle.com/deploy/security/alerts.htm

10. °ÑÄãµÄÊý¾Ý¿âÓëÓ¦Ó÷ÅÔÚÒ»¸öµ¥¶ÀµÄ×ÓÍøÖУ¬Òª²»È»ÄãµÄÓû§ÃÜÂëºÜÈÝÒ×±»snifferÈ¥¡£»òÕß²ÉÓÃadvance security£¬¶ÔÓû§µÇ¼¼ÓÃÜ¡£

11. ÏÞÖ¹Ö»ÓÐijЩip²ÅÄÜ·ÃÎÊÄãµÄÊý¾Ý¿â¡£

12. lsnrctl Òª¼ÓÃÜÂ룬Ҫ²»È»±ðÈ˺ÜÈÝÒ×´ÓÍâÃæ¹ØµôÄãµÄlistener¡£

13. Èç¹û¿ÉÄÜ£¬²»ÒªÊ¹ÓÃĬÈÏ1521¶Ë¿Ú

[Q]ÈçºÎ¼ì²éÓû§ÊÇ·ñÓÃÁËĬÈÏÃÜÂë

[A]Èç¹ûʹÓÃĬÈÏÃÜÂ룬ºÜ¿ÉÄܾͶÔÄãµÄÊý¾Ý¿âÔì³ÉÒ»¶¨µÄ°²È«Òþ»¼£¬ÄÇô¿ÉÒÔʹÓÃÈçϵIJéѯ»ñµÃÄÇЩÓû§Ê¹ÓÃĬÈÏÃÜÂë


select username "User(s) with Default Password!"

from dba_users

where password in

('E066D214D5421CCC', -- dbsnmp

'24ABAB8B06281B4C', -- ctxsys

'72979A94BAD2AF80', -- mdsys

'C252E8FA117AF049', -- odm

'A7A32CD03D3CE8D5', -- odm_mtr

'88A2B2C183431F00', -- ordplugins

'7EFA02EC7EA6B86F', -- ordsys

'4A3BA55E08595C81', -- outln

'F894844C34402B67', -- scott

'3F9FBD883D787341', -- wk_proxy

'79DF7A1BD138CF11', -- wk_sys

'7C9BA362F8314299', -- wmsys

'88D8364765FCE6AF', -- xdb

'F9DA8977092B7B81', -- tracesvr

'9300C0977D7DC75E', -- oas_public

'A97282CE3D94E29E', -- websys

'AC9700FD3F1410EB', -- lbacsys

'E7B5D92911C831E1', -- rman

'AC98877DE1297365', -- perfstat

'66F4EF5650C20355', -- exfsys

'84B8CBCA4D477FA3', -- si_informtn_schema

'D4C5016086B2DC6A', -- sys

'D4DF7931AB130E37') -- system

/

[Q]ÈçºÎÐÞ¸ÄĬÈϵÄXDB¼àÌý¶Ë¿Ú

[A]Oracle9iĬÈϵÄXML DB°ÑHTTPµÄĬÈ϶˿ÚÉèΪ8080£¬ÕâÊÇÒ»¸öÌ«³£ÓõĶ˿ÚÁË£¬ºÜ¶à±ðµÄWebServer¶¼»áʹÓÃÕâ¸ö¶Ë¿Ú£¬

Èç¹ûÎÒÃÇ°²×°ÁËËü£¬×îºÃÐÞ¸Äһϣ¬±ÜÃâ³åÍ»£¬Èç¹û²»Ê¹ÓÃÄØ£¬¾Í×îºÃ²»Òª°²×°

ÌṩÈýÖÖÐ޸ĵķ½·¨

1.dbca£¬Ñ¡ÔñÄãµÄÊý¾Ý¿â£¬È»ºóStandard Database Features->Customize->Oracle XML DB option£¬½øÈëÕâ¸ö»­ÃæÄãÓ¦¸Ã¾ÍÖªµÀÔõô¸ÄÁË¡£

2.OEM console£¬ÔÚXML Database µÄÅäÖÃÀïÃæÐÞ¸Ä

3.ÓÃoracleÌṩµÄ°ü:

-- °ÑHTTP/WEBDAV¶Ë¿Ú´Ó8080¸Äµ½8081


SQL> call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(),

'/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()',8081))

/

-- °ÑFTP¶Ë¿Ú´Ó2100¸Äµ½2111

SQL> call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(),

'/xdbconfig/sysconfig/protocolconfig/ftpconfig/ftp-port/text()',2111))

/

SQL> commit;

SQL> exec dbms_xdb.cfg_refresh;

-- ¼ì²éÐÞ¸ÄÊÇ·ñÒѾ­³É¹¦

SQL> select dbms_xdb.cfg_get from dual;

[Q]Ôõô²¶»ñÓû§µÇ¼ÐÅÏ¢£¬ÈçSID£¬IPµØÖ·µÈ

[A]¿ÉÒÔÀûÓõǼ´¥·¢Æ÷£¬Èç


CREATE OR REPLACE TRIGGER tr_login_record

AFTER logon ON DATABASE

DECLARE

miUserSid NUMBER;

mtSession v$session%ROWTYPE;

CURSOR cSession(iiUserSid IN NUMBER) IS

SELECT * FROM v$session

WHERE sid=iiUserSid;

BEGIN

SELECT sid INTO miUserSid FROM v$mystat WHERE rownum<=1;

OPEN cSession(miUserSid);

FETCH cSession INTO mtSession;

--if user exists then insert data

IF cSession%FOUND THEN

INSERT INTO log$information(login_user,login_time,ip_adress,ausid,terminal,

osuser,machine,program,sid,serial#)

VALUES(ora_login_user,SYSDATE,SYS_CONTEXT ('USERENV','IP_ADDRESS'),

userenv('SESSIONID'),

mtSession.Terminal,mtSession.Osuser,

mtSession.Machine,mtSession.Program,

mtSession.Sid,mtSession.Serial#);

ELSE

--if user don't exists then return error

sp_write_log('Session Information Error:'||SQLERRM);

CLOSE cSession;

raise_application_error(-20099,'Login Exception',FALSE);

END IF;

CLOSE cSession;

EXCEPTION

WHEN OTHERS THEN

sp_write_log('Login Trigger Error:'||SQLERRM);

END tr_login_record;

ÔÚÒÔÉÏ´¥·¢Æ÷ÖÐÐèҪעÒâÒÔϼ¸µã

1¡¢¸ÃÓû§ÓÐv_$sessionÓëv_$mystatµÄ¶ÔÏó²éѯȨÏÞ£¬¿ÉÒÔÔÚsys϶ԸÃÓµ»¤ÏÔʽÊÚȨ¡£

2¡¢sp_write_logÔ­±¾ÊÇÒ»¸öдÈÕÖ¾µÄ¹ý³Ì£¬¿ÉÒÔÖû»Îª×Ô¼ºµÄÐèÒª£¬ÈçnullÌø¹ý¡£

3¡¢±ØÐëÔÚ´´½¨¸Ã´¥·¢Æ÷֮ǰ´´½¨Ò»¸ölog$informationµÄ±í¼Ç¼µÇ¼ÐÅÏ¢¡£

[Q]Ôõô²¶»ñÕû¸öÊý¾Ý¿âµÄDDLÓï¾ä»òÕßÊÇ˵¶ÔÏó½á¹¹±ä»¯ÓëÐÞ¸Ä

[A]¿ÉÒÔ²ÉÓÃDDL´¥·¢Æ÷£¬Èç


CREATE OR REPLACE TRIGGER tr_trace_ddl

AFTER DDL ON DATABASE

DECLARE

sql_text ora_name_list_t;

state_sql ddl$trace.ddl_sql%TYPE;

BEGIN

FOR i IN 1..ora_sql_txt(sql_text) LOOP

state_sql := state_sql||sql_text(i);

END LOOP;

INSERT INTO ddl$trace(login_user,ddl_time,ip_address,audsid,

schema_user,schema_object,ddl_sql)

VALUES(ora_login_user,SYSDATE,userenv('SESSIONID'),

sys_context('USERENV','IP_ADDRESS'),

ora_dict_obj_owner,ora_dict_obj_name,state_sql);

EXCEPTION

WHEN OTHERS THEN

sp_write_log('Capture DDL Excption:'||SQLERRM);

END tr_trace_ddl;

ÔÚ´´½¨ÒÔÉÏ´¥·¢Æ÷ʱҪעÒ⼸µã

1¡¢±ØÐë´´½¨Ò»¸öddl$traceµÄ±í£¬ÓÃÀ´¼Ç¼ddlµÄ¼Ç¼

2¡¢sp_write_logÔ­±¾ÊÇÒ»¸öдÈÕÖ¾µÄ¹ý³Ì£¬¿ÉÒÔÖû»Îª×Ô¼ºµÄÐèÒª£¬ÈçnullÌø¹ý

[Q]Ôõô²¶»ñ±íÉϵÄDMLÓï¾ä(²»°üÀ¨select)Óï¾ä)

[A]¿ÉÒÔ²ÉÓÃdml´¥·¢Æ÷£¬Èç


CREATE OR REPLACE TRIGGER tr_capt_sql

BEFORE DELETE OR INSERT OR UPDATE

ON manager.test

DECLARE

sql_text ora_name_list_t;

state_sql capt$sql.sql_text%TYPE;

BEGIN

FOR i IN 1..ora_sql_txt(sql_text) LOOP

state_sql := state_sql || sql_text(i);

END LOOP;

INSERT INTO capt$sql(login_user,capt_time,ip_address,audsid,owner,table_name,sql_text)

VALUES(ora_login_user,sysdate,sys_context('USERENV','IP_ADDRESS'),

userenv('SESSIONID'),'MANAGER','TEST',state_sql);

EXCEPTION

WHEN OTHERS THEN

sp_write_log('Capture DML Exception:'||SQLERRM);

END tr_capt_sql;

ÔÚ´´½¨ÒÔÉÏ´¥·¢Æ÷ʱҪעÒ⼸µã

1¡¢±ØÐë´´½¨Ò»¸öcapt$sqlµÄ±í£¬ÓÃÀ´¼Ç¼ddlµÄ¼Ç¼

2¡¢sp_write_logÔ­±¾ÊÇÒ»¸öдÈÕÖ¾µÄ¹ý³Ì£¬¿ÉÒÔÖû»Îª×Ô¼ºµÄÐèÒª£¬ÈçnullÌø¹ý¡£

[Q]ÔõôÑùÉú³ÉÈÕÆÚ¸ñʽµÄÎļþ

[A]ÔÚLINUX/UNIXÉÏ£¬Ê¹ÓÃ`date +%y%m%d` (`Õâ¸öÊǼüÅÌÉÏ~ËùÔÚµÄÄǸö¼ü) »ò$(date +%y%m%d)£¬Èç:


touch exp_table_name_`date +%y%m%d`.dmp

DATE=$(date +%y%m%d)

»òÕß

DATE=$(date +%Y%m%d --date '1 days ago') #»ñÈ¡×òÌì»ò¶àÌìÇ°µÄÈÕÆÚ

WindowsÉÏ£¬Ê¹ÓÃ%date:~4,10%£¬ÆäÖÐ4ÊÇ¿ªÊ¼×Ö·û£¬10ÊÇÌáÈ¡³¤¶È£¬±íʾ´ÓdateÉú³ÉµÄÈÕÆÚÖУ¬ÌáÈ¡´Ó4¿ªÊ¼³¤¶ÈÊÇ10µÄ´®¡£Äã¿ÉÒԸijÉÆäËüÄãÐèÒªµÄÊý×Ö£¬Èç:

Echo %date:~4,10%

Èç¹ûÏëµÃµ½¸ü¾«È·µÄʱ¼ä£¬winÉÏÃ滹¿ÉÒÔʹÓÃtime

[Q]²âÊÔ´ÅÅÌÓëÕóÁÐÐÔÄÜ

[A]ÓÃÀàËÆÈçϵķ½·¨²âÊÔдÄÜÁ¦


time dd if=/dev/zero of=/oradata/biddb/testind/testfile.dbf bs=1024000 count=1000

ÆÚ¼äϵͳIO ʹÓÿÉÒÔÓÃ(unix):

iostat -xnp 2 ÏÔʾBusy³Ì¶È

[Q]ÔõôÅäÖÃSSHÃܳ×

[A]¿ÉÒÔ·ÀÖ¹"ÖмäÈË"µÄ½ø¹¥·½Ê½

1¡¢ssh-keygen »òssh-keygen -d(ssh 2.x)Éú³ÉÔ¿³×

2¡¢È»ºó¿½±´¹«³×µ½ÄãÏëµÇ¼µÄ·þÎñÆ÷£¬¸ÄÃûΪauthorized_keys£¬Èç¹ûÊÇ3.0ÒÔÏ°汾£¬ÐèÒª¸ÄΪauthorized_keys2

3¡¢»¹¿ÉÒÔÀûÓÃconfigÎļþ½øÒ»²½¼ò»¯²Ù×÷

Èç


Host *bj

HostName »úÆ÷Ãû»òIP

User ̞

ÓÐÁËÕâ¸öÅäÖÃÎļþ£¬Äã¾Í¿ÉÒÔÀûÓÃssh bjÀ´·ÃÎÊÖ¸¶¨µÄ»úÆ÷ÁË£¬Ò²¾Í¿ÉÒÔÀûÓÃscpÓësftpÀ´´«ËÍÎļþÁË¡£

[Q]FTPÔõôÔڽű¾ÖÐ×Ô¶¯ÉÏ´«/ÏÂÔØ

[A]¿ÉÒÔ°ÑFTPдµ½shell½Å±¾ÖУ¬Èç


ftp -n -i Ö÷»úIP
cd Ä¿±êĿ¼

put file

get file

#²éѯÎļþ

ls

#Í˳ö

bye
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ